Mündəricat:

Virtual Varlıq Robotu: 15 addım
Virtual Varlıq Robotu: 15 addım

Video: Virtual Varlıq Robotu: 15 addım

Video: Virtual Varlıq Robotu: 15 addım
Video: Умное окно - автоматизация проветривания комнаты, интеграция в Home Assistant 2024, Noyabr
Anonim
Image
Image
Mobil Robot Avtomobil
Mobil Robot Avtomobil

Bu mobil robot, uzaqdan idarə edən şəxsin "virtual varlığını" təmsil edərək fiziki ətrafı ilə qarşılıqlı əlaqə qurur. Hər kəs, dünyanın hər yerində, ikram etmək və sizinlə oynamaq üçün əldə edə bilər.

Buradakı iş, uzaqdan qarşılıqlı əlaqə üçün fiziki bir interfeys yaradaraq ənənəvi internetə əsaslanan ünsiyyət vasitələrindən kənara çıxmaq cəhdi olaraq iki nəfər (biri Almaniyada, biri ABŞ-da) tərəfindən hazırlanmışdır. COVID-19 dünyaya təsir etməyə davam edərkən və hər kəs insanlara fiziki təsirimizi məhdudlaşdırmaqdan məsuldur, fiziki qarşılıqlı əlaqənin bir hissəsi olan maddi əlaqəni geri qaytarmağa çalışırıq.

ESP32-Kamera-Robot-FPV-Müəllim-Giriş Təlimata əsaslanan və bir qədər sabit internet bağlantınız olması şərtilə məsafə sensoru, dispenser və "dünyanın hər yerindən idarəetmə" qabiliyyətini daxil etmək üçün dəyişdirilmişdir.

Təchizat

Layihə 4 əsas hissədən ibarətdir - Mobil Robot Avtomobil, Çip Dağıtıcı, Joystick və Şəbəkə Rabitəsi Quraşdırması.

Mobil Robot Avtomobil

  • Çörək lövhəsi
  • 2 Təkərli Sürücü Motoru və Şassi Robot Kiti (təkərlər, DC mühərrikləri, montaj lövhəsi və vintlər daxildir)
  • Arduino Mega 2560 (məsafə sensoru və ya çip dispenseri olmadan qurarsanız Uno -da kifayət qədər sancaqlar olacaq)
  • (3) 9V Batareyalar (onları düzəltmək üçün boşaltacağınız üçün ətrafınızda daha bir neçə var)
  • LM2596 Güc Təchizatı Modulu DC/DC Buck 3A Tənzimləyicisi (və ya bənzəri)
  • ESP32-CAM Wifi Modulu
  • FT232RL FTDI USB-dən TTL Serial Dönüştürücüsü (ESP32-CAM-ı proqramlaşdırmaq üçün)
  • HC-SR04 Ultrasonik Məsafə Sensoru
  • L298N motor sürücü
  • (3) LEDlər (istənilən rəng)
  • (3) 220 Ohm Rezistorlar

Çip Dağıtıcı

  • (2) SG90 servoları
  • Karton / Karton

Joystick

  • Arduino Uno
  • Joystick Modulu
  • Mini Breadboard, (1) LED, (1) 220 Ohm Rezistor (isteğe bağlı)

Digər

Çoxlu Breadboard Jumper Telleri Əlavə Karton / Karton Lent Makas Cetvel / Ölçmə Bantı Kiçik Philips Tornavida Kiçik Düz Tornavida

Səbr =)

Addım 1: Mobil Robot Avtomobil

Robot Car şassisi, motorları idarə edən, sensor dəyərlərini oxuyan və servoları işə salan əsas mikro nəzarətçi olaraq Arduino MEGA ilə birlikdə mobil platforma kimi xidmət edir. Əksər əməliyyatlar, Arduino MEGA-nın ESP32-CAM-dan göndərilən ardıcıl əlaqə vasitəsi ilə əmrləri alaraq həyata keçirilir. ESP32, robotu idarə etmək üçün kamera canlı axını təmin edərkən, digər funksiyası da istifadəçilərə dünyanın hər yerindən idarə etməyə imkan verən robotla server arasında simsiz əlaqəni idarə etməkdir. ESP32, düyməni basaraq veb səhifədən əmrlər alır və onları char dəyərləri olaraq Arduino MEGA -ya göndərir. Alınan dəyərə görə avtomobil irəli, geriyə və s gedəcək. İnternet üzərindən uzaqdan idarəetmə, yüksək gecikmə, keyfiyyətsiz axın keyfiyyəti və hətta kəsilmələr də daxil olmaqla bir çox xarici faktorlardan asılı olduğu üçün robotun qəzaya uğramaması üçün bir məsafə sensoru quraşdırılmışdır. *ESP32 çipinin yüksək və dəyişkən güc tələbləri səbəbindən, batareya enerjisi ilə istifadə etmək üçün bir Güc Təchizatı Tənzimləyicisi tövsiyə olunur (bağlama sxeminə baxın).

Addım 2: Mobil Robot Avtomobil - Dövrə Şeması

Mobil Robot Avtomobil - Dövrə Diaqramı
Mobil Robot Avtomobil - Dövrə Diaqramı

Bu addım -addım montajı sizə təqdim edəcəyik.

Addım 3: Mobil Robot Avtomobil - Quraşdırma (Motors)

Mobil Robot Avtomobil - Quraşdırma (Motors)
Mobil Robot Avtomobil - Quraşdırma (Motors)

2WD şassini yığdıqdan sonra mühərrikləri və batareyanı L298N sürücüsü vasitəsilə Arduino MEGA -ya bağlayaraq işə başlayırıq.

Addım 4: Mobil Robot Avtomobil - Quraşdırma (Məsafə Sensoru)

Mobil Robot Avtomobil - Quraşdırma (Məsafə Sensoru)
Mobil Robot Avtomobil - Quraşdırma (Məsafə Sensoru)

Qoşulmaq üçün bir neçə komponent olduğundan, bir çörək taxtası əlavə edək ki, gücü və paylaşılan zəmini daha asan birləşdirə bilək. Telləri yenidən təşkil etdikdən sonra, məsafə sensörünü bağlayın və robotun önünə düzəldin.

Addım 5: Mobil Robot Avtomobil - Montaj (ESP32 CAM)

Mobil Robot Avtomobil - Quraşdırma (ESP32 CAM)
Mobil Robot Avtomobil - Quraşdırma (ESP32 CAM)

Sonra, ESP32-CAM modulunu qoşun və robotun önündəki məsafə sensoru yanında düzəldin. Unutmayın ki, kifayət qədər enerji tələb edən komponentə öz batareyası və DC tənzimləyicisi lazımdır.

Addım 6: Mobil Robot Avtomobil - Quraşdırma (Çip Dağıtıcı)

Mobil Robot Avtomobil - Quraşdırma (Chip Dispenser)
Mobil Robot Avtomobil - Quraşdırma (Chip Dispenser)

İndi çip-dispenseri əlavə edək (bu barədə daha ətraflı "Çip Dağıtıcı" bölməsində). Fritzing diaqramına uyğun olaraq iki servo tel bağlayın və dispenseri robotun quyruğuna düzəldin.

Addım 7: Mobil Robot Avtomobil - Quraşdırma (Çerezlər!)

Mobil Robot Avtomobil - Quraşdırma (Çerezlər!)
Mobil Robot Avtomobil - Quraşdırma (Çerezlər!)

Nəhayət, dispenserə yeməklər əlavə edirik!

Addım 8: Mobil Robot Avtomobil - Arduino Kodu

RobotCar_Code, Arduino Mega -ya yükləməyiniz lazım olan koddur.

İşləmə qaydası budur: Arduino, 115200 diapazonunda serial rabitə vasitəsi ilə ESP32 -dən göndərilən baytları dinləyir. Alınan bayta əsasən, avtomobil istiqaməti idarə etmək üçün mühərriklərə ya YÜKSƏK və ya DÜŞÜK gərginlik göndərərək həm də sürəti idarə etmək üçün 0-255 arasında bir PWM dəyişəni göndərərək irəli, geriyə, sola, sağa və s. Toqquşmaların qarşısını almaq üçün bu kod məsafə sensorundan daxil olan dəyərləri də oxuyur və əgər məsafə müəyyən edilmiş bir həddən azdırsa, robot irəli getməyəcək. Nəhayət, Arduino bir müalicə vermək üçün bir əmr alarsa, Chip Dispenserdəki servoları aktivləşdirəcək.

Addım 9: Mobil Robot Avtomobil - ESP32 Kodu

ESP32, Wifi vasitəsilə server və Arduino arasında əlaqə qurmağa imkan verir. Arduinodan ayrı olaraq proqramlaşdırılıb və öz kodu var:

  • ESP32_Code.ino, Arduinoya məlumat göndərmək üçün ESP32 kodudur
  • app_httpd.cpp, standart ESP32 veb serveri üçün lazım olan koddur və düyməni basmaq üçün dinləmək funksiyasını təyin edir. Yerli wifi -də ayıklama və sınaq üçün yaxşıdır. Yerli şəbəkədən kənarda ünsiyyət üçün istifadə edilmir.
  • camera_index.h, standart veb tətbiqi üçün html kodudur
  • camera_pins.h, pinləri ESP32 modelindən asılı olaraq təyin edir

ESP32 kodu, bu addımları yerinə yetirərək Arduino IDE-də quraşdırıla bilən Wifi kitabxanasından və ESP32 Əlavəsindən istifadə edir:

  1. Arduino IDE -də Fayl> Tercihlər bölməsinə keçin
  2. Sonra Ayarlar sekmesine Əlavə Panolar Yöneticisi URL'sinin altına aşağıdakı "https://dl.espressif.com/dl/package_esp32_index.json" daxil edin.
  3. İndi lövhələr menecerini açın və alətlər> lövhə> lövhələr menecerinə gedin və "ESP32" yazaraq ESP32 axtarın.
  4. "Espressif Systems by esp32" ni görməlisiniz. Quraşdır düyməsini basın.
  5. İndi ESP32 əlavəsi quraşdırılmalıdır. Yoxlamaq üçün Arduino IDE -yə qayıdın və Alətlər> İdarə Heyətinə gedin və "ESP32 Wrover Modulu" nu seçin.
  6. Yenə Alətlər> Yükləmə Sürətinə gedin və "115200" olaraq təyin edin.
  7. Nəhayət, Alətlər> Bölmə Şemasına keçin və "Böyük APP" (3 MB No OTA/1 MB SPIFFS) olaraq təyin edin.
  8. Bunu tamamladıqdan sonra, ESP32 -nin qurulmasının sona çatması və FTDI Proqramçısı ilə kodun yüklənməsini ətraflı izah edən RandomNerdTutorials tərəfindən verilən bu təlimatı izləməyi məsləhət görürəm.

Addım 10: Chip Dispenser

Çip Dağıtıcı
Çip Dağıtıcı

Chip Dispenser, mobil robotun yerli mühitə təsir etməsinə və ləzzətli bir müalicə buraxaraq insanlarla / heyvanlarla ünsiyyət qurmasına imkan verən ucuz bir əlavədir. İçərisində 2 ədəd servo olan bir karton xarici qutudan, həmçinin əşyaları (konfet və ya it yeməyi kimi) saxlayan daxili karton kartuşdan ibarətdir. Bir servo qapı rolunu oynayır, digəri isə əşyanı itələyir.

*Bütün ölçülər millimetrdir

Addım 11: Joystick

Joystick
Joystick

Robotu klaviatura ilə idarə etmək əyləncəli olsa da, robotun basdığınız istiqamətə birbaşa reaksiya verdiyi joystickdən istifadə etmək daha da əyləncəli və intuitivdir. Bu robot veb səhifədə yazılmış düymələr vasitəsilə işə salındığından klaviaturanı təqlid etmək üçün joystickə ehtiyacımız var idi. Bu şəkildə joystick olmayan istifadəçilər robotu birbaşa klaviatura vasitəsi ilə idarə edə bilərlər, digərləri isə joystickdən istifadə edə bilərlər.

Bunun üçün yalnız kitabxanadan istifadə etmək qabiliyyətinə malik olmayan bir Arduino Uno var idi, buna görə də onu birbaşa USB HID klaviatura firmware proqramı ilə arduinonun yanmasına imkan verən Cihaz Firmware Güncellemesi (DFU) kimi tanınan bir USB protokolu ilə proqramlaşdırdıq.. Başqa sözlə, arduino usb -ə qoşulduqda artıq arduino kimi deyil, klaviatura kimi tanınır!

Addım 12: Joystick - Dövrə Şeması

Joystick - Dövrə Şeması
Joystick - Dövrə Şeması

Joystick'i necə bağladıq.

Addım 13: Joystick - Klaviatura Emulatoru

Arduino Uno'nun bir klaviatura təqlid etməsi üçün Arduino üzərindəki Atmega16u2 çipini Manual Device Firmware Update (DFU) vasitəsi ilə birbaşa proqramlaşdırmalısınız. Aşağıdakı addımlar bir Windows maşını üçün prosesi təsvir edəcək və inşallah qarşılaşdığımız bəzi problemlərdən qaçınmanıza kömək edəcək.

İlk addım, Atmel usb sürücüsünü Arduino -ya əl ilə yazmaqdır, beləliklə FLIP proqramçısı ilə parlamağa imkan verən bir Arduino deyil, USB olaraq tanınır.

  1. Atmelin FLIP Proqramçısını buradan yükləyin
  2. Arduino Uno -nu qoşun
  3. Cihaz menecerinə gedin və Arduino tapın. COM və ya Naməlum Cihaz altında olacaq. Doğru cihaz olduğundan əmin olmaq üçün onu bağlayın.
  4. Cihaz menecerində Arduino Uno tapdıqdan sonra üzərinə sağ vurun və xassələri seçin> Sürücü> Sürücünü Yeniləyin> Sürücü Proqramı üçün Kompüterimə Gözdən keçirin> Kompüterimdəki mövcud sürücülərin siyahısından seçin> Diskim var> "atmel_usb_dfu.inf" faylını seçin və seçin. Bu, Atmel FLIP Proqramlaşdırıcınızın quraşdırıldığı qovluqda olmalıdır. Kompüterimdə burada: C: / Program Files (x86) Atmel / Flip 3.4.7 / usb / atmel_usb_dfu.inf
  5. Sürücüyü quraşdırın
  6. İndi Cihaz Menecerinə qayıdın, indi ATmega16u2 olaraq etiketlənmiş Arduino Uno ilə "Atmel USB Cihazları" görməlisiniz!

İndi kompüter Arduino Uno -nu USB Cihazı olaraq tanıyanda FLIP Proqramlaşdırıcısından istifadə edərək onu 3 ayrı faylla yandırıb klaviatura halına gətirə bilərik.

Birinci hissədən sonra Arduino Uno -nu ayırdınızsa, yenidən qoşun.

  1. FLIP açın
  2. Arduino Uno -nu qısaca yerə bağlayaraq sıfırlayın.
  3. Cihaz Seçiminə (mikroçip kimi simvol) basın və ATmega16U2 seçin
  4. Ünsiyyət vasitəsi seçin (usb kabeli kimi simvol) düyməsini basın və USB seçin. Birinci hissəni düzgün doldurmusunuzsa, digər boz düymələr istifadəyə veriləcəkdir.
  5. Fayl> Hex Faylını Yükləyin> bölməsinə gedin və Arduino-usbserial-uno.hex faylını yükləyin.
  6. FLIP pəncərəsində üç bölmə görməlisiniz: Əməliyyatlar Akışı, FLASH Tampon Məlumatı və ATmega16U2. Əməliyyat axınında Silmə, Proqramlaşdırma və Doğrulama qutularını işarələyin, sonra Çalıştır düyməsini basın.
  7. Bu proses başa çatdıqdan sonra ATmega16U2 bölməsində Tətbiqə Başla düyməsini basın.
  8. Arduino'yu kompüterdən çıxarıb yenidən qoşaraq dövrəyə qoyun.
  9. Arduino Uno -nu qısaca yerə bağlayaraq sıfırlayın.
  10. Arduino IDE -ni açın və JoyStickControl_Code.ino faylını lövhəyə yükləyin.
  11. Arduino -nu kompüterdən çıxarıb yenidən qoşaraq dövrəyə salın.
  12. Arduino -nu qısaca yerə bağlayaraq sıfırlayın.
  13. FLIP -ə qayıdın, Cihaz Seçimində Atmega16U2 yazdığından əmin olun
  14. Bir Rabitə Ortamı Seçin və USB seçin.
  15. Fayl> Hex Faylını Yüklə> bölməsinə gedin və Arduino-keyboard-0.3.hex faylını yükləyin
  16. FLIP pəncərəsində üç bölmə görməlisiniz: Əməliyyatlar Akışı, FLASH Tampon Məlumatı və ATmega16U2. Əməliyyat axınında Silmə, Proqramlaşdırma və Doğrulama qutularını işarələyin, sonra Çalıştır düyməsini basın.
  17. Bu proses başa çatdıqdan sonra ATmega16U2 bölməsində Tətbiqə Başla düyməsini basın.
  18. Arduino'yu kompüterdən çıxarıb yenidən qoşaraq dövrəyə qoyun.
  19. İndi Cihaz Menecerinə getdiyiniz zaman Klaviatura altında yeni bir HID Klaviatura Cihazı olmalıdır.
  20. Bir notepad və ya hər hansı bir mətn redaktoru açın və joysticki hərəkət etdirməyə başlayın. Nömrələrin yazıldığını görməlisiniz!

Arduino eskizindəki kodu dəyişdirmək istəyirsinizsə, məsələn, joystickə yeni əmrlər yazmaq istəsəniz, hər dəfə bütün 3 faylı yandırmalısınız.

Bəzi faydalı bağlantılar: Arduino DFUAtLibUsbDfu.dll tapılmadı

Bu klaviatura emulyatoru 24 iyun 2012 -ci ildə Michael tərəfindən hazırlanan bu təlimata əsaslanır.

Addım 14: Şəbəkə Rabitəsi

Şəbəkə Rabitəsi
Şəbəkə Rabitəsi

Dünyanın hər yerindən video axını almaq və robotlara əmrlər göndərmək üçün ESP32-CAM-dan məlumat əldə etmə üsuluna ehtiyacımız var. Bu iki hissədən ibarətdir, yerli şəbəkənizdəki bir əlaqə idarəçisi və ümumi bir server. Bunu etmək üçün üç faylı yükləyin:

  • Handlers.py: ESP32-CAM və ümumi serverdən məlumat ötürür (Python 3.8-də sınaqdan keçirilir)
  • Flask_app.py: tətbiqinizin daxil olan istəklərə necə cavab verəcəyini təyin edir.
  • Robot_stream.html: brauzerinizdə video göstərir və klaviatura / joystick vasitəsilə əmrləri dinləyir (Chrome -da sınaqdan keçirilir)

Bağlantı İşləyicisi Bunu birbaşa app_httpd.cpp -də kodlaya bilərsiniz, ancaq daha asan ayıklama üçün eyni şəbəkəyə bağlı bir kompüterdə işləyən Python skriptindən istifadə edirik. Handlers.py açın və IP ünvanını və istifadəçi adını özünüz yeniləyin və getməyə hazırsınız. Bu faylı işə saldığınız zaman axın başlayacaq.

İctimai Server İnternetdəki hər şeyə daxil olmaq üçün seçdiyiniz PaaS ilə bir server aça bilərsiniz. Pythonanywhere (PA) -da bunu qurmaq 5 dəqiqədən az çəkir:

  1. Bir hesab üçün qeydiyyatdan keçin və daxil olun
  2. "Veb" sekmesine keçin və "Yeni bir veb tətbiqi əlavə et" düyməsini basın, Flask və Python 3.6 seçin
  3. Flask_app.py faylını /mysite qovluğuna kopyalayın
  4. Robot_stream.html faylını /mysite /templates qovluğuna kopyalayın
  5. "Yenidən yüklə" düyməsini basın

Və … hər şey hazırdır!

İmtina: Bu şəbəkə iş axını sürətli və sadədir, lakin idealdan çox uzaqdır. RTMP və ya prizlər axın üçün daha uyğun olardı, lakin PA -da dəstəklənmir və şəbəkə qurmaq və server qurmaqla bağlı müəyyən təcrübə tələb edir. Girişə nəzarət etmək üçün bəzi təhlükəsizlik mexanizmləri əlavə etməyiniz tövsiyə olunur.

Addım 15: Hamısını bir yerə yığın

İndi robotunuzu yandırın, kompüterdə handlers.py işləyin (robotla eyni şəbəkəyə qoşulun) və istədiyiniz yerdən təyin etdiyiniz url əsasında bir brauzerdən robotu idarə edə bilərsiniz. (məsələn

Tövsiyə: