Собираем Wi-Fi робота
Давно мечтал сделать Wi-Fi робота, которым можно было бы управлять удаленно. И вот наконец настал тот день когда я смог управлять роботом через интернет, видеть и слышать все что происходит вокруг него.
Заинтересовавшихся приглашаю под кат
Для создания робота использовались следующие комплектующие:
Вот так выглядит собранный мной робот, без верхней крышки.
Теперь все по порядку:
Расположение компонентов на материнской плате. Я установил только Arduino Nano, драйвер двигателей и звуковой излучатель HC:
Роутер wr703N прикрепил к нижней части платформы робота на двухсторонний скотч:
Веб камера прикреплена на мебельный уголок, к штатным отверстиям платформы, предусмотренных для сервомоторов:
СyberWrt — это прошивка собранная на базе OpenWrt и предназначенная в первую очередь для роботов, умного дома и других устройств построенных на базе популярных моделей роутеров Tp-Link mr3020 b Wr703N. У СyberWrt максимально возможный объем свободного места для инсталляции пакетов — 1.25Мб. По умолчанию установлен веб сервер и все операции можно проводить через встроенный веб интерфейс. Сразу после перепрошивки, роутер доступен в сети по кабелю и по WiFi, как точка доступа. Через веб-интерфейс можно работать в режиме «командной строки» — через веб терминал и в файловом менеджере, в котором можно редактировать, загружать, удалять, создавать, копировать файлы и многое другое.
После прошивки роутера, он доступен как WiFi точка доступа с именем «CyberBot», подключаемся к нему заходим на главную страницу роутера. Вот так выглядит веб интерфейс сразу после прошивки.
Устанавливаем модули Драйвер FTDI, Драйвер video и CyberBot-2.
Прошиваем контроллер ардуино.
Код программы робота получился достаточно простым, но его достаточно для того что бы удаленно управлять роботом через локальную сеть или интернет.
Код адаптирован под контроллеры Arduino с ATmega168/328 на борту и использует библиотеку CyberLib.
Эта библиотека помогает из контроллера выжать максимум его возможностей и уменьшить объем конечного кода
В коде используется WDT, для того что бы робот не смог зависнуть.
Так же код поддерживает управление камерой по осям X и Y, но у меня не было свободных сервомоторов и я не смог воспользоваться этой функцией:
#include #include Servo myservo1; Servo myservo2; long previousMillis; http://cyber-place.ru/attachment.php?attachmentid=600&d=1389429469 uint8_t LedStep = 0; // Счетчик int i; boolean light_stat; uint8_t inByte; uint8_t speed=255; //максимальная скорость по умолчанию #define init 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 == 0 && currentMillis - previousMillis >500) < // Задержка 0,5 сек. previousMillis = currentMillis; LedStep = 1; >if (LedStep == 1 && currentMillis - previousMillis > 500) < // Задержка 0,5 сек. previousMillis = currentMillis; 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': // Поворотjт влево 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 '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 <58) speed=(inByte-47)*25+5; //принимаем команду и преобразуем в скорость >wdt_reset(); > void horn() < for(uint8_t i=0; ivoid 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()
Все собрано и прошито, теперь включаем робота и управляем им удаленно.
На PC кроме экранных кнопок можно управлять еще с клавиатуры, клавишами W, A, D, S, X
В дальнейшем планирую научить робота ориентироваться в пространстве и рисовать карту помещения.
Зачем роботу-пылесосу интернет?
Лет пятнадцать назад роботы-пылесосы выглядели как пришельцы из будущего, а сегодня они мало чем выделяются на фоне остальной домашней техники. Но это далеко не все, на что они способны: современные модели роботизированных пылесосов предлагают много интересных функций, в том числе поддерживают выход в интернет. Разбираемся, зачем это нужно.
Роботы-пылесосы стали новым витком в развитии бытовой техники. Чудом выглядит уже то, что они легко перемещаются по полу, собирают мусор и умело обходят легкие препятствия вроде перепада высоты в пару сантиметров или ножек стола. Техника отлично ориентируется в пространстве и работает автономно — вы можете оставить ее убирать квартиру в свое отсутствие. А еще за последние несколько лет роботы-пылесосы «поумнели», и во многом это случилось благодаря поддержке беспроводной передачи данных по Wi-Fi и Bluetooth. Что дает это нововведение?
Управление со смартфона
Это одна из самых полезных функций для владельцев роботов-пылесосов. Скачав фирменное приложение на смартфон, вы будете легко управлять и контролировать работу пылесоса из другой комнаты, из офиса и даже другого города. Управление с мобильного устройства поддерживают все популярные современные модели: iRobot Roomba i7+, Xiaomi RoboRock Sweep One, Ecovacs Deeboot OZMO 900, Mamibot PreVac650, Karcher R3 и другие.
Возможности управления со смартфона рассмотрим на примере роботов-пылесосов iRobot:
- в любой момент можно запустить или приостановить уборку помещения, а также отслеживать передвижение робота-пылесоса в режиме реального времени;
- в зависимости от региона роботы-пылесосы работают с избранными голосовыми помощниками (например, Alexa, Google Assistant, в России — Яндекс.Алиса). Роботу можно отправлять команды не только через приложение, но и голосом;
- робот-пылесос передает в облако информацию о состоянии аккумулятора (на какое время работы хватит заряда), а в случае критически низкого заряда сам отправляется на зарядную станцию. Эту информацию тоже можно получить через приложение в смартфоне;
- домашний помощник хранит в памяти статистику об убранных комнатах, к которой пользователь фирменного приложения может обратиться в любой момент: просмотреть отчет или выбрать комнаты для следующей уборки;
- робот-пылесос становится частью экосистемы умного дома, то есть им можно управлять совместно другими устройствами и включать его в сложные сценарии. Например, запускать в заданное время определенного дня недели или когда датчики зафиксируют изменения состава / температуры воздуха;
- робот-пылесос отправляет важные уведомления на смартфон хозяина. Поводом для push-сообщения может стать низкий заряд аккумулятора, когда прибор не способен завершить программу уборки, или крупное препятствие, которое мешает двигаться дальше;
- устройство самостоятельно обновляет прошивку, когда выходит новая версия. Оно автоматически подключается к порталу разработчика и при наличии интернета скачивает актуальную версию прошивки.
Мобильные приложения для роботов-пылесосов обычно доступны для двух самых популярных платформ: Android и iOS. Техникой бренда iRobot управляет приложение iRobot Home. Компания Samsung не стала разрабатывать отдельное ПО для роботов-пылесосов и предлагает ограничиться универсальным Samsung Smart Home, которое позволяет управлять любыми приборами в экосистеме умного дома. В LG приложение называется SmartThinQ, оно поддерживает несколько интересных «фишек», о которых поговорим ниже.
Некоторыми роботами-пылесосами можно управлять дистанционного только в том случае, если вы с ними подключены к одной сети Wi-Fi. Это не очень удобно, потому в современных моделях уборщик может находиться дома, а вы — за много километров от него со смартфоном, подключенным к мобильной или офисной сети.
Дополненная реальность и безопасность
Рассмотренные функции можно смело называть базовыми, и с каждым годом на рынке появляется все больше устройств, которые их поддерживают. Но некоторые производители, пытаясь отстроиться от конкурентов, разрабатывают что-то новое, революционное. Например, компания LG в роботе-пылесосе LG HOM-BOT Turbo+ реализовала поддержку дополненной реальности. Теперь с помощью камеры смартфона или планшета хозяин дома может показать роботу, какую зону в квартире нужно убрать.
Роботы-пылесосы LG дополнительно обеспечивают безопасность — отправляют оповещения о том, что в дом проникли злоумышленники. Когда устройство обнаруживает кого-то постороннего (для этого у LG HOM-BOT Turbo+ есть две фронтальные камеры), оно моментально делает снимок и отправляет его через интернет. А владелец дома уже решает, как поступить с этой информацией — примчаться самому или вызвать полицию. Ложные срабатывания в такой ситуации исключены: благодаря детализированным снимкам за пару секунд можно выяснить, человек на фото действительно посторонний или это кто-то из домашних, вернувшийся раньше времени. Видеокамеры в роботах-пылесосах еще не стали массовым явлением из-за безопасности самих хозяев. Как и другие устройства с камерой и выходом в интернет, роботизированные уборщики могут стать источниками серьезных проблем. Злоумышленники могут получить доступ к снимкам с камеры и затем использовать их в преступных схемах — например, чтобы после проникновения хорошо ориентироваться в пространстве и знать, где лежат ценные вещи. Но на практике такой сценарий до сих пор никто не реализовал. Пару лет назад компания iRobot даже объявила конкурс с призовым фондом в несколько сотен тысяч долларов. Их она пообещала выплатить тому хакеру, который взломает защиту и перехватит управление камерой. Насколько нам известно, приз до сих пор никто не получил.
Управление движением робота-пылесоса
Роботы-пылесосы Xiaomi поддерживают два сценария уборки: автоматический и ручной. Пользователи обычно ограничиваются первым вариантом: это удобно, занимает минимум времени и пылесос не нужно контролировать отдельно. Домашний помощник сам построит карту помещения, разделит ее на зоны и приступит к уборке: вначале пройдется вдоль стен, а затем будет двигаться по S-образной траектории. Ручной режим уборки — это как root-права в смартфоне: открывают новые возможности, но требуют больше времени. В ручном режиме робот-пылесос превращается в аналог машинки на радиоуправлении. Только она не просто перемещается по комнате, но и попутно собирает пыль и мусор с пола. В приложении Xiaomi движением пылесоса можно управлять как кнопками (вперед и назад, влево и вправо), так и виртуальным джойстиком. Выберите, какой вариант вам подходит больше, и с пользой проведите время, например, в общественном транспорте или завтракая на своей кухне.
Комплексное планирование уборки в офисе
Несколько лет назад компания Fraunhofer IAO разработала интеллектуальную концепцию очистки офисов с помощью роботизированной техники. В экосистеме умного офиса роботы-пылесосы iRobot автоматически заботятся о предстоящих сеансах уборки, запланированных через Outlook — менеджер задач с функциями почтового клиента от Microsoft. Так как офисных помещений обычно много, потребуется сразу несколько единиц техники. Чтобы они не конфликтовали друг с другом и во всех комнатах было чисто, менеджеры вручную расставляют приоритеты между уборками (делают так называемое «бронирование»), а роботы-пылесосы в зависимости от приоритетов формируют и корректируют свое расписание, синхронизируясь с задачами в Outlook в режиме реального времени.
Как обеспечить роботу-пылесосу стабильное интернет-подключение
- Размещайте Wi-Fi-роутер по центру дома или квартиры, чтобы из любой точки робот-пылесос смог получить уверенный интернет-сигнал.
- Не устанавливайте роутер рядом с мощными электрическими приборами, которые создают высокое излучение и могут провоцировать радиочастотные помехи.
- В одноэтажных домах роутер должен находиться как можно выше — это поможет ему лучше рассеивать сигнал. В двухэтажных зданиях роутер (если он один) рекомендуется крепить высоко на первом этаже или ближе к полу на втором.
- Убедитесь, что в помещении нет «слепых пятен», куда не распространяется сигнал роутера.