İçindekiler:

Sanal Varlık Robotu: 15 Adım
Sanal Varlık Robotu: 15 Adım

Video: Sanal Varlık Robotu: 15 Adım

Video: Sanal Varlık Robotu: 15 Adım
Video: 1.5 MİLYON TL' LİK İŞLEM #kripto #bitcoin #shorts 2024, Kasım
Anonim
Image
Image
Mobil Robot Araba
Mobil Robot Araba

Bu mobil robot, onu uzaktan kontrol eden kişinin "sanal varlığını" temsil ederek fiziksel çevresiyle etkileşime girer. İkramları dağıtmak ve sizinle oynamak için dünyanın herhangi bir yerindeki herkes tarafından erişilebilir.

Buradaki çalışma, iki kişi (biri Almanya'da ve diğeri ABD'de) tarafından, uzaktan etkileşim için fiziksel bir arayüz oluşturarak geleneksel internet tabanlı iletişim araçlarının ötesine geçme girişimi olarak geliştirilmiştir. COVID-19 dünyayı etkilemeye devam ederken ve insanlarla fiziksel maruziyetimizi sınırlamaktan herkes sorumlu olduğundan, fiziksel etkileşimin bir parçası olan somut bağı geri getirmeye çalışıyoruz.

ESP32-Kamera-Robot-FPV-Öğretmen-Giriş Talimatına dayalıdır ve biraz sabit bir internet bağlantınız olması koşuluyla, mesafe sensörü, tedavi dağıtıcısı ve "dünyanın her yerinden kontrol" özelliğini içerecek şekilde modifiye edilmiştir.

Gereçler

Proje, Mobil Robot Arabası, Chip Dağıtıcı, Joystick ve Ağ İletişim Kurulumu olmak üzere 4 ana bölümden oluşmaktadır.

Mobil Robot Araba

  • ekmek tahtası
  • 2 Tekerden Tahrikli Motor ve Şasi Robot Kiti (tekerlekler, DC motorlar, montaj panosu ve vidalar içerir)
  • Arduino Mega 2560 (mesafe sensörü veya Chip Dispenser olmadan kurarsanız, bir Uno'da yeterli pin olacaktır)
  • (3) 9V Piller (hata ayıklamayı boşaltacağınız için birkaç tane daha var)
  • LM2596 Güç Kaynağı Modülü DC/DC Buck 3A Regülatörü (veya benzeri)
  • ESP32-CAM Wifi Modülü
  • FT232RL FTDI USB - TTL Seri Dönüştürücü (ESP32-CAM'i programlamak için)
  • HC-SR04 Ultrasonik Mesafe Sensörü
  • L298N Motor Sürücüsü
  • (3) LED'ler (herhangi bir renk)
  • (3) 220 Ohm Dirençler

çip dağıtıcı

  • (2) SG90 Servolar
  • Karton / Karton

Oyun kolu

  • Arduino Uno'su
  • Joystick Modülü
  • Mini Breadboard, (1) LED, (1) 220 Ohm Direnç (opsiyonel)

Başka

Çok Sayıda Breadboard Jumper TelleriEkstra Karton / KartonBantMakasCetvel / Ölçüm BandıKüçük Philips TornavidaKüçük Düz Başlı Tornavida

sabır =)

Adım 1: Mobil Robot Araba

Robot Araba şasisi, motorları çalıştıran, sensör değerlerini okuyan ve servoları harekete geçiren ana mikro denetleyici olarak bir Arduino MEGA ile mobil bir platform olarak hizmet eder. Çoğu eylem, Arduino MEGA'nın ESP32-CAM'den gönderilen seri iletişim yoluyla komutları almasıyla gerçekleştirilir. ESP32, robotu kontrol etmek için kamera canlı akışı sağlarken, diğer işlevi, robot ile sunucu arasındaki kablosuz bağlantıyı yönetmek ve böylece kullanıcıların dünyanın her yerinden kontrol etmesine izin vermektir. ESP32, web sayfasından tuşa basarak komutları alır ve bunları char değerleri olarak Arduino MEGA'ya gönderir. Alınan değere bağlı olarak araç ileri, geri vb. gidecektir. İnternet üzerinden uzaktan kumanda, yüksek gecikme süresi, düşük akış kalitesi ve hatta bağlantı kesilmeleri gibi birçok dış faktöre bağlı olduğundan, robotun çarpmasını önlemek için bir mesafe sensörü dahil edilmiştir. nesnelere dönüştürün.*ESP32 yongasının yüksek ve dalgalı güç gereksinimleri nedeniyle, pil gücüyle kullanım için bir Güç Kaynağı Düzenleyicisi önerilir (bağlantı şemasına bakın).

Adım 2: Mobil Robot Araba - Devre Şeması

Mobil Robot Araba - Devre Şeması
Mobil Robot Araba - Devre Şeması

Bu montajı adım adım yapmanızda size yol göstereceğiz.

Adım 3: Mobil Robot Araba - Montaj (Motorlar)

Mobil Robot Araba - Montaj (Motorlar)
Mobil Robot Araba - Montaj (Motorlar)

2WD şaseyi monte ettikten sonra L298N sürücüsü üzerinden motorları ve bataryayı Arduino MEGA'ya bağlayarak başlıyoruz.

Adım 4: Mobil Robot Araba - Montaj (Mesafe Sensörü)

Mobil Robot Araba - Montaj (Mesafe Sensörü)
Mobil Robot Araba - Montaj (Mesafe Sensörü)

Bağlanacak epeyce bileşen olduğu için, bir devre tahtası ekleyelim, böylece gücü ve paylaşılan zemini daha kolay bağlayabiliriz. Telleri yeniden düzenledikten sonra mesafe sensörünü bağlayıp robotun önüne sabitliyoruz.

Adım 5: Mobil Robot Araba - Montaj (ESP32 CAM)

Mobil Robot Araba - Montaj (ESP32 CAM)
Mobil Robot Araba - Montaj (ESP32 CAM)

Ardından, ESP32-CAM modülünü bağlayın ve robotun ön tarafındaki mesafe sensörünün yanına sabitleyin. Bu oldukça güç tüketen bileşenin kendi piline ve bir DC regülatörüne ihtiyaç duyduğunu unutmayın.

Adım 6: Mobil Robot Araba - Montaj (Talaş Dağıtıcı)

Mobil Robot Araba - Montaj (Çip Dağıtıcı)
Mobil Robot Araba - Montaj (Çip Dağıtıcı)

Şimdi çip dağıtıcıyı ekleyelim (bununla ilgili daha fazla bilgi "Çip Dağıtıcı" bölümünde). İki servoyu Fritzing şemasına göre bağlayın ve dağıtıcıyı robotun kuyruğuna sabitleyin.

7. Adım: Mobil Robot Araba - Montaj (Çerezler!)

Mobil Robot Araba - Montaj (Çerezler!)
Mobil Robot Araba - Montaj (Çerezler!)

Son olarak, dağıtıcıya ikramlar ekliyoruz!

Adım 8: Mobil Robot Araba - Arduino Kodu

RobotCar_Code, Arduino Mega'ya yüklemeniz gereken koddur.

İşte nasıl çalıştığı: Arduino, 115200 bandında seri iletişim yoluyla ESP32'den gönderilen baytları dinler. Alınan bayta bağlı olarak, yönü kontrol etmek için motorlara YÜKSEK veya DÜŞÜK voltaj ve hızı kontrol etmek için 0-255 arasında bir PWM değişkeni göndererek araç ileri, geri, sola, sağa vb. hareket edecektir. Çarpışmaları önlemek için bu kod aynı zamanda mesafe sensöründen gelen değerleri de okur ve mesafe belirli bir eşikten az ise robot ilerlemeyecektir. Son olarak, Arduino bir ikram dağıtmak için bir komut alırsa, Çip Dağıtıcısındaki servoları etkinleştirir.

Adım 9: Mobil Robot Araba - ESP32 Kodu

ESP32, sunucu ile Arduino arasında Wifi üzerinden iletişime izin verir. Arduino'dan ayrı olarak programlanmıştır ve kendi koduna sahiptir:

  • ESP32_Code.ino, ESP32'nin Arduino'ya bilgi gönderme kodudur.
  • app_httpd.cpp, varsayılan ESP32 web sunucusu için gereken koddur ve işlevi tuş basımlarını dinleyecek şekilde ayarlar. Yerel wifi üzerinde hata ayıklama ve test için iyi. Yerel ağ dışında iletişim için kullanılmaz.
  • camera_index.h, varsayılan web uygulaması için html kodudur
  • camera_pins.h, ESP32 modeline bağlı olarak pinleri tanımlar

ESP32 kodu, aşağıdaki adımları izleyerek Arduino IDE'ye kurulabilen ESP32 Eklentisinin yanı sıra Wifi kitaplığını da kullanır:

  1. Arduino IDE'de Dosya> Tercihler'e gidin
  2. Ardından, Ek Panolar Yöneticisi URL'si altındaki Ayarlar sekmesinde aşağıdaki "https://dl.espressif.com/dl/package_esp32_index.json" girin.
  3. Şimdi Pano Yöneticisini açın ve Araçlar > Pano > Pano Yöneticisi'ne gidin ve "ESP32" yazarak ESP32'yi arayın.
  4. "Espressif Systems tarafından esp32" görmelisiniz. Yükle'yi tıklayın.
  5. Şimdi ESP32 eklentisi yüklenmelidir. Kontrol etmek için Arduino IDE'ye geri dönün ve Araçlar > Pano'ya gidin ve "ESP32 Wrover Modülü"nü seçin.
  6. Tekrar Araçlar > Yükleme Hızı'na gidin ve "115200" olarak ayarlayın.
  7. Son olarak, Araçlar > Partition Scheme'e gidin ve "Huge APP (3MB OTA Yok/1MB SPIFFS)" olarak ayarlayın.
  8. Bunu tamamladıktan sonra, RandomNerdTutorials tarafından ESP32 kurulumunun nasıl sonlandırılacağını ve FTDI Programcısı ile ESP32'yi Programlama ile kodun nasıl yükleneceğini ayrıntılı olarak açıklayan bu öğreticiyi izlemenizi öneririm.

Adım 10: Çip Dağıtıcı

çip dağıtıcı
çip dağıtıcı

Chip Dispenser, yerel çevreyi etkilemesine ve lezzetli bir ikram bırakarak insanlarla / hayvanlarla etkileşime girmesine olanak tanıyan mobil robota ucuz bir eklentidir. İçine monte edilmiş 2 servolu bir karton dış kutunun yanı sıra dağıtılacak öğeleri (şeker veya köpek maması gibi) tutan bir iç karton kartuştan oluşur. Bir servo kapı görevi görürken diğeri öğeyi dışarı iter.

*Tüm boyutlar milimetre cinsindendir.

Adım 11: Oyun çubuğu

Oyun kolu
Oyun kolu

Bir robotu klavyeyle kontrol etmek eğlenceli olsa da, robotun doğrudan bastığınız yöne göre tepki verdiği bir joystick kullanmak daha da eğlenceli ve sezgiseldir. Bu robot, web sayfasında kaydedilen tuşlara basılarak çalıştırıldığından, bir klavyeyi taklit etmek için joystick'imize ihtiyacımız vardı. Bu şekilde joystick'i olmayan kullanıcılar robotu doğrudan klavyeden kontrol edebilir, ancak diğerleri joystick'i kullanabilir.

Bunun için sadece kütüphaneyi kullanma yeteneğine sahip olmayan bir Arduino Uno'muz vardı, bu yüzden onu doğrudan Cihaz Firmware Güncellemesi (DFU) olarak bilinen ve arduino'nun genel bir USB HID klavye bellenimi ile yanıp sönmesine izin veren bir USB protokolünü kullanarak programladık.. Başka bir deyişle, arduino usb'ye takıldığında artık arduino olarak değil klavye olarak tanınır!

Adım 12: Joystick - Devre Şeması

Joystick - Devre Şeması
Joystick - Devre Şeması

Joystick'i şu şekilde bağladık.

Adım 13: Joystick - Klavye Emülatörü

Arduino Uno'nuzun bir klavyeyi taklit etmesi için, Arduino'daki Atmega16u2 yongasını bir Manuel Cihaz Firmware Güncellemesi (DFU) aracılığıyla doğrudan programlamanız gerekir. Aşağıdaki adımlar, bir Windows makinesinin sürecini açıklayacak ve umarım karşılaştığımız bazı sorunlardan kaçınmanıza yardımcı olur.

İlk adım, Atmel usb sürücüsünü Arduino'ya manuel olarak yazmaktır, böylece FLIP programlayıcısı ile flash edilmesini sağlayan bir Arduino değil, bir USB olarak tanınır.

  1. Atmel'in FLIP Programmer'ını buradan indirin
  2. Arduino Uno'nuzu takın
  3. Aygıt Yöneticisi'ne gidin ve Arduino'yu bulun. COM veya Bilinmeyen Aygıt altında olacaktır. Bunun doğru cihaz olduğundan emin olmak için takıp çıkarın.
  4. Arduino Uno'yu Aygıt Yöneticisi'nde bulduktan sonra, sağ tıklayın ve özellikler > Sürücü > Sürücüyü Güncelle > Sürücü Yazılımı İçin Bilgisayarıma Gözat > Bilgisayarımdaki mevcut sürücüler listesinden seçmeme izin ver > Diski Var > Şuraya Gözat'ı seçin. "atmel_usb_dfu.inf" dosyasını açın ve seçin. Bu, Atmel FLIP Programmer'ınızın kurulu olduğu klasörde olmalıdır. Bilgisayarımda burada: C:\Program Files (x86)\Atmel\Flip 3.4.7\usb\atmel_usb_dfu.inf
  5. Sürücüyü yükleyin
  6. Şimdi Aygıt Yöneticisine geri dönün, Arduino Uno ile artık ATmega16u2 olarak etiketlenmiş bir "Atmel USB Aygıtları" görmelisiniz!

Artık bilgisayar Arduino Uno'yu bir USB Aygıtı olarak tanıdığına göre, FLIP Programmer'ı 3 ayrı dosya ile flash'lamak ve bir klavyeye dönüştürmek için kullanabiliriz.

Arduino Uno'nuzu ilk bölümden sonra çıkardıysanız, tekrar takın.

  1. FLIP'i aç
  2. Gücü kısaca toprağa bağlayarak Arduino Uno'yu sıfırlayın.
  3. Cihaz Seçimi'ne (bir mikroçip gibi simge) tıklayın ve ATmega16U2'yi seçin
  4. Bir İletişim Ortamı Seç'e (usb kablosu gibi simge) tıklayın ve USB'yi seçin. İlk bölümü doğru bir şekilde tamamladıysanız, diğer gri renkli butonlar kullanılabilir hale gelecektir.
  5. Dosya > Hex Dosyasını Yükle > seçeneğine gidin ve Arduino-usbserial-uno.hex dosyasını yükleyin
  6. ÇEVİRME penceresinde üç bölüm görmelisiniz: İşlem Akışı, FLASH Tampon Bilgileri ve ATmega16U2. İşlem Akışında Sil, Programla ve Doğrula kutularını işaretleyin ve ardından Çalıştır'a tıklayın.
  7. Bu işlem tamamlandıktan sonra ATmega16U2 bölümünde Uygulamayı Başlat'a tıklayın.
  8. Arduino'yu bilgisayardan çıkarıp tekrar takarak fiş döngüsü yapın.
  9. Gücü kısaca toprağa bağlayarak Arduino Uno'yu sıfırlayın.
  10. Arduino IDE'yi açın ve JoyStickControl_Code.ino dosyasını panoya yükleyin.
  11. Arduino'yu bilgisayardan çıkarıp tekrar takarak fiş döngüsü yapın.
  12. Gücü kısaca toprağa bağlayarak arduino'yu sıfırlayın.
  13. FLIP'e geri dönün, Cihaz Seçiminde Atmega16U2 yazdığından emin olun
  14. Bir İletişim Ortamı Seç'e tıklayın ve USB'yi seçin.
  15. Dosya > Hex Dosyasını Yükle > seçeneğine gidin ve Arduino-keyboard-0.3.hex dosyasını yükleyin
  16. ÇEVİRME penceresinde üç bölüm görmelisiniz: İşlem Akışı, FLASH Tampon Bilgileri ve ATmega16U2. İşlem Akışında Sil, Programla ve Doğrula kutularını işaretleyin ve ardından Çalıştır'a tıklayın.
  17. Bu işlem tamamlandıktan sonra ATmega16U2 bölümünde Uygulamayı Başlat'a tıklayın.
  18. Arduino'yu bilgisayardan çıkarıp tekrar takarak fiş döngüsü yapın.
  19. Şimdi Aygıt Yöneticisine gittiğinizde Klavyeler altında yeni bir HID Klavye Aygıtı olmalıdır.
  20. Bir not defteri veya herhangi bir metin düzenleyici açın ve joystick'i hareket ettirmeye başlayın. Sayıların yazıldığını görmelisiniz!

Arduino taslağındaki kodu değiştirmek istiyorsanız, örneğin joystick'e yeni komutlar yazmak istiyorsanız, her seferinde 3 dosyanın tümü ile flash yapmanız gerekecektir.

Bazı faydalı linkler:Arduino DFUAtLibUsbDfu.dll bulunamadı

Bu klavye öykünücüsü, Michael'ın 24 Haziran 2012 tarihli bu öğreticisine dayanmaktadır.

Adım 14: Ağ İletişimi

Ağ İletişimi
Ağ İletişimi

Dünyanın herhangi bir yerinden robota video akışı almak ve komutlar göndermek için, ESP32-CAM'den ve ESP32-CAM'den veri almanın bir yoluna ihtiyacımız var. Bu, yerel ağınızdaki bir bağlantı işleyicisi ve bir genel sunucu olmak üzere iki bölümde yapılır. Bunu başarmak için üç dosyayı indirin:

  • Handlers.py: ESP32-CAM'den ve genel sunucudan bilgi aktarır (Python 3.8 üzerinde test edilmiştir)
  • Flask_app.py: uygulamanızın gelen isteklere nasıl yanıt vereceğini tanımlar.
  • Robot_stream.html: tarayıcınızda video oluşturur ve klavye / joystick aracılığıyla komutları dinler (Chrome'da test edilmiştir)

Bağlantı İşleyiciBunu doğrudan app_httpd.cpp içinde kodlayabilirsiniz, ancak daha kolay hata ayıklama için aynı ağa bağlı bir bilgisayarda çalışan bir Python betiği kullanıyoruz. handlers.py dosyasını açın ve IP adresini ve kullanıcı adını kendinize göre güncelleyin; artık hazırsınız. Bu dosyayı çalıştırdığınızda akış başlayacaktır.

Genel Sunucu İnternetteki her şeye erişmek için istediğiniz bir PaaS ile bir sunucu başlatabilirsiniz. Pythonanywhere'de (PA) bunu ayarlamak 5 dakikadan az sürer:

  1. Bir hesap için kaydolun ve giriş yapın
  2. “Web” sekmesine gidin ve “Add a new Web App”e basın, Flask ve Python 3.6'yı seçin.
  3. flask_app.py dosyasını /mysite dizinine kopyalayın
  4. robot_stream.html dosyasını /mysite/templates dizinine kopyalayın
  5. “Yeniden Yükle” ye tıklayın

Ve… hazırsınız!

Sorumluluk Reddi: Bu ağ oluşturma iş akışı hızlı ve basittir ancak ideal olmaktan çok uzaktır. RTMP veya yuvalar akış için daha uygun olur, ancak bunlar PA'da desteklenmez ve ağ ve sunucu kurulumu konusunda biraz deneyim gerektirir. Erişimi kontrol etmek için bazı güvenlik mekanizmaları eklemeniz de önerilir.

Adım 15: Hepsini Bir Araya Getirmek

Şimdi robotunuzu açın, handlers.py'yi bir bilgisayarda çalıştırın (robotla aynı ağa bağlı) ve robotu istediğiniz yerden ayarladığınız url'ye göre bir tarayıcıdan kontrol edebilirsiniz. (ör.

Önerilen: