Оглавление:
- Запасы
- Шаг 1. Мобильный робот-автомобиль
- Шаг 2. Мобильная машина-робот - принципиальная схема
- Шаг 3. Мобильная машина-робот - сборка (двигатели)
- Шаг 4: Мобильный робот-автомобиль - сборка (датчик расстояния)
- Шаг 5: Мобильная машина-робот - сборка (ESP32 CAM)
- Шаг 6. Мобильная машина-робот - сборка (дозатор стружки)
- Шаг 7. Мобильная машина-робот - сборка (файлы cookie!)
- Шаг 8: мобильный робот-автомобиль - код Arduino
- Шаг 9. Мобильная машина-робот - код ESP32
- Шаг 10: Диспенсер для стружки
- Шаг 11: джойстик
- Шаг 12: Джойстик - принципиальная схема
- Шаг 13: Джойстик - эмулятор клавиатуры
- Шаг 14: сетевое взаимодействие
- Шаг 15: Собираем все вместе
Видео: Робот виртуального присутствия: 15 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Этот мобильный робот взаимодействует со своим физическим окружением, представляя «виртуальное присутствие» человека, управляющего им удаленно. К нему может получить доступ любой человек в любой точке мира, чтобы раздавать угощения и играть с вами.
Работа здесь разрабатывается двумя людьми (одним в Германии и одним в США) как попытка выйти за рамки традиционных средств интернет-коммуникации, создав физический интерфейс для удаленного взаимодействия. Поскольку 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 и закрепите его рядом с датчиком расстояния в передней части робота. Помните, что для этого довольно энергоемкого компонента требуется собственная батарея и стабилизатор постоянного тока.
Шаг 6. Мобильная машина-робот - сборка (дозатор стружки)
Теперь добавим дозатор стружки (подробнее об этом в разделе «Дозатор стружки»). Подключите два сервопривода в соответствии со схемой Фритцинга и закрепите дозатор в хвостовой части робота.
Шаг 7. Мобильная машина-робот - сборка (файлы 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, выполнив следующие действия:
- В Arduino IDE перейдите в File> Preferences.
- Затем на вкладке «Настройки» в разделе «URL-адрес диспетчера дополнительных плат» введите следующий адрес: «https://dl.espressif.com/dl/package_esp32_index.json».
- Теперь откройте диспетчер плат и перейдите в Инструменты> Плата> Диспетчер плат и найдите ESP32, набрав «ESP32».
- Вы должны увидеть «esp32 by Espressif Systems». Щелкните Установить.
- Теперь необходимо установить надстройку ESP32. Чтобы проверить, вернитесь в среду разработки Arduino, выберите «Инструменты»> «Плата» и выберите «Модуль ESP32 Wrover».
- Снова перейдите в Инструменты> Скорость загрузки и установите значение «115200».
- Наконец, перейдите в Инструменты> Схема разделов и установите для него «Огромное приложение (3 МБ без OTA / 1 МБ SPIFFS).
- После того, как вы это сделаете, я рекомендую следовать этому руководству от 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.
- Загрузите программатор Atmel FLIP отсюда
- Подключите ваш Arduino Uno
- Зайдите в диспетчер устройств и найдите Arduino. Это будет под COM или неизвестным устройством. Включите и выключите его, чтобы убедиться, что это правильное устройство.
- После того, как вы нашли Arduino Uno в диспетчере устройств, щелкните его правой кнопкой мыши и выберите «Свойства»> «Драйвер»> «Обновить драйвер»> «Найти драйверы на моем компьютере»> «Разрешить мне выбрать драйверы из списка доступных на моем компьютере»> «Установить с диска»> «Перейти к файл "atmel_usb_dfu.inf" и выберите его. Он должен находиться в папке, в которую был установлен ваш программатор Atmel FLIP. На моем компьютере он находится здесь: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
- Установите драйвер
- Теперь вернитесь в диспетчер устройств. Вы должны увидеть «USB-устройства Atmel» с Arduino Uno, помеченным как ATmega16u2!
Теперь, когда компьютер распознает Arduino Uno как USB-устройство, мы можем использовать FLIP Programmer, чтобы прошить его тремя отдельными файлами и превратить в клавиатуру.
Если вы отключили Arduino Uno после первой части, подключите его снова.
- Открыть FLIP
- Выполните сброс Arduino Uno, ненадолго подключив питание к земле.
- Нажмите Выбор устройства (значок в виде микрочипа) и выберите ATmega16U2
- Щелкните «Выбрать канал связи» (значок в виде USB-кабеля) и выберите «USB». Если вы выполнили первую часть правильно, другие серые кнопки должны стать доступными.
- Перейдите в File> Load Hex File> и загрузите файл Arduino-usbserial-uno.hex.
- В окне FLIP вы должны увидеть три раздела: поток операций, информация о буфере FLASH и ATmega16U2. В потоке операций установите флажки «Стереть», «Программировать» и «Проверить», затем нажмите «Выполнить».
- По завершении этого процесса нажмите Start Application в разделе ATmega16U2.
- Включите цикл Arduino, отключив его от компьютера и снова подключив.
- Выполните сброс Arduino Uno, ненадолго подключив питание к земле.
- Откройте IDE Arduino и загрузите на плату файл JoyStickControl_Code.ino.
- Включите цикл Arduino, отключив его от компьютера и снова подключив.
- Перезагрузите Arduino, ненадолго подключив питание к земле.
- Вернитесь к FLIP, убедитесь, что в выборе устройства указано Atmega16U2.
- Щелкните Select a Communication Medium и выберите USB.
- Перейдите в File> Load Hex File> и загрузите файл Arduino-keyboard-0.3.hex.
- В окне FLIP вы должны увидеть три раздела: поток операций, информация о буфере FLASH и ATmega16U2. В потоке операций установите флажки «Стереть», «Программировать» и «Проверить», затем нажмите «Выполнить».
- По завершении этого процесса нажмите Start Application в разделе ATmega16U2.
- Включите цикл Arduino, отключив его от компьютера и снова подключив.
- Теперь, когда вы перейдете в диспетчер устройств, в разделе «Клавиатуры» должно появиться новое устройство HID Keyboard.
- Откройте блокнот или любой текстовый редактор и начните перемещать джойстик. Вы должны увидеть набираемые числа!
Если вы хотите изменить код в скетче 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 минут:
- Зарегистрируйте учетную запись и войдите в систему
- Перейдите на вкладку «Интернет» и нажмите «Добавить новое веб-приложение», выберите Flask и Python 3.6.
- Скопируйте flask_app.py в каталог / mysite
- Скопируйте robot_stream.html в каталог / mysite / templates
- Нажмите «Обновить».
И… все готово!
Отказ от ответственности: этот сетевой рабочий процесс быстр и прост, но очень далек от идеала. RTMP или сокеты больше подходят для потоковой передачи, но они не поддерживаются на PA и требуют некоторого опыта работы с сетью и настройкой сервера. Также рекомендуется добавить некоторый механизм безопасности для управления доступом.
Шаг 15: Собираем все вместе
Теперь включите своего робота, запустите handlers.py на компьютере (подключенном к той же сети, что и робот), и вы сможете управлять роботом из браузера на основе заданного вами URL-адреса из любого места, где захотите. (например,
Рекомендуемые:
Детектор присутствия кровати Zigbee: 8 шагов
Детектор присутствия кровати Zigbee: какое-то время я искал способ определить, когда мы находимся в постели. Это для использования этой информации в Homeassistant. Обладая этой информацией, я мог бы автоматизировать выключение света на ночь или, например, активировать систему сигнализации в моем доме
Термостат Nest, отслеживание присутствия: 12 шагов
Nest Thermostat, отслеживание присутствия: Моя домашняя автоматизация охлаждения с использованием моего Nest Thermostat до недавнего времени управлялась IFTTT с использованием Life360 «первым прибыл домой»; и "последний, кто ушел из дома" триггеры. Это было здорово, потому что я мог добавлять членов семьи в мою Ли
Робот дистанционного присутствия Snap Circuits: 9 шагов
Робот телеприсутствия Snap Circuits: праздники в 2020 году немного другие. Моя семья разбросана по стране, и из-за пандемии мы не можем собираться вместе на праздники. Я хотел, чтобы бабушка и дедушка чувствовали себя причастными к празднованию Дня Благодарения. Телепрез
Датчик присутствия: 12 шагов
Датчик присутствия: носимые устройства обычно являются устройствами с поддержкой BLE. Для них характерно периодически анонсировать некоторые данные по своему MAC-адресу. Мы используем ESP для сканирования этих данных и запуска события через Интернет, когда он находит определенный MAC-адрес. Этот конкретный
Код виртуального организатора: завершающее задание (Ванесса): 10 шагов
Код виртуального органайзера: завершающая задача (Ванесса): В моем коде я создал виртуальный органайзер, который подсчитывал оценки и позволял пользователю записывать события для каждого дня недели. Код предназначен только для демонстрационных целей