Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Робототехника

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.09.2013, 20:52   #1
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Wi-Fi робот

Продолжение статьи "Как сделать робота"
Все детали для робота были приобретены здесь
Давно хотел сделать Wi-Fi робота
Наконец то сегодня модифицировал свой роутер wr703N
Прикрепил его с низу к платформе робота
Нажмите на изображение для увеличения
Название: wifibot.jpg
Просмотров: 8341
Размер:	224.2 Кб
ID:	1155

Установил web Камеру
Нажмите на изображение для увеличения
Название: wifibot1.jpg
Просмотров: 961
Размер:	219.8 Кб
ID:	1156

Нажмите на изображение для увеличения
Название: wifibot3.jpg
Просмотров: 21155
Размер:	245.5 Кб
ID:	1158

К прошивке CyberWrt написал модуль управления роботом
Для работы модуля нужно установить модуль "Драйвер Видео" и модуль "Драйвер FTDI"
Результаты можете увидеть на фото
К сожалению снять видео и управлять одновременно с планшета, у меня не получилось. Так что пока только фотографии
Нажмите на изображение для увеличения
Название: wifibot2.jpg
Просмотров: 24737
Размер:	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=0i<12i++) beep(70random(1002000)); //звуковое оповещение готовности робота    
  
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<58speed=(inByte-47)*25+5;//принимает команду и преобразуем в скорость 
  
}   
 
wdt_reset(); //покормить собаку   
}  

void robot_go() 

  
D4_Low
  
analogWrite(5speed);  
  
analogWrite(6speed); 
  
D7_Low


void robot_back() 

   
D4_High;  
   
analogWrite(5255-speed);  
   
analogWrite(6255-speed); 
   
D7_High


void robot_stop() 

  
D4_Low;  
  
analogWrite(50);  
  
analogWrite(60); 
  
D7_Low;   


void robot_rotation_left() 

  
D4_Low
  
analogWrite(5speed);  
  
analogWrite(6255-speed);  
  
D7_High


void robot_rotation_right() 

  
D4_High;  
  
analogWrite(5255-speed);  
  
analogWrite(6speed);  
  
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
Как появится время буду оптимизировать
Admin вне форума   Ответить с цитированием
Старый 14.09.2013, 00:20   #2
Alex98
Junior Member
 
Регистрация: 03.07.2013
Адрес: Санкт-Петербург
Возраст: 28
Сообщений: 14
Вес репутации: 0
Alex98 is an unknown quantity at this point
По умолчанию

Отлично, хорошая идея, всяко лучше BT.
Alex98 вне форума   Ответить с цитированием
Старый 14.09.2013, 00:40   #3
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Осталось к нему беспроводную зарядку прицепить и автопоиск базы
Admin вне форума   Ответить с цитированием
Старый 28.12.2013, 12:48   #4
soviet
Member
 
Регистрация: 17.12.2013
Сообщений: 68
Вес репутации: 0
soviet is an unknown quantity at this point
По умолчанию Re: Wi-Fi робот

Скетч вы заливали через через ардуино программу?
soviet вне форума   Ответить с цитированием
Старый 28.12.2013, 12:53   #5
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Wi-Fi робот

Да.
Admin вне форума   Ответить с цитированием
Старый 28.12.2013, 13:01   #6
soviet
Member
 
Регистрация: 17.12.2013
Сообщений: 68
Вес репутации: 0
soviet is an unknown quantity at this point
По умолчанию Re: Wi-Fi робот

При проверке на ошибки выдает:

Цитата:
sketch_dec28a.ino: In function 'void setup()':
sketch_dec28a:13: error: 'D4_Out' was not declared in this scope
sketch_dec28a:13: error: 'D5_Out' was not declared in this scope
sketch_dec28a:13: error: 'D6_Out' was not declared in this scope
sketch_dec28a:13: error: 'D7_Out' was not declared in this scope
sketch_dec28a:14: error: 'D11_Out' was not declared in this scope
sketch_dec28a:14: error: 'D11_Low' was not declared in this scope
sketch_dec28a:15: error: 'A6_Read' was not declared in this scope
sketch_dec28a:16: error: 'beep' was not declared in this scope
sketch_dec28a:17: error: 'UART_Init' was not declared in this scope
sketch_dec28a:18: error: 'WDTO_500MS' was not declared in this scope
sketch_dec28a:18: error: 'wdt_enable' was not declared in this scope
sketch_dec28a.ino: In function 'void loop()':
sketch_dec28a:23: error: 'UART_ReadByte' was not declared in this scope
sketch_dec28a:28: error: 'D4_Low' was not declared in this scope
sketch_dec28a:28: error: 'D5_Low' was not declared in this scope
sketch_dec28a:28: error: 'D6_Low' was not declared in this scope
sketch_dec28a:28: error: 'D7_Low' was not declared in this scope
sketch_dec28a:32: error: 'D4_Low' was not declared in this scope
sketch_dec28a:32: error: 'D5_High' was not declared in this scope
sketch_dec28a:32: error: 'D6_High' was not declared in this scope
sketch_dec28a:32: error: 'D7_Low' was not declared in this scope
sketch_dec28a:36: error: 'D4_Low' was not declared in this scope
sketch_dec28a:36: error: 'D5_High' was not declared in this scope
sketch_dec28a:36: error: 'D6_Low' was not declared in this scope
sketch_dec28a:36: error: 'D7_High' was not declared in this scope
sketch_dec28a:40: error: 'D4_High' was not declared in this scope
sketch_dec28a:40: error: 'D5_Low' was not declared in this scope
sketch_dec28a:40: error: 'D6_High' was not declared in this scope
sketch_dec28a:40: error: 'D7_Low' was not declared in this scope
sketch_dec28a:44: error: 'D4_High' was not declared in this scope
sketch_dec28a:44: error: 'D5_Low' was not declared in this scope
sketch_dec28a:44: error: 'D6_Low' was not declared in this scope
sketch_dec28a:44: error: 'D7_High' was not declared in this scope
sketch_dec28a:48: error: 'wdt_reset' was not declared in this scope
soviet вне форума   Ответить с цитированием
Старый 28.12.2013, 13:02   #7
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Wi-Fi робот

библиотеку CyberLib скачайте
Admin вне форума   Ответить с цитированием
Старый 28.12.2013, 17:13   #8
soviet
Member
 
Регистрация: 17.12.2013
Сообщений: 68
Вес репутации: 0
soviet is an unknown quantity at this point
По умолчанию Re: Wi-Fi робот

Все сделал:
скетч залил, роутер прошил, камера работает.
Подключил L298N к пинам меги:
IN1 - D4
IN2 - D5
IN3 - D6
IN4 - D7
На команды не реагирует, подскажите в чем проблема.
soviet вне форума   Ответить с цитированием
Старый 28.12.2013, 17:18   #9
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Wi-Fi робот

А контроллер какой?
Библиотека написана для контроллера Atmega-328
Admin вне форума   Ответить с цитированием
Старый 28.12.2013, 17:22   #10
soviet
Member
 
Регистрация: 17.12.2013
Сообщений: 68
Вес репутации: 0
soviet is an unknown quantity at this point
По умолчанию Re: Wi-Fi робот

ATmega2560

Если на Uno (Там вроде микроконтролер Atmega-328) заменить, то все заработает?

Последний раз редактировалось soviet; 28.12.2013 в 17:27.
soviet вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 16 (пользователей: 0 , гостей: 16)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:06. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика