Съдържание:

Робот за виртуално присъствие: 15 стъпки
Робот за виртуално присъствие: 15 стъпки

Видео: Робот за виртуално присъствие: 15 стъпки

Видео: Робот за виртуално присъствие: 15 стъпки
Видео: НОВИНКА!!! Радиоприемник TECSUN PL320 #tecsun 2024, Ноември
Anonim
Image
Image
Мобилен робот автомобил
Мобилен робот автомобил

Този мобилен робот взаимодейства с физическото си обкръжение, като представлява „виртуалното присъствие“на лицето, което го управлява дистанционно. Той може да бъде достъпен от всеки, навсякъде по света, за да раздава лакомства и да играе с вас.

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

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

Консумативи

Проектът има 4 основни части - мобилен робот -кола, дозатор за чипове, джойстик и настройка за мрежова комуникация.

Мобилен робот -кола

  • Платка
  • Комплект от 2 двигателя за задвижване на колелата и робот на шасито (включва колела, DC двигатели, монтажна платка и винтове)
  • Arduino Mega 2560 (ако изграждате без сензор за разстояние или дозатор за чипове, Uno ще има достатъчно щифтове)
  • (3) 9V батерии (имайте още няколко, тъй като ще ги източите за отстраняване на грешки)
  • LM2596 Захранващ модул DC/DC Buck 3A регулатор (или подобен)
  • ESP32-CAM Wifi модул
  • FT232RL FTDI USB към TTL сериен конвертор (за програмиране на ESP32-CAM)
  • HC-SR04 ултразвуков сензор за разстояние
  • L298N шофьор на мотор
  • (3) LED (всеки цвят)
  • (3) 220 ома резистори

Дозатор за чипс

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

Джойстик

  • Arduino Uno
  • Модул с джойстик
  • Мини табла, (1) LED, (1) 220 Ohm резистор (по избор)

Други

Много кабели за прескачане на платки Допълнителен картон / картон Лента НожициВладетел / Измервателна лента Малка отвертка Philips Малка плоска отвертка

Търпение =)

Стъпка 1: Мобилен робот -кола

Шасито Robot Car служи като мобилна платформа, с 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 и го фиксирайте до сензора за разстояние близо до предната част на робота. Не забравяйте, че този доста енергоемък компонент изисква собствена батерия и DC регулатор.

Стъпка 6: Мобилна роботизирана кола - монтаж (дозатор за чипове)

Мобилен робот -кола - монтаж (дозатор за чипове)
Мобилен робот -кола - монтаж (дозатор за чипове)

Сега, нека добавим дозатора за чипове (повече за това в раздела "Дозатор за чипове"). Свържете двата сервомотора според диаграмата на Fritzing и фиксирайте дозатора в опашката на робота.

Стъпка 7: Мобилна роботизирана кола - сглобяване (бисквитки!)

Мобилен робот -кола - монтаж (бисквитки!)
Мобилен робот -кола - монтаж (бисквитки!)

Накрая добавяме лакомства към дозатора!

Стъпка 8: Мобилна роботизирана кола - код на Arduino

RobotCar_Code е кодът, който ще трябва да заредите на Arduino Mega.

Ето как работи: Arduino слуша байтове, изпратени от ESP32 чрез серийна комуникация в лентата 115200. Въз основа на получения байт, колата ще се движи напред, назад, наляво, надясно и т.н., като изпраща или ВИСОКО или НИСКО напрежение към двигателите, за да контролира посоката, както и PWM променлива между 0-255 за контрол на скоростта. За да се избегнат сблъсъци, този код също чете стойностите, идващи от сензора за разстояние и ако разстоянието е по -малко от определен праг, роботът няма да се придвижи напред. И накрая, ако Arduino получи команда за раздаване на лакомство, той ще активира сервомоторите в дозатора за чипове.

Стъпка 9: Мобилна роботизирана кола - ESP32 код

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

  • ESP32_Code.ino е кодът за ESP32 да изпраща информация до Arduino
  • app_httpd.cpp е кодът, необходим за уеб сървъра ESP32 по подразбиране и настройва функцията да слуша натискания на клавиши. Подходящ за отстраняване на грешки и тестване на локален wifi. Не се използва за комуникация извън локалната мрежа.
  • camera_index.h е html кодът за уеб приложението по подразбиране
  • camera_pins.h определя пиновете в зависимост от модела ESP32

Кодът ESP32 използва Wifi библиотеката, както и добавката ESP32, която може да бъде инсталирана в Arduino IDE, като изпълните следните стъпки:

  1. В IDE на Arduino отидете на Файл> Предпочитания
  2. След това в раздела Настройки под URL на допълнителен мениджър на табла въведете следното „https://dl.espressif.com/dl/package_esp32_index.json“
  3. Сега отворете Boards Manager и отидете на Tools> Board> Boards Manager и потърсете ESP32, като напишете „ESP32“
  4. Трябва да видите „esp32 от Espressif Systems“. Щракнете върху Инсталиране.
  5. Сега трябва да се инсталира добавката ESP32. За да проверите, върнете се към Arduino IDE и отидете в Инструменти> Борд и изберете „ESP32 модул за грешки“.
  6. Отново отидете на Инструменти> Скорост на качване и го задайте на "115200".
  7. И накрая, отидете на Инструменти> Схема на дяловете и го задайте на „Огромно приложение (3MB без OTA/1MB SPIFFS)
  8. След като приключите с това, препоръчвам да следвате този урок от RandomNerdTutorials, който обяснява подробно как да финализирате настройката на ESP32 и да качите код с програмиста FTDI Програмиране на ESP32

Стъпка 10: Дозатор за чипове

Дозатор за чипс
Дозатор за чипс

Дозаторът за чипс е евтино допълнение към мобилния робот, което му позволява да въздейства на местната среда и да взаимодейства с хора / животни, оставяйки вкусно лакомство. Състои се от картонена външна кутия с 2 сервомотора, монтирани вътре, както и вътрешна картонена касета, която държи предмети (като бонбони или кучешки лакомства) за разпределяне. Едното серво действа като порта, докато другото изтласква елемента навън.

*Всички размери са в милиметри

Стъпка 11: Джойстик

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

Въпреки че може да бъде забавно да управлявате робот с клавиатурата, е още по -забавно и интуитивно да използвате джойстик, където роботът реагира директно според посоката, която натискате. Тъй като този робот се задейства чрез натискане на клавиши, записани на уеб страницата, ние се нуждаехме от джойстика, за да подражаваме на клавиатурата. По този начин потребителите без джойстик все още могат да управляват робота директно от клавиатура, но други могат да използват джойстика.

За това имахме само Arduino Uno, който няма възможност да използва библиотеката, затова го програмирахме директно с помощта на USB протокол, известен като Device Firmware Update (DFU), който позволява на arduino да се мига с общ USB HID фърмуер на клавиатурата. С други думи, когато arduino е включен в usb, той вече не се разпознава като arduino, а като клавиатура!

Стъпка 12: Джойстик - Електрическа схема

Джойстик - Електрическа схема
Джойстик - Електрическа схема

Ето как свързахме джойстика.

Стъпка 13: Джойстик - емулатор на клавиатура

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

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

  1. Изтеглете FLIP програмист на Atmel от тук
  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, за да го прехвърлим с 3 отделни файла и да го превърнем в клавиатура.

Ако сте изключили 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. След като този процес приключи, щракнете върху Старт на приложението в раздела ATmega16U2.
  8. Включете цикъла на arduino, като го изключите от компютъра и го включите отново.
  9. Нулирайте Arduino Uno, като за кратко свържете захранването към земята.
  10. Отворете IDE на Arduino и качете файла JoyStickControl_Code.ino на дъската.
  11. Включете цикъла на arduino, като го изключите от компютъра и го включите отново.
  12. Нулирайте arduino, като за кратко свържете захранването към земята.
  13. Върнете се към FLIP, уверете се, че Изборът на устройство казва Atmega16U2
  14. Щракнете върху Изберете носител за комуникация и изберете USB.
  15. Отидете на File> Load Hex File> и качете файла Arduino-keyboard-0.3.hex
  16. В прозореца FLIP трябва да видите три раздела: Операционен поток, FLASH буферна информация и ATmega16U2. В операционния поток поставете отметки в квадратчетата за Изтриване, Програмиране и Проверяване, след което щракнете върху Изпълни.
  17. След като този процес приключи, щракнете върху Старт на приложението в раздела ATmega16U2.
  18. Включете цикъла на arduino, като го изключите от компютъра и го включите отново.
  19. Сега, когато отидете в Device Manager, трябва да има ново HID Keyboard Device под Keyboards.
  20. Отворете бележник или друг текстов редактор и започнете да премествате джойстика. Трябва да видите въвеждането на числа!

Ако искате да промените кода в скицата на Arduino, например да напишете нови команди към джойстика, ще трябва да го мигате с всичките 3 файла всеки път.

Някои полезни връзки: 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 адреса, който сте задали от където и да искате. (например

Препоръчано: