Инструкция сборки applied robotics

Обзор набора Applied Robotics - "Конструктор программируемых моделей инженерных систем"

🔥 Похожие видео

«Конструктор программируемых моделей инженерных систем». Подключение и пример работы.Скачать

"Конструктор программируемых моделей инженерных систем". Подключение и пример работы.

Обзор набора «Конструктор программируемых моделей инженерных систем».Скачать

Обзор набора "Конструктор программируемых моделей инженерных систем".

Вебинар «Конструктор программируемых моделей инженерных систем» ч.1Скачать

Вебинар "Конструктор программируемых моделей инженерных систем" ч.1

Обзор набора Конструктор программируемых моделей инженерных системСкачать

Обзор набора  Конструктор программируемых моделей инженерных систем

Видеоинструкция по сборке мобильной платформы «ТИП B».Скачать

Видеоинструкция по сборке мобильной платформы "ТИП B".

Работа с приложением TrackingCAM control app.Скачать

Работа с приложением TrackingCAM control app.

💡 Дополнительные видео

«Конструктор программируемых моделей инженерных систем» Интернет Вещей. Обзор и пример работы.Скачать

"Конструктор программируемых моделей инженерных систем" Интернет Вещей. Обзор и пример работы.

Обзор комплекта. «Конструктор программируемых моделей инженерных систем». Экспертный набор.Скачать

Обзор комплекта. "Конструктор программируемых моделей инженерных систем". Экспертный набор.

Инструкция по сборке металлического робота с плоско-параллельной кинематикойСкачать

Инструкция по сборке металлического робота с плоско-параллельной кинематикой

Видеоинструкция по сборке мобильной платформы «ТИП А».Скачать

Видеоинструкция по сборке мобильной платформы "ТИП А".

Видеоинструкция к учебному пособию «Программирование моделей инженерных систем». Часть 1.Скачать

Видеоинструкция к учебному пособию «Программирование моделей инженерных систем». Часть 1.

Видеоинструкция по сборке мобильной платформы КПМИС “Экспертный набор”Скачать

Видеоинструкция по сборке мобильной платформы КПМИС “Экспертный набор”

Видеоинструкция к учебному пособию «Программирование моделей инженерных систем». Часть 3.Скачать

Видеоинструкция к учебному пособию «Программирование моделей инженерных систем». Часть 3.

Распаковка и обзор набора ROBOTIS MINIСкачать

Распаковка и обзор набора ROBOTIS MINI

Видеоинструкция к учебному пособию «Программирование моделей инженерных систем». Часть 2.Скачать

Видеоинструкция к учебному пособию «Программирование моделей инженерных систем». Часть 2.

Программируемый контроллер моделей инженерных систем. Техника безопасности и система питания.Скачать

Программируемый контроллер моделей инженерных систем. Техника безопасности и система питания.

Видеоинструкция к учебному пособию «Программирование моделей инженерных систем». Часть 5.Скачать

Видеоинструкция к учебному пособию «Программирование моделей инженерных систем». Часть 5.

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

Потенциометр — это переменный резистор с регулируемым сопротивлением. Потенциометры используются в робототехнике как регуляторы различных параметров — громкости звука, мощности, напряжения и т.п. В нашей модели от поворота ручки потенциометра будет зависеть яркость светодиода

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

Пьезоэлемент — электромеханический преобразователь, одним из разновидностей которого является пьезоизлучатель звука, который также называют пьезодинамиком, просто звонком или английским buzzer. Пьезодинамик переводит электрическое напряжение в колебание мембраны. Эти колебания и создают звук

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

Фоторезистор — резистор, сопротивление которого зависит от яркости света, падающего на него. Фоторезисторы используются в робототехнике как датчики освещенности. Встроенный в робота фоторезистор позволяет определять степень освещенности, определять белые или черные участки на поверхности и в соответствие с этим двигаться по линии или совершать другие действия.

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

Схема подключения:

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

Сервопривод — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов.

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

Двигатели постоянного работают при большой мощности тока, поэтому для них используется встроенный в микроконтроллер плата расширения – драйвер

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

После запуска программы двигатели будут вращаться в одну потом в другую сторону

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Так, практически в каждом доме есть несколько таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. Но самое интересное применение инфракрасного пульта — дистанционное правление роботом.

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

Подключение контактов:

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

Ультразвуковой дальномер рассчитан на определение расстояния до объектов в радиусе четырёх метров.

Работа модуля основана на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, не сложно вычислить расстояние до препятствия.

Оборудование: Дальномер, провода папа-мама 4 шт

Подключение контактов:

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

Модуль датчика оборотов двигателя предназначен главным образом для определения скорости вращения вала электродвигателя.

Как правило, датчики измеряют величину благодаря регистрации определённых событий, затем количество событий соотносится с периодом времени, за которые они произошли.

Так в данном случае измеряется скорость – под событиями здесь понимаются импульсы, полученные в результате срабатывания оптического датчика во время вращения диска с прорезями. Датчик состоит из светодиода и фототранзистора, который воспринимает наличие или отсутствие излучения светодиода.

Подключение контактов:

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

Муниципальное
общеобразовательное бюджетное учреждение

«Сухореченская средняя
общеобразовательная школа» имени Героя Советского Союза Федора Константиновича
Асеева

Индивидуальный итоговый проект

на тему:

«Конструктор программируемых моделей
инженерных систем»

Обучающийся: Саханин Иван,

Алексеев Дмитрий,

                                                                                    
Предыбайло Анатолий

                                        
            Руководитель:  Комарь Евгений Игоревич

СОДЕРЖАНИЕ

1.Введение

1.1
Актуальность

1.2
Цель

1.3
Объект исследования

1.4
Методы исследования

2.
Теоретическая часть

2.1
История робототехники

2.2
Использование роботов в современном мире

2.3
Описание конструктора программируемых моделей инженерных систем

3.
Практическая часть

3.1
Среда программирования

3.2
Сборка конструктора программируемых моделей инженерных систем

3.3
Написание программы для выполнения алгоритма

4.
Заключение

5.
Список используемой литературы

1.Введение

1.1 Актуальность

В
современном мире область применения робототехники в различных сферах
деятельности человека очень широкая и не перестает расти. Применение роботов
позволяет значительно снизить участие человека в тяжелой и опасной работе.
Например, работа в оборонных, химических, атомных сферах, тушение пожаров без
помощи оператора, выполнение спасательных операций или передвижение по заранее
неизвестной местности. Постепенно роботы входят и в обычную жизнь человека.

Использование
мобильных роботов позволяем удовлетворять каждодневные потребности: роботы –
сиделки, роботы – нянечки, роботы – домработницы и т. д. Как следствие
современное общество очень нуждается в грамотных специалистах в этой области.

Кроме
того, согласно национальной образовательной инициативе «Наша новая школа»,
утвержденной Д. Медведевым, современное образование должно обеспечивать:


изучение не только достижений прошлого, но и технологий, которые пригодятся в
будущем;


обучение, ориентированное как на знаниевый, так и деятельностный аспекты
содержания образования.

В
связи с этим обучение робототехнике детей становится все больше актуальной и
значимой задачей. Изучение робототехники позволяет ученикам развивать
коммуникативные навыки, так как в основном конструирование роботов происходит в
группе, учиться принимать самостоятельные и нестандартные решения, развивать
творческое мышление. Также робототехника может выступать не только как
самостоятельный предмет, но и внедрятся в остальные школьные дисциплины.
Робототехнические конструкторы можно использовать при демонстрации учебных экспериментов
по физике, математике, физике и биологии, что позволяет увидеть картину
реального мира. Использование роботов делает процесс обучения более интересным
и  понятным. Ученик лучше разбирается в том, что создал и увидел сам. Поэтому
очевидна необходимость применять основы робототехники во всей школьной
программе

1.2 Цель проекта

Целями данного проекта является:

·       
изучение основной документации и знакомство с
функциями конструктора программируемых моделей;

·       
изучение языков программирования и программного
обеспечения необходимых для работы с роботом;

·       
разработка программ для конструктора
программируемых моделей на платформе
Arduino;

·       
отработка навыков работы с конструктора
программируемых моделей при подключении различных сервоприводов.

1.3 Объект исследования

Учебное пособие, включающее серию лабораторных
работ, позволяет изучить функционирование каждого компонента рассматриваемой
системы в отдельности, путем «от простого к сложному», что позволяет получить
практический результат на каждом этапе освоения данного образовательного
набора. Данный набор
легко программируется. Он способен на разные
виды выполнения задач.

Это полностью
Российская разработка, которая обойдется учебным заведениям значительно дешевле
импортных аналогов.  В качестве управляющего контроллера взята
Arduino-совместимая плата, отлично зарекомендовавшая себя в линейке
образовательных наборов для старшего школьного возраста. Робот может быть оборудован
различными насадками, например видеокамера.

1.4 Методы исследования

Для исследования мы
пользовались такими методами как наблюдение, измерение, эксперимент.

2. Теоретическая часть

2.1 История
робототехники

Еще в Древней Греции люди были озабочены
идеей «жить» или самостоятельно передвигать механические конструкции. Некоторые
истории происходят из области мифологии, например, железный гигант Талос,
который был выкован богом кузнецов Гефеистом, чтобы охранять остров Крит. Но
были и вполне реальные подходы к машинам или автоматам, например, планы
автоматических устройств, приписываемые греческому математику Герону
Александрийскому. Арабские ученые и даже Леонардо да Винчи также рисовали планы
по самостоятельному передвижению машин и даже личностных механических
конструкций, которые напоминали рыцарские доспехи и поэтому могут считаться
первыми рисунками андроида.

Целью разработки автономных машин всегда
было спасение человека от утомительной, монотонной или опасной работы. Первым
полностью автоматизированным прибором стал программируемый ткацкий станок,
изобретенный французом Жаком де Вокансоном. Ткачество вручную было очень
равномерным, но физически тяжелым занятием. По мере развития технологий ранняя
робототехника стала интересной с военной точки зрения. Однако пройдет некоторое
время, прежде чем технология будет готова к производству автоматизированных
автономных станков.

Научная фантастика и робототехника

До тех пор идея автономных машинных
существ с человеческими способностями все еще оставалась в царстве фантазии.
Многочисленные авторы имели дело с этой утопической идеей. Среди них Жюль Верн,
а также чешский писатель Карел Чапек, который придумал термин «робот» в своей
пьесе R.U.R. («Универсальные роботы Россума»), который он вывел из чешского
слова «робот» для обозначения рабочего/принудительного труда. Впервые
появляется также литературный мотив рукотворных и угнетенных машинных существ,
объединяющихся и восстающих против человека.

Однако самым главным автором научной
фантастики на тему робототехники является Исаак Азимов, который в дальнейшем
популяризировал термин «робот» и впервые в коротком рассказе установил три
знаменитых закона о робототехнике. Эти три правила до сих пор обсуждаются во
многих контекстах робототехники и являются следующими. (Источник :  Isaac
Asimov’s «Three Laws of Robotics»)

Робот не может причинить вред человеку
или, в результате бездействия, позволить человеку быть поврежденным.

Робот должен подчиняться командам,
отданным ему человеком — если только такая команда не противоречит первому
правилу.

Робот должен защищать свое существование
до тех пор, пока эта защита не вступает в противоречие с одним или двумя
правилами.

Даже если в научно-фантастической
литературе нет реальных ссылок на технические возможности, она окончательно
сформировала представление о роботах, которые есть у людей.

Термин «робот».

Это также приводит к вопросу о том, о
чем мы на самом деле говорим, когда используем слово «робот». Если мы предположим,
что машина — это приводной, управляемый человеком инструмент для выполнения
определенной задачи, то автомат — это машина, которая может самостоятельно
выполнять очень специфическую задачу. Робот отличается от автомата тем, что
программируется и может самостоятельно выполнять множество различных задач, в
том числе реагировать на впечатления от физического мира.

2.2  Использование роботов
в современном мире

Роботы способны
заменить человека во многих сферах деятельности. Практическое применение
робототехники стало доступной реальностью. Современные технологии позволили
создать самых разных роботов, в классификации которых необходимо разбираться.

Какие типы роботов
существуют

Роботы, применяемые в
современном мире, классифицируются по различным признакам:

По управлению:

·        
Жесткопрограммируемые.

·        
Адаптивнопрограммируемые.

·        
Гибкопрограммируемые.

По позиционированию:

·        
Стационарные.

·        
Передвижные

По назначению:

·        
Промышленные.

·        
Медицинские.

·        
Бытовые.

·        
Военные или боевые.

·        
Исследовательские.

По способу
передвижения:

·        
Подземные. Перемещаются под землей. К ним относятся
исследовательские дроны.

·        
Подводные. Перемещаются под водой. К ним относится батискаф или
торпеды.

·        
Надводные. Например, катера или лодки, которые перемещаются по
воде.

·        
Наземные. Перемещаются по суше. Роботы оснащены гусеницами или
колесами.

·        
Летательные. Перемещаются по воздуху. К ним относятся
квадрокоптеры и беспилотники.

Недостатки роботизации

Роботизация – это
необратимый процесс, который ведет к упрощению отдельных областей
жизнедеятельности. Однако помимо повышения производительности труда и
сокращения расходов, роботизация имеет и негативные последствия. Среди них:

1.     Рост
безработицы. Ручной труд заменится искусственным интеллектом, что повлечет за
собой резкое сокращение кадров повсеместно.

2.     Зависимость от
четкой компьютерной системы. Качество и эффективность роботизации зависит от
того, насколько четко будут запрограммированы роботы на определенные задачи. В
будущем сбой или изменение в программе могут привести к остановке работы.

3.     Сложное
управление в экстремальных ситуациях. В случае поломки, скачков напряжения или
других непредвиденных ситуаций, будет сложно быстро восстановить рабочий
процесс. Придется остановить производство или использовать человеческие
ресурсы.

4.     Сложности при
диверсификации. Большинство роботов способны выполнять не более 1-2 операций
одновременно.

5.     Невозможность
применения в творчестве. Искусственному интеллекту нельзя доверять
самостоятельную разработку продукта или другую задачу, которая требует
творческого подхода.

Преимущества
использования роботов

1.     Повышение
качества производимой продукции. Роботы отличаются высокой точностью и
производительностью, поэтому способны изготавливать продукты отличного
качества. Устройства могут выполнять работу даже если она будет требовать
монотонности или серьезных усилий.

2.     Минимизация
брака. Роботы способны работать неустанно, чтобы увеличить количество
производимой продукции. Датчики движения и системы технического зрения
позволяют свести к минимуму количество брака.

3.     Точность и
повторяемость обработки. Роботы способны выполнять задачи, которые не
подвластны человеку.

4.     Сокращение
расходов. Благодаря использованию робототехники, сокращаются затраты на
зарплату сотрудникам, выплату компенсации и пособий, а также страхование жизни.

5.     Уменьшение
рисков травматизма и ранений. Роботы, в отличие от людей, могут работать в
опасных зонах.

2.3 Описание конструктора программируемых моделей инженерных систем.

Образовательный набор электронике, электромеханике и
микропроцессорной технике «Конструктор программируемых моделей инженерных
систем. Расширенный набор» предназначен для проведения учебных занятий по электронике
и схемотехнике с целью изучения наиболее распространенной элементной базы,
применяемой для инженерно-технического творчества учащихся и разработки учебных
моделей роботов. Набор позволяет проведение учебных занятий по изучению основ
мехатроники и робототехники, практического применения  базовых элементов
электроники и схемотехники, а также наиболее распространенной элементной базы и
основных технических решений, применяемых при проектировании и прототипировании
различных инженерных, кибернетических и встраиваемых систем.

Данный образовательный комплект «Конструктор
программируемых моделей инженерных систем. Расширенный» предназначен для
разработки программируемых моделей на основе многофункционального контроллера
типа «Arduino», совместимого с периферийными устройствами и модулями расширения
Arduino Mega2560, а также адаптированного для разработки мехатронных систем с
большим числом приводов, мобильных и манипуляционных роботов, оснащенных
системой технического зрения.

В состав комплекта входит набор электронных компонентов для
изучения основ электроники и схемотехники,  комплект приводов и датчиков
различного типа для разработки робототехнических комплексов, а так же модуль
технического зрения для распознавания заранее заданных графических объектов.
Комплектующие и устройства набора обладают конструктивной, электрической,
аппаратной и программной совместимостью друг с другом.

Набор обеспечивает возможность разработки модели
мобильного робота, управляемого посредством программного обеспечения для персонального
компьютера и мобильных устройств на базе ОС Android, IOS, обеспечивающего
возможность управления мобильным роботом и встроенным манипулятором посредством
графического интерфейса, включающим в себя набор кнопок и переключателей,
джойстик, область для отображения видео.

Набор обеспечивает возможность изучения основ
электроники и схемотехники, разработки и прототипированию моделей роботов,
разработки программных и аппаратных комплексов инженерных систем, решений в
сфере «Интернет вещей», а также решений в области робототехники,
искусственного интеллекта и машинного обучения.

В состав комплекта также входит набор библиотек трехмерных
моделей, предназначенных для проектирования в CAD-системах и прототипирования с
применением аддитивных технологий. Набор может применяться для практического
изучения современных технологий в рамках соответствующих курсов в школе и
детских технопарках.

3. Практическая часть

3.1
Среда программирования.

Среда разработки
Arduino состоит из встроенного текстового редактора программного кода, области
сообщений, окна вывода текста(консоли), панели инструментов с кнопками часто
используемых команд и нескольких меню. Для загрузки программ и связи среда
разработки подключается к аппаратной части Arduino.

Для работы с роботом-манипулятором мы использовали
среду программирования Arduino.

Рассмотрим интерфейс ПО Arduino подробно:

Программа,
написанная в среде Arduino, называется скетч. Скетч пишется в текстовом
редакторе, имеющем инструменты вырезки/вставки, поиска/замены текста. Во время
сохранения и экспорта проекта в области сообщений появляются пояснения, также
могут отображаться возникшие ошибки. Окно вывода текста(консоль) показывает
сообщения Arduino, включающие полные отчеты об ошибках и другую информацию.
Кнопки панели инструментов позволяют проверить и записать программу, создать,
открыть и сохранить скетч, открыть мониторинг последовательной шины:

Как можно увидеть, интерфейс похож, но довольно сильно
отличается от предыдущей версии ПО. После установки, если русский язык не
подключился автоматически, нужно нажать на глобус в верхней панели слева и
выбрать русский язык интерфейса. После этого и все программные блоки и меню
переключатся на русский.

Загрузка скетча в Arduino

Перед загрузкой скетча требуется задать необходимые
параметры в меню Tools > Board и Tools > Serial Port. Платформы
описываются далее по тексту. В ОС Mac последовательный порт может обозначаться
как dev/tty.usbserial-1B1 (для платы USB) или /dev/tty.USA19QW1b1P1.1 (для
платы последовательной шины, подключенной через адаптер Keyspan USB-to-Serial).
В ОС Windows порты могут обозначаться как COM1 или COM2 (для платы
последовательной шины) или COM4, COM5, COM7 и выше (для платы USB). Определение
порта USB производится в поле Последовательной шины USB Диспетчера устройств
Windows. В ОС Linux порты могут обозначаться как /dev/ttyUSB0, /dev/ttyUSB1.

После выбора порта и платформы необходимо нажать
кнопку загрузки на панели инструментов или выбрать пункт меню File > Upload
to I/O Board. Современные платформы Arduino перезагружаются автоматически перед
загрузкой. На старых платформах необходимо нажать кнопку перезагрузки. На
большинстве плат во время процесса будут мигать светодиоды RX и TX. Среда
разработки Arduino выведет сообщение об окончании загрузки или об ошибках.

При загрузке скетча используется Загрузчик (Bootloader)
Arduino, небольшая программа, загружаемая в микроконтроллер на плате. Она
позволяет загружать программный код без использования дополнительных аппаратных
средств. Загрузчик (Bootloader) активен в течении нескольких секунд при
перезагрузке платформы и при загрузке любого из скетчей в микроконтроллер.
Работа Загрузчика (Bootloader) распознается по миганию светодиода (13 пин)
(напр.: при перезагрузке платы).

1. Установить Arduino
IDE и драйверы
, как написано в гайде
выше. Если это ваш первый раз – желательно не подключать ничего к новой плате, а загрузить пробную прошивку из
гайда
 и убедиться, что всё загружается и работает. Если после
сборки схемы прошивка перестанет загружаться – увы, схема собрана с ошибками и
плата уже могла сгореть. Но она работала, мы это проверили =)

·     
Если проект основан не на
стандартной Arduino плате, а например на esp8266ESP32Digisparklgt8f328 – устанавливаем поддержку этих плат, как
описано выше.

https://alexgyver.ru/wp-content/uploads/2020/12/gyvproj6.png

2. Скачать архив со
страницы проекта
. Ссылка всегда одна,
она ведёт на прямую загрузку архива с хранилища GitHub. Когда проект
обновляется (об этом может быть написано на странице проекта), ссылка на архив
остаётся той же, но в нём будут уже какие-то изменённые файлы, добавлены новые
версии прошивки и т.д. Все обновления указаны на странице проекта.

3. Распаковать архив. Архив имеет формат .zip, для его распаковки можно использовать встроенные
инструменты операционной системы, либо популярный WinRAR. Если не распаковать архив –
прошивка откроется неправильно
. Я не отличаюсь буйной фантазией и
всегда называю папки одинаково, вот что может быть в архиве проекта:

·     
firmware –
прошивки для Arduino

·     
software –
программы для ПК

·     
libraries 
библиотеки

·     
schemes – схемы

·     
PCB – gerber
файлы печатных плат

·     
docs – всякие
документы

·     
Android – исходники
приложения

·     
3Dprint –
модели для печати

·     
processing –
программа на Processing

https://alexgyver.ru/wp-content/uploads/2020/12/gyverProj-2.png

Извлечение WinRAR

https://alexgyver.ru/wp-content/uploads/2020/12/gyvproj.png

Извлечение Windows

Распакованная папка

4. Установить
библиотеки
. К прошивкам моих проектов
почти всегда идут библиотеки, необходимые для работы кода. Библиотеки в
проектах часто пересекаются, но рекомендуется ставить именно идущую в комплекте
с проектом версию, так как библиотеки обновляются и старые или новые могут быть
несовместимы с проектом.

Примечание 1: не у
всех проектов в архиве есть папка с библиотеками. Если её нет – дополнительно
устанавливать ничего не нужно.

Примечание 2: если
на странице проекта сказано установить конкретные библиотеки с перечислением
названий – их нужно установить через менеджер библиотек по названиям, как
описано выше в гайде.

Если папка с библиотеками есть, содержимое папки libraries из
архива помещаем в:

·     
Документы/Arduino/libraries/

https://alexgyver.ru/wp-content/uploads/2020/12/gyverProj-4.png

Установка
в документы

Примечание 3: в
видео инструкции выше сказано устанавливать библиотеки в папку с программой. На
Windows 10 и выше это требует прав администратора, так что лучше устанавливать
библиотеки в Документы.

К разным проектам идут разные версии одних и тех же библиотек,
они не всегда
совместимы
. При возникновении ошибок рекомендуется удалить текущие
версии и заменить их теми, которые идут в архиве.

5. Открыть скетч (так называется файл с программой). При запуске файла скетча
автоматически откроется Arduino IDE. Важно: если в папке со скетчем есть несколько файлов –
запускаем любой с логотипом Arduino. Остальные файлы должны подтянуться
автоматически и образовать вкладки в окне программы. Если запускать скетч прямо из
архива – вкладки не откроются и скомпилировать/загрузить программу будет
невозможно.

https://alexgyver.ru/wp-content/uploads/2020/12/gyverProj-5.png


Вкладки
в Arduino IDE

6. Выбрать плату и порт. Выбираем в настройках программы соответствующую плату и порт
куда она подключена, как в гайде выше. Важные моменты по настройкам самой платы
обычно указано в описании конкретного проекта.

·     
Для проектов на Arduino Nano выбираем Arduino Nano, а
также Инструменты\Процессор\ATmega328p
(Old Bootloader). 
Если вам по какой-то причине пришлют платы с
новым загрузчиком – прошивка не загрузится (будет минутная загрузка и ошибка),
можно попробовать сменить пункт Процессор на ATmega328p

·     
Для проектов на Wemos выбираем (LOLIN)Wemos D1 R2 & mini

·     
Для проектов на NodeMCU выбираем NodeMCU 1.0

·     
В некоторых проектах,
например GyverLamp2 (второй версии) для прошивки в esp8266 нужно выбрать
плату Generic
esp8266
, читайте особенности загрузки на странице проекта!

·     
Для проектов на Digispark порт
выбирать не надо, читай инструкцию выше

7. Настроить программу. Очень часто в начале кода моих программ можно встретить блок
настроек. Настройки обычно имеют вид

#define SOME_SETTING 1 // 1 включено, 0 выключено

где цифра отвечает за значение настройки, менять нужно только
цифру согласно комментарию.

8. Загрузить прошивку. Нажимаем стрелочку в левом верхнем углу
окна программы и прошивка загружается. Не загружается? Читаем гайд выше, там
описаны все возможные причины.

https://alexgyver.ru/wp-content/uploads/2020/12/gyvproj7.png

Загружать прошивку желательно до подключения компонентов,
чтобы убедиться в том, что плата рабочая. После сборки можно прошить ещё раз,
плата должна спокойно прошиться. В проектах с мощными потребителями в цепи
питания платы 5V (адресная светодиодная лента, сервоприводы, моторы и проч.)
необходимо подать на схему внешнее питание 5V перед подключением Arduino к
компьютеру, потому что USB не обеспечит нужный ток, если потребитель его
потребует – это может привести к выгоранию защитного диода на плате Arduino.

3.2 Сборка конструктора программируемых
моделей инженерных систем.

В
процессе сборки мы использовали инструкцию, которую поставлялась вместе с
конструктором. Но некоторые детали не соответствовали инструкции, и приходилось
самостоятельно изготавливать нужные элементы.

3.3
Написание программы для выполнения алгоритма

Для
программирования мы использовали алгоритмы ARDUINO.

Как
можно догадаться из их названия, мы имеем дело с условиями. На алгоритмическом
языке они выглядят так: «…Если (условие) верно, то…» или «…Если (условие)
верно, то…, а если не верно, то…».


Наглядно выглядит на фотографии:


На скриншоте видна рабочая программа для данного конструктора.

В
процессе написания управляющего алгоритма мы столкнулись с такими проблемами:

1)   
Быстрый
износ деталей конструктора;

2)   
Сложный
процесс написания программ для робота;

3)   
Различное
поведение сервопривода при одинаковых исходных данных.

4.Заключение

При выполнении проекта мы:

·       
Изучили основные документации и знакомство с
функциями конструктора программируемых моделей;

·       
Изучили язык программирования и программного
обеспечения необходимых для работы с роботом;

·       
Разработали программы для конструктора
программируемых моделей на платформе
Arduino;

·       
Отработали навыкы работы с конструктора
программируемых моделей при подключении различных сервоприводов.

Мы считаем, что робототехника дает развитие
междисциплинарного понимания предметов. Робототехника объединяет в себе
несколько предметов: математику, физику, информатику, технологию и другие
школьные дисциплины.

Роботы в будущем упростят нашу жизнь, сделают ее
комфортнее и доступнее. Мы сможем изучать вселенную и проникать с помощью автоматизированных,
программированных систем туда, куда никогда не сможет добраться человек. Роботы
всегда будут нужны людям с ограниченными возможностями, а также тем людям, чьи
профессии сопряжены с риском. Роботы будут строить дома и машины. Прекратиться
загрязнение окружающей среды, ведь новые технологии практически безотходны.Во
всем мире уже ведутся серьезные исследования, связанные с глобальным риском
создания искусственного сверхчеловека. Но создадут его люди! И может быть и мы.

5.Список используемой
литературы

1.    Детская энциклопедия. Техника будущего., М;
изд.Литера, 2007 г.

2.    Макаров И. М., Топчеев Ю. И. Робототехника:
История и перспективы. — М.: Наука; Изд-во МАИ, 2003.

3.    Роботы будущего — Петр Шадрин ,М.; изд . Махаон,
2014 г.

4.    «Искуственный интелект» —
http://machine-intelligence.ru/robots-types

5.    «История развития робототехники» —
http://roboreview.ru/nauka-o-robotah/istoriya-razvitiya-robototehniki.html

6.    «Мой робот» —
http://www.myrobot.ru/articles/hist.php

7.    «Развитие робототехники в будущем» —
http://robot-ex.ru/ru/newscontent/razvitie-robototehniki-v-budushchem

8.    «Роботы от А до Я» —
http://www.joho.ru/medicina.htm

9.    «ProRobot» —
http://www.prorobot.ru/12/robot-it-is.php

10.                     
http://itpoznanie.ru/robotics

11.                     
https://robo-hunter.com

12.                     
https://appliedrobotics.ru

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

Потенциометр — это переменный резистор с регулируемым сопротивлением. Потенциометры используются в робототехнике как регуляторы различных параметров — громкости звука, мощности, напряжения и т.п. В нашей модели от поворота ручки потенциометра будет зависеть яркость светодиода

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

Пьезоэлемент — электромеханический преобразователь, одним из разновидностей которого является пьезоизлучатель звука, который также называют пьезодинамиком, просто звонком или английским buzzer. Пьезодинамик переводит электрическое напряжение в колебание мембраны. Эти колебания и создают звук

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

Фоторезистор — резистор, сопротивление которого зависит от яркости света, падающего на него. Фоторезисторы используются в робототехнике как датчики освещенности. Встроенный в робота фоторезистор позволяет определять степень освещенности, определять белые или черные участки на поверхности и в соответствие с этим двигаться по линии или совершать другие действия.

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

Схема подключения:

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

Сервопривод — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов.

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

Двигатели постоянного работают при большой мощности тока, поэтому для них используется встроенный в микроконтроллер плата расширения – драйвер

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

После запуска программы двигатели будут вращаться в одну потом в другую сторону

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Так, практически в каждом доме есть несколько таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. Но самое интересное применение инфракрасного пульта — дистанционное правление роботом.

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

Подключение контактов:

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

Ультразвуковой дальномер рассчитан на определение расстояния до объектов в радиусе четырёх метров.

Работа модуля основана на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, не сложно вычислить расстояние до препятствия.

Оборудование: Дальномер, провода папа-мама 4 шт

Подключение контактов:

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

Модуль датчика оборотов двигателя предназначен главным образом для определения скорости вращения вала электродвигателя.

Как правило, датчики измеряют величину благодаря регистрации определённых событий, затем количество событий соотносится с периодом времени, за которые они произошли.

Так в данном случае измеряется скорость – под событиями здесь понимаются импульсы, полученные в результате срабатывания оптического датчика во время вращения диска с прорезями. Датчик состоит из светодиода и фототранзистора, который воспринимает наличие или отсутствие излучения светодиода.

Подключение контактов:

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

Потенциометр — это переменный резистор с регулируемым сопротивлением. Потенциометры используются в робототехнике как регуляторы различных параметров — громкости звука, мощности, напряжения и т.п. В нашей модели от поворота ручки потенциометра будет зависеть яркость светодиода

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

Пьезоэлемент — электромеханический преобразователь, одним из разновидностей которого является пьезоизлучатель звука, который также называют пьезодинамиком, просто звонком или английским buzzer. Пьезодинамик переводит электрическое напряжение в колебание мембраны. Эти колебания и создают звук

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

Фоторезистор — резистор, сопротивление которого зависит от яркости света, падающего на него. Фоторезисторы используются в робототехнике как датчики освещенности. Встроенный в робота фоторезистор позволяет определять степень освещенности, определять белые или черные участки на поверхности и в соответствие с этим двигаться по линии или совершать другие действия.

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

Схема подключения:

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

Сервопривод — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов.

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

Двигатели постоянного работают при большой мощности тока, поэтому для них используется встроенный в микроконтроллер плата расширения – драйвер

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

После запуска программы двигатели будут вращаться в одну потом в другую сторону

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Так, практически в каждом доме есть несколько таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. Но самое интересное применение инфракрасного пульта — дистанционное правление роботом.

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

Подключение контактов:

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

Ультразвуковой дальномер рассчитан на определение расстояния до объектов в радиусе четырёх метров.

Работа модуля основана на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, не сложно вычислить расстояние до препятствия.

Оборудование: Дальномер, провода папа-мама 4 шт

Подключение контактов:

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

Модуль датчика оборотов двигателя предназначен главным образом для определения скорости вращения вала электродвигателя.

Как правило, датчики измеряют величину благодаря регистрации определённых событий, затем количество событий соотносится с периодом времени, за которые они произошли.

Так в данном случае измеряется скорость – под событиями здесь понимаются импульсы, полученные в результате срабатывания оптического датчика во время вращения диска с прорезями. Датчик состоит из светодиода и фототранзистора, который воспринимает наличие или отсутствие излучения светодиода.

Подключение контактов:

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

Обновлено: 24.09.2023


About
Platform




Пример использования набора СТЕМ мастерская для создания полигона, используемого в соревновательной компетенции «Интернет вещей». Были использованы два набора «СТЕМ Мастерская» Расширенный и ресурсный набор.

Образовательный набор для изучения многокомпонентных…


Модуль технического зрения представляет собой вычислительное устройство со встроенным микропроцессором, обеспечивающее выполнение всех измерений и вычислений посредством собственных вычислительных возможностей встроенного микропроцессора, а также возможность…


Образовательный набор для изучения многокомпонентных робототехнических систем и манипуляционных роботов «Образовательный робототехнический комплект «СТЕМ Мастерская». Расширенный» предназначен для изучения основ разработки и конструирования моделей промышленных…



Учебный комплект для изучения электроники и технологий «Интернет вещей» предназначен для знакомства учащихся с основами работы с электронными устройствами и разработки информационных систем, использующих технологии «Интернета вещей» (Internet of Things, IoT).…









Продвинутый набор для разработки автономных мобильных роботов позволяет сконструировать блочно-модульную конструкцию мобильного робота, применяемого учащимися в образовательном процессе для углубленного практико-ориентированного изучения основ разработки…


Продвинутый набор для разработки автономных мобильных роботов позволяет сконструировать блочно-модульную конструкцию мобильного робота, применяемого учащимися в образовательном процессе для углубленного практико-ориентированного изучения основ разработки…




Продвинутый набор для разработки автономных мобильных роботов позволяет сконструировать блочно-модульную конструкцию мобильного робота, применяемого учащимися в образовательном процессе для углубленного практико-ориентированного изучения основ разработки…

Образовательный набор по электронике, электромеханике и микропроцессорной технике «Конструктор программируемых моделей инженерных систем. Расширенный» предназначен для изучения основ электроники, кибернетических и встраиваемых систем, а также практического применения полученных навыков в сфере робототехники и современных технологий.

Образовательный набор электронике, электромеханике и микропроцессорной технике «Конструктор программируемых моделей инженерных систем. Расширенный набор» предназначен для проведения учебных занятий по электронике и схемотехнике с целью изучения наиболее распространенной элементной базы, применяемой для инженерно-технического творчества учащихся и разработки учебных моделей роботов. Набор позволяет проведение учебных занятий по изучению основ мехатроники и робототехники, практического применения базовых элементов электроники и схемотехники, а также наиболее распространенной элементной базы и основных технических решений, применяемых при проектировании и прототипировании различных инженерных, кибернетических и встраиваемых систем.

Данный образовательный комплект «Конструктор программируемых моделей инженерных систем. Расширенный» предназначен для разработки программируемых моделей на основе многофункционального контроллера типа «Arduino», совместимого с периферийными устройствами и модулями расширения Arduino Mega2560, а также адаптированного для разработки мехатронных систем с большим числом приводов, мобильных и манипуляционных роботов, оснащенных системой технического зрения.

В состав комплекта входит набор электронных компонентов для изучения основ электроники и схемотехники, комплект приводов и датчиков различного типа для разработки робототехнических комплексов, а так же модуль технического зрения для распознавания заранее заданных графических объектов. Комплектующие и устройства набора обладают конструктивной, электрической, аппаратной и программной совместимостью друг с другом.

В состав комплекта входит:

Набор обеспечивает возможность разработки модели мобильного робота, управляемого посредством программного обеспечения для персонального компьютера и мобильных устройств на базе ОС Android, IOS, обеспечивающего возможность управления мобильным роботом и встроенным манипулятором посредством графического интерфейса, включающим в себя набор кнопок и переключателей, джойстик, область для отображения видео.

Набор обеспечивает возможность изучения основ электроники и схемотехники, разработки и прототипированию моделей роботов, разработки программных и аппаратных комплексов инженерных систем, решений в сфере «Интернет вещей», а также решений в области робототехники, искусственного интеллекта и машинного обучения.

В состав комплекта также входит набор библиотек трехмерных моделей, предназначенных для проектирования в CAD-системах и прототипирования с применением аддитивных технологий. Набор может применяться для практического изучения современных технологий в рамках соответствующих курсов в школе и детских технопарках.


About
Platform




​​Обновлённая версия образа системы управления манипуляторами доступна для загрузки на официальном сайте. В архиве содержится инструкция по обновлению. Для обновления необходимо использовать miniusb кабель, входящий в комплект, и Ethernet кабель для связи ПК с контроллером.

Список изменений:
1. Добавлена возможность смены системы координат (декартовая или полярная)
2. Добавлена возможность переключения системы перемещения инструмента по оси Z.

Полная информация по настройке содержится в инструкции по обновлению.


Запись выполнения задания 3 модуля финала национального чемпионата «Молодые профессионалы» (WorldSkills Russia).
В рамках данного модуля необходимо разработать на платформе ThingWorx систему управления оборудованием производственного модуля (гибкой производственной…

Отечественные образовательные робототехнические наборы, разработанные специально для применения в рамках образовательного процесса учащихся по программам среднего и высшего образования и внеклассной работе, а также для оснащения учебных технопарков.

Образовательные робототехнические наборы предназначены для развития у учащихся любознательности и интереса к технике, для освоения начальных навыков в области проектирования и программирования простейших роботов и робототехнических устройств.

Образовательный робототехнический комплект «СТЕМ Лаборатория» (STEM/STEAM Лаборатория)

Образовательный робототехнический комплект представляет собой трехуровневую образовательную систему для организации учебного процесса среди учащихся 10-12 лет, 12-14 лет и старше 16 лет.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Ресурсный робототехнический комплект «СТЕМ Лаборатория» (STEM/STEAM Лаборатория)

Образовательный робототехнический комплект представляет собой трехуровневую образовательную систему для организации учебного процесса среди учащихся 10-12 лет, 12-14 лет и старше 16 лет.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный робототехнический комплект «СТЕМ Академия» (STEM/STEAM Академия)

Образовательный робототехнический комплект представляет собой двухуровневую образовательную систему для изучения базовых основ проектирования робототехнических систем и развития углубленных профориентационных знаний в области многокомпонентных робототехнических систем.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный робототехнический комплект «СТЕМ Академия. Расширенная версия» (STEM/STEAM Академия)

Образовательный робототехнический комплект представляет собой двухуровневую образовательную систему для изучения базовых основ проектирования робототехнических систем и развития углубленных профориентационных знаний в области многокомпонентных робототехнических систем.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный набор для изучения многокомпонентных робототехнических систем и манипуляционных роботов. Образовательный робототехнический комплект «СТЕМ Мастерская». Расширенный

Образовательный набор для изучения многокомпонентных робототехнических систем и манипуляционных роботов «Образовательный робототехнический комплект «СТЕМ Мастерская». Расширенный» предназначен для изучения робототехнических технологий, основ информационных технологий и технологий промышленной автоматизации, а также технологий прототипирования и аддитивного производства.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный набор по электронике, электромеханике и микропроцессорной технике. Конструктор программируемых моделей инженерных систем. Расширенный

Образовательный набор по электронике, электромеханике и микропроцессорной технике «Конструктор программируемых моделей инженерных систем. Расширенный» предназначен для изучения основ электроники, кибернетических и встраиваемых систем, а также практического применения полученных навыков в сфере робототехники и современных технологий.

Производитель: ООО «Прикладная робототехника»
Страна производитель: Россия

Образовательный набор для изучения технологий связи и IoT. Конструктор программируемых моделей инженерных систем. «Интернет вещей»

Образовательный набор для изучения технологий связи и IoT предназначен для изучения основ применения технологий «Интернет вещей» и связи в робототехнических системах. Комплект предназначен для разработки модели программируемого мобильного робота, обладающего встроенной системой управления, обеспечивающего возможность распределенного управления группой роботов.

КПМИС. «Электроника и вычислительная техника»

Образовательный набор для изучения основ электроники и схемотехники, вычислительной техники и разработки программируемых моделей инженерных систем.

КПМИС. «Кибернетические системы»

Образовательный набор для изучения основ микропроцессорной техники и систем реального времени.

КПМИС. «Информационные системы и устройства»

Образовательный набор для изучения основ технологий беспроводной связи при разработке распределенных систем управления.

Конструктор программируемых моделей инженерных систем. «Смарт-системы»

ООО «Прикладная робототехника»

© Robot Geeks, 2014. Использование материалов Сайта разрешается только с согласия администрации

Настоящая программа предназначена для учащихся 8 классов образовательных учреждений, которые впервые будут знакомиться с Arduino Mega 2650. Занятия проводятся 1 раз в неделю, рассчитанные на весь учебный год, 34 недели. Конструируя и программируя дети помогают друг другу. КПК 1 час в неделю Лабораторные работы по элективу

Просмотр содержимого документа
«Рабочий план + КПК Робототехника Arduino Mega 2650»

Муниципальное бюджетное общеобразовательное учреждение средняя общеобразовательная школа №2 с. Стерлибашево. МР Стерлибашевский район Республики Башкортостан

на заседании ШМО учителей математики

Протокол № 1
«_____» _______ 2021г.

Директор МБОУ СОШ №2 с.Стерлибашево

________ Р.В. Мирхайдаров

«_____» ________ 2021г

Рабочая программа по внеурочной деятельности

Наименование курса: Робототехника

Ступень обучения: основное общее образование

Срок реализации: 1 год

Рабочую программу составил: ___________Загидуллин Н. Р.

Технологии образовательной робототехники способствуют эффективному овладению обучающимися универсальными учебными действиями, так как объединяют разные способы деятельности при решении конкретной задачи. Кружок «Робототехника на основе Arduino» предназначен для того, чтобы учащиеся имели представления о мире техники, устройстве конструкций, механизмов и машин, их месте в окружающем мире. Реализация данного кружка позволяет стимулировать интерес и любознательность, развивать способности к решению проблемных ситуаций умению исследовать проблему, анализировать имеющиеся ресурсы, выдвигать идеи, планировать решения и реализовывать их, расширить технический и математический словари ученика. Кроме этого, помогает развитию коммуникативных навыков учащихся за счет активного взаимодействия детей в ходе групповой проектной деятельности.

Настоящая программа предназначена для учащихся 8 классов образовательных учреждений, которые впервые будут знакомиться с Arduino. Занятия проводятся 1 раз в неделю, рассчитанные на весь учебный год, 34 недели.
Конструируя и программируя дети помогают друг другу.

Робототехника — прикладная наука, занимающаяся разработкой автоматизированных технических систем. Робототехника опирается на электронику, механику и программирование. Для обучения учащихся, склонных к естественным наукам, технике или прикладным исследованиям, важно вовлечь их в такую учебно-познавательную деятельность и развить их способности в дальнейшем.

В отличие от LEGO роботов, которые собираются из блоков, робототехника на основе Arduino открывает больше возможностей, где можно использовать практически все что есть под руками.

На современном этапе в условиях введения ФГОС возникает необходимость в организации урочной и внеурочной деятельности, направленной на удовлетворение потребностей ребенка, которые способствуют реализации основных задач научно-технического прогресса. Целью использования «Робототехника на основе Arduino» является овладение навыками технического конструирования, знакомство с элементами радио-конструирования, развитие мелкой моторики, изучение понятий конструкции и основных свойств (жесткости, прочности, устойчивости), навык взаимодействия в группе. Дети работают с микросхемой Arduino Mega 2650, и наборами датчиков. С их помощью школьник может запрограммировать робота — умную машинку на выполнение определенных функций.

Применение роботостроения в школе, позволяет существенно повысить мотивацию учащихся, организовать их творческую и исследовательскую работу. А также позволяет школьникам в форме познавательной игры узнать многие важные идеи и развивать необходимые в дальнейшей жизни навыки.

ЦЕЛИ И ЗАДАЧИ КРУЖКА

Цель: образование детей в сфере инновационных технологий на основе конструирования и программирования роботов Arduino, содействие развитию технического творчества, развитие инновационной деятельности в образовательных учреждениях.

Стимулирование мотивации учащихся к получению знаний, помогать формировать творческую личность ребенка.

Развитие интереса к технике, конструированию, программированию, высоким технологиям.

Развитию конструкторских, инженерных и вычислительных навыков.

Развитие мелкой моторики.

Формирование умения достаточно самостоятельно решать технические задачи в процессе конструирования моделей.

Предполагаемые результаты освоения курса

Личностными результатами изучения является формирование следующих умений:

самостоятельно и творчески реализовывать собственные замыслы.

повышение своего образовательного уровня и уровня готовности к продолжению обучения с использованием ИКТ.

навыки взаимо — и самооценки, навыки рефлексии;

сформированность представлений о мире профессий, связанных с робототехникой, и требованиях, предъявляемых различными востребованными профессиями, такими как инженер-механик, конструктор, архитектор, программист, инженер-конструктор по робототехнике;

Предметные образовательные результаты:

Определять, различать и называть детали конструктора,

Способность реализовывать модели средствами вычислительной техники;

конструировать по условиям, заданным взрослым, по образцу, по чертежу, по заданной схеме и самостоятельно строить схему.

Владение основами разработки алгоритмов и составления программ управления роботом;

Умение проводить настройку и отладку конструкции робота.

Метапредметными результатами изучения является формирование следующих универсальных учебных действий (УУД):

Познавательные УУД:

ориентироваться в своей системе знаний: отличать новое от уже известного.

перерабатывать полученную информацию: делать выводы в результате совместной работы всего класса, сравнивать и группировать предметы и их образы;

умение устанавливать взаимосвязь знаний по разным учебным предметам (математике, физике, природоведения, биологии, анатомии, информатике, технологии и др.) для решения прикладных учебных задач по Робототехнике.

Регулятивные УУД:

уметь работать по предложенным инструкциям.

умение излагать мысли в четкой логической последовательности, отстаивать свою точку зрения, анализировать ситуацию и самостоятельно находить ответы на вопросы путем логических рассуждений.

определять и формулировать цель деятельности на занятии с помощью учителя;

Коммуникативные УУД:

уметь работать в паре и в коллективе; уметь рассказывать о постройке.

уметь работать над проектом в команде, эффективно распределять обязанности.

Читайте также:

  • Фабрика героев лего робот истребитель
  • Lego naval ships 0280
  • Самоделка лего человек муравей
  • Лего майндстормс ев3 сборка
  • Как построить космическую базу из лего

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

Потенциометр — это переменный резистор с регулируемым сопротивлением. Потенциометры используются в робототехнике как регуляторы различных параметров — громкости звука, мощности, напряжения и т.п. В нашей модели от поворота ручки потенциометра будет зависеть яркость светодиода

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

Пьезоэлемент — электромеханический преобразователь, одним из разновидностей которого является пьезоизлучатель звука, который также называют пьезодинамиком, просто звонком или английским buzzer. Пьезодинамик переводит электрическое напряжение в колебание мембраны. Эти колебания и создают звук

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

Фоторезистор — резистор, сопротивление которого зависит от яркости света, падающего на него. Фоторезисторы используются в робототехнике как датчики освещенности. Встроенный в робота фоторезистор позволяет определять степень освещенности, определять белые или черные участки на поверхности и в соответствие с этим двигаться по линии или совершать другие действия.

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

Схема подключения:

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

Сервопривод — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов.

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

Двигатели постоянного работают при большой мощности тока, поэтому для них используется встроенный в микроконтроллер плата расширения – драйвер

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

После запуска программы двигатели будут вращаться в одну потом в другую сторону

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Так, практически в каждом доме есть несколько таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. Но самое интересное применение инфракрасного пульта — дистанционное правление роботом.

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

Подключение контактов:

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

Ультразвуковой дальномер рассчитан на определение расстояния до объектов в радиусе четырёх метров.

Работа модуля основана на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, не сложно вычислить расстояние до препятствия.

Оборудование: Дальномер, провода папа-мама 4 шт

Подключение контактов:

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

Модуль датчика оборотов двигателя предназначен главным образом для определения скорости вращения вала электродвигателя.

Как правило, датчики измеряют величину благодаря регистрации определённых событий, затем количество событий соотносится с периодом времени, за которые они произошли.

Так в данном случае измеряется скорость – под событиями здесь понимаются импульсы, полученные в результате срабатывания оптического датчика во время вращения диска с прорезями. Датчик состоит из светодиода и фототранзистора, который воспринимает наличие или отсутствие излучения светодиода.

Подключение контактов:

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

Наиль Загидуллин

МБОУ СОШ № 2 с. Стерлибашево

Лабораторные работы на Arduino

Робототехника

Оглавление

Лабораторная работа № 1 Светодиод 2

Сборка элементов на плате 4

Лабораторная работа № 2 Управляемый «программно» светодиод 7

Лабораторная работа № 3 Управляемый вручную светодиод 10

Сборка элементов на плате 12

Лабораторная работа № 4.1 Пьезодинамик 13

Сборка элементов на плате 13

Лабораторная работа № 4.2 Управляемый пьезодинамик 15

Сборка элементов на плате 15

Лабораторная работа № 5 Фоторезистор 17

Сборка элементов на плате 19

Лабораторная работа № 6 Кнопка 20

Лабораторная работа № 7 Термистор 22

Лабораторная работа № 8 Синтезатор 24

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором 25

Лабораторная работа № 10 Обмен данными Arduino с ПК 27

Лабораторная работа № 11 Дисплей LCD 12С интерфейс 28

Лабораторная работа № 12 Сервопривод 30

Лабораторная работа № 13 Шаговый двигатель 32

Лабораторная работа № 13 Двигатель постоянного тока 35

Лабораторная работа № 14 ИК-датчик и ИК пульт 37

Лабораторная работа № 15 Bluetooth модуль 40

Лабораторная работа № 16 Дальномер 42

Лабораторная работа № 17 Датчик скорости 44

Приложения 46

Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение. 4

Звездные войны 46

Виртуальный тренажёр на сайте К. Полякова 49

Скетч «Светофор» на тренажёре К. Полякова 1

Скетч «Светофор» на Ардуино 7

Лабораторная работа № 1 Светодиод

Цель: Научиться работать с виртуальным тренажёром Arduino

  1. Зайдите на сайт: https://www.tinkercad.com/joinclass/YXHUNU9GQUEQ1

  2. Авторизуйтесь используя один их ниже представленных аккаунтов

  3. Выберите Цепи Создать цепь

  4. Введите название проекта Проект 1

  5. Перетащите на рабочее поле Arduino Uno 3 и дайте ему имя Ардуино

  6. Перетащите на рабочее поле Малую макетную плату (Breadbord) и дайте ему имя Плата

  7. Перетащите на рабочее поле Светодиод (Led) и дайте ему имя Светодиод

  8. Перетащите на рабочее поле Резистор (Resistor) и дайте ему имя Резистор, 220

    Поворот элемента соединитель

  9. Поверните Резистор, выберите соединитель обычный
    Соедините элементы так, как показано на рисунке:

  1. Нажмите кнопку Код. Из выпадающего списка выберите Текст.

  2. Введите код программы (скетча), можно скопировать и вставить:

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Начать моделирование (светодиод должен моргать)

  2. Нажмите кнопку Остановить моделирование (светодиод перестает моргать)

Пояснение кода:

int led = 8;  //объявление переменной целого типа, содержащей номер порта к которому мы подключили второй провод

void setup()  //обязательная процедура setup, запускаемая в начале программы; объявление процедур начинается словом void

pinMode(led, OUTPUT); //объявление используемого порта, led — номер порта, второй аргумент — тип использования порта — на вход (INPUT) или на выход (OUTPUT)

void loop() //обязательная процедура loop, запускаемая циклично после процедуры setup

digitalWrite(led, HIGH); //эта команда используется для включения или выключения напряжения на цифровом порте; led — номер порта, второй аргумент — включение (HIGH) или выключение (LOW)

delay(1000); //эта команда используется для ожидания между действиями, аргумент — время ожидания в миллисекундах (1 с = 1000 мс)

Дополнительное задание. Запустите модель с новыми параметрами:

Измените частоту мигания светодиода с периодом 2 с; 0, 5 с

Переключите светодиод на пин 7 и отредактируйте код на int led = 7;  

Лабораторная работа № 1.1 Работа с набором «Конструктор программируемых моделей инженерных систем». Первое подключение.

  1. Запустить на компьютере программу Arduino IDE

  2. Подключите микроконтроллер через USB кабель к компьютеру

  3. Выберите в программе нужную плату и порт. Инструменты – плата –
    Arduino Mega or Mega 2650. Инструментыпорт – СОМ 4 (цифра может быть другой)

Наберите тестовую программу:

int led = 13;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

  1. Нажмите кнопку Загрузка. (программа попросит сохранить файл, сохраните, выбрав имя test)
    Компьютер должен быть подключен к Интернет! Разрешить брандмауэру выход программы в Интернет.

  2. После загрузки скетча на плате начнет мигать светодиод

Лабораторная работа № 1.2 Сборка элементов на плате

Оборудование: Макетная плата, 2 провода папа-папа, светодиод, резистор на 220 Ом.

Общие контакты

GND

Pin 8

Сборка элементов на плате производится по схеме:

Верхний провод соединяет свободный конец светодиода и пин под номером 8 на плате

Нижний провод соединяет своболный конец резистора и контакт GDN (минус или земля)

Получается последовательная цепь.

Введите код в программу Arduino IDE
int led = 8;

void setup()

  1. Сохраните программу под именем Lab1.2

  2. Нажмите кнопку Загрузка.

  3. После загрузки скетча светодиод начнет мигать

{

pinMode(led, OUTPUT);

}

void loop()

{

digitalWrite(led, HIGH);

delay(1000);

digitalWrite(led, LOW);

delay(1000);

}

Приложение к ЛР № 1.2

Загрузка

Pin 8

GND

Если светодиод не горит, поменяйте контакты светодиода

Лабораторная работа 1.3 Проект «Светофор» на Ардуино

Код программы

int led_G = 7;

int led_Y = 6;

int led_R = 5;

void setup()

{

pinMode(led_R, OUTPUT);

pinMode(led_Y, OUTPUT);

pinMode(led_G, OUTPUT);

}

void loop()

{

//red

digitalWrite(led_R, HIGH);

delay(3000);

//===red-yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_R, LOW);

digitalWrite(led_Y, LOW);

//===green

digitalWrite(led_G, HIGH);

delay(3000);

digitalWrite(led_G, LOW);

//==yellow

digitalWrite(led_Y, HIGH);

delay(2000);

digitalWrite(led_Y, LOW);

delay(1000);

}

Лабораторная работа № 2 Управляемый «программно» светодиод

Цель работы: понять принцип работы широтно-импульсной модуляции (ШИМ). Научиться использовать ШИМ в проектах на базе Arduino.

Широтно-импульсная модуляция (ШИМ) — это метод получения изменяющегося аналогового значения посредством цифровых устройств.

Для ШИМ используется функция analogWrite(nun, значение); где пин — номер контакта Arduino, значение — число от О до 255. Например, значение 153 будет соответствовать величине тока в 3 вольта, а 76 — 1,5 вольт. 255 – 5 вольт. 0 – 0 вольт.

Ход работы:

Соберите схему (см. рис). Напишите код скетча.

// ШИН

int led = 6;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

//3 Вольта

analogWrite(led, 153);

delay(1000);

//1,5 Вольта

analogWrite(led, 76);

delay(1000);

//5 Вольт

analogWrite(led, 255);

delay(1000);

}

Светодиод должен мигать с переменной яркостью

Доп. Задание. Измените код так, чтобы

  1. Изменилась скорость мигания светодиода

  2. Изменилась яркость мигания светодиода

Источник: Лабораторная работа №4 «Широтно-импульсная модуляция» — Программирование микроконтроллера Arduino в информационно-управляющих системах (bstudy.net)

Лабораторная работа № 3 Управляемый вручную светодиод

Цель: Знакомство с устройством Потенциометра

Потенциометр — это переменный резистор с регулируемым сопротивлением. Потенциометры используются в робототехнике как регуляторы различных параметров — громкости звука, мощности, напряжения и т.п. В нашей модели от поворота ручки потенциометра будет зависеть яркость светодиода

Оборудование: Малая макетная плата, резистор (220 В), светодиод, потенциометр,

Соединители: удлинитель -1, провода: папа-мама-3, папа-папа -3)

Соберите схему:
Тип провода – Схема. После соединения измените цвет провода.

Земля

// даём имена пинов со светодиодом

// и потенциометром

int led =9

int pot= A0

void setup()

{

// пин со светодиодом — выход

pinMode(led, OUTPUT);

// пин с потенциометром — вход

pinMode(pot, INPUT);

}

void loop()

{

// объявляем переменную x

int x;

// считываем напряжение с потенциометра:

// будет получено число от 0 до 1023

// делим его на 4, получится число в диапазоне

// 0-255 (дробная часть будет отброшена)

x = analogRead(pot) / 4;

// выдаём результат на светодиод

analogWrite(led, x);

}

Код программы:

int led = 9;

int pot = A0;

void setup()

{

pinMode(led, OUTPUT);

pinMode(pot, INPUT);

}

void loop()

{

int x;

x = analogRead(pot)/4;

analogWrite(led, x);

}

Загрузите программу и покрутите ручкой потенциометра – яркость светодиода должна изменятся

Источник:
Arduino для начинающих. Урок 3. Подключение потенциометра | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

  • Если светодиод не горит — поменяйте контакты светодиода

  • Если от потенциометра идёт дым и запах отключите питание. Установите ручку потенциометра в среднее положение и повторите попытку

  • У Потенциометра полярность крайних контактов (+ и -) произвольная

Лабораторная работа № 4.1 Пьезодинамик

Цель: Знакомство с работой пьезоэлемента

Источник:
Arduino для начинающих. Урок 6. Подключение пьезоэлемента | Занимательная робототехника (edurobots.ru)

Пьезоэлемент — электромеханический преобразователь, одним из разновидностей которого является пьезоизлучатель звука, который также называют пьезодинамиком, просто звонком или английским buzzer. Пьезодинамик переводит электрическое напряжение в колебание мембраны. Эти колебания и создают звук

  1. Доп. Информация:
    Приложение: Звездные войны

Сборка элементов на плате

Пояснение кода:

int p = 3; //объявляем переменную с номером пина, на который мы

//подключили пьезоэлемент

void setup() //процедура setup

{

pinMode(p, OUTPUT); //объявляем пин как выход

}

void loop() //процедура loop

{

tone (p, 500); //включаем на 500 Гц

delay(100); //ждем 100 мс

tone(p, 1000); //включаем на 1000 Гц

delay(100); //ждем 100 мс

}

Код программы:

int p = 3;

void setup()

{

pinMode(p, OUTPUT);

}

void loop() //процедура loop

{

tone (p, 500);

delay(100);

tone(p, 1000);

delay(100);

}

Лабораторная работа № 4.2 Управляемый пьезодинамик

Цель: Получение звука переменной частоты с помощью потенциометра.

int buzzer_pin = 3;

int pot_pin = A0;

void setup()

{

pinMode(buzzer_pin, OUTPUT);

}

void loop() //процедура loop

{

int rotation, frequency;

rotation = analogRead(pot_pin);

frequency = map(rotation,0,1023,3500,4500);

tone (buzzer_pin, frequency,20);

}

Сборка элементов на плате

Лабораторная работа № 5 Фоторезистор

Цель: Знакомство работой фоторезистора

Фоторезистор — резистор, сопротивление которого зависит от яркости света, падающего на него. Фоторезисторы используются в робототехнике как датчики освещенности. Встроенный в робота фоторезистор позволяет определять степень освещенности, определять белые или черные участки на поверхности и в соответствие с этим двигаться по линии или совершать другие действия.

Оборудование: 6 проводов “папа-папа”, фоторезистор, светодиод, резистор на 220 Ом, резистор на 10 кОм

Схема подключения:

Код программы:

int led = 13; //переменная с номером пина светодиода

int ldr = 0; //и фоторезистора

void setup() //процедура setup

{

pinMode(led, OUTPUT); //указываем, что светодиод — выход

}

void loop() //процедура loop

{

if (analogRead(ldr)

//если показатель освещенности меньше 800, включаем светодиод

else digitalWrite(led, LOW); //иначе выключаем

}

Источник:

Arduino для начинающих. Урок 7. Подключение фоторезистора | Занимательная робототехника (edurobots.ru)

Сборка элементов на плате

Лабораторная работа № 6 Кнопка

Цель: управление светодиодом с помощью кнопки

Сегодня подключаем к ардуино кнопку и светодиод (при нажатой кнопке светодиод будет гореть, при отжатой — не гореть)

Код:

int button = 2;

int led = 8;

void setup() {

pinMode(led, OUTPUT);

pinMode(button, INPUT);

}

void loop(){

if (digitalRead(button) == HIGH) {

digitalWrite(led, HIGH);

}

else {

digitalWrite(led, LOW);

}

}

Источник:
Arduino для начинающих. Урок 2. Подключение кнопки | Занимательная робототехника (edurobots.ru)

Лабораторная работа № 7 Термистор

Цель: Изучить работу термистора

Терморезистор (термистор) — полупроводниковый прибор, электрическое сопротивление которого изменяется в зависимости от его температуры.

10 КОм

Код:

#define B 3950 // B-коэффициент

#define SERIAL_R 10000 // сопротивление последовательного резистора, 10 кОм

#define THERMISTOR_R 10000 // номинальное сопротивления термистора, 100 кОм

#define NOMINAL_T 25 // номинальная температура (при которой TR = 100 кОм)

const byte tempPin = A0;

void setup() {

Serial.begin(9600);

pinMode( tempPin, INPUT );

}

Монитор порта

void loop() {

int t = analogRead( tempPin );

float tr = 1023.0 / t — 1;

tr = SERIAL_R / tr;

Serial.print(«R=»);

Serial.print(tr);

Serial.print(«, t=»);

float steinhart;

steinhart = tr / THERMISTOR_R;

steinhart = log(steinhart);

steinhart /= B;

steinhart -= 1.0 / (NOMINAL_T + 273.15);

steinhart = 1.0 / steinhart;

steinhart += 273.15;

Serial.println(abs(steinhart));

Подключение термистора к arduino. — У Павла! (psenyukov.ru)

delay(1000);

}

Лабораторная работа № 8 Синтезатор

Цель: получение звуков с помощью встроенных кнопок

Pin 8

GND

Код:

#define buz_pin 8

#define first_pin 30 // общее количество клавиш

#define button_count 3

void setup()

{

pinMode(buz_pin, OUTPUT);

}

void loop()

{

for (int i = 0; i

{

int buttonPin = i + first_pin;

boolean buttonUp = digitalRead(buttonPin);

if (!buttonUp) {

int frequency = 400 + i * 50;

tone(buz_pin,frequency, 50);

delay(500);

}

}

}

Лабораторная работа № 9 Взаимодействие Arduino с семисегментным индикатором

Цель: Знакомство с работой семисегментного индикатора

Код: Обратный отсчёт

/ создать массив для хранения конфигурации выводов индикатора для цифр

int num_array[10][7] = { { 1,1,1,1,1,1,0 }, // 0

{ 0,1,1,0,0,0,0 }, // 1

{ 1,1,0,1,1,0,1 }, // 2

{ 1,1,1,1,0,0,1 }, // 3

{ 0,1,1,0,0,1,1 }, // 4

{ 1,0,1,1,0,1,1 }, // 5

{ 1,0,1,1,1,1,1 }, // 6

{ 1,1,1,0,0,0,0 }, // 7

{ 1,1,1,1,1,1,1 }, // 8

{ 1,1,1,1,0,1,1 }}; // 9

// объявление функции

void Num_Write(int);

void setup()

{

// установить режимы работы выводов

pinMode(2, OUTPUT);

pinMode(3, OUTPUT);

pinMode(4, OUTPUT);

pinMode(5, OUTPUT);

pinMode(6, OUTPUT);

pinMode(7, OUTPUT);

pinMode(8, OUTPUT);

}

void loop()

{

// цикл счетчика

for (int counter = 10; counter 0; —counter)

{

delay(1000);

Num_Write(counter-1);

}

delay(3000);

}

// эта функция записывает значения в выводы, подключенные к индикатору

void Num_Write(int number)

{

int pin= 2;

for (int j=0; j 7; j++)

{

digitalWrite(pin, num_array[number][j]);

pin++;

}

}

Источник: Взаимодействие Arduino с семисегментным индикатором (radioprog.ru)

Лабораторная работа № 10 Обмен данными Arduino с ПК

Цель: Изучить механизм обмена данными между ПК и микроконтроллером

Микроконтроллер будет получать через последовательный порт некие команды и отправлять на ПК ответ, что та или иная команда принята.

Код:

void setup() {

  // Инициализация последовательного порта с указанием скорости обмена данными ( по умолчанию лучше использовать 9600 бод)

  Serial.begin(9600);

  // Устанавливаем таймаут (значение по умолчанию слишком велико)

  Serial.setTimeout(100);

}

void loop() {

  // Если поступили данные с ПК

  if (Serial.available() 0) {

    // Считываем полученные данные

    String command = Serial.readString();

    // Формируем ответ

    String response = «Command » + command + » is accepted!»;

    // Отправляем ответ ПК

    Serial.println(response); 

}

}

Источники:

Обмен данными между ПК и Arduino через последовательный порт (с примером на C#) | Стрелец Coder (streletzcoder.ru)

Arduino: Serial Monitor. Общаемся с компьютером (alexanderklimov.ru)

Лабораторная работа № 11 Дисплей LCD 12С интерфейс

Цель: Знакомство работой дисплея

Контакты — цвет проводов

GND – чёрный

5V — красный

SCL — оранжевый

SDA — жёлтый

Для работы понадобится библиотека LiquidCrystal_I2C. Нужно скачать (

https://iarduino.ru/file/134.html

) и распаковать содержимое архива в папку Arduinolibraries.

Код:

#include // библиотека для управления устройствами по I2C

#include // подключаем библиотеку

LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя LCD для дисплея

void setup() {

LCD.init(); // инициализация LCD дисплея

LCD.backlight(); // включение подсветки дисплея

LCD.setCursor(3, 0); // ставим курсор на 1 символ первой строки

LCD.print(«I LOVE»); // печатаем сообщение на первой строке

LCD.setCursor(2, 1); // ставим курсор на 1 символ второй строки

LCD.print(«ARDUINO»); // печатаем сообщение на второй строке

Изменить работу программы так, чтобы она работала как

1)секундомер 2) калькулятор (считывает данные с клавиатуры и выводит на дисплей)

}

void loop() {

}
Источник:

Arduino подключение LCD 1602 I2C (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 12 Сервопривод

Цель: знакомство с работой сервопривода

Сервопривод — это мотор, положением вала которого мы можем управлять. От обычного мотора он отличается тем, что ему можно точно в градусах задать положение, в которое встанет вал. Сервоприводы используются для моделирования различных механических движений роботов.

Оборудование: сервопривод PDI-6221MG, блок питания

Подключить сервопривод к пину № 9 с помощью трехжильного шлейфа

Arduino Mega позволяет подключить до 48 сервоприводов.

Код:

#include //используем библиотеку для работы с сервоприводом

Servo servo; //объявляем переменную servo типа Servo

void setup() //процедура setup

{

servo.attach(9); //привязываем привод к порту 10

}

void loop() //процедура loop

{

servo.write(0); //ставим вал под 0

delay(2000); //ждем 2 секунды

servo.write(180); //ставим вал под 180

delay(2000); //ждем 2 секунды

}

Если возникает шум в работе, измените углы от 10 до 170 градусов

Источник:

  1. Arduino для начинающих. Урок 4. Управление сервоприводом | Занимательная робототехника (edurobots.ru)

  2. Что такое сервопривод (сервомотор) и как им управлять — Суперайс (supereyes.ru)

Лабораторная работа № 13 Шаговый двигатель

Цель: знакомство с работой шагового двигателя

Шаговый двигатель (stepper motor) предназначен для точного позиционирования или перемещения объекта на заданное количество шагов вала.

Оборудование: Шаговый двигатель, драйвер, провода

Код:

// порты для подключения модуля ULN2003 к Arduino

#define in1 7

#define in2 8

#define in3 9

#define in4 10

int dl = 5; // время задержки между импульсами

void setup() {

pinMode(in1, OUTPUT);

pinMode(in2, OUTPUT);

pinMode(in3, OUTPUT);

pinMode(in4, OUTPUT);

}

void loop() {

digitalWrite(in1, HIGH);

digitalWrite(in2, LOW);

digitalWrite(in3, LOW);

digitalWrite(in4, HIGH);

delay(dl);

digitalWrite(in1, HIGH);

digitalWrite(in2, HIGH);

digitalWrite(in3, LOW);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, HIGH);

digitalWrite(in3, HIGH);

digitalWrite(in4, LOW);

delay(dl);

digitalWrite(in1, LOW);

digitalWrite(in2, LOW);

digitalWrite(in3, HIGH);

digitalWrite(in4, HIGH);

delay(dl);

}

Источник:

Arduino шаговый двигатель 28byj-48 (stepper motor) » Ардуино Уроки (xn--18-6kcdusowgbt1a4b.xn--p1ai)

Лабораторная работа № 13 Двигатель постоянного тока

Цель: знакомство с двигателем постоянного тока

Двигатели постоянного работают при большой мощности тока, поэтому для них используется встроенный в микроконтроллер плата расширения – драйвер

Оборудование: DC-мотор (2 шт), источник питания

Прижать в гнёзда зеленого цвета с помощью маленькой отвертки провода двигателя

После запуска программы двигатели будут вращаться в одну потом в другую сторону

Код:

#define M1_dir 45 //направление вращения 1 двигателя

#define M1_Speed 44 //скорость вращения 1 двигателя

#define M2_dir 47 //направление вращения 2 двигателя

#define M2_Speed 46 //скорость вращения 2 двигателя

void setup() {

pinMode(M1_dir, OUTPUT);

pinMode(M1_Speed, OUTPUT);

pinMode(M2_dir, OUTPUT);

pinMode(M2_Speed, OUTPUT);

}

void loop() {

digitalWrite(M1_dir, LOW);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, LOW);

analogWrite(M2_Speed, 150);

delay(2000);

digitalWrite(M1_dir, HIGH);

analogWrite(M1_Speed, 150);

digitalWrite(M2_dir, HIGH);

analogWrite(M2_Speed, 150);

delay(2000);

analogWrite(M1_Speed, 0);

analogWrite(M2_Speed, 0);

}

Лабораторная работа № 14 ИК-датчик и ИК пульт

Цель: знакомство с работой ИК-датчика и пульта

Инфракрасный пульт дистанционного управления — один из самых простых способов взаимодействия с электронными приборами. Так, практически в каждом доме есть несколько таких устройств: телевизор, музыкальный центр, видеоплеер, кондиционер. Но самое интересное применение инфракрасного пульта — дистанционное правление роботом.

Скачать и установить библиотеку IRremote

Красный провод — +5V

Оранжевый – GND (земля или минус)

Черный – пин 2

ИК датчик может принимать сигналы и из обычного пульта от телевизора

 С помощью программы будем принимать команды с пульта и выводить их в окно монитора. 

Код:

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

Serial.begin(9600); // выставляем скорость COM порта

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

Serial.println( results.value, HEX ); // печатаем данные

irrecv.resume(); // принимаем следующую команду

}

}

Управление яркостью светодиода (пин 13) с помощью ИК- пульта

Из предыдущей программы определяем коды громкости пульта

20DF40BF и 20DFC03F

#include «IRremote.h»

IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

decode_results results;

void setup() {

irrecv.enableIRIn(); // запускаем прием

}

void loop() {

if ( irrecv.decode( &results )) { // если данные пришли

switch ( results.value ) {

case 0x20DF40BF:

digitalWrite( 13, HIGH );

break;

case 0x20DFC03F:

digitalWrite( 13, LOW );

break;

}

irrecv.resume(); // принимаем следующую команду

}

Источник:

Ардуино: инфракрасный пульт и приемник | Класс робототехники (robotclass.ru)

Лабораторная работа № 15 Bluetooth модуль

Цель: знакомство с работой Bluetooth модуля

Bluetooth модуль HC-05 используется для дистанционного управления ардуино или передачи данных с телефонов и гаджетов на микроконтроллер.

Нужно установить на телефон (Android) приложение Bluetooth терминал

Оборудование: Bluetooth модуль HC-05, источник питания, провода папа-мама 4 шт

При загрузке скэтча нужно отключить от питания Bluetooth модуль

Подключение контактов:

Arduino

Bluetooth

Pin 1 (TX)

RXD

Pin 0 (RX)

TXD

GND

GND

5V

VCC

Напишем программу, которая будет с телефона управлять светодиодом (пин 13)

Код:

int val;

int LED = 13;

void setup()

{

Serial.begin(9600);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

}

void loop()

{

if (Serial.available())

{

val = Serial.read();

// При символе «1» включаем светодиод

if (val == ‘1’)

{

digitalWrite(LED, HIGH);

}

// При символе «0» выключаем светодиод

if ( val == ‘0’)

{

digitalWrite(LED, LOW);

}

}

}

Подключение терминала:

  1. Включаем Bluetooth на телефоне и ищем новые устройства

  2. Находим в списке расстройств «HC-05» и подключаемся к нему.

  3. Телефон спросит пин-код. необходимо ввести «1234» или «0000»

  4. Запустить терминал

Источник:

Урок 15. Bluetooth модуль HC-06 подключение к Arduino. Управление устройствами с телефона. — Описания, примеры, подключение к Arduino (iarduino.ru)

Лабораторная работа № 16 Дальномер

Цель: знакомство с работой дальномера (датчик расстояния)

Ультразвуковой дальномер рассчитан на определение расстояния до объектов в радиусе четырёх метров.

Работа модуля основана на принципе эхолокации. Модуль посылает ультразвуковой сигнал и принимает его отражение от объекта. Измерив время между отправкой и получением импульса, не сложно вычислить расстояние до препятствия.

Оборудование: Дальномер, провода папа-мама 4 шт

Подключение контактов:

Arduino

Дальномер

Pin 11

ECHO

Pin 10

TRIG

GND

GND

5V

VCC

Нужно установить библиотеку NewPing.h

Программа выводит на монитор расстояние до объектов в см

Код:

#include

#define TRIGGER_PIN 10

#define ECHO_PIN 11

#define MAX_DISTANCE 400

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);

void setup() {

Serial.begin(9600);

}

void loop() {

delay(500);

Serial.print(«Ping: «);

Serial.print(sonar.ping_cm());

Serial.println(«cm»);

}

Источник:

Ультразвуковой дальномер HC-SR04: подключение, схема и примеры работы [Амперка / Вики] (amperka.ru)

Лабораторная работа № 17 Датчик скорости

Цель: знакомство с работой датчика скорости

Модуль датчика оборотов двигателя предназначен главным образом для определения скорости вращения вала электродвигателя.

Как правило, датчики измеряют величину благодаря регистрации определённых событий, затем количество событий соотносится с периодом времени, за которые они произошли.

Так в данном случае измеряется скорость – под событиями здесь понимаются импульсы, полученные в результате срабатывания оптического датчика во время вращения диска с прорезями. Датчик состоит из светодиода и фототранзистора, который воспринимает наличие или отсутствие излучения светодиода.

Подключение контактов:

Arduino

Датчик

GND

GND

2

OUT

5V

VCC

Код:

int encoder_pin = 2; // импульсные сигналы от модуля

unsigned int rpm; // количество оборотов в минуту

volatile byte pulses; // количество импульсов

unsigned long timeold;

// количество импульсов на оборот

unsigned int pulsesperturn = 12;

void counter()

{

//обновление счета импульсов

pulses++;

}

void setup()

{

Serial.begin(9600);

pinMode(encoder_pin, INPUT);

//Прерывание 0 на цифровой линии 2

//Срабатывание триггера по спаду сигнала

attachInterrupt(0, counter, FALLING);

// Инициализация

pulses = 0;

rpm = 0;

timeold = 0;

}

void loop()

{

if (millis() — timeold = 1000) {

//Не обрабатывать прерывания во время счёта

detachInterrupt(0);

rpm = (60 * 1000 / pulsesperturn )/ (millis() — timeold)* pulses;

timeold = millis();

pulses = 0;

Serial.print(«RPM = «);

Serial.println(rpm,DEC);

//Перезагрузка процесса обработки прерываний

attachInterrupt(0, counter, FALLING);

}

}

Источник:

Arduino и модуль фотоимпульсного датчика скорости вращения двигателя » Digitrode.ru

Приложения

Звездные войны

Подключите к плате Пьезоэлемент (пьезопищалка)

Звук воспроизводится функцией tone()

Синтаксис

tone(pin, frequency, duration)

Параметры

pin: номер порта вход/выхода, на котором будет генерироваться сигнал

frequency: частота сигнала в Герцах

duration: длительность сигнала в миллисекундах

Чтобы остановить звук, используют функцию noTone(pin)

Напишем скетч, который сыграет мелодию из фильма «Звездные войны».

// Звездные войны

int led = 8;

void setup()

{

pinMode(led, OUTPUT);

}

void loop()

{

delay(2000);

tone(led,392,200);

delay(400);

tone(led,392,200);

delay(400);

tone(led,392,300);

delay(400);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(700);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,587,200);

delay(350);

tone(led,622,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,369,200);

delay(350);

tone(led,311,200);

delay(250);

tone(led,466,200);

delay(100);

tone(led,392,200);

delay(200);

noTone(led);

}

Применение циклов
byte led_R; // случайный бит

const int Pin_tone = 8; // номер порта зуммера

const byte COUNT_NOTES = 39; // Количество нот

int frequences[COUNT_NOTES] = {

392, 392, 392, 311, 466, 392, 311, 466, 392,

587, 587, 587, 622, 466, 369, 311, 466, 392,

784, 392, 392, 784, 739, 698, 659, 622, 659,

415, 554, 523, 493, 466, 440, 466,

311, 369, 311, 466, 392

};

int durations[COUNT_NOTES] = {

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 350, 350, 250, 100, 350, 250, 100, 700,

350, 250, 100, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 100, 100, 450,

150, 350, 250, 100, 750

};

void setup() {

pinMode(13, OUTPUT); // Настраиваем контакт на выход

pinMode(Pin_tone, OUTPUT); // Настраиваем контакт на выход

}

void loop() {

for (int i = 0; i Цикл от 0 до количества нот

tone(Pin_tone, frequences[i], durations[i] * 2); // Включаем звук, определенной частоты

led_R = random(0, 254); // Генерируем случайное число от 0 до 254

analogWrite(13, led_R); // Зажигаем светодиод на случайно сгенерированную яркость

delay(durations[i] * 2); // Пауза для заданной ноты

noTone(Pin_tone); // Останавливаем звук

}

}

Источник:
Урок 14. Музыка Star Wars на Arduino и RGB цветомузыка? Работа с tone(); — Описания, примеры, подключение к Arduino (iarduino.ru)

Виртуальный тренажёр на сайте К. Полякова

Откройте веб-страницу http://kpolyakov.spb.ru/school/robotics/arduino/arduino.htm

Удалите программу из окна слева и скопируйте в это окно новую программу:

//Звездные войны

пока 1

{

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,392)

ждать(200)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(700)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,587)

ждать(350)

звук(15,622)

ждать(250)

звук(15,466)

ждать(100)

звук(15,369)

ждать(350)

звук(15,311)

ждать(250)

звук(15,466)

ждать(100)

звук(15,392)

ждать(200)

нетЗвука(15)

ждать(2000)

}

Щёлкнув по кнопке запустить программу, выполните её

Скетч «Светофор» на тренажёре К. Полякова

//1 секунду: горит только красный светодиод;

//0,5 секунды: горят красный и жёлтый светодиоды;

//1 секунду: горит только зелёный светодиод;

//0,5 секунды: горит только жёлтый светодиод.

пока 1

{

пин[0] = HIGH

ждать(3000)

пин[1] = HIGH

ждать(2000)

пин[0] = LOW

пин[1] = LOW

пин[2] = HIGH

ждать(3000)

пин[2] = LOW

пин[1] = HIGH

ждать(2000)

пин[1] = LOW

}

Ресурсы:

  1. https://appliedrobotics.ru/?page_id=670 — pdf версии методичек

  2. https://youtu.be/PqqvmoaAzfU — Обзор модуля и интерфейса программы TrackingCam

  3. http://arduino.ru/Guide/Windows — arduino справочник на русском

  4. https://amperka.ru/page/arduino-ide — Arduino IDE Arduino IDE 1.8.16 (стабильная версия релиз от 06.09.2021)

  5. https://kpolyakov.spb.ru/school/robotics/arduino.htm — Сайт К. Полякова. Раздел Робототехника

  6. https://youtu.be/nrczO8tWJNg — Arduino с #0

  7. https://youtu.be/bO_jN0Lpz3Q?list=PLfDmj22jP9S759DT250VVzfZs_4VnJqLa — Arduino с #0

  8. http://edurobots.ru/kurs-arduino-dlya-nachinayushhix — Arduino уроки

  9. https://wokwi.com/arduino/new?template=arduino-uno — виртуальный симулятор Arduino

  10. https://www.tinkercad.com/things/e2gKm6XCRUK-brave-tumelo/editel?tenant=circuits — Тинкеркад (Tinkercad Circuits Arduino) – бесплатный, простой и одновременно мощный эмулятор Arduino

1 YXHUNU9GQUEQ – это код, который отправляет учащимся учителем. Учитель заранее на сайте регистрируется, выбрав роль преподавателя и создает класс, формирует код.

В этой статье мы максимально подробно изложим процесс сборки настольного манипулятора, описанного в этой статье, на случай, если вы захотите его повторить. Вот что мы в итоге получим:

Манипулятор в сборе

Манипулятор в сборе

1. Подготовка деталей

Листовое оргстекло продается с защитными пленками, наклеенными на обе стороны поверхности. При лазерной резке эти пленки обычно оставляют, чтобы окалина образовывалась только на них. Перед использованием вырезанных деталей нужно при помощи канцелярского ножа снять эти пленки (с двух сторон!).
В нашем манипуляторе используются детали из листа толщиной 3мм

01-Assemble

…и 5мм

02-Assemble

2. Установка правого сервопривода

Для сборки вам потребуются пластиковые детали и следующий крепеж:

  1. Сервопривод MG995 — 1шт
  2. Диск серводвигателя — 1шт
  3. М4х12 винт с головой под в/ш — 4шт.
  4. М3х14 винт с головой под в/ш — 4шт.
  5. М4 гайка — 4шт.
  6. М3 шайба — 4шт.
  7. М3 шайба гроверная — 4шт

03-Assemble

Для начала установите и прикрутите сам сервопривод. Посадочное место для него симметричное, поэтому следите, чтобы привод был установлен именно так, как на фотографии:

04-Assemble

Затем соедините алюминиевый диск для вала сервопривода с качалкой.

05-Assemble

Установите качалку на вал в произвольное положение и установите сервопривод в среднее положение. Затем снимите качалку и установите ее таком же положении, как на фотографии:

06-Assemble

Проверьте чтобы из положения, изображенного на фотографии, качалка могла двигаться на +/- 90 градусов. Это очень важно! Иначе рука не сможет двигаться.
Прикрутить качалку к валу сервопривода винтом можно, но совершенно не обязательно. Конструкция отлично держится и без этого.

3. Установка левого сервопривода

Второй привод необходимо установить пока без качалки. Крепеж:

  1. Сервопривод MG995 — 1шт
  2. М4х12 винт с головой под в/ш — 4шт.
  3. М4 гайка — 4шт.

08-Assemble

Прикрученный, он должен выглядеть точно так, как на фото:

07-Assemble

4. Сборка основания

Для сборки поворотного основания подготовьте следующие комплектующие и крепеж:

  1. Сервопривод MG995 — 1шт
  2. Диск сервопривода — 1шт
  3. Подшипник 30х55х13 — 1шт
  4. М4х12 винт с головой под в/ш — 4шт.
  5. М3х25 винт с потайной головкой — 3шт.
  6. М3х15 стойка шестигранная латунная мама-мама — 4шт
  7. М3х14 винт с головой под в/ш — 4шт.
  8. М3х10 винт с головой под в/ш — 9шт.
  9. М4 гайка — 4шт.
  10. М3 гайка — 3шт.
  11. М3 гайка квадратная — 1шт.
  12. М3 шайба — 19шт.
  13. М3 шайба гроверная — 7шт.

09-Assemble

Квадратное основание придется доработать. Отверстия на 3мм нужно рассверлить зенкером так, чтобы они скрывали головку винта М3, как на фото:

10-Assemble

Установите опорное кольцо для подшипника и прикрутите диск сервопривода к верхнему диску подшипника. На этом же этапе можно прикрутить сервопривод к прямоугольной площадке (следите за его положением!).

11-Assemble

На следующем этапе сначала установите подшипник и прижмите его сверху. Закрутите три гайки на винты с потайными головками. После этого внешнее кольцо подшипника должно свободно вращаться.
Одновременно сложите три наружных кольца и скрутите их вместе стойками. Обратите внимание, что замкнутые кольца должны быть на наружных частях. Допуски размеров деталей зависят от конкретных условий производства и может выйти так, что они будут налазить на подшипник с большим усилием. Можно немного обработать эти кольца канцелярским ножом, чтобы упростить надевание.

12-Assemble

Перед тем как надевать внешнее кольцо, вставьте в паз квадратную гайку и закрутите в нее винт. Позже она поможет зафиксировать это кольцо.

13-Assemble

Теперь можно прикрутить прямоугольную поворотную площадку. Подберите глубину установки кольца подшипника такой, чтобы вал сервопривода максимально вошел в диск. Для этого сервопривода можно не подбирать среднее положение. После прикручивания проверьте, что двигатель свободно вращается и зажмите прижимной винт подшипника.

14-Assemble

5. Сборка плеча

Крепеж для сборки:

  1. Диск сервопривода — 1шт
  2. М3х15 стойка шестигранная латунная мама-мама — 2шт
  3. М3х14 винт с головой под в/ш — 4шт
  4. М3х10 винт с головой под в/ш — 4шт
  5. М3 шайба — 12шт
  6. М3 шайба гроверная — 8шт

15-Assemble

Для начала нужно прикрутить металлический диск сервопривода и стойки. Детали симметричные, главное, чтобы круглые вставки из оргстекла не оказались на наружной части руки.

16-Assemble

После этого можно прикручивать верхнюю часть:

17-Assemble

6. Сборка локтевой тяги

Эта тяга передает усилие сервопривода на локоть. Для ее сборки потребуются:

  1. Подшипник 3х8х3 — 1шт
  2. Штифт d6мм, длиной 30мм — 1шт
  3. М3х15 стойка шестигранная латунная мама-мама — 1шт
  4. М3х14 винт с головой под в/ш — 4шт
  5. М3 шайба узкая — 2шт
  6. М3 шайба — 2шт
  7. М3 шайба гроверная — 1шт

18-Assemble

Эта первая деталь с маленьким подшипником. Между подшипниками и деталями руки обязательно должны стоять узкие шайбы М3, которые не блокируют внешнее кольцо. Шайбы из оргстекла тоже обязательно устанавливать, чтобы деталь не соскочила с подшипника. Для начала вставьте и подшипник и вставьте в шайбу из оргстекла винт с узкой шайбой:

19-Assemble

Далее вставьте винт в подшипник и накиньте вторую зауженную шайбу на подшипник:

20-Assemble

Теперь можно прикрутить планку, использовав для этого латунную стойку. После затяжки винта проверьте, что детали могут свободно двигаться относительно друг друга.

21-Assemble

Теперь эту тягу можно установить на плечо.
Сначала плечо нужно установить на сервопривод. Установите вал двигателя в среднее положение!. Для этого сначала наденьте плечо в произвольном положении, на глаз, двигая плечо, определите крайние положения вала, затем установите его в среднее положение и снимите плечо. Далее плечо нужно установить так, как показано на фото:

22-Assemble

Теперь возьмите штифт диаметром 6мм и проденьте его в отверстие через плечо и локтевую тягу:

24-Assemble

Теперь можно приступить к крупноузловой сборке.

7. Сборка узлов

Потребуется следующий крепеж:

  1. М3х10 винт с головой под в/ш — 1шт
  2. М3х12 винт с головой под в/ш — 6шт
  3. М3 шайба — 7шт
  4. М3 шайба гроверная — 7шт
  5. М3 гайка квадратная — 6шт

И вот эти, ранее собранные, узлы:

25-Assemble

Для начала нужно их просто все собрать вместе при помощи пазов.

26-Assemble

Сразу прикрутите качалчку сервопривода локтя к тяге.

27-Assemble

Следующая операция требует определенной сноровки. Удобнее всего подкладывать квадратные гайки в пазы пинцетом и закручивать в них винты. С каждой стороны по три штуки.

28-Assemble

После того, как вы стяните детали шестью винтами, собранная конструкция будет выглядеть вот так:

29-Assemble

8. Сборка локтя

Для сборки локтя вам потребуются детали из оргстекла и следующий крепеж:

  1. М3х15 стойка шестигранная латунная мама-мама — 2шт
  2. М3х10 винт с головой под в/ш — 4шт
  3. М3 шайба — 4шт
  4. М3 шайба гроверная — 4шт

30-Assemble

Собирается локоть также как и плечо. Перепутать что-то будет сложно, так как детали симметричны. На локте мы нанесли логотип нашего блога. Если вы выгравировали и его тоже, то нам будет приятно если он будет виден на наружной части локтя.

31-Assemble

9. Установка локтя

На этом этапе нужно будет прикрутить локоть к основной части руки, собранной ранее. На этом же этапе устанавливается треугольник, удерживающий клешню в фиксированном положении. Для этой трудоемкой операции потребуется очень немного крепежа:

  1. Подшипник 3х8х3 — 2шт
  2. М3х18 винт с головой под в/ш — 1шт
  3. М3х14 винт с головой под в/ш — 1шт
  4. М3 гайка — 2шт
  5. М3 шайба — 10шт
  6. М3 шайба узкая — 4шт
  7. М3 шайба гроверная — 2шт

32-Assemble

Для начала нужно прикрутить левую сторону (на фотографии) с подшипником. Обратите внимание, что подбором количества шайб необходимо сделать так, чтобы во внутренней части руки винт как можно меньше выступал над гайкой.

33-Assemble

Теперь установите два подшипника на треугольник. Один внутрь самого треугольника, а второй для плеча. Обратите внимание на ориентацию длинной и короткой стороны треугольника.

34-Assemble

Теперь установите треугольник на его место. Длинная сторона треугольника должна быть ближе к основанию, короткая к кисти.

35-Assemble

Накрутите гайку на винт по внутренней части руки.

36-Assemble

10. Установка локтевой тяги

Это самый простой этап. Для него потребуются только две шайбы из оргстекла, подшипник и следующий крепеж:

  1. Подшипник 3х8х3 — 1шт
  2. М3х18 винт с головой под в/ш — 1шт
  3. М3 гайка — 1шт
  4. М3 шайба — 2шт
  5. М3 шайба узкая — 2шт
  6. М3 шайба гроверная — 1шт

37-Assemble

Самое главное — следить чтобы тяга локтя была максимально параллельно плечу во всех плоскостях. Просто прикрутите тягу, которая раньше просто болталась к верхней части сервопривода:

38-Assemble

Если все операции проделаны верно, то на этом этапе рука будет выглядеть так:

39-Assemble

Вы даже можете проверить, что три основных двигателя двигаются свободно и все движения ограничены только деталями конструкции, а не внутренними ограничителями углов сервоприводов.

11. Установка первой кистевой тяги

Вам понадобится сама тяга и следующий крепеж:

  1. Подшипник 3х8х3 — 2шт
  2. М3х14 винт с головой под в/ш — 2шт
  3. М3 гайка — 2шт
  4. М3 шайба — 4шт
  5. М3 шайба узкая — 4шт
  6. М3 шайба гроверная — 2шт

40-Assemble

Эта тяга удерживает треугольник в стационарном положении относительно земли.
Сначала прикрутите одну сторону тяги к ушку на основании руки.

41-Assemble

С наружной стороны, как обычно, нужно установить шайбу из оргстекла.

42-Assemble

Теперь можно прикрутить вторую сторону тяги к треугольнику. Для этого потребуется установить дополнительную шайбу, чтобы тяга была максимальная параллельно с плечом.

43-Assemble

Головка винта обязательно должна быть с внутренней стороны, иначе она будет цепляться за локоть.

44-Assemble

12. Установка второй тяги руки

Для установки этой тяги потребуются:

  1. Подшипник 3х8х3 — 1шт
  2. М3х14 винт с головой под в/ш — 1шт
  3. М3 гайка — 1шт
  4. М3 шайба — 2шт
  5. М3 шайба узкая — 2шт
  6. М3 шайба гроверная — 1шт

45-Assemble

Вся сборка сводится к тому, что нужно прикрутить эту тягу к треугольнику:

46-Assemble

Теперь можно приступать к сборке ксити.

13. Сборка кисти

Для сборки захвата понадобятся детали из оргстекла и следующие комплектующие:

  1. Сервопривод MG90S — 2шт
  2. М2х10 винт — 4шт
  3. М2 гайка — 4шт
  4. М3х10 винт с головой под в/ш — 2шт
  5. М3х18 винт с головой под в/ш — 2шт
  6. М3х25 винт с головой под в/ш — 1шт
  7. М3 шайба — 8шт
  8. М3 шайба гроверная — 7шт
  9. М3 гайка — 3шт

47-Assemble

Для прикручивания качалок сервоприводов можно использовать крепеж из комплекта, но мы предпочитаем использовать обычные винты М2. Если вы хотите сделать также, то отверстия надо рассверлить (а крепеж докупить).
Также одну из качалок надо подрезать.

48-Assemble

Для начала винтами на М2 прикрутите сервоприводы. Следите внимательно, чтобы на деталях они были установлены также, как на фото:

49-Assemble

Затем установите треугольные детали кисти и свободный «палец» захвата. Захват устанавливается с прокладкой из трех шайб. Закрутить его надо очень слабо при помощи гайки с нейлоновой вставкой. Он должен двигаться с одной стороны максимально свободно и, с другой стороны, с минимальным люфтом. Специальная гайка во время движения предотвратит самоотвинчивание крепления.

50-Assemble

51-Assemble

Далее прикрутите винтами качалки сервоприводов. На фото видно, для чего мы укорачивали одну из качалок.

52-Assemble

Теперь можно прикрутить качалки к сервоприводам. Прежде чем сделать это — установите сервоприводы в среднее положение. Затем установите качалки именно так, как показано на фото. Обратите внимание, что нужно совместить соответствующие зубцы клешни. После установки закрутите винты и убедитесь, что все валы вращаются свободно, а клешня закрывается и открывается

53-Assemble

Теперь осталось только объединить эти две части. Сделайте это так, как показано на фото

55-Assemble

Клешня собрана.

54-Assemble

14. Установка кисти

Для установки кисти на манипулятор потребуются четыре шайбы из оргстекла и перечисленный ниже крепеж:

  1. Подшипник 3х8х3 — 2шт
  2. М3х14 винт с головой под в/ш — 3шт
  3. М3 шайба — 6шт
  4. М3 шайба узкая — 6шт
  5. М3 шайба гроверная — 3шт
  6. М3 гайка — 3шт

56-Assemble

Шарнирные соединения собираются как обычно. Обратить внимание стоит только на дополнительную шайбу с внутренней стороны кисти.

57-Assemble

58-Assemble

После того, как нижние два соединения собраны можно накинуть верхнюю тягу.

59-Assemble

На этом этапе вся механическая часть руки собрана:

60-Assemble

15. Установка и подключение электроники

Наша рука собрана на основе платы EduBoard и специального коммутационного шилда для подключения сервоприводов. Сама плата прикручена к основанию манипулятора при помощи фторопластовых стоек и винтов.

61-Assemble

Сверху на эту плату устанавливается шилд с разъемами для сервопривоодов:

62-Assemble

Чтобы подключить сервоприводы кисти потребуются дополнительные удлинительные провода. Обмотайте их вокруг манипулятора так, чтобы они не могли передавиться.

63-Assemble

Все. Манипулятор полностью собран:

64-Assemble

16. Изменение установки клешни

Захват манипулятора может быть установлен как перпендикулярно рабочей поверхности, так и параллельно ей. То или иное положение удобно в разных конкретных случаях.
Для этого не потребуется никакого дополнительного крепежа. Для начала нужно просто снять клешню с шарниров:

66-Assemble

А затем установить обратно, изменив направление:

67-Assemble

Теперь манипулятор может легко ухватить, к примеру, стакан:

68-Assemble

69-Assemble

Вместо заключения

Остальные статьи цикла статей здесь:
Робо-рука. Часть 1. Описание (все ссылки на фалы для скачивания здесь)
Робо-рука. Часть 3. Электроника и программирование

Мы будем очень рады, если вы поддержите наш ресурс и посетите магазин наших товаров shop.customelectronics.ru.

Введение

Работая программистом и будучи отцом двух мальчиков неминуемо задумываешься над тем, как будут твои дети жить в технологическом мире и как будут им пользоваться. И, как любой айтишник, я конечно же хочу, чтобы дети чувствовали себя уверенно. А ещё лучше, чтобы стали профессионалами. Современные технологии дают огромный простор для самоопределения, и моя задача — рассказать как можно больше и как можно интереснее. Там уж сами решат, чего им хочется. 

Сегодня расскажу о том, как я учил детей программировать робота, а заодно учился и сам.

Однако задача показать и рассказать относительно легко решается, когда ребенку 7 или 10 лет, а вот когда ему 14, всё становится не так просто. Больше его внимания обращено на соцсети и игры, и всё меньше времени тратится на полезные дела (по мнению родителей, по крайней мере). Энциклопедии по технике уже прочитаны, какие-то штучки вроде Scratch и Lego Mindstorms опробованы и заброшены. Наверное, это самый сложный возраст для поддержания в ребенке интереса к тому, чем увлекаешься сам. С младшим, которому 10, такой проблемы не замечено, он все еще очень открыт новым знаниям)

Пробовал показывать старшему сыну более более взрослые языки программирования из тех, что использую сам — С++ и Python. У старшего неплохо получается, но простые примеры, не имеющие отношения к жизни — не особо интересны, а для решения реальных задач нет пока мотивации. Так и пришел я к мысли, что было бы неплохо эту мотивацию сформировать. Сразу оговорюсь — да, старший сын — “технарь” по складу ума. И это не мое предвзятое мнение, а более-менее объективная оценка других людей. Ему 14, уже стало понятно. Младшему 10, техника ему интересна, но мне кажется по нему однозначно судить рано.

Когда я рос, компьютеров дома не стояло и по смартфону у каждого в кармане не лежало. Чтобы увлечь компьютером его достаточно было показать. Сейчас это изменилось. Вся техника стала нормой жизни, дети просто не понимают, как это — не было ютуба, инстаграма и тик-тока…ах да, интернета не было тоже

Примерно такой компьютер был на работе у отца. DOS и NortonCommander, 16 цветов в играх…(картинка из интернета)

Примерно такой компьютер был на работе у отца. DOS и NortonCommander, 16 цветов в играх…(картинка из интернета)

Чего не хватает многим программистам? Возможности пощупать руками то, что они сделали. Ну не можешь ты потрогать руками например бэк-энд, крутящийся на удаленном сервере. Или базу данных. И у сына я вижу ту же проблему. Тут я и увидел возможность для формирования мотивации — нужен ощутимый измеримый наглядный результат. Что может с этим помочь? Что позволяет совместить физическое и электронное? Конечно, это робот!

Итак, попробуем хоть как-то сформулировать задачу: поддержание интереса к миру ИТ в целом и программированию в частности, закрепить и развить навыки программирования, напомнить, что  “работать руками и головой” этот человек умеет неплохо, вытащить немного из соцсетей и телефона. Дополнительно — познакомиться с новым для нас разделом мира ИТ — робототехникой. Вообще было бы хорошо и младшего привлечь.

Возможный способ решения: какой-то вариант из мира учебной робототехники.

И вот тут я завис…причем, надолго. Привычка системного подхода к решению задач может и навредить. Ничего, зато теперь я почти “диванный эксперт” по детской робототехнике. Стоит также оговориться, что я не робототехник. И не схемотехник. Я программист, это своя специфика.

Обзор рынка образовательной робототехники

Разделю варианты на категории, может, кому-то сэкономит время. Если что-то упустил — пишите в комментариях, эта тема для меня не закончена, буду только рад). Ссылки давать не буду, слишком много было отсмотрено. Все находится поиском, кому нужна конкретика. Итак:

  1. готовые решения на своих контроллерах — Lego Mindstorms EV3, VEX, наш Трик.

    Плюсы: работает из коробки, есть инструкции, можно собирать разных роботов. Наиболее известные решения, с ними все относительно просто.

    Минусы: цена. И это основной минус. Лего теперь почти не купить. Отдавать под 100 тысяч за набор я на данном этапе не готов, т.к. он может быть банально заброшен.

    Купить можно много где, например https://robotbaza.ru/ 

  2. проекты на Arduino

    О, тут целое море. Океан. Это целый мир DIY, но влезть в него для меня не так и просто. Дело в том, что я никогда не был силен в электрических схемах. Посидев немного и поизучав вопрос, решил для себя, что тут нужно либо найти человека, который все это растолкует, либо разбираться самому, на что нужно время. 

    Надо сказать, что хороших готовых проектов в продаже удалось найти совсем немного.

    Один из самых лучших сайтов, которые удалось найти это Суперайс. Хороший каталог оборудования, много чего есть, для тех, кто в этом понимает.

    Искал такой проект, чтобы нормально собиралось и было не слишком сложным. Есть вроде интересные, но за них и ценник подбирается к 20 тысячам, и это на ардуинке и без камер, на “малинке” еще дороже…Неплохим вариантом видится что-то на ардуинке с Алиэкспресса. Цены более вменяемые и выбор очень велик. Но! Ни инструкций по сборке, ни понимания, как это программировать. Пожалуй, лучшее, что видел — это роботы китайской компании HiWonder https://www.hiwonder.hk/. Понравились, думал что остановлюсь на них. Дороговаты и сейчас пропали с Алиэкспресса.

    Из того, что можно купить в России надо отметить наборы Keyestudio — их можно, например, на Озоне купить. На вид привлекательны, по факту это просто китайские наборы и на АлиЭкспресс стоят почти вдвое дешевле.

    Также понравилось решение RoboRobo Robokit. Вроде, ардуинка, но можно собирать разных роботов, что редкость. Есть целая линейка по наборам деталей — от простых до весьма навороченных наборов. Опять же, интересные по комплектации наборы дороговаты сейчас более 100 тысяч. Но рассматривал базовый к покупке, хоть и дорого.

  3. Raspberry Pi и аналоги, либо Nvidia Jetson Nano +ROSi.

    Очень интересная группа, например https://www.hiwonder.hk/collections/jetson/products/hiwonder-jetmax-jetson-nano-robot-arm-ros-open-source-vision-recognition-program-robot .

    Возможности уже намного шире, есть распознавание видеопотока, управление большим количеством устройств и очень много очень разных проектов. Здесь уже как правило вполне стабильные в плане работы и конструкций роботы, возможность серьезно программировать. ROSi вообще очень перспективная среда, много чего интересного можно было бы сделать. Только есть два недостатка: Raspberry Pi и аналоги — это по факту полноценные одноплатники, что не может не сказаться на их цене. Второй — порог входа в плане необходимых знаний здесь значительно выше, это область с которой я никогда не сталкивался. А значит и время, которое потребуется для погружения в тему — в разы больше. Очень интересно, но я пока не потяну, да и не уверен, что на данном этапе есть смысл.

  4. специальные учебные роботы “высокого уровня”. Естественно, забугорной сборки. Например, есть очень классные решения:

    Ufactory

    Dobot

    Applied Robotics

    Тут уже все серьезно. В том числе и по деньгам. 100-200-400-800 тысяч. Опять же толком нет руководств на русском, но понятно, что там уже ROS со всеми вытекающими.

  5. что-то сделанное в России. Ну, тут вообще грустно. Вариантов совсем немного. Это конструкторы:

    • Трик — выглядят неплохо, написана своя оболочка, но почему так дорого? Базовый набор — больше 50 тысяч, а так, чтобы что-то интересное собрать, это опять 100 тысяч. Не проходит по моему бюджету.

    • Ларт — мне не понравились и дорого

    • Зарница — очень много всего! реально интересно, есть небольшая тележка, стоит правда почти 25 тысяч — выглядит интересно, на борту все та же Arduino Uro R3, но вроде обещают комплект учебных материалов.

    • Эвольвектор — больше на электрику ориентированы, наборы с роботами дорогие и все та же ардуинка в качестве основы.

    • Отдельно стоит решение Роббо. Интересное. Вроде, тот же ардуинка, но распаянная по своему. И тут хотя бы должны быть уроки в комплекте. Минусы — соотношение цены и малой гибкости робота — доработать его не получится. Что-то изменить — тоже. У тебя просто колесная платформа, можно довесить датчики. И цена — 62 000 на момент сочинения этой статьи!

      Ну и ..все, кажется? Если что-то пропустил, дополните, пожалуйста. Т.к. более-менее актуального обзора этого рынка я просто не нашел.

По итогам анализа я понял, чего хочу и попробую сформулировать: более — менее качественный небольшой робот за не слишком большие деньги. Желательно без проблем со сборкой (хотя бы инструкция) и с не слишком сложной электроникой — то, в чем я не особо силен. Конечно, хотелось хорошие моторчики, это наверное из собственного детства что-то, чтобы шевелилось хорошо. Ну и мечталось, что будут уроки, с которых можно будет с детьми начать. В конце концов я все же не учитель…да и хорошо бы потом и сами могли заниматься, без меня.

В результате остановился на ардуинке, особых альтернатив вроде нет, и решал, что же выбрать. Собирался брать в Суперайс. Мне кажется, в России лучше, чем у них выбора роботов на Ардуино и Малинке я не видел.

И вот, раздумывая и перекапывая в очередной раз Алиэкспресс в муках выбора я наткнулся на такой проект.

И вроде бы закрыл, чего там, подобные манипуляторы уже видел и цена на них была ниже. А потом вернулся. Сознание зацепилось за одну из картинок — коробочки все подписаны по-русски и в комплекте инструкция. Ладно, думаю, видели и не такое, работают китайцы. 

Модель промышленного робота-манипулятора Робоинтеллект

Читаем описание. И вот тут становится интересно. Оно написано по-русски. Именно не переводчиком, а по-русски. Так. Ладно, сначала реклама, потом…ага, подключение к компьютеру по usb…стоп. Тут нет ардуинки. Как так? А вот так. Подключаем к компу и работает? Сомнительно. Но интересно. Я ведь не хотел ардуинку. Смотрим описание магазина на Али — его нет. Что ж, интернет большой. Ищем просто поиском и, что удивительно, находим. Оказывается, такие же роботы есть и на Озоне и на Вайлдберриз. Ищем дальше и находим (!) сайт производителя. В России. Удивили, но фирма “Робоинтеллект” действительно наша сайт проекта.

В модельном ряду аж сразу 2 манипулятора, правда отличаются они только цветом, серый и желтенький. Зато на сайте есть дополнительные фото, можно чуть внимательнее посмотреть. Описание на сайте не информативное, из него ничего не понятно. Позиционируются как “модель промышленного робота манипулятора”. Смотрим дальше, из интереса идем в раздел “скачать” и находим вполне подробное руководство по работе с роботом. Вот с этого и надо было начинать, большой кнопкой на главной странице!!

Что имеем по факту: 

  • цена — выше аналогичных решений с АлиЭкспресса, но поменьше более качественных аналогов. На момент написания цена на Али 7 416 рублей.

  • робот с 4-мя степенями свободы, сделан из пластика

  • это не колесная платформа, ездить не будет, увы

  • в нагруженных узлах сделаны редукторы — обычно в таких проектах все сидит прямо на сервах и работает не очень

  • подключается напрямую к компьютеру через usb

  • сервы какие стоят не понятно (но на фото корпуса темные. по другим проектам это похоже на MG90, предполагаем хотя бы металлические шестеренки)

  • интересная конструкция клешни — спорное решение, обычно делают проще

  • есть программка для управления с компьютера

  • есть пособие по программированию на Python

Но на Алиэкспрессе обещали еще C, C++, Golang и PHP. Пишу в техподдержку и…они отвечают! Неужели там есть живые люди? Обычно в ответ тишина, а тут адекватный ответ. Суть ответа в следующем — программные оболочки они сейчас активно разрабатывают. Представляете? У нас в России кто-то что-то делает путевое. Они сделали свое SDK для робота! Да, вот к этому маленькому роботу…не представляю, сколько они с этим сидели. Дали ссылку на раздел документации Документация к библиотеке управления робототехникой RISDK с примерами для всех языков программирования и на оболочку для упрощенного программирования на блочном языке Blockly RISDK.

Ну, раз так, решился заказать. Интересно — наборы на Али и Озоне стоят одинаково, а на Вайлдберриз значительно дороже. Непосредственно на сайте заказать нельзя, странно. Заказывал с Озона. Приехало за пять дней. Нашел один обзор на конструктор на ютубе и на сайте есть ссылка на аж полуторачасовое видео полной сборки робота, так что в целом был готов) Что как выглядело и как собиралось расскажу только в общих чертах, подробнее смотрите на сайте.

Упаковка:

Упаковано хорошо, обычная вроде коробка, но все подписано. Внутри целая россыпь всякой всячины. Отдельно стоит отметить печатную инструкцию. Она черно-белая и ооочень подробная. Цветной вариант есть на сайте, там лучше видно. Мы собирали по печатной. В комплекте деревянные кубики и интересное поле с нанесенной сеткой углов и позициями под кубики. Удобно, так придумывать задания намного легче. Т.е. получаем продуманное решение, где многое уже сделали за меня. Просто мечта)

Комплект поставки - все коробочки, инструкция, поле и кубики

Комплект поставки — все коробочки, инструкция, поле и кубики

Все почти как на фото на сайте, не обманули. А я сомневался, что все это будет, у китайцев такое есть только у HiWonder, но там и ценник за робота с полем совсем другой.

Куча всего упаковано по коробочкам, основные конструктивные элементы уложены пластинами и сделаны, похоже, из акрила. Элементы нужно выдавливать из подложки, напомнило конструкторы из фанеры, принцип тот же. Вся сборка на винтики и гаечки. Собирать отдал старшему сыну, для младшего инструкция слишком сложная, хотя он крутился рядом и ему было интересно. В отзывах на озоне есть, что собирал 9-ти летний ребенок сам. Ну что ж, все разные)

Отмечу основные моменты сборки.
Плюсы:

  • хороший пластик, никаких заусенцев и порезанных пальцев

  • большие листы комплектации, ориентированные на детей, помогают разобраться в конструкторе

  • на сервах уже стоят шестеренки, правда закреплены странно

  • все детальки затянуты пленкой или бумагой, отдельное удовольствие для тех, кто любит все новое распаковывать

  • сервы, к слову, все же MG90 с металлическими шестернями, надеюсь, выживут

  • сборка на винты, где нужно — гайки с нейлоном, чтобы не откручивались

  • в комплекте аж 3 разных отвертки, собирали все одной, маленькая пригодилась только провода прикрутить

  • блок питания в комплекте

  • наличие фторопластовых шайб — это значительно улучшает подвижность

В целом сборка не очень сложная, но долгая. Я почти не участвовал, только в паре моментов, например сын перепутал губы на клешне. И не поставил некоторые шайбы — пересобирали эти места. Сборка заняла около 3,5 часов. Электронная часть довольно простая, удалось собрать с первого раза по схеме и не накосячить. В двух местах не выставили шестерни как нужно, будьте внимательнее.

Что не понравилось:

  • на сайте и маркетплейсах есть фото робота с геймпадом — ожидал, что он будет в комплекте. потом уже вчитался, что его нет в комплектации, но все равно обидно. надо где-нибудь раздобыть.

  • часть акрила затянута в пленку, а часть в бумагу. бумага снимается значительно хуже и на это уходит время

  • наименование деталей в инструкции — сразу видно, наши делали)) очень быстро теряешься во всех буквах и цифрах

  • фторопластовые шайбы блоком — с одной стороны не теряются, с другой — надо резать ножницами. детям полезно, но не всегда получается хорошо.

  • детали скомпонованы на подложках по непонятному признаку, найти их сложновато

  • детали не подписаны, не представляю, как разобрать робота и потом опять собрать. наверное, так и останется собранный теперь, т.е. как конструктор он одноразовый

Видео готового робота сразу после сборки:

Кстати, раз уж техподдержка ответила первый раз, то я им и про детальки написал. Ответили, сказали, что подумают). Это интересно — принимать участие в улучшении чего-то.

Что ж, робот готов, можно бы уже его включать. Подключаем к питанию, подключаем к компьютеру. Ничего не происходит. Ах да, надо установить на компьютер программу — пульт управления. Качаем с сайта, ставим, запускаем. И… все работает! Удивительно, но факт. Можно с компьютера напрямую управлять роботом. Пришлось все же немного почитать про электронную часть, надо же детям объяснить. Стало понятно, как это сделано. Ребята запилили поддержку USB-i2c программатора непосредственно сразу в проге пульта, в результате избавились от Ардуинки. Вот такого я не видел. С одной стороны мы теряем автономность — программа запускается только с компьютера, с другой — оно же работает и даже не глючит. А нужна ли она, автономность для такого робота? Кроме того, если робот подключен к компьютеру и запущена программа пульта, то можно управлять со смартфона, если комп и телефон подключены к одной сети. Как-то сложно звучит, но мне удалось все это поднять довольно легко. И даже приложение устанавливать не надо, все через Хром работает, удивительно, но факт. Похоже приложение пульта на компьютере поднимает какой-то сервер, к которому смартфон стучится по IP и номеру порта, заданному при установке (главное его не забыть теперь).

Старший попробовал, его не очень зацепило просто управлять. А вот младший с удовольствием игрался долго, переставляя кубики. Думаю, джойстик все таки нужно купить. Каждому возрасту свое.

Два основных развлечения для него — построить башню и разрушить её, второе — переставлять манипулятор, заставляя подниматься опираясь на клешню. Получается медленно шагающий робот…напомнило, как экскаватор опирается на ковш в сложных ситуациях.

“Шагаем” как экскаватор

“Шагаем” как экскаватор

Сама программа, кстати, могла бы быть и удобнее. Видел на видео у других производителей подобные решения, там ползунки прямо поверх манипулятора нарисованы, мне кажется, это должно быть удобнее. А ещё иногда перестает закрываться клешня. просто не хватает градусов, разрешенных в программе.

Вот такой немного “топорный” интерфейс управления

Вот такой немного “топорный” интерфейс управления

Ну ладно. Руками поработали, поиграли и будет. А дальше что? Вроде бы все затевалось не ради этого. Начинаем использовать голову. Первое, с чего начнем — это блочное программирование в он-лайн оболочке http://blockly.robointellect.ru/ . Blockly это вроде бы иностранный сервис, но тут его перепилили и сделали под себя. Точнее, под робота. Стоит отметить, что по словам техподдержки сервис работает в тестовом режиме и потому ссылки на него пока нет на сайте. Если кто-то будет гонять сервис и найдет ошибки, пишите разработчикам, может, пофиксят.

Внешний вид оболочки для блочного программирования робота 

Внешний вид оболочки для блочного программирования робота 

В целом, оболочка напоминает Scratch. Похожее расположение панелей и рабочих зон, похожие блоки. Набор блоков явно ограничен, наверное, чтобы лишнего не напрограммировать. Что есть интересного: во первых, есть возможность управлять удаленным роботом, стоящим у разработчика. Приятно, что они сами тестируют и дают возможность возможность другим. Интересный момент — в продаже робот с 4 степенями свободы — у него не поворачивается клешня. Как в дальнейшем выяснилось, это сильно ограничивает возможные действия. А вот на тестовой площадке клешня поворотная. Жаль, в продаже их пока нет (или я не нашел). Это было бы интереснее.

Отдельно надо сказать, что раскидать кубики удаленным роботом довольно просто, а вот навести порядок — никак) пока кто-нибудь живой не придет и это не сделает, все так в хаосе и лежит)

Во вторых, конечно можно программировать локально подключенного робота. Найти эту возможность — отдельный квест, оказывается это в настройках в верхнем правом углу. При выборе еще и непонятно, применилось или нет. Видео с удаленного робота тоже не выключается, поначалу, непонятно, чем будет управлять программа. Напомню, что в комплекте идет классное поле для расстановки кубиков.

Фото робота на поле. Снято на работе, носил позабавить коллег

Фото робота на поле. Снято на работе, носил позабавить коллег

Есть тестовые примеры — прячутся под кнопкой “Демо”, их сразу можно погонять на роботе. Есть раздел видеоуроков, их десяток. Уроки похоже по какой-то старой версии оболочки, на момент написания статьи она опять обновилась, теперь это версия 1.0.0.310 от 01.06.2022, до этого была какая-то майская сборка.

В целом все понятно, за исключением блока инициализации — туда нужно запихнуть подключение к usb-i2c — адаптеру и задать, куда подключены сервы. Если бы не тестовые примеры, не догадался бы.

Программировать начинали со старшим сыном, младший посмотрел, сказал что про Scratch он и так знает и оставил нас в покое. Спойлер: сейчас, после пары недель он тоже начал разбираться, как бы погонять робота через блоки.

Немного о Блокли — интересный проект. Кажется, у нас недостаточно про него знают. Из Википедии:

Блокли (англ. Blockly) — библиотека для создания среды визуального программирования, которая может быть встроена в произвольное веб-приложение. Блокли включает в себя графический редактор, позволяющий составлять программы из блоков, и генераторы кода для подготовки исполнения программы в среде веб-приложения. Разрабатывается и поддерживается компанией Google с 2012 года. Свободно распространяется вместе c исходным кодом по лицензии Apache 2.0. Целевой аудиторией проекта являются программисты, разрабатывающие веб-приложения, включающие Блокли, в основном для учебных целей. Для создания программ пользователь должен перемещать графические блоки, не прибегая к набору текстов, за исключением ввода значений констант. Визуальное программирование на Блокли освобождает пользователя от контроля за правильностью синтаксиса программы, что является большим подспорьем на стадии начального обучения пользователя программированию.

Первый вечер был потрачен на освоение оболочки и блоков. Например, долго искали, как использовать инициализированный сервопривод, оказалось что они молча добавляются во вкладку “Созданные устройства” и это не очевидно. За первый вечер смогли сделать функцию выставления робота в положение, которое решили сделать стартовым — клешня открыта и в верхнем положении, башня посередине. Тут пригодилась возможность импорта — экспорта программы. Можно переименовать в “сохранить-загрузить”, будет логичнее. Формат файла свой, .risdk, внутри похоже на xml-ку, по идее можно прям в ней править, но только зачем).

Дальше случись несколько дней напряженной работы и я не мог заниматься с сыном. А он выделил пару вечеров, сам, по своей инициативе гонял робота. А после этого показал мне программку, которая вполне уверенно собирала кубики по полю и ставила в 2 башни. Комплектных кубиков ему не хватило, он нашел еще 2 подходящих в игрушках и переставлял их тоже. В итоге робот обходил позиции с 3 по 12, на всех пытался что-нибудь взять и составить в позициях 1 и 2. Не знаю, как бы это выглядело с 10 кубиками, но с 6 вполне работает, есть 2 башни по 3 кубика. Считаю это хорошим результатом)

Из того, что еще можно делать — управлять светодиодом. Он rgb, можно использовать для какой-то системы сигналов о выполнении. Сын сам нашел, как это делать. Расположен диод не очень удачно, его не особо видно.

Очень не хватает роботу хоть каких-нибудь датчиков — нужно чем-то определять, есть ли кубик на поле или нет. Это может сильно расширить варианты заданий. А если еще датчик цвета к этому добавить…А еще лучше камеру. Все равно робот подключен к компьютеру, в теории может программироваться на Питоне — так почему бы камеру не поставить? Вот и отработка распознавания образов была бы. Правда, наверное, это уже другой ценник (((

Попробую подвести небольшой итог, что понравилось, какие плюсы и минусы.

Плюсы:

  • продуманный набор, который хорошо собирается по инструкции на русском и даже всего хватает

  • детальки сделаны из акрила. это все же не фанера и не мдф, более живучий материал.

  • после сборки все реально работает, подключается как надо и не глючит

  • разные способы управления и программирования робота, ориентированные на разный уровень пользователя и разный возраст

  • техподдержка на русском и даже отвечает, что редкость

  • отсутствие ардуинки — плюс и минус, кому-то захочется её поставить, никаких препятствий вроде бы нет

Минусы:

  • нет пульта в комплекте

  • нигде нет информации, как подключить телефон к роботу, а на картинках нарисовано

  • неприятный звук работы сервомоторчиков — я так понял, они стандартные, но хотелось бы их получше

  • странно, но у фирмы есть свой контроллер, на одной плате там собрано все — и подключение по usb, и питание и подключение сервомоторчиков, а в комплекте все отдельными стандартными модулями

  • люфт в шестернях — есть, но вроде не критичный

  • кубиков в комплекте должно быть больше

  • очень не хватает датчиков ультразвука, цвета, еще чего-нибудь. если ставить самому, но нет поддержки в оболочке блочного программирования и остальных библиотеках. вроде обещают постепенно добавлять.

Что дальше? А дальше есть куча документации, как все это на Питоне и С++ программировать. 

И тут даже мне нужно немного времени, чтобы сначала научиться самому, а потом уже это все объяснять другим. Руководство неплохое, с примерами на разных языках (там еще Golang и неожиданно PHP). Но оно явно уже рассчитано на людей погруженных, сходу тут не подступишься, мануала по основам языка тут нет. Если все получится и будет интересный опыт, возможно, напишу еще отдельную статью об этом, как-то зацепило меня попрограммировать физический объект, который шевелится.

Этот робот — удачное решение для той задачи, которую я ставил изначально. Привлекает внимание детей и, честно говоря, взрослых. Дает интересную возможность программировать на разных языках. Если через него получится увлечь детей мейкерством и всякими электронными устройствами я останусь очень доволен) ну, или программированием, что тоже неплохо.

При этом из-за отказа от одноплатника или микроконтроллера робот как учебный не потерял своей ценности благодаря проделанной работе по тому, как подружить его с компьютером. Подозреваю, что сидели с этим долго. В тоже время, отсутствие дорогого контроллера очень помогает сэкономить.

Даже не смотря на чуть более высокую цену по сравнению с китайцами, считаю покупку оправданной и удачной, доволен сам, заинтересованы и дети, чего изначально и хотел.

Надеюсь, что получится со старшим сыном перейти на более сложное программирование — С++ или Python и соотнести это с блочными программами. С младшим не вижу никаких особых проблем программировать на блоках, эта концепция ему вполне знакома и понятна. И с роботом это интереснее, чем гонять котика по экрану (вы поняли, о чем я). 

Хотелось бы пожелать разработчикам успеха, если не забросят и допилят оболочку, может, переделают пульт, поставят другие сервы и обратят внимание на описанные здесь моменты — будет здорово.

Так как в сети мало информации об этих ребятах, считаю возможным оставить здесь ссылки на них. Если это поможет проекту развиваться, я буду рад, считаю, любое подобное начинание должно быть поддержано, иначе не выживет. 

Сайт производителя 

Озон 

Wildberries  

AliExpress

П.С. И все-таки жаль, что он не ездит

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Ацикловир уколы внутримышечно инструкция по применению взрослым от чего
  • Таблетки от кашля дальхимфарм инструкция
  • Лекарство фосфомицин инструкция по применению
  • Обязательно ли составлять должностную инструкцию
  • Магнитола prology high power 4x55w инструкция