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
  • avatar
  • Поделиться

Комментарии (16)

0
Прикольно! Нужно на дачу такой — смотреть что там происходит. А на сколько батареек хватает?
0
Время жизни робота зависит от емкости Ваших батареек.
Но у меня в ближайших планах сделать автоматический поиск зарядной базы, в которой будет встроено беспроводное зарядное устройство
0
Ну, там аккумуляторы, судя по фото. Ну, можно и зарядку же организовать.
Подъехал к розетке — втыкнулся и заряжаешься ;)
0
Мне кажется что батарейки какие на фото можно заменить на три или четыре AA NiMh акамулятора и получить примерно 2500mAh, стоят дёшево и не боятся перезаряда. заряжать робота пороше всего будет организовать подключив аккумулятор напрямую к блоку питания у которого напряжение может обеспечивать ток равный потреблению вашего робота для неспешной зарядки аккумулятора.
0
На фото аккумуляторы NiMh 2300мА
Для того что бы их не убить нужно заряжать 10% от емкости
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.