İçindekiler:
- Gereçler
- Adım 1: Mobil Robot Araba
- Adım 2: Mobil Robot Araba - Devre Şeması
- Adım 3: Mobil Robot Araba - Montaj (Motorlar)
- Adım 4: Mobil Robot Araba - Montaj (Mesafe Sensörü)
- Adım 5: Mobil Robot Araba - Montaj (ESP32 CAM)
- Adım 6: Mobil Robot Araba - Montaj (Talaş Dağıtıcı)
- 7. Adım: Mobil Robot Araba - Montaj (Çerezler!)
- Adım 8: Mobil Robot Araba - Arduino Kodu
- Adım 9: Mobil Robot Araba - ESP32 Kodu
- Adım 10: Çip Dağıtıcı
- Adım 11: Oyun çubuğu
- Adım 12: Joystick - Devre Şeması
- Adım 13: Joystick - Klavye Emülatörü
- Adım 14: Ağ İletişimi
- Adım 15: Hepsini Bir Araya Getirmek
Video: Sanal Varlık Robotu: 15 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:16
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ı
Bu montajı adım adım yapmanızda size yol göstereceğiz.
Adım 3: 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ü)
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)
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ı)
Ş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!)
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:
- Arduino IDE'de Dosya> Tercihler'e gidin
- 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.
- Şimdi Pano Yöneticisini açın ve Araçlar > Pano > Pano Yöneticisi'ne gidin ve "ESP32" yazarak ESP32'yi arayın.
- "Espressif Systems tarafından esp32" görmelisiniz. Yükle'yi tıklayın.
- Ş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.
- Tekrar Araçlar > Yükleme Hızı'na gidin ve "115200" olarak ayarlayın.
- Son olarak, Araçlar > Partition Scheme'e gidin ve "Huge APP (3MB OTA Yok/1MB SPIFFS)" olarak ayarlayın.
- 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ı
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
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'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.
- Atmel'in FLIP Programmer'ını buradan indirin
- Arduino Uno'nuzu takın
- 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.
- 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
- Sürücüyü yükleyin
- Ş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.
- FLIP'i aç
- Gücü kısaca toprağa bağlayarak Arduino Uno'yu sıfırlayın.
- Cihaz Seçimi'ne (bir mikroçip gibi simge) tıklayın ve ATmega16U2'yi seçin
- 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.
- Dosya > Hex Dosyasını Yükle > seçeneğine gidin ve Arduino-usbserial-uno.hex dosyasını yükleyin
- Ç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.
- Bu işlem tamamlandıktan sonra ATmega16U2 bölümünde Uygulamayı Başlat'a tıklayın.
- Arduino'yu bilgisayardan çıkarıp tekrar takarak fiş döngüsü yapın.
- Gücü kısaca toprağa bağlayarak Arduino Uno'yu sıfırlayın.
- Arduino IDE'yi açın ve JoyStickControl_Code.ino dosyasını panoya yükleyin.
- Arduino'yu bilgisayardan çıkarıp tekrar takarak fiş döngüsü yapın.
- Gücü kısaca toprağa bağlayarak arduino'yu sıfırlayın.
- FLIP'e geri dönün, Cihaz Seçiminde Atmega16U2 yazdığından emin olun
- Bir İletişim Ortamı Seç'e tıklayın ve USB'yi seçin.
- Dosya > Hex Dosyasını Yükle > seçeneğine gidin ve Arduino-keyboard-0.3.hex dosyasını yükleyin
- Ç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.
- Bu işlem tamamlandıktan sonra ATmega16U2 bölümünde Uygulamayı Başlat'a tıklayın.
- Arduino'yu bilgisayardan çıkarıp tekrar takarak fiş döngüsü yapın.
- Şimdi Aygıt Yöneticisine gittiğinizde Klavyeler altında yeni bir HID Klavye Aygıtı olmalıdır.
- 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
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:
- Bir hesap için kaydolun ve giriş yapın
- “Web” sekmesine gidin ve “Add a new Web App”e basın, Flask ve Python 3.6'yı seçin.
- flask_app.py dosyasını /mysite dizinine kopyalayın
- robot_stream.html dosyasını /mysite/templates dizinine kopyalayın
- “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:
Zigbee Yatak Varlık Dedektörü: 8 Adım
Zigbee Yatak Varlığı Dedektörü: Bir süredir yatakta olduğumuzu algılamanın bir yolunu arıyordum. Bu, bu bilgiyi Homeassistant'ta kullanmak içindir. Bu bilgilerle geceleri ışıkları kapatmak için otomasyonlar yapabilirim veya örneğin evimde bir alarm sistemini aktif hale getirebilirim
Varlık Sensörü: 12 Adım
Varlık Sensörü: Giyilebilir cihazlar genellikle BLE özellikli cihazlardır. MAC adresi boyunca bazı verilerin periyodik olarak reklamını yapmaları yaygındır. Bu verileri taramak için bir ESP kullanıyoruz ve belirli bir MAC adresi bulduğunda internet üzerinden bir olayı tetikliyoruz. Bu özel
SONOFF'lu Yatak Varlık Sensörü: 8 Adım (Resimlerle)
SONOFF'lu Yatak Durumu Sensörü: Bu eğitime hoş geldiniz !ÖnkoşullarBu nasıl yapılır, sonoff ve tasmota hakkında biraz bilgi sahibi olmanızı gerektirir. Tasmota ile hiç sonoff yapmadıysanız, önce yapmayı öğrenmelisiniz ve o zaman onu sadece siz inşa edebileceksiniz. Eğer sonof'u bilmiyorsanız
Tereyağı Robotu: Varoluşsal Krizi Olan Arduino Robotu: 6 Adım (Resimlerle)
Tereyağı Robotu: Varoluşsal Krizli Arduino Robotu: Bu proje, "Rick and Morty" animasyon dizisine dayanmaktadır. Bölümlerden birinde Rick, tek amacı tereyağı getirmek olan bir robot yapar. Bruface'den (Brüksel Mühendislik Fakültesi) öğrenciler olarak, mecha için bir görevimiz var
[Arduino Robot] Hareket Yakalama Robotu Nasıl Yapılır - Başparmak Robotu - Servo Motor - Kaynak Kodu: 26 Adım (Resimlerle)
[Arduino Robot] Hareket Yakalama Robotu Nasıl Yapılır | Başparmak Robotu | Servo Motor | Kaynak Kodu: Thumbs Robot. MG90S servo motorun bir potansiyometresi kullanıldı. Çok eğlenceli ve kolay! Kod çok basit. Sadece 30 satır civarında. Hareket yakalamaya benziyor.Lütfen herhangi bir soru veya geri bildirim bırakın![Talimat] Kaynak Kodu https://github.c