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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.06.2015, 09:09   #11
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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: AirBot Zefir

Сейчас проверил скорость отклика на "CyberBot-3"
Если управлять по локальной сети и связь устойчивая, то отклик мгновенный и задержки не наблюдалось, задержка есть если управлять через интернет
Так что возможно получится и самолетом управлять.
Мне теперь и самому интересно, какой радиус действия Вы сможете обеспечить.
Вы будете использовать усилитель WiFi на наземной точке доступа?
Admin вне форума   Ответить с цитированием
Старый 25.06.2015, 19:11   #12
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: AirBot Zefir

Я застрял на этапе управления сервомоторами, они ни в какую не хотят работать. Даже на стандартном скетче. При нажатии на кнопки с клавиатуры на ардунио мигают лампочки RX и L, значит сигнал с роутера на него доходит, но почему сервы при этом никак не реагируют не пойму.

Может ли быть причина в том, что кроме сервомоторов больше ничего не подключено? Сервы подключены на выходы D9 D10.
И ардунио использован китайский на CH430G.

Стандартный код использовался этот:
PHP код:
#include <CyberLib.h> 
#include <Servo.h> 

Servo myservo1
Servo myservo2

long previousMillis;
uint8_t LedStep 0// Счетчик
int i
boolean light_stat;
uint8_t inByte
uint8_t speed=255//максимальная скорость по умолчанию

#define init {D4_Out; D5_Out; D6_Out; D7_Out; D8_Out; D11_Out; D12_Out;}  

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 == && currentMillis previousMillis 500){ // Задержка 0,5 сек.  
      
previousMillis currentMillis;
      
LedStep 1
    } 

    if (
LedStep == && currentMillis previousMillis 500){ // Задержка 0,5 сек. 
      
previousMillis currentMillis
      
LedStep 2;
    } 

    if (
LedStep == && 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(-= 20);   
        break;  
         
        case 
'J'// Камера опускается вниз 
          
myservo1.write(+= 20); 
        break;  
         
        case 
'H'// Камера поворачивается  вправо
         
myservo2.write(+= 20);  
        break;  
         
        case 
'K'// Камера поворачивается влево      
         
myservo2.write(-= 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<58speed=(inByte-47)*25+5;  //принимаем команду и преобразуем в скорость         
  
}  
 
wdt_reset(); 


void horn()
{
  for(
uint8_t i=0i<12i++) beep(70random(1002000));  //звуковое оповещение 
}

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


Последний раз редактировалось Goblin; 25.06.2015 в 19:17.
Goblin вне форума   Ответить с цитированием
Старый 25.06.2015, 21:02   #13
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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: AirBot Zefir

У CyberBot-3 совершенно другой скетч и сервомоторы подключены на D12 и D13
Admin вне форума   Ответить с цитированием
Старый 26.06.2015, 20:55   #14
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: AirBot Zefir

У меня в прошивке на роутере CyberBot-2 стоит. Щас попробую CyberBot-3 использовать.
Goblin вне форума   Ответить с цитированием
Старый 26.06.2015, 20:56   #15
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
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: AirBot Zefir

Прошивку не нужно обновлять , а модуль переустаномите
Admin вне форума   Ответить с цитированием
Старый 26.06.2015, 21:29   #16
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: AirBot Zefir

Только что проверил, результат тот же, кстати забыл сказать при подключенной пищалке она через каждые 2 секунды подает сигнал, как при включении, такое ощущение что ардунио постоянно перезагружается.
Goblin вне форума   Ответить с цитированием
Старый 26.06.2015, 21:30   #17
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: AirBot Zefir

Могу видео снять скинуть, чтоб нагляднее было. Или и так понятно что это может быть?
Goblin вне форума   Ответить с цитированием
Старый 26.06.2015, 21:31   #18
Wagan
Senior Member
 
Регистрация: 02.06.2015
Адрес: Москва
Сообщений: 168
Вес репутации: 0
Wagan is an unknown quantity at this point
Отправить сообщение для Wagan с помощью Skype™
По умолчанию Re: AirBot Zefir

Цитата:
Сообщение от Goblin Посмотреть сообщение
Только что проверил, результат тот же, кстати забыл сказать при подключенной пищалке она через каждые 2 секунды подает сигнал, как при включении, такое ощущение что ардунио постоянно перезагружается.
А wdt у Вас отключен?
Wagan вне форума   Ответить с цитированием
Старый 26.06.2015, 21:43   #19
Goblin
Junior Member
 
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0
Goblin is an unknown quantity at this point
По умолчанию Re: AirBot Zefir

Да пробовал его включать и отключать на предыдущих скетчах. Думаю юсб шнур поменять, хотя подключал проверенный.

На данный момент скетч от кибербота3, wdt тут закоментирован.
PHP код:
#include <CyberLib.h>
#include <Servo.h>

Servo myservo1;  
Servo myservo2
#define step_servo 10 //минимальный угол поворота ссервы за один клик
uint8_t min_pos=10max_pos=170//минимальное и максимаьное положение сервы
int i=130i2=90;  //начальное положение сервы
  
boolean light_stat//состояние фар
uint8_t inBytepackid;  
uint8_t speed=255//максимальная скорость моторов по умолчанию 

#define init {D4_Out; D5_Out; D6_Out; D7_Out; D9_Out; D10_Out; D11_Out;}   //используемые порты

void setup()    
{   
  
myservo1.attach(12); // Подключение сервоприводов к порту
  
myservo2.attach(13); // Подключение сервоприводов к порту
  
myservo2.write(i2); // начальное положение сервы(горизот) при включении
  
myservo1.write(i); // начальное положение сервы(вертикаль) при включении
  
init;  // Инициализация портов  
  
D11_Low// Динамик OFF 
  
randomSeed(A5_Read); //Получить случайное значение    
  
horn(); //звуковое оповещение готовности робота   
  
UART_Init(57600); // Инициализация порта для связи с роутером    
  //wdt_enable (WDTO_500MS); 
}    

void loop()    
{   
 if (
UART_ReadByte(inByte)) 
 { 
 if ( 
packid == 16 
  {  
    
packid=0;
    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;   
        
        case 
'U'// Серва поднимается  
          
if(min_posmyservo1.write(-= step_servo);    
        break;
        
        case 
'J'// Серва опускается  
          
if(max_posmyservo1.write(+= step_servo);  
        break;  
          
        case 
'K'// Серва поворачивается вправо      
         
if(i2 min_posmyservo2.write(i2 -= step_servo);  
        break;     
          
        case 
'H'// Серва поворачивается влево  
         
if(i2 max_posmyservo2.write(i2 += step_servo);   
        break;   
  
        case 
'B'//  Бластер  
          
D10_High;  
        break;  
         
        case 
'C'// Клаксон  
         
horn();  
        break;  
        
        case 
']'// запрос состояния аналоговых датчиков  
            
byte2char(A6_Read,A7_Read);
        break;         
          
        case 
'V'// Включить/Выключить фары  
        
if(light_stat
        { 
         
D9_Low
         
light_stat=false
        } else  
              { 
               
D9_High
               
light_stat=true
              } 
        break;  
    } 
    if(
inByte>47 && inByte<58speed=(inByte-47)*17+85//скорость вращения колес
     
  
} else packet_id(inByte);  
 }    
// wdt_reset();  
}  

//****************************************************
void horn() 

  for(
uint8_t i=0i<12i++) beep(70random(1002000)); //звуковое оповещение  


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;   
  
D10_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;  
}  

void packet_id(uint8_t inbyte)  //проверяем идентификатор пакета "cm="
{     
    switch (
inbyte)  
    {
       case 
'c':   
          
packid=2;  
        break;
        
       case 
'm':   
          
packid*=2;  
          
//packid=packid<<1;
        
break; 
        
       case 
'=':   
           
packid*=4
           
//packid=packid<<2;
        
break;   
        
        default:
           
packid=0;  
    }
}  

void byte2char(uint16_t inbyte0uint16_t inbyte1)  

  
char bytetochar[5];
  
uint8_t buf_answer[]="{\"dat1\":\"0000\",\"dat2\":\"0000\"}"
  
  
itoa(inbyte0+10000bytetochar10);  
  
buf_answer[9]= bytetochar[1]; buf_answer[10]= bytetochar[2]; buf_answer[11]= bytetochar[3]; buf_answer[12]= bytetochar[4]; 

  
itoa(inbyte1+10000bytetochar10); 
  
buf_answer[23]= bytetochar[1]; buf_answer[24]= bytetochar[2]; buf_answer[25]= bytetochar[3]; buf_answer[26]= bytetochar[4];

  
UART_SendArray(buf_answersizeof(buf_answer)-1); 
}


Goblin вне форума   Ответить с цитированием
Старый 26.06.2015, 21:47   #20
Wagan
Senior Member
 
Регистрация: 02.06.2015
Адрес: Москва
Сообщений: 168
Вес репутации: 0
Wagan is an unknown quantity at this point
Отправить сообщение для Wagan с помощью Skype™
По умолчанию Re: AirBot Zefir

Тогда ищите неконтакт, так как скетч проверенный и программных глюков с перезапуском в нем нет.
Upd
А источник питания у Вас какой максимальный ток может выдать? Может и здесь быть проблема: при попытке запустить серву он перегружается по току.

Последний раз редактировалось Wagan; 26.06.2015 в 21:49.
Wagan вне форума   Ответить с цитированием
Ответ


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

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

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

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


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


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