Виртуалдык бар болуу роботу: 15 кадам
Виртуалдык бар болуу роботу: 15 кадам
Anonim
Image
Image
Мобилдик робот машина
Мобилдик робот машина

Бул мобилдик робот алыстан башкарган адамдын "виртуалдык катышуусун" көрсөтүү менен өзүнүн физикалык чөйрөсү менен өз ара аракеттенет. Бул дүйнөнүн каалаган жеринде, каалаган адамга жеткиликтүү болот, таттууларды таратуу жана сиз менен ойноо.

Бул жердеги иш алыскы өз ара аракеттенүү үчүн физикалык интерфейс түзүү аркылуу интернетке негизделген байланыштын салттуу каражаттарынан ары өтүү аракети катары эки адам тарабынан (бири Германияда, бири АКШда) иштелип чыккан. COVID-19 дүйнөгө таасирин тийгизүүнү улантып жаткандыктан жана ар бир адам физикалык таасирибизди чектөөгө жооптуу болгондуктан, биз физикалык өз ара аракеттенүүнүн бир бөлүгү болгон материалдык байланышты кайра кайтарууга аракет кылабыз.

Бул ESP32-Камера-Робот-FPV-Мугалим-Кирүү Инструкциялуу жана аралык сенсорун, диспенсерди жана "дүйнөнүн каалаган жеринен башкаруу" мүмкүнчүлүгүн камтуу үчүн өзгөртүлгөн, эгер сизде бир аз туруктуу интернет байланышы болсо.

Жабдуулар

Долбоор 4 негизги бөлүктөн турат - Мобилдик робот машина, чип диспенсер, джойстик жана тармактык байланышты орнотуу.

Мобилдик робот машина

  • Breadboard
  • 2 Wheel Drive Motor жана Chassis Robot Kit (дөңгөлөктөрдү, DC кыймылдаткычтарын, монтаж тактасын жана бурамаларды камтыйт)
  • Arduino Mega 2560 (эгер сиз аралыкты сенсорсуз же чип диспенсерсиз курсаңыз, анда Unoдо казыктар жетиштүү болот)
  • (3) 9V Батарейкалар (дагы бир нече тегерегиңиз бар, анткени сиз аларды мүчүлүштүктөрдү жоюп саласыз)
  • LM2596 Power Supply Module DC/DC Buck 3A Regulator (же окшош)
  • ESP32-CAM Wifi модулу
  • FT232RL FTDI USB TTL Сериялык Конвертерине (ESP32-CAM программалоо үчүн)
  • HC-SR04 Ultrasonic Distance Sensor
  • L298N мотор айдоочу
  • (3) LED (каалаган түс)
  • (3) 220 Ом резисторлор

Chip Dispenser

  • (2) SG90 сервистери
  • Картон / картон

Джойстик

  • Arduino Uno
  • Джойстик модулу
  • Mini Breadboard, (1) LED, (1) 220 Ohm Resistor (милдеттүү эмес)

Башка

Банттагы көп секиргич зымдар Экстра картон / картон тасма скиссорлор сызгыч / өлчөө тасмасы Кичине Philips бурагыч кичинекей жалпак бурагыч

Сабыр =)

1 -кадам: Мобилдик робот унаа

Robot Car шасси мобилдүү платформа катары кызмат кылат, Arduino MEGA моторлорду башкаруучу, сенсордук маанилерди окуган жана серволорду иштетүүчү негизги микро контроллер. Көпчүлүк аракеттер Arduino MEGAга ESP32-CAMден жөнөтүлгөн сериялык байланыш аркылуу буйруктарды алуу аркылуу жасалат. ESP32 роботту көзөмөлдөө үчүн камера түз агымын камсыз кылса, анын башка функциясы робот менен сервердин ортосундагы зымсыз байланышты башкаруу, ошондуктан колдонуучуларга аны дүйнөнүн каалаган жеринен башкарууга мүмкүндүк берет. ESP32 веб -баракчадан буйруктарды басуу аркылуу алат жана аларды Arduino MEGAга char мааниси катары жөнөтөт. Алынган наркка негизделген унаа алдыга, артка кетет ж.б.. Анткени интернет аркылуу алыстан башкаруу тышкы факторлорго, анын ичинде жогорку кечигүүгө, агымдын сапатына, ал тургай ажыратылууларга көз каранды болгондуктан, роботтун кулашына жол бербөө үчүн аралык сенсору киргизилген. ESP32 чипинин кубаттуулугу жогору жана өзгөрмөлүү болгондуктан, батареянын кубаттуулугу менен колдонуу сунушталат (электр схемасын караңыз).

2 -кадам: Мобилдик робот унаа - Райондук диаграмма

Мобилдик робот унаа - Райондук диаграмма
Мобилдик робот унаа - Райондук диаграмма

Биз бул кадамды этап -этабы менен чогултуу аркылуу сизге жол көрсөтөбүз.

3 -кадам: Мобилдик робот - Ассамблея (Моторлор)

Мобилдик робот - Ассамблея (Моторлор)
Мобилдик робот - Ассамблея (Моторлор)

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

4 -кадам: Мобилдик робот унаа - Ассамблея (Алыстык сенсору)

Мобилдик робот унаа - Ассамблея (аралык сенсор)
Мобилдик робот унаа - Ассамблея (аралык сенсор)

Байланыш үчүн бир нече компоненттер бар болгондуктан, келгиле, панельди кошолу, ошондо биз бийликти жана жалпы жерди оңой туташтыра алабыз. Зымдарды кайра уюштургандан кийин, аралык сенсорун туташтырып, роботтун маңдайына оңдоңуз.

5 -кадам: Мобилдик робот - Ассамблея (ESP32 CAM)

Мобилдик робот унаа - Ассамблея (ESP32 CAM)
Мобилдик робот унаа - Ассамблея (ESP32 CAM)

Андан кийин, ESP32-CAM модулун туташтырып, роботтун маңдайындагы дистанция сенсорунун жанына оңдоңуз. Эсиңизде болсун, бул энергияга абдан муктаж компонент өзүнүн батарейкасын жана DC-жөндөгүчүн талап кылат.

6 -кадам: Мобилдик робот унаа - Ассамблея (Chip Dispenser)

Мобилдик робот унаа - Ассамблея (Chip Dispenser)
Мобилдик робот унаа - Ассамблея (Chip Dispenser)

Эми, келгиле, чип-диспенсерди кошолу (бул тууралуу кененирээк "Chip Dispenser" бөлүмүндө). Фритзинг диаграммасына ылайык эки сервопроводду туташтырып, диспенсерди роботтун куйругуна бекит.

7 -кадам: Мобилдик робот машина - Ассамблея (Cookies!)

Мобилдик робот унаа - Ассамблея (Cookies!)
Мобилдик робот унаа - Ассамблея (Cookies!)

Акыр -аягы, биз диспенсерге таттууларды кошобуз!

8 -кадам: Мобилдик робот унаа - Arduino Code

RobotCar_Code - бул Arduino Megaге жүктөө керек болгон код.

Бул кантип иштейт: Arduino 115200 тилкесиндеги сериялык байланыш аркылуу ESP32ден жөнөтүлгөн байттарды угат. Алынган байтка негизделген унаа алдыга, артка, солго, оңго ж. Чыр -чатакты болтурбоо үчүн бул код дистанциянын сенсорунан келген маанилерди окуйт жана эгер аралык белгиленген чектен аз болсо, робот алдыга жылбайт. Акыр -аягы, эгер Arduino дарылоону тапшыруу буйругун алса, анда чип диспенсериндеги серволорду иштетет.

9 -кадам: Мобилдик робот унаа - ESP32 коду

ESP32 Wifi аркылуу сервер менен Arduino ортосунда байланышууга мүмкүндүк берет. Бул Arduinoдон өзүнчө программаланган жана өзүнүн коду бар:

  • ESP32_Code.ino - бул Arduinoго маалымат жөнөтүүчү ESP32 коду
  • app_httpd.cpp - бул демейки ESP32 веб -сервери үчүн керектүү код жана баскычтарды угуу үчүн функцияны орнотуу. Мүчүлүштүктөрдү оңдоо жана жергиликтүү WiFiда текшерүү үчүн жакшы. Ал жергиликтүү тармактан тышкары байланыш үчүн колдонулбайт.
  • camera_index.h - демейки веб тиркеме үчүн html коду
  • camera_pins.h ESP32 моделине жараша төөнөгүчтөрдү аныктайт

ESP32 коду төмөнкү кадамдарды аткаруу менен Arduino IDEге орнотула турган Wifi китепканасын жана ESP32 кошумчасын колдонот:

  1. Arduino IDEде Файл> Тандоолорго өтүңүз
  2. Андан кийин Орнотуулар өтмөгүнө кошумча такталар менеджеринин URL дарегине төмөнкү "https://dl.espressif.com/dl/package_esp32_index.json" киргизиңиз
  3. Эми Такта менеджерин ачыңыз жана Куралдар> Такта> Такта менеджерине өтүңүз жана "ESP32" деп терүү менен ESP32 издеңиз.
  4. Сиз "Espressif Systems by esp32" көрүшүңүз керек. Орнотууну басыңыз.
  5. Эми ESP32 кошумча орнотулушу керек. Текшерүү үчүн Arduino IDEге кайтыңыз жана Tools> Boardго өтүңүз жана "ESP32 Wrover Module" тандаңыз.
  6. Кайра куралдар> Жүктөө ылдамдыгына барып, аны "115200" деп коюңуз.
  7. Акырында, Tools> Partition Scheme бөлүмүнө өтүп, "Huge APP (3MB No OTA/1MB SPIFFS)
  8. Сиз муну аяктагандан кийин, мен RandomNerdTutorials тарабынан бул үйрөткүчтү аткарууну сунуштайм, ал ESP32ди кантип орнотууну аягына чыгарууну жана FTDI Программисти менен кодду жүктөөнү деталдуу түрдө түшүндүрөт.

10 -кадам: Чип диспенсери

Chip Dispenser
Chip Dispenser

Chip Dispenser - бул мобилдик роботко арзан кошумча, ал жергиликтүү чөйрөгө таасирин тийгизип, адамдар / жаныбарлар менен даамдуу мамиле жасоо менен мамиле түзүүгө мүмкүндүк берет. Ал картон таштан жасалган сырткы кутудан турат, ичине 2 сервосу орнотулган, ошондой эле таркатуу үчүн буюмдарды (мисалы, момпосуй же иттер үчүн) камтыган ички картон картриджинен турат. Бир серво дарбазанын милдетин аткарат, экинчиси нерсени сыртка сүрүп чыгарат.

*Бардык өлчөмдөр миллиметрде

11 -кадам: Джойстик

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

Роботту клавиатура менен башкаруу кызыктуу болсо да, джойстикти колдонуу ого бетер кызыктуу жана интуитивдүү, анда робот сиз баскан багытка түз жооп берет. Бул робот веб -баракчага жазылган баскычтар аркылуу ишке киргендиктен, клавиатураны тууроо үчүн бизге джойстик керек болчу. Ошентип, джойстиксиз колдонуучулар роботту клавиатурадан түз башкара алышат, бирок башкалар джойстикти колдоно алышат.

Бул үчүн бизде китепкананы колдонуу мүмкүнчүлүгү жок Arduino Uno гана болгон, ошондуктан биз аны түздөн -түз USB HID клавиатура камтылган программасы менен ардуинону жаркырата турган Device Firmware Update (DFU) деп аталган USB протоколу аркылуу программаладык.. Башкача айтканда, arduino USBге туташтырылганда, ал мындан ары ардуино катары эмес, клавиатура катары таанылат!

12 -кадам: Джойстик - Райондук диаграмма

Джойстик - Райондук диаграмма
Джойстик - Райондук диаграмма

Мына биз джойстикти кантип туташтырдык.

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

Сиздин Arduino Uno клавиатурага окшош болушу үчүн, Arduinoдогу Atmega16u2 чипин түзмөктүн жабдыктарын кол менен жаңыртуу (DFU) аркылуу түз программалашыңыз керек. Төмөнкү кадамдар Windows машинасынын процессин сүрөттөйт жана биз чуркаган кээ бир маселелерден качууга жардам берет деп үмүттөнөбүз.

Биринчи кадам - бул Arduinoго Atmel usb драйверин кол менен жазуу, андыктан ал FLIP программисти менен жаркыроого мүмкүндүк берген Arduino эмес, USB катары таанылат.

  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. Эми түзмөк менеджерине кайтып келиңиз, анда Arduino Uno менен ATmega16u2 деп белгиленген "Atmel USB түзмөктөрүн" көрүшүңүз керек!

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

Эгерде сиз биринчи бөлүктөн кийин Arduino Unoңузду сууруп салсаңыз, аны кайра туташтырыңыз.

  1. FLIPти ачуу
  2. Күчтү жерге кыскача туташтыруу менен Arduino Uno баштапкы абалга келтирүү.
  3. Түзмөктү тандоо (микрочип сыяктуу сөлөкөт) чыкылдатып, ATmega16U2 тандаңыз
  4. Байланыш каражатын тандоо (USB кабели сыяктуу сөлөкөт) чыкылдатып, USB тандаңыз. Эгерде сиз биринчи бөлүктү туура толтурсаңыз, башка боз баскычтар колдонууга жарамдуу болушу керек.
  5. Файлга өтүү> Hex File жүктөө> жана Arduino-usbserial-uno.hex файлын жүктөө
  6. FLIP терезесинде сиз үч бөлүмдү көрүшүңүз керек: Operations Flow, FLASH Buffer Information жана ATmega16U2. Операциялар агымында Тазалоо, Программа жана Текшерүү үчүн кутучаларды белгилеңиз, анан Иштетүүнү басыңыз.
  7. Бул процесс аяктагандан кийин, ATmega16U2 бөлүмүндөгү Колдонмону Баштоону басыңыз.
  8. Ардуинону компьютерден сууруп, кайра туташтырып циклге киргизиңиз.
  9. Күчтү жерге кыскача туташтыруу менен Arduino Uno баштапкы абалга келтирүү.
  10. Arduino IDE ачыңыз жана JoyStickControl_Code.ino файлын тактага жүктөңүз.
  11. Ардуинону компьютерден сууруп, кайра туташтырып циклге киргизиңиз.
  12. Ардуинону баштапкы абалга кыскача туташтыруу менен баштапкы абалга келтирүү.
  13. FLIPке кайтып барыңыз, Түзмөктү тандоо Atmega16U2 деп жазылганын текшериңиз
  14. Байланыш каражатын тандоо чыкылдатыңыз жана USB тандаңыз.
  15. Файлга өтүү> Hex File жүктөө> жана Arduino-keyboard-0.3.hex файлын жүктөө
  16. FLIP терезесинде сиз үч бөлүмдү көрүшүңүз керек: Operations Flow, FLASH Buffer Information жана ATmega16U2. Операциялар агымында Тазалоо, Программа жана Текшерүү үчүн кутучаларды белгилеңиз, анан Иштетүүнү басыңыз.
  17. Бул процесс аяктагандан кийин, ATmega16U2 бөлүмүндөгү Колдонмону Баштоону басыңыз.
  18. Ардуинону компьютерден ажыратып, кайра туташтырып циклге киргизиңиз.
  19. Эми сиз Түзмөк менеджерине барганда, баскычтоптун астында жаңы HID клавиатура түзмөгү болушу керек.
  20. Блокнотту же каалаган текст редакторун ачып, джойстикти жылдырууну баштаңыз. Сиз терилген сандарды көрүшүңүз керек!

Эгерде сиз Arduino эскизиндеги кодду өзгөрткүңүз келсе, мисалы, джойстикке жаңы буйруктарды жазууну кааласаңыз, аны ар бир 3 файл менен жаркылдатып коюңуз.

Кээ бир пайдалуу шилтемелер: Arduino DFUAtLibUsbDfu.dll табылган жок

Бул клавиатура эмулятору Майклдын 2012 -жылдын 24 -июнундагы бул окуу куралына негизделген.

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. "Кайра жүктөөнү" чыкылдатыңыз

Жана … баары даяр!

Disclaimer: Бул тармактык процесс тез жана жөнөкөй, бирок идеалдан алыс. RTMP же розеткалар агым үчүн ылайыктуу болмок, бирок алар ПАда колдоого алынбайт жана тармак жана серверди орнотуу боюнча бир аз тажрыйбаны талап кылат. Ошондой эле кирүүнү көзөмөлдөө үчүн кандайдыр бир коопсуздук механизмин кошуу сунушталат.

15 -кадам: Бардыгын бириктирүү

Эми, роботуңузду күйгүзүңүз, компьютерде handlers.py иштетиңиз (робот менен бир тармакка туташкан), жана сиз каалаган жерден орнотулган urlга негизделген браузерден роботту башкара аласыз. (мис.

Сунушталууда: