Картонный робот под управлением смартфона

Other IR libraries

you find a short comparison matrix of 4 popular Arduino IR libraries.Here you find an ESP8266/ESP32 version of IRremote with an impressive list of supported protocols.

Supported Boards

  • Arduino Uno / Mega / Leonardo / Duemilanove / Diecimila / LilyPad / Mini / Fio / Nano etc.
  • Teensy 1.0 / 1.0++ / 2.0 / 2++ / 3.0 / 3.1 / Teensy-LC; Credits: @PaulStoffregen (Teensy Team)
  • Sanguino
  • ATmega8, 48, 88, 168, 328
  • ATmega8535, 16, 32, 164, 324, 644, 1284,
  • ATmega64, 128
  • ATmega4809 (Nano every)
  • ATtiny84, 85
  • SAMD21 (receive only)
  • ESP32
  • ESP8266 is supported in a fork based on an old codebase that isn’t as recent, but it works reasonably well given that perfectly timed sub millisecond interrupts are different on that chip. See https://github.com/markszabo/IRremoteESP8266
  • Sparkfun Pro Micro

We are open to suggestions for adding support to new boards, however we highly recommend you contact your supplier first and ask them to provide support from their side.

Download the mobile app and connect to our Arduino

Go to the section of the site «Download mobile application» and download to your smartphone or tablet the application. Of course your smartphone/tablet should have a built Bluetooth.

Run the application. Turn on Bluetooth, if it is off. Automatically begins searching for devices. All devices found will be listed.

Default modules HC-04 (05/06/07) are programmed name «INVOR» or «HC-04» («HC-05», «HC-06»). If the list of devices there is this name — it is your devise. We click on it. After some time required for connection to the module, you will be prompted to enter the password for pairing. The modules of HC-04 (05/06/07) have programmed password is «1234». Enter it. And end, we have opened our interface with a big button on the full screen!

Click on this button and look, as LED is blink on the board Arduino! Quite simply, it works!

Генерируем исходный код

Наш проект интерфейса готов. Перед тем как получить исходный код для нашего микроконтроллера, необходимо указать, для какой платформы мы хотим его получить. Наша платформа — Arduino. Для связи с модулем Bluetooth будем использовать SoftwareSerial. Это даст нам возможность подключить Bluetooth модуль практически к любым пинам микроконтроллера. Данную настройку производим в панели настройки проекта.

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

Нажмите на ссылку «Загрузить» и скачайте код скетча одним zip архивом. Распакуйте его и откройте файл project.ino в среде разработки Arduino.

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

Им мы и будем мигать. Нам не надо ничего исправлять в этой части кода.

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

Графический интерфейс управления

Откройте редактор интерфейса на сайте RemoteXY.com и создайте интерфейс управления, приведенный на рисунке ниже. На интерфейсе расположите правый и левый слайдер для правой и левой руки, слайдер для вращения головы. Установите две кнопки для управления глазами. Так же установите переключатель. Его мы будем использовать для включения режима автоматического моргания глазами.

Переименуйте слайдеры, назовите их slider_left, slider_right и slider_head соответственно. Так же переименуйте кнопки. Назовите их button_left и button_right соответственно.

Так как наш проект подразумевает использование библиотеки servo.h, выберите в настройках проекта формирование исходного кода для Arduino (Serial), library version. Напомню, что библиотека servo.h конфликтует с библиотекой SoftwareSerial.h, по этому мы ее использовать не будем.

Сформируйте и загрузите исходный код проекта графического интерфейса к себе на компьютер. Не забудьте загрузить и установить библиотеку RemoteXY для Arduino IDE. Скомпилируйте и загрузите скетч в плату Arduino. Используя мобильное приложение RemoteXY проверьте, что ваш смартфон может соединиться с вашим новым проектом. Не забудьте, что модуль Bluetooth необходимо подключить к аппаратному последовательному порту к пинам 0(RX) и 1(TX). Если смартфон соединился успешно, тогда идем дальше.

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

Программа управления

Войдите в редактор на этом ресурсе и сконструируйте следующий интерфейс управления:

Установите по центру экрана «Джойстик». В свойствах джойстика выберите установку дополнительного элемента управления «Включить G сенсор». Выберите положение переключателя G-сенсора «Низ-лево». Так же в настройках можете изменить цвет на красный. В дальнейшем джойстиком мы будем управлять движением машинки.

Установите «Переключатель». Разместите его левее джойстика. Можете так же изменить его цвет. Переключателем мы будем управлять светодиодом на плате Arduino на пине 13.

Если вы все правильно сделали, у вас должен получиться примерно такой интерфейс управления:

Откроем загруженный скетч в IDE Arduino. Скетч прекрасно компилируется без ошибок. Однако, в нем конечно же нет кода для управления нашей машинкой. Наша задача написать этот код. Для образца мы будем использовать загруженный пример.

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

Мы видим переменные joystick_1_x и joystick_1_y, отражающие координаты x и y нашего джойстика, а так же переменную switch_1, отражающую переключатель.

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

В самом начале определяются номера пинов, которые будут использованы для управления моторами. Далее номера пинов группируются в два массива, для правого и левого мотора соответственно. Для управления каждым мотором через драйвер на чипе L298N необходимо использовать 3 сигнала: два дискретных, указывающих направление вращения мотора, и один аналоговый, определяющий скорость вращения. Данными преобразованиями у нас занимается функция Wheel. На вход функции передаем ссылку на массив пинов выбранного мотора, и скорость вращения как знаковое число от -100 до 100. Если передали скорость 0, то мотор отключается.

В предопределенной функции setup настраиваются пины на работу как выходы. Для аналогового сигнала используются пины, которые могут работать как ШИМ преобразователи. Это пины 9 и 10. Они не требуют настройки в среде Arduino.

В предопределенной функции loop в каждой итерации работы программы вызывается обработчик модуля RemoteXY. Далее происходит управление зажиганием светодиода, далее управление моторами. Для управления моторами из структуры RemoteXY считываются поля по координатам джойстика X и Y, на основе координат выполняется математическая операция расчета скорости для каждого мотора, и вызывается функция Wheel, задающая скорость мотора. Данные вычисления выполняются в каждом цикле работы программы, обеспечивая непрерывность вычисления управляющих импульсов моторов на основе координат джойстика.

Залейте получившейся скетч Arduino в контроллер. Загрузите и запустите мобильное приложение на ваш смартфон или планшет. Соединитесь с вашим устройством и можете им управлять. Джойстиком можно управлять в обычном режиме, перемещая движок пальцем. Можно включить G-сенсор, и движок джойстика будет перемещаться сам в зависимости от наклона вашего смартфона.

Если после сборки вашего устройства, один или оба мотора вращаются в противоположном направлении, поменяйте провода местами при подключении мотора.

Generate source code

Our interface design is ready. Before you get the source code for our microcontroller, you must specify for which platform we want to get it. Our platform — Arduino. To communicate with the Bluetooth module will use SoftwareSerial. This will give us an opportunity to connect the Bluetooth module to virtually any microcontroller pins. This setting must be selected in project configuration field.

Now press the button «Get source code». If you are not registered, you must register to get a project source code.

On the download page of the source code is the code of the sketch program for the Arduino microcontroller. This code implements a graphical management interface that was created in the editor. To compile this sketch also need to install the RemoteXY library. Download library by link and install in the Arduino IDE using instruction.

Click the «Download» link and download the source code of a zip archive. Unzip it and open the file project.ino in the IDE Arduino.

Note that in the project (function main) already as an example our button connected to the pin 13. This pin is standard for Arduino board is a LED that allows testing program. Them we are going to blink. We do not need to fix anything in this part of the code.

We generally do not need to be corrected. The code compiles without errors completely. But do not be in a hurry, we still need to set up a connection with the Bluetooth module.

Если не подключается…

Проверьте, подключилось ли ваше устройство к облачному серверу

Зайдите на страницу списка токенов в личном кабинете сайта RemoteXY. В списке токенов посмотрите какое значение указано в колонке «Состояние устройства». Если устройство подключилось к облачному серверу, значение должно быть «Connected». Попробуйте обновить страницу.

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

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

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

Примечание: При ошибке подключения мобильного приложения к облачному серверу выводится диалоговое окно с описанием ошибки. Основные ошибки следующие:

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

Проверьте наличие правильно загруженной программы

Вы можете проверить наличие связи между Arduino и ESP8266 используя Serial Monitor, который можно открыть во вкладке Tools в Arduino IDE.

Откройте Serial Monitor и установите скорость 115200. Нажмите кнопку сброса на плате Arduino.

Если после сброса Arduino в Serial Monitor нет никаких сообщений, это скорее всего означает, что Arduino не выполнят вашу программу. Возможно:

  • нужный скетч не был загружен;
  • ваша Arduino не включена;
  • Serial Monitor не подключился к Arduino;
  • с вашей Arduino что то не так.

Проверьте связь между Arduino и ESP8266

Если после сброса Arduino в Serial Monitor вы видите следующую последовательность команд, это означает, что инициализация ESP8266 проходит успешно и связь между Arduino и ESP8266 есть, устройство зарегистрировалось на сервере:

Если вы видите только повторяющиеся команды «AT», это означает что нет связи между Arduino и ESP8266.

Связь может отсутствовать по разным причинам. Ниже перечислены основные:

  • контакты RX и TX подключены не верно, перепутаны контакты, или подключены не к тем контактам, или не подключены совсем;
  • нет питания на ESP8266, при подаче питания на ESP8266 должен светиться красный светодиод;
  • не хватает мощности источника питания 3.3 В для ESP8266;
  • модуль ESP8266 неисправен.

Проверьте, подключается ли ESP8266 к точке доступа

Если после сброса Arduino в Serial Monitor вы видите последовательность команд, но последняя команда, это AT+CWJAP и далее ничего не происходит, это означает что модуль не может зарегистрироваться в вашей WiFi сети с указанным SSID и паролем:

Проверьте, подключается ли ESP8266 к облачному серверу

Если после сброса Arduino в Serial Monitor вы видите последовательность команд, но последняя команда, которую вы видите является AT+CIPSTART и далее она периодически повторяется примерно раз в минуту, это означает что недоступен облачный сервер. Возможно указан неверно URL сервера или порт. Возможно ваша точка доступа WiFi не подключена к интернету.

Если периодически раз в минуту повторяются две команды AT+CIPSTART и AT+CIPSEND, это означает, что сервер доступен, но токен был отклонен сервером, как незарегистрированный.

Проверьте прошивку ESP8266

Если после сброса Arduino в Serial Monitor вы видите только начало последовательности команд, но нет завершающей команды AT+CIPSERVER=1,6377 это означает, что модуль ESP8266 имеет устаревшую прошивку. Требуется обновление прошивки.

Проверьте питание ESP8266

Так же возможно, что вашей ESP8266 не хватает мощности источника питания. Некоторые платы Arduino имеют слабый стабилизатор напряжения 3.3 В, который не способен выдавать 200-300 мА в пиковых режимах. В этом случае в Serial Monitor вы так же увидите обрыв последовательности команд.

Подключение MasterSCADA и Arduino

Что нам для этого нужно:

  1. Установить Master SCADA 3.7 на 32 точки — бесплатная версия;
  2. Установить Master OPC universal Modbus на 32 тега — тоже бесплатная версия;
  3. Конечно Arduino UNO;
  4. Написать скетч и настроить обе программы;

Дистрибутивы программ вы можете скачать с официального сайта ИНСАТ. Устанавливаете на компьютер и идём дальше.

Для того, чтобы вся эта штука заработала, нам нужно скачать библиотеки для Ардуино, чтобы он опрашивался по протоколу Modbus в режиме Slave. Для этого нужно скачать библиотеку SimpleModbusSlaveV9. Скачать можно отсюда. Как установить библиотеку, я писал статью.

Пример будет с измерением длины. Реализован он будет с помощью Ардуино и датчика дальномера HC-SR04.

Пишем скетч:

Arduino

//подключаем библиотеку #include <SimpleModbusSlave.h> //объявляем переменные #define echoPin 2 #define trigPin 3 enum { ADC_VAL, PWM_VAL, HOLDING_REGS_SIZE=4 //вводим количество каналов }; unsigned int holdingRegs; void setup() { modbus_configure(&Serial, 115200, SERIAL_8N2, 1, 2, HOLDING_REGS_SIZE, holdingRegs); //вводим скорость опроса modbus_update_comms(115200, SERIAL_8N2, 1); // для УЗ датчиков pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { int duration, cm; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); cm = duration / 58; // Полученные значения передаем в OPC modbus_update(); holdingRegs = cm; //адрес 2 holdingRegs = cm; //адрес 2 }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

//подключаем библиотеку
#include <SimpleModbusSlave.h>
//объявляем переменные
#define echoPin 2
#define trigPin 3
 

enum

{

ADC_VAL,

PWM_VAL,

HOLDING_REGS_SIZE=4//вводим количество каналов

};

unsignedintholdingRegsHOLDING_REGS_SIZE;

voidsetup()

{
 

modbus_configure(&Serial,115200,SERIAL_8N2,1,2,HOLDING_REGS_SIZE,holdingRegs);//вводим скорость опроса

modbus_update_comms(115200,SERIAL_8N2,1);

 
// для УЗ датчиков
 

pinMode(trigPin,OUTPUT);

pinMode(echoPin,INPUT);

}
 

voidloop()

{

intduration,cm;

digitalWrite(trigPin,LOW);

delayMicroseconds(2);

digitalWrite(trigPin,HIGH);

delayMicroseconds(10);

digitalWrite(trigPin,LOW);

duration=pulseIn(echoPin,HIGH);

cm=duration58;

 
// Полученные значения передаем в OPC

modbus_update();

holdingRegs2=cm;//адрес 2

holdingRegs3=cm;//адрес 2

}

Далее настраиваем OPC-сервер. Создаём устройство в дереве объектов. Добавляем подключение через COM-порт. В моём случае 3 порт. Обязательно указывайте в настройках.

Далее добавляем устройство:

После этого вносим теги, которые вы хотите опрашивать:

Нулевой адрес обязателен. Так как без него произойдёт смещение адресации. Нажимаем на кнопочку пуск, и выскочит вот такая вот картинка:

Это всё конечно здорово! Но нам надо увидеть эти данные на мнемосхеме, правильно. Тогда поступаем следующим образом — открываем MasterSCADA, создаём проект и делаем следующие настройки.

Ищем ОРС-сервер и добавляем его:

Добавляем ОРС-переменную нашего любимого датчика-дальномера:

Далее добавляем Связываем теги и выводим это всё на мнемосхему. После этого запускаем всё хозяйство.

А теперь давайте рассмотрим другую не менее интересную SCADA-систему для плат Ардуино.

Подключаем модуль Bluetooth

Теперь нам необходимо физически подключить Bluetooth модуль к плате Arduino. Модуль HC-04 имеет 4-е контакта (они подписаны прямо на плате). Два из них — питание модуля. Их подключаем стандартно к питанию +5V на плате Arduino.

Остальные два — это шина UART интерфейса: RX и TX, отвечающие за прием и передачу данных. Контакт RX необходимо подключить к пину на Arduino, который у нас имеет функцию TX, а контакт TX к пину на Arduino, имеющему функцию RX. Как же узнать, какие пины на Arduino отвечают за RX и TX связи с модулем? Очень просто.

В коде скетча имеются два определения пинов, к которому подключен модуль Bluetooth. Найдите эти строки кода. Они как раз и определяют, какие пины будут использованы при настройке SerialSoftware:

Итак, контакт RX модуля Bluetooth подключаем к пину 3 платы Arduino, а контакт TX — к пину 2 платы. Конечно же вы можете изменить номера пинов по своему усмотрению (читайте документацию на SerialSoftware, так как не все пины могут быть использованы в программной эмуляции UART).

Вот теперь можно залить исходный код в микроконтроллер. ЗАГРУЖАЕМ!

Connection via Software Serial

It allows to connect the module to an arbitrary microcontroller pins. The pins used must be select in the module interface settings of editor. Also in the settings must be select the baud rate for serial port. ESP8266 default configured to 115200 baud. To work through SoftwareSerial, must configure the transmission speed ESP8266 to a lower speed. Stable operation of the module is possible at a speed of no more than 19200 baud. To change the speed of module serial interface, must to connect it to the console to the possibility of the AT commands. Module serial interface speed can be changed with the AT command «AT+UART_DEF=19200,8,1,0,0».

There are some limitations on the use of the RX pin for Arduino boards. Limitations associated with do not support to pins interrupt of the microcontroller.

  • On Arduino RX doesn’t work on pin 13;
  • On Mega and Mega2560 only the following can be used for RX: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8(62), A9(63), A10(64), A11(65), A12(66), A13(67), A14(68), A15(69);
  • On Leonardo and Micro only the following can be used for RX: 8, 9, 10, 11, 14, 15, 16;

Also, when using SoftwareSerial you should take the following limitations:

  • No ability to work at high baud rates. It is not recommended to use a baud rate of more than 19200.
  • Some libraries, which also uses interrupt may not work correctly. For example Servo library, the servos will twitch.

Example of ESP8266 module connecting via SoftwareSerial by pins 2(RX) and 3 (TX) on the picture. Please note that you must connect to pins the cross hairs, pin 2(RX) of Arduino to TX of ESP8266 module and pin 3(TX) to the RX pin of module.

Качаем приложение и подключаемся к нашему Arduino

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

Запускаем приложение. Включаем Bluetooth, если он не включен. Автоматически начинается поиск устройств. Все найденные устройства будут показаны в списке.

По умолчанию модули HC-04 (05/06/07) имеют запрограммированное имя «INVOR» или «HC-04» («HC-05″,»HC-06»). Если в списке устройств появилось такое — то это ваше. Щелкаем в него. После некоторого времени, необходимого на соединение с модулем, вам будет предложено ввести пароль для сопряжения. Опять же модули серии HC-04 (05/06/07) имеют запрограммированный пароль «1234». Вводим его. И ВУА-ЛЯ, нам открылся наш интерфейс с большущей кнопкой на весь экран!

Нажимаем на эту огромную кнопку и наблюдаем, как загорается светодиод на плате Arduino! Все просто, все работает!

Подключение через Software Serial

Позволяет подключить модуль к произвольным контактам микроконтроллера. Какие контакты использовать, необходимо указать в панели настроек подключения модуля. Так же в панели настроек указывается скорость передачи данных для порта. Модуль ESP8266 по умолчанию настроен на скорость 115200 бит/сек. Для работы через SoftwareSerial необходимо предварительно настроить скорость передачи данных ESP8266 на более низкую скорость. Стабильная работа модуля возможна на скорости не более 19200 бит/сек. Для изменения скорости работы последовательного интерфейса модуля, необходимо его подключить к консоли для возможности выполнения AT команд. Скорость работы модуля может быть изменена при помощи AT команды «AT+UART_DEF=19200,8,1,0,0».

Есть некоторые ограничения на использование контакта RX для плат Arduino. Ограничения связаны с поддержкой прерываний на соответствующих контактах микроконтроллера.

  • Arduino UNO и Nano для RX нельзя использовать контакт 13(LED);
  • Arduino Mega и Mega2560 для RX можно использовать только следующие контакты: 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8(62), A9(63), A10(64), A11(65), A12(66), A13(67), A14(68), A15(69);
  • Arduino Leonardo и Micro для RX можно использовать только следующие контакты: 8, 9, 10, 11, 14, 15, 16;

Так же при использовании SoftwareSerial вы должны принять следующие ограничения:

  • Нет возможности работы на больших скоростях передачи данных. Не рекомендуем использовать скорость соединения более 19200 бит/сек.
  • Некоторые библиотеки, которые так же используют прерывания, могут работать не корректно, или же их использование может сделать неработоспособным данный способ подключения. Например библиотека Servo будет подергивать сервоприводы.

Пример подключения модуля ESP8266 для SoftwareSerial к контактам 2(RX) и 3(TX) на рисунке

Обратите внимание, что необходимо контакты подключить перекрестием, т.е. контакт Arduino 2(RX) к контакту TX модуля, и контакт 3(TX) к контакту RX модуля

Корпус робота

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

В голове прорежьте два отверстия, в которые установите два светодиода. Это будут глаза. Глаза так же будут зажигаться дистанционно

Program control

Now we need to create code, which will be the intermediary between the slider and servo. Information about the position of the slider is in the structure RemoteXY field slider_1 (if you renamed your slider, the variable name will match the name of the slider).

We need to write a mathematical formula that converts the value of the slider position, ranging from 0 to 100 in the pulse duration to control servos. The pulse duration varies from 500 to 2500 (1500 in middle). We obtain the following formula:

In function setup we establish the initial position of the slider to 50 — the middle position. When connecting with the smartphone first thing in the application reads the status of all controls. Thus, the position of the slider set to the middle. Example the simple code:

In the code we include servo.h library and define a servo name myservo. In the initialization function setup is initialized library RemoteXY (as in the example), then initializes the servo on pin 9, and set the center position of the slider. In the global cycle function loop the first thing to run the handler RemoteXY (as in the example). It then calculate the pulse duration to the formula. And this duration is passed as a parameter to the function writeMicroseconds, thereby setting the position of the servo shaft, corresponding to the position of the slider on your smartphone, in each cycle of the program.

Connection scheme

We used micro servo which power is connected directly to the + 5V power supply board Arduino. This is not the right solution, since the servo consumes large enough current under load, and can interfere with the operation of the microcontroller. The correct solution is to power the servos from a separate power. The scheme shows the servo and the Bluetooth module connection to the board Arduino. Bluetooth module HC-06 is connected to the hardware serial port. It should be switched off when programming the microcontroller.

If you have collected a scheme, you have to download the sketch in your Arduino. Next download mobile app RemoteXY, and can connect to your Arduino. By moving the slider on the screen of smartphone/tablet, you can control servo.

Программа управления

Теперь нам необходимо написать код программы, который будет являться промежуточным звеном между слайдером и сервомашинкой. Информация о положении слайдера находится в структуре RemoteXY в поле slider_1 (если вы переименовали ваш слайдер, имя переменной будет соответствовать имени слайдера).

Нам необходимо написать математическую формулу, которая пересчитывает значение положения слайдера, изменяемое от 0 до 100 в величину длительности импульса для управления сервой. Длительность импульса изменяется от 500 до 2500 (1500 среднее значение). Получаем такую формулу:

Так же в функции setup мы установим начальное положения слайдера равным 50 — среднее положение. При подключении со смартфона первым делом приложение считывает состояния всех элементов управления. Тем самым положение слайдера установится на середину. У меня получился следующий простой код:

В коде мы подключаем библиотеку servo.h и определяем одну серву с именем myservo. В процедуре инициализации setup инициализируется библиотека RemoteXY (как в примере), далее инициализируется серва на пин 9, и устанавливается среднее положение слайдера. В глобальном цикле — процедуре loop первым делом запускается обработчик RemoteXY. Далее вычисляется длительность импульса по формуле. И эта длительность передается в качестве параметра в функцию writeMicroseconds, тем самым задавая положение вала сервомашинки, соответствующее положению слайдера на смартфоне, в каждом цикле программы.

Robot body

The robot consists of four parts, cut out of cardboard. This torso, head and two hands. All parts are cut with a knife. Details can be glued together using plastic glue gun to heat up. To install the servos on the body is necessary to cut rectangular holes. To install the servo in the holes using the same plastic glue. On the head and the hands of robot, where the shaft of servo connect to the servo arm that are glued to the body from the inside by means of the same plastic glue. We will not give the exact dimensions and drawings, you should not be difficult to repeat the design.

At the head of the robot cut the two holes into which fit the two LEDs. This will be the eye. Eyes will also be light remotely.

Альтернативный вариант сборки

Бывает так, что #Структор не подходит к интерьеру. Попробуем собрать устройство в стиле IKEA.

Что нам понадобится?

  1. Iskra Neo

  2. Troyka Shield LP

  3. Bluetooth HC-05 (Troyka-модуль)

  4. ИК-передатчик (Troyka-модуль)

  5. ИК-приёмник (Troyka-модуль)

  6. Тумблер

  7. Батарейка Крона

  8. Кабель питания от батарейки Крона

  9. Суперклей
  10. Канцелярский нож
  11. Android-смартфон
  12. Козлик из IKEA

Как собрать?

  1. Распотрошим козлика канцелярским ножом. Порежем пополам, сделаем отверстия под ИК-приёмник, ИК-передатчик и тумблер
  2. Вклеим ИК-приёмник и ИК-передатчик в козлика при помощи суперклея
  3. Установите Troyka Shield LP на Iskra Neo. Соедините ИК-приёмник с пином , ИК-передатчик с пином . Соедините пин Bluetooth-модуля с пином , а контакт с пином .
  4. Установите электронику в козлика
  5. Разрежьте красный провод кабеля питания от батарейки Крона и зачистите концы. Прикрутите контакты к тумблеру
  6. Подключите питание к Iskra Neo.
  7. Установите тумблер в отверстие для него и зафиксируйте гайкой

Connection via Hardware Serial

It allows to connect the module to the microcontroller pins, supporting one of the hardware serial ports. For different Arduino boards are different ports and contacts. Hardware serial allows to work motule at a maximum connection speed of 115200 baud. The baud rate for Arduino is selected in the module interface settings of editor. ESP8266 must be to pre-configured to work at the same speed as the Arduino. The baud rate setting of module can be made via AT commands. Next Arduino serial ports are available:

  • Arduino UNO and Nano: Serial (RX-0, TX-1);
  • Arduino MEGA and MEGA2560: Serial (RX-0, TX-1), Serial1 (RX-19 и TX-18), Serial2 (RX-17 и TX-16), Serial3 (RX-15 и TX-14);

>Which port to use, and therefore the pins should be connected to the module, you must select in interface settings of editor. It should also be borne in mind that for Arduino boards Serial port enabled for the microcontroller programming, and if you decide to use this port, you must disconnect the ESP8266 module when programming it. A good solution is to use the boards Arduino MEGA any port other than Serial.

Example of HC-05(06) module connecting via HardwareSerial by pins 0(RX) and 1(TX) on the picture. Please note that you must connect to pins the cross hairs, pin 0(RX) of Arduino to TX of ESP8266 module and pin 1(TX) to the RX pin of module.

If there is no connection…

If there is no connection, it is likely that you will get an error:

This means that either the request commands do not reach the controller, or the controller responses are not returned to the smartphone/tablet.

If you receive this specific error, check yourself on the list, going to the next point only after checking the previous one:

  • your Arduino is not on;
  • the required sketch has not been loaded into the Arduino;
  • the RemoteXY library did not update, using old version of library;
  • power is not supplied to the Bluetooth module, the power contacts may be reversed;
  • RX and TX contacts of the Bluetooth module, or one of them are not connected to the controller, a bad contact;
  • the RX and TX contacts of the Bluetooth module are not connected correctly, they may be interchanged, check the scheme (step 4);
  • incorrect configuration settings or connection settings (step 2) had been chosen before generating the source code;
  • the data baud rate of HC-05 (06) module does not match which selected into the RemoteXY configuration (default 9600);
  • the Bluetooth module is defective.

Connecting the Bluetooth module

Now we need to physically connect a Bluetooth module to the board Arduino. Module HC-04 has the 4th contact (they are signed directly on the board). Two of them — the power. For module used a standard Power + 5V from Arduino board.

The other two — a UART interface: RX and TX, responsible for receiving and transmitting data. RX is necessary to connect to pin on the Arduino, which we have function TX, TX and pin to pin on the Arduino, having a function RX. How do you know which pins on the Arduino are responsible for the RX and TX module communication? Very simple.

In the sketch code there are two definitions pins, it connected to the Bluetooth module. It has two definitions, find these lines of code. They defined, what pins will be used when configuring SerialSoftware:

Thus, contact RX of Bluetooth module connected to pin number 3 of board Arduino, and contact TX — to pin number 2 of the board. Of course you can change the pin numbers of your choice (see the documentation at SerialSoftware, since not all the pins can be used in emulation software UART).

Now you can download code to microcontroller. Do it!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector