- Создание робота под управлением Wi-Fi с использованием LinkIt ONE: 8 шагов (с изображениями)
- Расходные материалы:
- Шаг 1: Компоненты, которые вам понадобятся
- Шаг 2: Соединение цепи
- Шаг 3: Загрузка кода в Arduino — Запуск базового теста
- Шаг 4: Добавление ультразвукового датчика, чтобы робот избегал препятствий
- Шаг 5: Загрузка кода Arduino — Тестирование автономного робота
- Шаг 6: Добавление WiFi-антенны в LinkIt ONE
- Шаг 7: Загрузите код и измените имя и пароль Wifi-маршрутизатора
- Шаг 8: Загрузка кода контроллера Wi-Fi
- Собираем Wi-Fi робота
Создание робота под управлением Wi-Fi с использованием LinkIt ONE: 8 шагов (с изображениями)
Вот пошаговое руководство, которое поможет вам построить первого робота и добавить сложности, как вы будете следовать. Помимо создания базового робота, избегающего препятствий, с использованием датчика UltraSonic и драйвера мотора Sparkfun, вы также узнаете, как создать робота, управляемого Wi-Fi, с помощью платы Mediatek LinkIt ONE, которая имеет встроенную плату Wi-Fi, как показано на видео выше.
Мы будем использовать интегрированную среду разработки Arduino для загрузки кода / эскизов, прикрепленных к шагам ниже. И как часть третьего эскиза вы настроите крошечный веб-сервер на LinkIt ONE, чтобы обслуживать приложение контроллера, которое вы можете использовать в своем мобильном / планшетном браузере для вызова и управления роботом.
Расходные материалы:
Шаг 1: Компоненты, которые вам понадобятся
Вот компоненты, которые вам понадобятся для завершения сборки
- Плата Mediatek LinkIt ONE, являющаяся платой Arduino с встроенными Wi-Fi, GSM и GPS, будет действовать как мозг вашего робота и будет содержать веб-сервер для контроллера. — стоимость 59 $
- Аккумулятор Lipo — поставляется с пакетом Mediateck LinkIt ONE
- Sparkfun Motor Driver — Dual TB6612FNG (1A) — стоит 9 $, и вам также понадобится жатка, чтобы припаять к плате, чтобы вы могли использовать
- Для шасси роботов ActoBitty 2 от Actobotics это небольшое, простое и легкое в сборке устройство. И самое приятное в том, что шасси оснащено защелками, на которые можно установить любую плату типа Arduino. Кроме того, оно также поставляется с двигателями и требуется держатель батареи — стоимость 30 $
- 4 батарейки АА
- Ультразвуковой датчик HC-SR04 для обнаружения препятствий — стоимость — 4 $
- макетировать
- Макетная проволока
Если у вас нет под рукой платы LinkIt ONE, следуйте до шага 5, чтобы построить простое препятствие, избегающее робота с помощью Arduino Uno
Подробнее о том, как собрать роботизированное шасси ActoBitty 2, смотрите видео на YouTube ниже по серво-городу.
Шаг 2: Соединение цепи
После сборки робототехнического шасси ActoBitty 2 прикрепите мини-макет в передней части платы, как показано на первом рисунке выше.
Загрузите в батарейный отсек 4 батарейки типа АА и добавьте его сзади, как показано на рисунке выше.
Теперь завершите соединение между LinkIt ONE и платой драйвера мотора на макете
Для управления левым мотором грузовика
- ШИМ к выводу 3 — это вывод ШИМ для управления скоростью двигателя
- AIN1 для контакта 7
- От AIN2 к выводу 8 — оба эти вывода определяют направление вращения задних колес.
Для управления правильным двигателем, который обеспечивает направление на грузовик
- ШИМ на вывод 9 — это второй вывод ШИМ, доступный на LinkIt ONE
- BIN1 для вывода 5
- BIN2 для вывода 6
Завершите другую сторону соединений привода двигателя, к левой и правой клеммам двигателей.
- A01 к одному выводу левого мотора
- A02 на другой терминал
- B01 к одной клемме правого мотора
- B02 на другой терминал
- Подключите VCC на драйвере двигателя к 5 В на LinkIt ONE
- и ВМ на драйвере мотора до + ве держателя батареи
- GND, которое к GND батареи обратно, а затем к GND LinkIt ONE (это также называется общим заземлением)
Шаг 3: Загрузка кода в Arduino — Запуск базового теста
Теперь, когда вы подключили схему, пришло время загрузить прилагаемый код и загрузить его, используя последнюю версию Arduino IDE.
Чтобы настроить Arduino IDE для регистра LinkIt ONE, сначала создайте учетную запись на веб-сайте MediaTek Labs
А затем перейдите по ссылке ниже, чтобы загрузить последнюю версию драйвера и программного обеспечения LinkOne Board.
После того, как вы успешно завершили настройку, вы должны увидеть опцию выбора платы как LinkIt ONE, как показано на рисунке выше.
Загрузите пример эскиза мерцания, который поставляется с IDE Arduino, и посмотрите, мигает ли светодиод на плате LinkIt, это означает, что вы успешно завершили настройку Arduino IDE.
Теперь откройте загруженный файл и загрузите его на LinkIt, выбрав порт, к которому вы подключены, как показано на рисунке выше.
При этом вам, возможно, придется поменять местами соединения A01 и A02, если ваш левый двигатель движется в направлении, противоположном правому двигателю.
Подключите аккумулятор и поместите робота на ровную поверхность, и вы должны увидеть, как робот двигается, как показано на видео ниже
Шаг 4: Добавление ультразвукового датчика, чтобы робот избегал препятствий
Теперь, когда вы получили базовое движение вниз, вы готовы сделать робота автономным с помощью ультразвукового датчика.
Подключите HC-SR04 к макету и выполните следующее соединение
- Подсоедините контакт Echo на ультразвуковом датчике к контакту № 2 на LinkIt One
- затем подключите контакт Trig к контакту № 4 на ультразвуковом датчике
- подключите контакт GND к общему заземлению на макетной плате
- подключите VCC к 5 В LinkIt One
Шаг 5: Загрузка кода Arduino — Тестирование автономного робота
Загрузите прилагаемый код и загрузите его в LinkIt, используя Arduino IDE
При размещении робота на платформе, которая в моем случае представляет собой пену, поставляемую с пакетом LinkIt ONE, измените порт на порт отладки. Отладка — это другой порт, который отображается в разделе «Инструменты> Порты», а затем нажмите на последовательный монитор справа от Arduino IDE.
В качестве части кода мы установили порог обнаружения препятствий равным 10 см, чтобы проверить, останавливается ли ваш робот и двигается ли он влево, держите ли вы руку или объект впереди, и на серийном мониторе вы должны увидеть обнаруженное препятствие, как показано на рисунке выше., На этом этапе вы можете увеличить или уменьшить порог обнаружения препятствия в коде на 10 см.
Теперь закомментируйте строку Serial.begin в коде и загрузите свой код в LinkIt One и подключите аккумулятор Lipo, как показано на рисунке выше.
Шаг 6: Добавление WiFi-антенны в LinkIt ONE
Теперь для управления роботом через WiFi нам нужно подключить антенну WiFi к LinkIt ONE.
Отсоедините LinkIt, чтобы подключить антенну WiFi к среднему разъему антенны, как показано на рисунке выше.
Антенна WiFi является частью пакета Link It ONE.
Шаг 7: Загрузите код и измените имя и пароль Wifi-маршрутизатора
Загрузите прилагаемый код Arduino и измените следующий код, как показано на рисунке выше.
- Значение WIFI_AP, которое является вашим именем маршрутизатора Wi-Fi
- Значение WIFI _PASSWORD, которое является паролем для маршрутизатора WiFi.
Второй прикрепленный файл — это CSS-файл, связанный как часть кода Arduino. Этот файл используется для кнопок контроллера веб-приложения, которые дают им зеленый цвет и делают их достаточно большими, чтобы их было легко нажимать.
Я временно разместил css на rawgit.com по моей ссылке на github.
Шаг 8: Загрузка кода контроллера Wi-Fi
Теперь, используя Arduino IDE, загрузите код, прикрепленный к плате LinkIt ONE.
В Serial Monitor измените вашу скорость передачи на значение в Serial.begin в разделе setup () кода, которое в данном случае равно 115200.
Используя веб-браузер на вашем телефоне / планшете или ноутбуке, откройте веб-сервер, используя IP-адрес, назначенный вашему LinkIt ONE, который вы должны увидеть на своем последовательном мониторе, который в моем случае равен http://192.168.0.16, как показано на рисунке. последовательного монитора выше.
Если вы удовлетворены движением, прокомментируйте строку Serial.begin и загрузите код.
Подключите аккумулятор Lipo для включения робота.
Поздравляю! все готово, если вы можете управлять роботом с помощью веб-приложения, как показано на видео ниже.
Собираем Wi-Fi робота
Давно мечтал сделать Wi-Fi робота, которым можно было бы управлять удаленно. И вот наконец настал тот день когда я смог управлять роботом через интернет, видеть и слышать все что происходит вокруг него.
Заинтересовавшихся приглашаю под кат
Для создания робота использовались следующие комплектующие:
Вот так выглядит собранный мной робот, без верхней крышки.
Теперь все по порядку:
Расположение компонентов на материнской плате. Я установил только Arduino Nano, драйвер двигателей и звуковой излучатель HC:
Роутер 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
В дальнейшем планирую научить робота ориентироваться в пространстве и рисовать карту помещения.