Wi-Fi робот

Давно мечтал сделать Wi-Fi робота, которым можно было бы управлять через интернет. И вот наконец то сегодня, я смог управлять роботом через интернет, видеть и слышать все что происходит вокруг него.
Для создания робота использовались следующие комплектующие:
Набор для сборки платформы робота
Плата контроллера робота
Arduino Nano v.7
Драйвер двигателей
Маршрутизатор Nexx WT3020H
Миниатюрный USB 2.0 Hub
Вот так выглядит собранный мной робот, без верхней крышки. Так как эксперименты продолжаются,
то мне лень было устанавливать крышку на него, а потом опять ее снимать

Теперь все по порядку
Роутер прошил прошивкой CyberWrt.
Роутер wr703N прикрепил к нижней части платформы робота на двухсторонний скотч

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

Код программы робота получился достаточно простым, но его достаточно для того что бы удаленно управлять роботом через локальную сеть или интернет
Код адаптирован под контроллер Arduino Nano V.7 и использует библиотеку CyberLib
Эта библиотека помогает из контроллера выжать максимум его возможностей и уменьшить объем конечного кода
В коде используется WDT, для того что бы робот не смог зависнуть.
#include <CyberLib.h>
#define motors_init {D4_Out; D5_Out; D6_Out; D7_Out;}
#define robot_go {D4_Low; D5_High; D6_High; D7_Low;}
#define robot_back {D4_High; D5_Low; D6_Low; D7_High;}
#define robot_stop {D4_Low; D5_Low; D6_Low; D7_Low;}
#define robot_rotation_left {D4_Low; D5_High; D6_Low; D7_High;}
#define robot_rotation_right {D4_High; D5_Low; D6_High; D7_Low;}
uint8_t inByte;
void setup()
{
motors_init; //инициализация выходов моторов
D11_Out; D11_Low; //динамик
randomSeed(A6_Read); //Получить случайное значение
for(uint8_t i=0; i<12; i++) beep(70, random(100, 2000)); //звуковое оповещение готовности робота
UART_Init(57600);//инициализация порта для связи с роутером
wdt_enable (WDTO_500MS); // 0,5сек.
}
void loop()
{
if (UART_ReadByte(inByte)) //если что то пришло
{
switch (inByte) //смотрим какая команда пришла
{
case 'x': robot_stop; //стор
break;
case 'W': robot_go; //вперед
break;
case 'D': robot_rotation_left; //лево
break;
case 'A': robot_rotation_right; //право
break;
case 'S': //назад
robot_back;
break;
}
}
wdt_reset();
}
- +2
-
CyberLab
- Поделиться
Комментарии (16)
Но у меня в ближайших планах сделать автоматический поиск зарядной базы, в которой будет встроено беспроводное зарядное устройство
Подъехал к розетке — втыкнулся и заряжаешься ;)
Для того что бы их не убить нужно заряжать 10% от емкости