Arduino робот своими руками c пультом wi-fi


Arduino робот своими руками c пультом wi-fi

Arduino робот своими руками c пультом wi-fi

Продолжение статьи "Как сделать робота"
Все детали для робота были приобретены здесь
Давно хотел сделать Wi-Fi робота
Наконец то сегодня модифицировал свой роутер wr703N
Прикрепил его с низу к платформе робота
Нажмите на изображение для увеличения Название: wifibot.jpg Просмотров: 7126 Размер: 224.2 Кб ID: 1155
Установил web Камеру
Нажмите на изображение для увеличения Название: wifibot1.jpg Просмотров: 715 Размер: 219.8 Кб ID: 1156
Нажмите на изображение для увеличения Название: wifibot3.jpg Просмотров: 14289 Размер: 245.5 Кб ID: 1158
К прошивке CyberWrt написал модуль управления роботом
Для работы модуля нужно установить модуль "Драйвер Видео" и модуль "Драйвер FTDI"
Результаты можете увидеть на фото
К сожалению снять видео и управлять одновременно с планшета, у меня не получилось. Так что пока только фотографии
Нажмите на изображение для увеличения Название: wifibot2.jpg Просмотров: 20405 Размер: 221.9 Кб ID: 1159
Для скетча wifi робота для Arduino Nano и UNO, требуется библиотека CyberLib

PHP код:

#include <CyberLib.h>  

#define motors_init {D4_Out; D5_Out; D6_Out; D7_Out;}   
uint8_t inByte;//буфер для принятой комманды 
uint8_t speed=255;//максимальная скорость по умолчанию 

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;     
        
    }           
   if(inByte>47 && inByte<58) speed=(inByte-47)25+5;//принимает команду и преобразуем в скорость 
  }   
 wdt_reset(); //покормить собаку   
}  

void 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() 

  D4_High;  
  analogWrite(5, 255-speed);  
  analogWrite(6, speed);  
  D7_Low; 


Скетч для Arduino Mega

PHP код:

#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(analogRead(6)); //Получить случайное значение  
  Serial.begin(57600);//инициализация порта для связи с роутером  
  wdt_enable (WDTO_500MS);    //Сторожевая собака 0,5сек.   
}  

void loop()  
{  
  if (Serial.available()) //если что то пришло
  {  
    inByte = Serial.read();
    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(); //покормить собаку 


Скетч для работы с 4-мя моторами и Arduino MotorShield driver

PHP код:

#include <AFMotor.h> // Подключаем библиотеку для управления двигателями 

AF_DCMotor motor1(1); //создаем мотор №1 
AF_DCMotor motor2(2); //создаем мотор №2 
AF_DCMotor motor3(3); //создаем мотор №1 
AF_DCMotor motor4(4); //создаем мотор №2 

int inByte; //в этой переменной храним поступившие данные

void setup() 
{
  Serial.begin(57600); //включаем передачу данных на скорости 9600 бит/c
  motor1.setSpeed(255); //Скорость движка №1
  motor2.setSpeed(255); //Скорость движка №2
  motor3.setSpeed(255); //Скорость движка №1
  motor4.setSpeed(255); //Скорость движка №2
}

void loop()  
{  
  if (Serial.available()) //если что то пришло
  {  
    inByte = Serial.read(); 
    switch (inByte)  //смотрим какая команда пришла
    {  
        case 'x':  //стор
          robot_stop();
        break; 
        
        case 'W':  //вперед
          robot_go();  
        break;  
        
        case 'D':  //лево
          robot_left(); 
        break;

        case 'A': //право
          robot_right(); 
        break; 
        
        case 'S':  //назад
          robot_back(); 
        break;      
    }          
  } 

void robot_go()
      {
       motor1.run(FORWARD); //движемся вперед
       motor2.run(FORWARD); //движемся вперед
       motor3.run(FORWARD); //движемся вперед
       motor4.run(FORWARD); //движемся вперед
     }

void robot_back()
     {
       motor1.run(BACKWARD); //движемся назад
       motor2.run(BACKWARD); //движемся назад
       motor3.run(BACKWARD); //движемся назад
       motor4.run(BACKWARD); //движемся назад
     }

void robot_left()
     {
       motor2.run(FORWARD); //Повернем влево
       motor3.run(FORWARD); //Повернем влево 
     }

void robot_right()
     {
       motor1.run(FORWARD); //Повернем вправо
       motor4.run(FORWARD); //Повернем вправо    
     }

void robot_stop()
{
       motor1.run(RELEASE); //Останавливаем колеса
       motor2.run(RELEASE); //Останавливаем колеса
       motor3.run(RELEASE); //Останавливаем колеса
       motor4.run(RELEASE); //Останавливаем колеса

Управление осуществляется из любого браузера, на любых платформах. Нажимаем кнопку робот движется, отпускаем он останавливается
На PC кроме экранных кнопок можно управлять еще с клавиатуры, клавишами W, A , D, S, X
Пробовал управлять роботом удаленно из другого района города, есть небольшая задержка, но я так подозреваю что это из -за высокого разрешения камеры(большой трафик), потому что я выбрал разрешение 960х720
Как появится время буду оптимизировать
X
Arduino робот своими руками c пультом wi-fi Arduino робот своими руками c пультом wi-fi Arduino робот своими руками c пультом wi-fi Arduino робот своими руками c пультом wi-fi Arduino робот своими руками c пультом wi-fi Arduino робот своими руками c пультом wi-fi