Робот wifi сделай сам

Робот на Arduino Uno, управляемый по WiFi

Роботы являются одними из самых популярных устройств, конструируемыми энтузиастами в микроконтроллерной технике. Мы на нашем сайте уже рассматривали проекты различных роботов на основе платы Arduino Uno:

Внешний вид робота на Arduino Uno, управляемого по WiFi

А в этой статье мы рассмотрим создание робота на основе Arduino Uno, управляемого по WiFi со смартфона с помощью приложения Blynk App. Для демонстрации работы этого робота мы используем мобильное приложение для Android под названием “Blynk”. Blynk – это совместимое приложение с Arduino, удобное для создания различных проектов для интернета вещей (IoT based project). Это приложение можно скачать из Google Play Store, его легко установить и настроить.

Шаги для настройки приложения Blynk

1. Сначала скачайте его из Google Play Store и установите его на свой мобильный телефон с Android.

2. После этого необходимо создать аккаунт если у вас его нет. Также вы можете использовать Gmail аккаунт (если он у вас есть).

3. Теперь выберите Arduino Board и задайте имя для своего проекта.

Создание нового проекта в приложении Blynk

4. Запишите код авторизации токена (Auth Token Code) или просто перешлите его на свой Email аккаунт и затем скопируйте и вставьте его в свою программу (скетч) для Arduino.

Присданный на Email код авторизации токена

5. Запишите свой Auth Token Code в программе (скетче) для Arduino.

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = «caa17a11c0124d4083d0eaa995f45917»;

6. Затем кликните на «создать кнопку» (create button) в приложении Blynk.

7. Теперь выберите Joystick Widget, Click on Joystick, Configure the Joystick (более подробно смотрите в видео в конце статьи) и нажмите кнопку возвращения назад back button.

Настройка джойстика в приложении Blynk.

8. После этого нажмите кнопку Play в верхнем правом углу экрана.

Более подробно процессы настройки приложения Blynk показаны в видео в конце статьи.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Wi-Fi модуль ESP8266 (купить на AliExpress).
  3. Драйвер двигателей L293D (купить на AliExpress).
  4. Электродвигатели постоянного тока.
  5. USB кабель.
  6. Источник питания.
  7. Соединительные провода.
  8. Батарейки.
  9. Потенциометр 10 кОм (опционально).
  10. Шасси робота с колесами.
  11. Мобильный телефон с Android.
  12. Приложение Blynk.

Работа схемы

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

Схема робота на Arduino Uno, управляемого по WiFi

Основными элементами в ней являются плата Arduino Uno и Wi-Fi модуль ESP8266. Контакты Vcc и GND модуля ESP8266 непосредственно подключены к контактам 3.3V и GND платы Arduino, контакт CH_PD также подсоединен к контакту 3.3V. Контакты Tx и Rx модуля ESP8266 подключены к контактам 2 и 3 платы Arduino. Software Serial Library (библиотека последовательной связи) используется для осуществления последовательной связи на контактах 2 и 3 платы Arduino. В статье про передачу Email с использованием Arduino мы достаточно подробно останавливались на подключении WiFi модуля ESP8266 к плате Arduino, поэтому здесь эти вопросы рассматривать не будем.

Читайте также:  Eltex nte rg 1402g настройка wifi

Микросхема драйвера двигателей L293D используется для управления двигателями постоянного тока. Входные контакты микросхемы драйвера мотора непосредственно подключены к контактам 8, 9, 10 и 11 платы Arduino. Электродвигатели постоянного тока подключены к выходным контактам микросхемы L293D. Для питания схемы и двигателей постоянного тока мы использовали батарейку на 9 Вольт.

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

Структурная схема работы робота на Arduino Uno, управляемого по WiFi

Работа схемы достаточно проста – нам в приложении Blynk на смартфоне необходимо просто перемещать джойстик в том направлении, в котором мы хотим чтобы двигался робот. Если мы отпустим кнопку джойстика в приложении, то его рычаг переместится в центр и робот остановится.

Приложение Blynk передает значения двух осей джойстика плате Arduino при помощи Wi-Fi соединения. Плата Arduino принимает эти значения, сравнивает их с заранее определенными значениями и по результатам сравнения выдает команды на движения робота.

Исходный код программы

Код программы практически полностью готов в среде Arduino IDE. Нам необходимо просто скачать Blynk Library для Arduino. И после внесения ряда изменений мы получим программу для управления роботом по Wi-Fi.

В программе мы первым делом должны подключить все необходимые библиотеки, затем мы должны войти в строку авторизации (auth string) в токене авторизации (Auth Token) от приложения Blynk. Далее мы подсоединяем последовательный контакт модуля Wi-Fi к Arduino с помощью библиотеки последовательной связи. RX подсоединяем к контакту 2, а TX – к контакту 3.

#define BLYNK_PRINT Serial // поместите это в комментарий чтобы отключить печать и сэкономить пространство
#include
#include
// Set ESP8266 Serial object
#include
SoftwareSerial EspSerial(2, 3); // RX, TX
ESP8266 wifi(EspSerial);
// You should get Auth Token in the Blynk App (вы должны получить Auth Token в приложении Blynk)
// Go to the Project Settings (nut icon). (зайдите в настройки проекта)
char auth[] = «caa17a11c0124d4083d0eaa995f45917»;

Затем мы должны сконфигурировать контакты 8,9,10,11 в режим работы на вывод данных чтобы через них передавать инструкции роботу куда ему двигаться, а также запрограммировать функции для движения робота в заданных направлениях: void forward(), void backward(),void right() and void left() .

После этого в функции setup мы должны инициализировать все необходимые устройства, задать направление работы контактов, инициализировать последовательную связь, ввести имя пользователя и пароль для Wi-Fi соединения.

Читайте также:  Lg 32lb570v wi fi адаптер

void setup()
<
// установить бодовую скорость передачи
Serial.begin(9600);
delay(10);
// установка бодовой скорости для ESP8266
// 9600 рекомендовано для библиотеки Software Serial
EspSerial.begin(9600);
delay(10);
Blynk.begin(auth, wifi, «username», «password»); // имя пользователя и пароль для wifi
pinMode(m11, OUTPUT);
pinMode(m12, OUTPUT);
pinMode(m21, OUTPUT);
pinMode(m22, OUTPUT);
>

После этого мы в программе должны проверить ряд условий для управления роботом. Здесь мы выбрали виртуальный контакт 1 (V1) чтобы получать информацию о требуемом направлении движения от приложения Blynk. Поскольку мы выбрали соответствующую опцию в приложении, то мы можем получать значения осей x и y на этом же самом контакте.

BLYNK_WRITE(V1)
<
int x = param[0].asInt();
int y = param[1].asInt();
if(y>220)
forward();
else if(y <35)
backward();
else if(x>220)
right();
else if(x <35)
left();
else
Stop();
>

Далее мы просто должны использовать функцию blynk в цикле loop.

Далее приведен полный текст программы.

Источник

Собираем Wi-Fi робота

Давно мечтал сделать Wi-Fi робота, которым можно было бы управлять удаленно. И вот наконец настал тот день когда я смог управлять роботом через интернет, видеть и слышать все что происходит вокруг него.
Заинтересовавшихся приглашаю под кат

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

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

Теперь все по порядку:

image

Расположение компонентов на материнской плате. Я установил только Arduino Nano, драйвер двигателей и звуковой излучатель HC:

image

Роутер wr703N прикрепил к нижней части платформы робота на двухсторонний скотч:

Веб камера прикреплена на мебельный уголок, к штатным отверстиям платформы, предусмотренных для сервомоторов:

СyberWrt — это прошивка собранная на базе OpenWrt и предназначенная в первую очередь для роботов, умного дома и других устройств построенных на базе популярных моделей роутеров Tp-Link mr3020 b Wr703N. У СyberWrt максимально возможный объем свободного места для инсталляции пакетов — 1.25Мб. По умолчанию установлен веб сервер и все операции можно проводить через встроенный веб интерфейс. Сразу после перепрошивки, роутер доступен в сети по кабелю и по WiFi, как точка доступа. Через веб-интерфейс можно работать в режиме «командной строки» — через веб терминал и в файловом менеджере, в котором можно редактировать, загружать, удалять, создавать, копировать файлы и многое другое.

После прошивки роутера, он доступен как WiFi точка доступа с именем «CyberBot», подключаемся к нему заходим на главную страницу роутера. Вот так выглядит веб интерфейс сразу после прошивки.

Устанавливаем модули Драйвер FTDI, Драйвер video и CyberBot-2.

Прошиваем контроллер ардуино.

Код программы робота получился достаточно простым, но его достаточно для того что бы удаленно управлять роботом через локальную сеть или интернет.
Код адаптирован под контроллеры Arduino с ATmega168/328 на борту и использует библиотеку CyberLib.
Эта библиотека помогает из контроллера выжать максимум его возможностей и уменьшить объем конечного кода
В коде используется WDT, для того что бы робот не смог зависнуть.
Так же код поддерживает управление камерой по осям X и Y, но у меня не было свободных сервомоторов и я не смог воспользоваться этой функцией:

#include #include Servo myservo1; Servo myservo2; long previousMillis; http://cyber-place.ru/attachment.php?attachmentid=600&d=1389429469 uint8_t LedStep = 0; // Счетчик int i; boolean light_stat; uint8_t inByte; uint8_t speed=255; //максимальная скорость по умолчанию #define init void setup() < myservo1.attach(9); // Подключение сервоприводов к порту myservo2.attach(10); // Подключение сервоприводов к порту init; // Инициализация портов D11_Low; // Динамик OFF randomSeed(A6_Read); //Получить случайное значение horn(); //звуковое оповещение готовности робота UART_Init(57600);// Инициализация порта для связи с роутером wdt_enable (WDTO_500MS); >void loop() < unsigned long currentMillis = millis(); if (LedStep == 0 && currentMillis - previousMillis >500) < // Задержка 0,5 сек. previousMillis = currentMillis; LedStep = 1; >if (LedStep == 1 && currentMillis - previousMillis > 500) < // Задержка 0,5 сек. previousMillis = currentMillis; LedStep = 2; >if (LedStep == 2 && currentMillis - previousMillis > 500) < // Задержка 0,5 сек. LedStep = 0; >if (UART_ReadByte(inByte)) //Если что то пришло < switch (inByte) // Смотрим какая команда пришла < case 'x': // Остановка робота robot_stop(); break; case 'W': // Движение вперед robot_go(); break; case 'D': // Поворотjт влево robot_rotation_left(); break; case 'A': // Поворот вправо robot_rotation_right(); break; case 'S': // Движение назад robot_back(); break; case 'U': // Камера поднимается вверх myservo1.write(i -= 20); break; case 'J': // Камера опускается вниз myservo1.write(i += 20); break; case 'H': // Камера поворачивается вправо myservo2.write(i += 20); break; case 'K': // Камера поворачивается влево myservo2.write(i -= 20); break; case 'B': // Бластер D12_High; break; case 'C': // Клаксон horn(); break; case 'V': // Включить/Выключить фары if(light_stat) < D8_Low; light_stat=false; >else < D8_High; light_stat=true; >break; > if(inByte>47 && inByte <58) speed=(inByte-47)*25+5; //принимаем команду и преобразуем в скорость >wdt_reset(); > void horn() < for(uint8_t i=0; ivoid robot_go() < D4_Low; analogWrite(5, speed); analogWrite(6, speed); D7_Low; >void robot_back() < D4_High; analogWrite(5, 255-speed); analogWrite(6, 255-speed); D7_High; >void robot_stop() < D4_Low; analogWrite(5, 0); analogWrite(6, 0); D7_Low; >void robot_rotation_left() < D4_Low; analogWrite(5, speed); analogWrite(6, 255-speed); D7_High; >void robot_rotation_right()

Все собрано и прошито, теперь включаем робота и управляем им удаленно.
На PC кроме экранных кнопок можно управлять еще с клавиатуры, клавишами W, A, D, S, X

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

Источник

Оцените статью
Adblock
detector