05.06.2015, 21:24 | #1 |
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 |
AirBot Zefir
Всем привет!
Я новичёк в робототехнике, но у меня есть желание, сделать воздушного робота на основе роутера TL-WR703N и прошивки CyberWtr. За основу взять летательный аппарат Зефир: https://youtu.be/1DIjHMABM7g Процесс сборки: https://youtu.be/K4EO5_E8euQ Компоненты электроники (то что есть в наличии): 1. KV2200 двигатель + XXD 30A ESC 2. Ardunio NANO CH340 3. Серво SG90 - 2 шт. 4. Usb Hub. 5. Роутер WT3020 6. Webcam Logitech QuickCam E3500 Щас пытаюсь разобраться с управлением сервомоторов. Скетч: Код:
#include <CyberLib.h> #include <Servo.h> Servo leftservo; Servo rightservo; long previousMillis; uint8_t LedStep = 0; // Счетчик int i; boolean light_stat; uint8_t inByte; #define init {D4_Out; D5_Out; D6_Out; D7_Out; D8_Out; D11_Out; D12_Out;} void setup() { leftservo.attach(9); // Подключение сервоприводов к порту rightservo.attach(10); // Подключение сервоприводов к порту init; // Инициализация портов D11_Low; // Динамик OFF randomSeed(A6_Read); //Получить случайное значение horn(); //звуковое оповещение готовности робота UART_Init(57600);// Инициализация порта для связи с роутером leftservo.write(90); // Повернуть левый серво на 0 градусов rightservo.write(90); // Повернуть правый серво на 0 градусов } void loop() { if (UART_ReadByte(inByte)) //Если что то пришло { switch (inByte) // Смотрим какая команда пришла { case 'x': // Газ gas(); break; case 'W': // Движение вниз bottom(); break; case 'D': // Поворотjт влево robot_rotation_left(); break; case 'A': // Поворот вправо robot_rotation_right(); break; case 'S': // Движение назад top(); break; case 'U': // Камера поднимается вверх break; case 'J': // Камера опускается вниз break; case 'H': // Камера поворачивается вправо break; case 'K': // Камера поворачивается влево 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; } } } void horn() { for(uint8_t i=0; i<12; i++) beep(70, random(100, 2000)); //звуковое оповещение } void bottom() { leftservo.write(45); // Повернуть левый серво влево на 45 градусов rightservo.write(45); // Повернуть правый серво влево на 45 градусов delay(150); leftservo.write(90); // Повернуть левый серво влево на 45 градусов rightservo.write(90); // Повернуть правый серво влево на 45 градусов } void gas() { leftservo.write(45); // Повернуть левый серво влево на 45 градусов rightservo.write(45); // Повернуть правый серво влево на 45 градусов } void top() { leftservo.write(135); // Повернуть левый серво влево на 45 градусов rightservo.write(135); // Повернуть правый серво влево на 45 градусов delay(150); leftservo.write(90); // Повернуть левый серво влево на 45 градусов rightservo.write(90); // Повернуть правый серво влево на 45 градусов } void robot_rotation_left() { leftservo.write(45); // Повернуть левый серво влево на 45 градусов rightservo.write(135); // Повернуть правый серво влево на 45 градусов delay(150); leftservo.write(90); // Повернуть левый серво влево на 45 градусов rightservo.write(90); // Повернуть правый серво влево на 45 градусов } void robot_rotation_right() { leftservo.write(135); // Повернуть левый серво влево на 45 градусов rightservo.write(45); // Повернуть правый серво влево на 45 градусов delay(150); leftservo.write(90); // Повернуть левый серво влево на 45 градусов rightservo.write(90); // Повернуть правый серво влево на 45 градусов } http://www.poprobot.ru/home/zapuskbe...rnogodvigatela Если со всем этим разберусь, то сборка Зефирки и монтажа электроники много времени не займет. Последний раз редактировалось Goblin; 06.06.2015 в 07:20. |
05.06.2015, 21:34 | #2 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: AirBot Zefir
Радиус действия WiFi слабоват для такого аппарата
Еще будет задержка при передачи команд, видео будет смазанным, так как динамика картинки достаточно высокая |
05.06.2015, 21:42 | #3 |
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 |
Re: AirBot Zefir
Направленная антена решает эту проблему дальности полета. К примеру с такой антеной http://russian.signalantennas.com/se...00v-89803.html можно увеличить дальность до нескольких км. А вот задержка команд это печально... Можно с этим что-то придумать? Задержка видео не настолько критична.
|
05.06.2015, 22:40 | #4 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: AirBot Zefir
Можно попробовать слать команды по telnet или netcat
задержки будут минимальными |
06.06.2015, 05:58 | #5 |
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 |
Re: AirBot Zefir
|
06.06.2015, 07:23 | #6 |
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 |
Re: AirBot Zefir
Админ подскажи пож-та, в моем скетче не правильно работают сервы, при подачи команды они почему то крутятся только в 1-ну сторону до 90 градусов.
А вот в этом примере все норм работает: Код:
/* Arduino Servo */ #include "Servo.h" Servo servoMain; // Объект Servo Servo servoMain1; // Объект Servo void setup() { servoMain.attach(10); // Servo присоединен к 10 выводу servoMain1.attach(9); // Servo присоединен к 10 выводу } void loop() { servoMain.write(90); // Центровать серво servoMain1.write(90); // Центровать серво delay(150); // Пауза 0,15 сек. servoMain.write(45); // Повернуть серво влево на 45 градусов servoMain1.write(135); // Повернуть серво вправо на 45 градусов delay(150); // Пауза 0,15 сек. servoMain.write(135); // Повернуть серво вправо на 45 градусов servoMain1.write(45); // Повернуть серво влево на 45 градусов delay(150); //Пауза 0,15 сек. servoMain.write(90); // Центровать серво servoMain1.write(90); //Центровать серво delay(150); // Пауза 0,15 сек. } Последний раз редактировалось Goblin; 06.06.2015 в 07:55. |
06.06.2015, 11:01 | #7 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: AirBot Zefir
Не понимаю, зачем поварачивать сервы через каждые 150мс
Они не успеют повернуться как придет следующая команда Весь этот код можно смело упростить на две строчки, которые я привел ниже, от delay лучше отказаться так как они будут торможить систему оправлением PHP код:
PHP код:
|
06.06.2015, 17:25 | #8 | |
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 |
Re: AirBot Zefir
Цитата:
PHP код:
Щас попробую 2-ой вариант управления сервами. |
|
06.06.2015, 17:31 | #9 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: AirBot Zefir
Ну так для чего опять теже не нужные две строчки?
Цитата:
|
|
07.06.2015, 12:50 | #10 |
Junior Member
Регистрация: 05.06.2015
Сообщений: 27
Вес репутации: 0 |
Re: AirBot Zefir
PHP код:
PHP код:
Последний раз редактировалось Goblin; 07.06.2015 в 13:04. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|