Оглавление:

Робот виртуального присутствия: 15 шагов
Робот виртуального присутствия: 15 шагов

Видео: Робот виртуального присутствия: 15 шагов

Видео: Робот виртуального присутствия: 15 шагов
Видео: АРС - Шагающий поисково-спасательный робот 2024, Ноябрь
Anonim
Image
Image
Мобильный робот-автомобиль
Мобильный робот-автомобиль

Этот мобильный робот взаимодействует со своим физическим окружением, представляя «виртуальное присутствие» человека, управляющего им удаленно. К нему может получить доступ любой человек в любой точке мира, чтобы раздавать угощения и играть с вами.

Работа здесь разрабатывается двумя людьми (одним в Германии и одним в США) как попытка выйти за рамки традиционных средств интернет-коммуникации, создав физический интерфейс для удаленного взаимодействия. Поскольку COVID-19 продолжает влиять на мир, и каждый несет ответственность за ограничение нашего физического воздействия на людей, мы пытаемся восстановить осязаемую связь, которая является частью физического взаимодействия.

Он основан на ESP32-Camera-Robot-FPV-Teacher-Entry Instructable и модифицирован для включения датчика расстояния, диспенсера для лечения и возможности «управления из любой точки мира» при условии, что у вас есть стабильное интернет-соединение.

Запасы

Проект состоит из 4 основных частей - мобильного робота-автомобиля, дозатора чипов, джойстика и настройки сетевой связи.

Мобильный робот-автомобиль

  • Макетная плата
  • Комплект для двухколесного привода и шасси робота (включает колеса, двигатели постоянного тока, монтажную плату и винты)
  • Arduino Mega 2560 (если вы строите без датчика расстояния или дозатора чипов, у Uno будет достаточно контактов)
  • (3) Батареи 9 В (есть еще несколько, так как вы их разряжаете при отладке)
  • LM2596 Модуль источника питания DC / DC Buck 3A Regulator (или аналогичный)
  • Модуль Wi-Fi ESP32-CAM
  • FT232RL FTDI Последовательный преобразователь USB в TTL (для программирования ESP32-CAM)
  • Ультразвуковой датчик расстояния HC-SR04
  • Драйвер двигателя L298N
  • (3) светодиода (любого цвета)
  • (3) резистора 220 Ом

Диспенсер для стружки

  • (2) Сервоприводы SG90
  • Картон / Картон

Джойстик

  • Ардуино Уно
  • Модуль джойстика
  • Мини-макетная плата, (1) светодиод, (1) резистор 220 Ом (опционально)

Другой

Множество перемычек для макетной платыДополнительный картон / картонная лентаНожницыЛинейка / измерительная лентаМаленькая отвертка PhilipsМаленькая отвертка с плоской головкой

Терпение =)

Шаг 1. Мобильный робот-автомобиль

Шасси автомобиля-робота служит мобильной платформой, а Arduino MEGA - главным микроконтроллером, управляющим двигателями, считывающим значения датчиков и приводящим в действие сервоприводы. Большинство действий выполняется путем получения Arduino MEGA команд по последовательной связи, отправленных с ESP32-CAM. В то время как ESP32 обеспечивает прямую трансляцию с камеры для управления роботом, его другой функцией является управление беспроводным соединением между роботом и сервером, что позволяет пользователям управлять им из любой точки мира. ESP32 получает команды с веб-страницы посредством нажатия клавиш и отправляет их в Arduino MEGA в виде значений char. В зависимости от полученного значения автомобиль будет двигаться вперед, назад и т. Д. Поскольку дистанционное управление через Интернет зависит от множества внешних факторов, включая высокую задержку, низкое качество потока и даже отключения, датчик расстояния встроен, чтобы предотвратить сбой робота. в объекты. * Из-за высоких и непостоянных требований к питанию микросхемы ESP32 рекомендуется использовать регулятор источника питания с питанием от батареи (см. электрическую схему).

Шаг 2. Мобильная машина-робот - принципиальная схема

Мобильный робот-автомобиль - принципиальная схема
Мобильный робот-автомобиль - принципиальная схема

Мы шаг за шагом проведем вас через процесс сборки.

Шаг 3. Мобильная машина-робот - сборка (двигатели)

Мобильный робот-автомобиль - сборка (двигатели)
Мобильный робот-автомобиль - сборка (двигатели)

После того, как вы соберете шасси 2WD, мы начнем с подключения двигателей и аккумулятора к Arduino MEGA через драйвер L298N.

Шаг 4: Мобильный робот-автомобиль - сборка (датчик расстояния)

Автомобиль-робот - сборка (датчик расстояния)
Автомобиль-робот - сборка (датчик расстояния)

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

Шаг 5: Мобильная машина-робот - сборка (ESP32 CAM)

Мобильный робот-автомобиль - сборка (ESP32 CAM)
Мобильный робот-автомобиль - сборка (ESP32 CAM)

Затем подключите модуль ESP32-CAM и закрепите его рядом с датчиком расстояния в передней части робота. Помните, что для этого довольно энергоемкого компонента требуется собственная батарея и стабилизатор постоянного тока.

Шаг 6. Мобильная машина-робот - сборка (дозатор стружки)

Мобильная машина-робот - сборка (дозатор стружки)
Мобильная машина-робот - сборка (дозатор стружки)

Теперь добавим дозатор стружки (подробнее об этом в разделе «Дозатор стружки»). Подключите два сервопривода в соответствии со схемой Фритцинга и закрепите дозатор в хвостовой части робота.

Шаг 7. Мобильная машина-робот - сборка (файлы cookie!)

Мобильная машина-робот - сборка (файлы cookie!)
Мобильная машина-робот - сборка (файлы cookie!)

Наконец, добавляем угощения в дозатор!

Шаг 8: мобильный робот-автомобиль - код Arduino

RobotCar_Code - это код, который вам нужно будет загрузить на Arduino Mega.

Вот как это работает: Arduino слушает байты, которые отправляются с ESP32 через последовательную связь на полосе 115200. В зависимости от полученного байта автомобиль будет двигаться вперед, назад, влево, вправо и т. Д., Посылая на двигатели ВЫСОКОЕ или НИЗКОЕ напряжение для управления направлением, а также переменную ШИМ от 0 до 255 для управления скоростью. Чтобы избежать столкновений, этот код также считывает значения, поступающие от датчика расстояния, и если расстояние меньше указанного порога, робот не будет двигаться вперед. Наконец, если Arduino получит команду на выдачу угощения, он активирует сервоприводы в дозаторе чипов.

Шаг 9. Мобильная машина-робот - код ESP32

ESP32 обеспечивает связь между сервером и Arduino через Wi-Fi. Он программируется отдельно от Arduino и имеет собственный код:

  • ESP32_Code.ino - это код для ESP32 для отправки информации в Arduino.
  • app_httpd.cpp - это код, необходимый для веб-сервера ESP32 по умолчанию и установки функции для прослушивания нажатий клавиш. Подходит для отладки и тестирования локального Wi-Fi. Он не используется для связи вне локальной сети.
  • camera_index.h - это HTML-код для веб-приложения по умолчанию.
  • camera_pins.h определяет контакты в зависимости от модели ESP32

Код ESP32 использует библиотеку Wifi, а также надстройку ESP32, которую можно установить в IDE Arduino, выполнив следующие действия:

  1. В Arduino IDE перейдите в File> Preferences.
  2. Затем на вкладке «Настройки» в разделе «URL-адрес диспетчера дополнительных плат» введите следующий адрес: «https://dl.espressif.com/dl/package_esp32_index.json».
  3. Теперь откройте диспетчер плат и перейдите в Инструменты> Плата> Диспетчер плат и найдите ESP32, набрав «ESP32».
  4. Вы должны увидеть «esp32 by Espressif Systems». Щелкните Установить.
  5. Теперь необходимо установить надстройку ESP32. Чтобы проверить, вернитесь в среду разработки Arduino, выберите «Инструменты»> «Плата» и выберите «Модуль ESP32 Wrover».
  6. Снова перейдите в Инструменты> Скорость загрузки и установите значение «115200».
  7. Наконец, перейдите в Инструменты> Схема разделов и установите для него «Огромное приложение (3 МБ без OTA / 1 МБ SPIFFS).
  8. После того, как вы это сделаете, я рекомендую следовать этому руководству от RandomNerdTutorials, в котором подробно объясняется, как завершить настройку ESP32 и загрузить код с помощью программиста FTDI.

Шаг 10: Диспенсер для стружки

Диспенсер для стружки
Диспенсер для стружки

Диспенсер для стружки - это недорогое дополнение к мобильному роботу, позволяющее ему влиять на окружающую среду и взаимодействовать с людьми / животными, оставляя вкусное угощение. Он состоит из картонной внешней коробки с двумя установленными внутри сервоприводами, а также внутреннего картонного картриджа, в котором хранятся предметы (например, конфеты или лакомства для собак) для выдачи. Один сервопривод действует как ворота, а другой выталкивает предмет.

* Все размеры указаны в миллиметрах.

Шаг 11: джойстик

Джойстик
Джойстик

Хотя управление роботом с клавиатуры может быть забавным, еще интереснее и интуитивно понятнее использовать джойстик, когда робот реагирует непосредственно в зависимости от направления, в котором вы нажимаете. Поскольку этот робот приводится в действие с помощью нажатия клавиш, записанных на веб-странице, нам понадобился джойстик для имитации клавиатуры. Таким образом, пользователи без джойстика по-прежнему могут управлять роботом прямо с клавиатуры, но другие могут использовать джойстик.

Для этого у нас был только Arduino Uno, который не имеет возможности использовать библиотеку, поэтому мы запрограммировали его напрямую, используя протокол USB, известный как Обновление прошивки устройства (DFU), который позволяет прошивать Arduino с помощью стандартной прошивки USB HID клавиатуры.. Другими словами, когда arduino подключается к usb, он больше не распознается как arduino, а как клавиатура!

Шаг 12: Джойстик - принципиальная схема

Джойстик - принципиальная схема
Джойстик - принципиальная схема

Вот как мы подключили джойстик.

Шаг 13: Джойстик - эмулятор клавиатуры

Чтобы ваш Arduino Uno мог имитировать клавиатуру, вам необходимо напрямую запрограммировать чип Atmega16u2 на Arduino с помощью ручного обновления прошивки устройства (DFU). Следующие шаги описывают процесс для компьютера с Windows и, надеюсь, помогут вам избежать некоторых проблем, с которыми мы столкнулись.

Первый шаг - вручную записать USB-драйвер Atmel в Arduino, чтобы он распознавался как USB, а не как Arduino, что позволяет его прошивать с помощью программатора FLIP.

  1. Загрузите программатор Atmel FLIP отсюда
  2. Подключите ваш Arduino Uno
  3. Зайдите в диспетчер устройств и найдите Arduino. Это будет под COM или неизвестным устройством. Включите и выключите его, чтобы убедиться, что это правильное устройство.
  4. После того, как вы нашли Arduino Uno в диспетчере устройств, щелкните его правой кнопкой мыши и выберите «Свойства»> «Драйвер»> «Обновить драйвер»> «Найти драйверы на моем компьютере»> «Разрешить мне выбрать драйверы из списка доступных на моем компьютере»> «Установить с диска»> «Перейти к файл "atmel_usb_dfu.inf" и выберите его. Он должен находиться в папке, в которую был установлен ваш программатор Atmel FLIP. На моем компьютере он находится здесь: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Установите драйвер
  6. Теперь вернитесь в диспетчер устройств. Вы должны увидеть «USB-устройства Atmel» с Arduino Uno, помеченным как ATmega16u2!

Теперь, когда компьютер распознает Arduino Uno как USB-устройство, мы можем использовать FLIP Programmer, чтобы прошить его тремя отдельными файлами и превратить в клавиатуру.

Если вы отключили Arduino Uno после первой части, подключите его снова.

  1. Открыть FLIP
  2. Выполните сброс Arduino Uno, ненадолго подключив питание к земле.
  3. Нажмите Выбор устройства (значок в виде микрочипа) и выберите ATmega16U2
  4. Щелкните «Выбрать канал связи» (значок в виде USB-кабеля) и выберите «USB». Если вы выполнили первую часть правильно, другие серые кнопки должны стать доступными.
  5. Перейдите в File> Load Hex File> и загрузите файл Arduino-usbserial-uno.hex.
  6. В окне FLIP вы должны увидеть три раздела: поток операций, информация о буфере FLASH и ATmega16U2. В потоке операций установите флажки «Стереть», «Программировать» и «Проверить», затем нажмите «Выполнить».
  7. По завершении этого процесса нажмите Start Application в разделе ATmega16U2.
  8. Включите цикл Arduino, отключив его от компьютера и снова подключив.
  9. Выполните сброс Arduino Uno, ненадолго подключив питание к земле.
  10. Откройте IDE Arduino и загрузите на плату файл JoyStickControl_Code.ino.
  11. Включите цикл Arduino, отключив его от компьютера и снова подключив.
  12. Перезагрузите Arduino, ненадолго подключив питание к земле.
  13. Вернитесь к FLIP, убедитесь, что в выборе устройства указано Atmega16U2.
  14. Щелкните Select a Communication Medium и выберите USB.
  15. Перейдите в File> Load Hex File> и загрузите файл Arduino-keyboard-0.3.hex.
  16. В окне FLIP вы должны увидеть три раздела: поток операций, информация о буфере FLASH и ATmega16U2. В потоке операций установите флажки «Стереть», «Программировать» и «Проверить», затем нажмите «Выполнить».
  17. По завершении этого процесса нажмите Start Application в разделе ATmega16U2.
  18. Включите цикл Arduino, отключив его от компьютера и снова подключив.
  19. Теперь, когда вы перейдете в диспетчер устройств, в разделе «Клавиатуры» должно появиться новое устройство HID Keyboard.
  20. Откройте блокнот или любой текстовый редактор и начните перемещать джойстик. Вы должны увидеть набираемые числа!

Если вы хотите изменить код в скетче Arduino, например, записать новые команды на джойстик, вам нужно будет каждый раз прошивать его всеми тремя файлами.

Полезные ссылки: Arduino DFUAtLibUsbDfu.dll не найден.

Этот эмулятор клавиатуры основан на этом руководстве Майкла 24 июня 2012 г.

Шаг 14: сетевое взаимодействие

Сетевые коммуникации
Сетевые коммуникации

Чтобы получать видеопоток и отправлять команды роботу из любой точки мира, нам нужен способ получения данных в ESP32-CAM и из него. Это делается из двух частей: обработчика соединения в вашей локальной сети и общедоступного сервера. Для этого загрузите три файла:

  • Handlers.py: передает информацию из ESP32-CAM и общедоступного сервера (проверено на Python 3.8)
  • Flask_app.py: определяет, как ваше приложение отвечает на входящие запросы.
  • Robot_stream.html: отображает видео в вашем браузере и слушает команды через клавиатуру / джойстик (проверено в Chrome)

Обработчик подключения Вы можете закодировать это прямо в app_httpd.cpp, но для упрощения отладки мы используем скрипт Python, работающий на ПК, подключенном к той же сети. Откройте handlers.py и обновите IP-адрес и имя пользователя на свои собственные, и все готово. Поток начнется, когда вы запустите этот файл.

Публичный сервер Чтобы получить доступ ко всему в Интернете, вы можете запустить сервер с выбранной вами PaaS. На pythonanywhere (PA) настройка занимает менее 5 минут:

  1. Зарегистрируйте учетную запись и войдите в систему
  2. Перейдите на вкладку «Интернет» и нажмите «Добавить новое веб-приложение», выберите Flask и Python 3.6.
  3. Скопируйте flask_app.py в каталог / mysite
  4. Скопируйте robot_stream.html в каталог / mysite / templates
  5. Нажмите «Обновить».

И… все готово!

Отказ от ответственности: этот сетевой рабочий процесс быстр и прост, но очень далек от идеала. RTMP или сокеты больше подходят для потоковой передачи, но они не поддерживаются на PA и требуют некоторого опыта работы с сетью и настройкой сервера. Также рекомендуется добавить некоторый механизм безопасности для управления доступом.

Шаг 15: Собираем все вместе

Теперь включите своего робота, запустите handlers.py на компьютере (подключенном к той же сети, что и робот), и вы сможете управлять роботом из браузера на основе заданного вами URL-адреса из любого места, где захотите. (например,

Рекомендуемые: