В этой статье информация о том как собрать свой танк, оснащенный Web Камерой и управляемый посредством Wifi роутера.
Необходимые материалы:
- Web Camera
- Роутер TP-Link TL-MR3020
- Сервоприводы SG90 - 2шт
- Camera Platform Anti-Vibration
- Аккумулятор 7.2V 5000mah
- Аккумулятор 5V 2000mah
- Nano 3.0 Atmel ATmega328
- L298N motor driver
- Провода, термотрубки, USB хаб, диоды и другое.
- Платформа на ваш вкус, я выбрал DD1-1
Сборка нашего монстра
Настройка Роутера MR3020.
Первым делом начнем с роутера. Я долго думал что выбрать OR-WRT или CyberWRT. OR-WRT гибок в настройках, но все редактирование и внесения своих настроек осуществляется через терминал с помощи программы Putty. А так как Я боялся на тот момет работать через терминал, Я выбрал где есть графический интерфейс это CyberWRT, плюс возможно подключение через USB порт.
Для того что бы изменить прошивку нашего роутера, нужно скачать прошивку CyberWrt MR3020.
Как мы скачали, делаем следующее:
1) Включить роутер и подождать загрузки.
2) Зайти и залогиниться на 192.168.0.254 (по умолчанию admin\admin)
3) Найти в меню слева System Tools, там пункт System Upgrade и залить прошивку через веб-форму
4) Дождаться перезагрузки (порядка 4х минут)
Роутер готов к настройке.
Далее делаем как так.
Введите в браузере адрес: 192.168.1.100
- если Вы хотите использовать роутер через Wi-Fi – найдите в списке доступный сетей сеть CyberWrt.
Можно выбрать один из режимов: «Точка доступа» и «Клиент Wi-Fi сети». Для настройки режима Клиента:
- выберите режим «Клиент Wi-Fi сети»
- IP адрес Вашего устройства (по этому адресу будет доступно Ваше устройство. Постарайтесь выбрать незанятый IP. Например: 192.168.1.100)
- Маска подсети (255.255.255.0)
- Шлюз (например, IP Вашего домашнего роутера или шлюза - 192.168.1.1)
- Тип шифрования (тип шифрования, используемый в Вашей домашней сети)
- Пароль (пароль, для доступа к Вашей домашней сети)
Если сделали все правильно, то у вас пойдет RSS строка в нижней части экрана.
Когда все заработала, у вас появятся раздел модули, там вы находите модуль "РОБОТ". Устанавливайте. Готово.
Подключение L298N, Arduino Nano, MR3020, Камера и другое
На картинке все наглядно показано, но на всякий случай напишу.
Вывод Arduino DIGITAL 4 - к IN1 пину модуля.
Вывод Arduino DIGITAL 5 - к IN2 пину модуля.
Вывод Arduino DIGITAL 6 - к IN3 пину модуля.
Вывод Arduino DIGITAL 7 - к IN4 пину модуля.
Вывод Arduino GND - к GND клеме модуля.
GND клема модуля - Минус аккумулятора.
7.2V клема модуля - Плюс аккумулятора.
RM клема модуля - Правый моторчик.
LM клема модуля - Левый моторчик.
USB порт Arduino - Подключаем к USB хаб
Web Камера - Подключаем к USB хаб
USB хаб - Подключаем к USB роутера
Питание так скажем логистики, осуществляется вторым аккумулятором. Емкость 2000 mA/h 5v, дабы не спалить роутер. Да и с двумя аккумуляторами робот стабильней работает. Так вот, его мы подключаем просто в разъем микро USB. Через USB хаб который подключен к роутету питанию уже получает и камера и наша ардуинка.
Скетч для Arduino Nano
Вам необходима скачать библиотеку CyberLib, она предназначена только для Atmega 328.
/*
Версия 1.5 WIFI Tanka на DD1-1
Реализовано:
1) Движение камеры по X и Y
2) Гудок
3) Фары
4) Звук при включении
*/
#include <CyberLib.h> // Подключаем библиотеку
#include <Servo.h> // Подключаем библиотеку сервоприводов
Servo myservo1;
Servo myservo2;
long previousMillis; // Нужно для таймера
int LedStep = 0; // Счетчик для LED
int i;
#define robot_go {D4_High; D5_Low; D6_Low; D7_High;}
#define robot_back {D4_Low; D5_High; D6_High; D7_Low;}
#define robot_stop {D4_Low; D5_Low; D6_Low; D7_Low;}
#define robot_rotation_right {D4_High; D5_Low; D6_High; D7_Low;}
#define robot_rotation_left {D4_Low; D5_High; D6_Low; D7_High;}
#define LED_ON {D13_High;}
#define LED_OFF {D13_Low;}
#define Headlamp_ON {D8_Low;}
#define Headlamp_OFF {D8_High;}
#define Buzzer {tone(11, 494, 500);}
#define init {D4_Out; D5_Out; D6_Out; D7_Out; D8_Out; D13_Out;}
uint8_t inByte;
void setup()
{
myservo1.attach(9); // Подключение сервоприводов к порту
myservo2.attach(10); // Подключение сервоприводов к порту
D11_Out; D11_Low; // Динамик
Headlamp_OFF; // Фары выкл по умолчанию
for(uint8_t i=0; i<12; i++) beep(80, random(100, 2000)); //звуковое оповещение готовности робота
init; // Инициализация портов
//Buzzer; // Инициализация портов динамика
UART_Init(57600);// Инициализация порта для связи с роутером
wdt_enable (WDTO_500MS);
}
void loop()
{
unsigned long currentMillis = millis(); // Обновление таймера
if (LedStep == 0 && currentMillis - previousMillis > 500){ // Задержка 0,5 сек.
previousMillis = currentMillis; // обновление таймер
LED_ON; // Включить
LedStep = 1; // Счетчик шагов
}
if (LedStep == 1 && currentMillis - previousMillis > 500){ // Задержка 0,5 сек.
previousMillis = currentMillis; // обновление таймер
LED_OFF; // Выключить
LedStep = 2; // Счетчик шагов
}
if (LedStep == 2 && 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': // Повопорт влево
robot_rotation_left;
break;
case 'A': // Поворот вправо
robot_rotation_right;
break;
case 'S': // Движение назад
robot_back;
break;
case 'U': // Серво поднимается
myservo1.write(i -= 20);
break;
case 'J': // Серво опускается
myservo1.write(i += 20);
break;
case 'H': // Серво поворачивается влево
myservo2.write(i += 20);
break;
case 'K': // Серво поворачивается вправо
myservo2.write(i -= 20);
break;
case 'Y': // Серво поворачивается 85
myservo1.write(85);
myservo2.write(85);
break;
case 'F': // Включить фары
Headlamp_ON;
break;
case 'V': // Выключить фары
Headlamp_OFF;
break;
case 'I': // Гудок
Buzzer;
break;
}
}
wdt_reset();
}
Внесение изменений в роутер
Для того что бы управлять камерами были внесены изменения в библиотеку роутера. Вам нужно будет скачать измененный код и заменить исходные файлы ним.
Закидываем с помощи модуля файловый менеджер.
carduino.spybot.js кидаем в www/modules/CyberBot/
index.cgi кидаем в www/cgi-bin/modules/CyberBot/
Фото:
Управление танком
Управление осуществляется помощи окна браузера, для этого подключаемся к нашему танку, набираем в адресной строке 192.168.0.1 и заходим в вкладку. Готово. Управлять можно практически с любого устройства у которого есть Wifi модуль.
Получился довольно небольшой и симпатичный РУ робот, в планах оснастить его фарами и добавить солнечную панель, для подзарядки аккумулятора логистики.
Видео:
Источник: gulinsky.blogspot.ru
2 комментария