Оглавление:
Видео: Localino отслеживает робот Roomba IRobot, отображает окружающую среду и позволяет контролировать: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Чтобы построить мост WiFi-UART, вы можете проверить это репозиторий на github:
Для начала у него есть хорошая основа. Убедитесь, что вы внимательно прочитали руководство, потому что во время зарядки Roomba VCC увеличивается до 20 вольт! Если вы добавите ESP8266 без надлежащего понижающего преобразователя, который работает даже до 20 В и преобразует его с понижением до 3,3 В, вы повредите свой ESP.
Также не забудьте использовать переключатель уровня (например, с помощью делителя напряжения), чтобы сместить логические уровни 5 В UART с Roomba на 3,3 В, которые используются ESP.
Другой важной деталью является то, что понижающий преобразователь должен иметь ток 300 мА, но намного меньше или намного больше (в зависимости от самого понижающего преобразователя). Есть такие, которые могут потреблять намного больше тока, но вызывают сбой Roomba, потому что они потребляют слишком много тока во время запуска. Мы выяснили, что понижающий стабилизатор напряжения Pololu 3,3 В, 300 мА (D24V3F3) работает просто идеально. Альтернативные версии, которые имеют 500 мА / 600 мА, вызвали сбой интерфейса Roomba UART. В основном Roomba реагировал на нажатие кнопки, но не на команды через интерфейс UART. Как только это случилось, нам пришлось удалить аккумулятор Roomba и перезапустить Roomba в холодном состоянии с подключенным мостом Wi-Fi-UART. Однако хорошо сработал только D24V3F3.
Помимо этой технической детали, вы должны добавить в код дополнительные команды, которые вы можете найти в спецификациях открытого интерфейса Roomba. Вам нужно будет добавить все команды, на которые вы хотите, чтобы ваш Roomba реагировал (например, назад, вперед, скорость и т. Д.).
примеры в среде Arduino IDE:
void goForward () {char c = {137, 0x00, 0xc8, 0x80, 0x00}; // 0x00c8 == 200 Serial.print (c); }
void goBackward () {char c = {137, 0xff, 0x38, 0x80, 0x00}; // 0xff38 == -200 Serial.print (c); }
void spinLeft () {char c = {137, 0x00, 0xc8, 0x00, 0x01}; Serial.print (c); }
void spinRight () {char c = {137, 0x00, 0xc8, 0xff, 0xff}; Serial.print (c); }
если вы напишете на lua, это будет выглядеть немного иначе, пример для ЛЕВОГО поворота будет выглядеть так:
если (_GET.pin == "LEFT"), то print ('\ 137'); --VOR
tmr.delay (100);
печать ('\ 00'); - Скорость = 200 = 0x00C8 -> 0 и 200
tmr.delay (100);
печать ('\ 200'); -- Скорость
tmr.delay (100);
печать ('\ 254'); - Радиус = 500 = 0x01F4 = 0x01 0xF4 = 1 244
tmr.delay (100);
печать ('\ 12'); -- Перемена
конец
Убедитесь, что вы исправили описание открытого интерфейса вашего Roomba. Доступны как минимум две спецификации открытого интерфейса.
для Roomba серии 5xx:
для Roomba серии 6xx:
После того, как вы построили мост WiFi-UART и протестировали команды, вы сделали большой шаг вперед. Это видео демонстрирует, что приложение и подход работают. Мы немного поленились, в веб-интерфейсе отсутствуют все другие команды управления, такие как вперед, назад, скорость, вправо, влево и так далее, но вы можете вводить команды через http. В любом случае, это просто демонстрация того, что пульт дистанционного управления Roomba работает с простым аппаратным и программным обеспечением, использующим ESP8266.
Теперь, когда вы можете управлять Roomba удаленно из приложения на ПК, единственное, чего не хватает, - это локализация в помещении. Нам нужно это, чтобы замкнуть цикл обратной связи, потому что нашей целью было направить робота в определенном направлении. Давай сделаем это.
Шаг 3. Настройте систему локализации в помещении
Чтобы замкнуть обратную связь, мы используем систему локализации в помещении. Мы используем для этого Localino. Система Localino состоит из «якорей» и «тегов». Якоря размещаются в фиксированных местах внутри комнаты и определяют положение подвижной метки (которая размещается на Roomba). Обработка местоположения выполняется в приложении для ПК. Это большое преимущество, потому что вы также можете управлять Roomba с того же компьютера! На веб-сайте Localino доступен бесплатный исходный код, он написан на python, а также доступен поток в реальном времени, который предлагает координаты XYZ тега. Поток данных доступен через сеть UDP, но вы также можете добавить MQTT или любые другие интересные вещи, которые вам нравятся. Если вы знаете Python, существует множество библиотек, которые вам помогут.
В этом видео демонстрируется локализация Roomba. Поэтому у нас есть 4 якоря в комнате в фиксированных местах, которые позволяют позиционировать Roomba в 3D. В общем, нам потребуется только 3 якоря, потому что Roomba, вероятно, не будет двигаться по оси Z, поэтому 2D будет достаточно. Но поскольку якоря расположены на высоте главных вилок переменного тока (которая составляет примерно 30 см над землей), установка 2D может вызвать небольшие ошибки оценки положения. Поэтому мы решили создать 4 якоря и выполнить локализацию в 3D.
Теперь, когда у нас есть положение Roomba, следующим шагом будет управление Roomba из того же приложения. Идея состоит в том, чтобы использовать достоверную информацию и оценить идеальный путь уборки для робота. С помощью Localino мы можем замкнуть цикл обратной связи и управлять роботом из приложения для ПК.
Замечания по настройке
Разместите якоря Localino внутри комнаты в разных положениях x, y и три из них в одном положении z. Разместите один из четырех анкеров на разной высоте z для каждой комнаты. Убедитесь, что тег Localino имеет хорошее покрытие, которое будет перемещаться вместе с Roomba.
Все привязки имеют уникальный идентификатор привязки, который отображается на штрих-коде Localino и может быть считан с помощью инструмента «настройки localino».
Обратите внимание на позиции в X, Y, Z и идентификаторы привязки. Это требуется для программного обеспечения процессора Localino и должно быть адаптировано в файле «localino.ini» в папке «LocalinoProcessor».
Анкеры должны указывать вверх или вниз по оси Z (когда область XY покрыта), но не в направлении покрытой области. Анкеры также не должны быть закрыты металлом или каким-либо другим материалом, мешающим беспроводному сигналу. Если это невозможно, также должен быть определенный воздушный зазор между любым материалом и анкером.
…еще не все.
Шаг 4. Адаптируйте программное обеспечение Python
Будьте на связи. еще не все.
Рекомендуемые:
Матрица Arduino отображает эмоциональные лица: 4 шага
Эмоциональные лица Arduino Matrix Display: сегодня мы делаем разные лица с Arduino и Matrix Display 8 x 8
Как настроить среду программирования AVR в Linux: 5 шагов
Как настроить среду программирования AVR в Linux: если вы хотите программировать микроконтроллеры AVR в Windows, у вас есть Studio, но в Linux все, что у нас есть, - это Dude. AVRDUDE - это интерфейс командной строки для программирования микросхем AVR, это может быть немного сложно для настройки в первую очередь. В этом Руководстве я буду
Wi-Fi позволяет почти все: 4 шага
Wi-Fi позволяет почти все: если вы никогда раньше не использовали Blynk, вам стоит попробовать. Это творение можно использовать для разных вещей - не только для лавовой лампы. Вы можете включить кофеварку утром или включить автоматический ночник. На самом деле, я просто
Как контролировать температуру и плотность брожения пива со смартфона: 4 шага (с изображениями)
Как контролировать температуру и плотность брожения пива со смартфона: во время брожения вы должны ежедневно контролировать его плотность и температуру. Легко забыть об этом, и невозможно, если вы в отъезде. После некоторого поиска в Google я нашел несколько решений для автоматического мониторинга силы тяжести (раз, два, три). Один из т
Как установить среду веб-разработки на локальном хосте: 6 шагов
Как установить среду веб-разработки на локальном хосте: в этом руководстве показано, как установить Apache, PHP, MySQL на локальном хосте. Также как настроить его так, чтобы у вас были некоторые интересные сетевые функции, такие как возможность загружать корневой каталог, используя имя компьютера (http: //desktop/index.php), b