İçindekiler:
- Gereçler
- Adım 1: Nihai Ürün
- 2. Adım: Kılıç Kaplaması
- 3. Adım: Nokta Vuruşlu LED Ekran
- 4. Adım: Güç
- Adım 5: Şematik
- Adım 6: 3B Baskı
- Adım 7: Programlama
- Adım 8: Nokta Vuruşlu Kontrol
- 9. Adım: Video Akışı
- Adım 10: Yapılandırma
- 11. Adım: OTA Ürün Yazılımı Güncellemeleri
- Adım 12: MJPEG Sunucusu
- Adım 13: Blynk Uygulaması
- Adım 14: Keyfini çıkarın
- Adım 15: Kitaplıklar ve Kod
Video: Etkileşimli Minecraft Kılıç/İşaret Girmeyin (ESP32-CAM): 15 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:18
Bu projenin ortaya çıkmasının gerçekten birkaç nedeni var:
1. İşbirlikçi çoklu görev kitaplığı TaskScheduler'ın bir yazarı olarak, işbirlikli çoklu görevlerin faydaları ile önleyici olanın faydalarının nasıl birleştirileceğini hep merak etmişimdir. Her ikisinin de faydaları vardır ve her ikisinin de eksiklikleri vardır. Bu ikisini birleştirmek, belirli bir kullanım durumuna dayalı olarak avantajlardan yararlanmak ve her birinin sorunlarını azaltmak için benzersiz bir fırsat sağlar. İlginç? Okumaya devam etmek…
2. ESP32'nin çok çekirdekli bir mikro denetleyici olduğu gerçeği büyüleyicidir. Bu özellikten faydalanabilir miyim diye hep merak etmişimdir. Yani buradaki deney şuydu: ESP32, diğer çekirdekte başka bir şey (anlamlı ve makul derecede yoğun başka bir şey) yaparken bir çekirdeği kullanarak videoyu sorunsuz bir şekilde aktarabilir mi? Daha da ilginç?? Okumaya devam etmek…!
3. OTA üretici yazılımı sağlama ve yapılandırma yönetimi ile ilgili son projelerim için bir test alanına ihtiyacım vardı…
4. Bir süre önce iki adet LED Dot Matrix modülü satın almıştım ve bunlarla ne yapacağımı bir türlü bulamadım…
5. Oğlum bir Minecraft oyuncusu ve her küçük çocuğun kapısını "Girmeyin" posterleriyle süslemeyi sevdiği gibi…
İşte burada - tüm iyi nedenler: "Kapalı kapının arkasından" bir video akışının ESP32-CAM akışıyla Etkileşimli Kapıya Girme işareti - veya "Odama kim geliyor?"
Yani bunların hepsi neyle alakalı?
Tüm hikayeyi okumak için sabrınız varsa, bunun gerçekten bir Minecraft kılıcıyla ilgili olmadığını anlıyorsunuz. Bu proje birçok kavramın kanıtıdır:
- Önleyici ve İşbirlikçi çoklu görevlerin bir arada bulunması
- ESP32 çekirdeklerinin seçici kullanımı
- Yeni Sözlük ve EspBootstrap kitaplıklarının kullanımı
- OTA üretici yazılımı sağlama
- Konfigürasyon yönetimi
- Birden çok istemciye video akışı
ve çok daha fazlası.
Eğlence
Gereçler
- ESP32-CAM
- Arduino için MAX7219 Dot Matrix Modülü 4'ü 1 arada LED Ekran Modülü Geekcreit
- Atom Tech 2500mAh Güç Bankası
Adım 1: Nihai Ürün
Nihai ürünün nasıl göründüğüyle başlayacağım ve ardından nasıl yapıldığını ve nasıl kontrol edileceğini açıklayacağım.
Bu şekilde daha çekici görünüyor…
2. Adım: Kılıç Kaplaması
Kılıç yüz plakası beyaz tahtadan yapılmıştır, kurşun kalemle işaretlenmiştir ve Crayola işaretleyicileri ile renklendirilmiştir. Bu tek başına çocuğunuzla ilginç bir proje olabilir:
- Beyaz tahtada bir kılıcı işaretleyin
- Yüz plakasını kesin
- Kareleri (veya blokları) işaretleyin
- Onları ayrı ayrı renklendirin
- Sharpie ile siyah çizgiler ekleyin.
Kısayolları tercih ederseniz beyaz tahtanın üzerine yapıştırabileceğiniz bir elmas kılıcın örnek resmini içeren bir açık ofis belgesi ekledim… Her şey bittiğinde, kaplamayı montajın geri kalanına sıcak yapıştırabilir veya çift kullanabilirsiniz. taraflı bant.
3. Adım: Nokta Vuruşlu LED Ekran
Her biri 4 segment olmak üzere 2 tane vardı, bu yüzden 8 segmentli bir tane yapmaya karar verdim.
Elverişli bir şekilde bir tarafta 5 pimli erkek başlık ve karşı tarafta 5 delik bulunur. Erkek başlığı zımba benzeri bir] şeklinde bükerek, iki modülü hem elektriksel hem de mekanik olarak bağlayabildim! Bir taşla iki kuş (ya da bir kamçıyla iki sinek, bir lokma ile iki ağzı durdurmak, bir hediyeyle iki arkadaş edinmek, bir yaya iki ip takmak, diğer deyimler nelerdir) düşündünüz mü? Üzgünüm, daldım).
Karşı erkek başlık, ESP32-Cam ve diğer bileşenlerle veroboard'dan eşleşen bir dişi başlığı bağlamak için kullanılacaktır.
İki bileşen, gücü açıp kapatmak için bir anahtarı da barındıran bir 3d baskılı köprü ile birbirine bağlanır. Köprü ve diğer bileşenler için 3d STL dosyaları GitHub'daki files/3d klasöründe bulunur.
4. Adım: Güç
Kılıç, bulabildiğim en küçük ve en ince olan 2500 mAh USB güç bankası tarafından desteklenmektedir. Powerbank, nokta vuruşlu modüllere de bağlanan ve böylece her şeyi bir arada tutan 3 boyutlu baskılı bir kasaya kayar.
Güç bankası kasasına yapıştırılmış iki yuvarlak mıknatıs vardır ve kılıç kapıya bu şekilde takılır (böylece bakım için kolayca ayrılabilir).
Adım 5: Şematik
Gerçek şema GitHub'da bulunur, ancak bir resim 1000 kelimeye bedeldir (Bilgi Teknolojisinde 1024), işte buradasınız:
Bir lehimleme tabancası ile yolunuzu biliyorsanız, bu oldukça basittir. NOT: 3d köprü parçası çok özel bir veroboard boyutu için tasarlanmıştır: 30 x 70 mm. Farklı bir tane kullanmaya karar verirseniz, köprü bileşenini yeniden tasarlamanız gerekir.
Adım 6: 3B Baskı
Pil kutusu ve ESP32-CAM veroboard'u nokta vuruşlu ekran aksamına bağlayan bir köprü 3 boyutlu olarak tasarlanmış ve basılmıştır.
Pil kutusu, pil için bir "cep" oluşturmak için yazdırıldıktan sonra birbirine yapıştırılması gereken 2 parça halinde gelir. Köprünün sadece tüm destek yapılarından temizlenmesi gerekiyor (maalesef onları en aza indiren iyi bir yönlendirme yok). STL dosyaları GitHub'dadır ve TinkerCad orijinalleri burada bulunur.
TinkerCad'deki 3B tasarım, parçaların nasıl birbirine uyduğuna ve nasıl bağlanması gerektiğine ilişkin benzetilmiş montaj şemasını da içerir.
Adım 7: Programlama
Çoklu görev
Bu tasarım, önleyici çoklu görev için FreeRTOS ve işbirlikçi bir için TaskScheduler kitaplığı kullanır. Sword'un davranışı ve mesajları Blynk App aracılığıyla kontrol edilir. Kurulumdan sonra (pinler, kamera ve nokta vuruşlu başlatma, WiFi'ye bağlanma vb.), iki ana RTOS görevi oluşturulur:
- ESP32'nin Uygulama Çekirdeğine (çekirdek 1) sabitlenmiş video akışı RTOS görevi
- Metin ekranı ve Blynk, WiFi ile ilgili tüm görevlerden de sorumlu olan ESP32'nin Güç Çekirdeğine (çekirdek 0) sabitlenmiş RTOS görevini kontrol eder. Metin ve Blynk ile ilgili yürütme, TaskScheduler görevleri aracılığıyla yönetilir.
RTOS görevleri için 4K yığın alanının yeterli olduğunu öğrendim, ancak yığının bitme olasılığı var, bu yüzden tercih ederseniz 8K yapın - ESP32'de bol miktarda RAM var.
Tüm video yakalama ve akış işlemleri Core 1'de gerçekleşir. Diğer her şey - Core 0'da.
ESP32, biraz ter dökerek tüm bunların üstesinden gelebilecek kadar güce sahiptir (video akışı sırasında kart ısınır).
BU, projenin ana hedefiydi: önleyici ve işbirliğine dayalı çoklu görevlerin barışçıl ve üretken bir arada yaşaması!
Adım 8: Nokta Vuruşlu Kontrol
Arduino IDE kitaplık yöneticisinde de bulunan çok güçlü MD_Parola ve MD_MAX72xx kitaplıkları kullanıyorum.
Tüm metinsel özel efektler bu kütüphaneler aracılığıyla yapılır. Doğru MAX72XX donanım türünü belirlemek biraz çaba gerektirdi (benim durumumda MD_MAX72XX::ICSTATION_HW, sizinki farklı olabilir), bundan sonra metni kontrol etmek çok kolay.
Kılıç aşağıdaki kontrollere izin verir:
- Parlaklık
- yanıp sönüyor
- flaş
- Kaydırma hızı ve yönü (yukarı/aşağı, sol/sağ, sabit)
- Ayrıca bir Duvar Saatine de dönüştürebilirsiniz.
9. Adım: Video Akışı
Blynk App video akışı için küçük bir widget'a sahiptir, ancak tarayıcıya, VLC oynatıcıya veya MJPEG standardını destekleyen herhangi bir şeye akış yapabilirsiniz.
En fazla 10 bağlı istemci desteklenir.
Bağlanabilmek için ESP32-CAM'inizin IP adresini bulmanız gerekecek. Yönlendiricinizden bakabilir veya bu taslağı önce _DEBUG_ seçeneği etkinken derleyebilir ve terminalin ağınıza bağlandığında IP adresini okuyabilirsiniz.
ÖNEMLİ: Kira süresi dolduğunda adresinin değişmemesi için ESP32-CAM modülüne kalıcı bir IP adresi atamanız veya DHCP rezervasyonu oluşturmanız çok tavsiye edilir. Akış URL'sindeki IP adresini güncellemek için Blynk Uygulamasını da değiştirebilirsiniz - buna bağlıysanız ilginç bir ev ödevi.
Mevcut çizim bir QVGA çözünürlüğü kullanıyor: 320x240 piksel, bu da onu oldukça hızlı yapıyor. Diğer çözünürlüklerle oynamakta ve sizin için neyin işe yaradığına karar vermekte özgürsünüz ve teşvik ediliyorsunuz.
Çizim, PSRAM'den yararlandığı için RAM bir sorun olmamalıdır.
Adım 10: Yapılandırma
Çizim, önyükleme sırasında yapılandırma sunucusundan yapılandırma parametrelerini yüklemek için Sözlük ve EspBootstrap kitaplıklarımdan yararlanır.
Ben kendi yapılandırma sunucumu çalıştırıyorum, bunu da yapabilirsiniz (gerçekten sadece JSON dosyaları sunan basit bir Apache2 web sunucusudur).
Ayrıca görev için kullanılabilen çevrimiçi hizmetlerden herhangi birini de kullanabilirsiniz: (OTADrive, Microsoft Azure, AWS IoT, vb.). Bu durumda, yapılandırma kaynağınıza işaret eden bir URL'yi uygun şekilde oluşturmak için lütfen String makeConfig(String path) yöntemini değiştirin. Alternatif olarak, yapılandırma dosyasını ESP32-CAM üzerindeki SPIFFS dosya sistemine kaydedebilir ve oradan okuyabilir veya tüm girişleri sabit kodlayabilirsiniz. Lütfen seçenekleriniz için EspBootstrap kitaplığının README'sine bakın.
GitHub'da bir yapılandırma dosyası örneği verilmiştir.
Parametreleri sabit kodlamayı tercih ederseniz, bir örnek aşağıdadır:
pd("Başlık", "DND Kılıç Kurulumu");
pd("ssid", "wifi ssid"); pd("şifre", "wifi şifreniz"); pd("mesaj", "Merhaba!");pd("cihazlar", "8"); pd("blynk_auth", "blynk AUTH UUID'niz"); // sadece kendi sunucunuzu çalıştırıyorsanız: pd("blynk_host", "blynk sunucu IP'niz"); pd("blynk_port", "sunucu bağlantı noktanız");
11. Adım: OTA Ürün Yazılımı Güncellemeleri
Çizim ayrıca OTA (Over The Air) ürün yazılımı güncellemesi etkindir ve her önyüklemede yeni bellenimi kontrol eder.
Yine, sizin de yapabileceğiniz kendi OTA güncelleme sunucumu çalıştırıyorum (ikili dosyalara hizmet veren biraz PHP komut dosyası içeren basit bir Apache2 web sunucusudur).
Ayrıca görev için kullanılabilen çevrimiçi IoT hizmetlerinden herhangi birini de kullanabilirsiniz: (OTADrive, Microsoft Azure, AWS IoT, vb.). Bu durumda, ikili dosya kaynağınıza işaret eden bir güncelleme URL'sini uygun şekilde oluşturmak için lütfen void checkOTA() yöntemini değiştirin.
Bu isteğe bağlıdır - yalnızca ikili dosyaları seri bağlantı yoluyla yüklemeyi seçebilirsiniz.
Adım 12: MJPEG Sunucusu
Bu konu burada detaylı olarak anlatılmıştır.
Adım 13: Blynk Uygulaması
Blynk, hızlı Uygulama geliştirmeye olanak tanıyan bulut tabanlı bir IoT platformudur. Kişisel kullanım için ücretsizdir ve hatta kendi Blynk sunucunuzu çalıştırma seçeneğine sahiptir.
Ben (tahmin etmiş olabileceğiniz gibi) kendi Blynk sunucumu çalıştırıyorum, ancak bulut sürümünü kullanmanız sizin için daha kolay olabilir. Blynk iOS veya Android Uygulamasını yükleyin ve Uygulamayı telefonunuzda yeniden oluşturmak için aşağıdaki resimleri izleyin.
Uygulamanın Uygulamanızla çalışması için kendi Blynk Auth UUID'nizi sağlamanız gerekecektir. Bu yüzden yapılandırma dosyalarını kullanıyorum. Ancak, tek seferlik bir proje için, sabit kodlanmış bir değer de aynı şekilde işe yarar.
ÖNEMLİ: Lütfen Blynk Projenizin Uygulama Bağlandığında Cihazları Bildir olarak ayarlandığından emin olun.
Video akışı widget'ında NOT: bazen video başlamaz. Blynk uygulamasının video widget'ından ziyade ESP32 ile ilgili bir sorun gibi görünmüyor. Uygulamayı kapatıp yeniden açmayı veya projeyi yeniden durdurmayı/başlatmayı deneyin. Sonunda başlıyor. Bu sorun, tarayıcıda veya VLC oynatıcıda (örneğin) mevcut görünmüyor.
Adım 14: Keyfini çıkarın
Bunu oluşturmak ve ESP32 gibi posta damgası boyutunda bir cihazın video akışından çok daha fazlasını yapabileceğini kanıtlamak çok eğlenceliydi. Bu projedeki birçok kavram başka uygulamalarda yeniden kullanılabilir.
Adım 15: Kitaplıklar ve Kod
Kütüphaneler:
- Blynk sunucusu
- EspBootstrap kitaplığı
- Görev Zamanlayıcı kitaplığı
- Sözlük kitaplığı
- LED Matris Kitaplığı
- Modüler kaydırmalı LED matris metin ekranları için kitaplık
Gerçek depo:
Minecraft Etkileşimli Kılıç/İşaret Girmeyin (ESP32-CAM)
Önerilen:
Minecraft Raspberry Pi Edition'ı Kullanarak Rainbow Etkileşimli Köprü Oluşturun: 11 Adım
Minecraft Raspberry Pi Sürümünü Kullanarak Gökkuşağı Etkileşimli Köprü Oluşturun: Dün, 8 yaşındaki yeğenimi ona daha önce verdiğim Raspberry Pi ile Minecraft oynarken gördüm, sonra aklıma özelleştirilmiş ve heyecan verici bir Minecraft yapmak için kodu kullanan bir fikir geldi. pi LED bloklar projesi. Minecraft Pi, başlamak için harika bir yol
LED İŞARET: 6 Adım
LED İŞARET: Havalı görünen güvenli, 12 voltluk, benzersiz bir LED işareti yapın
Yanıp Sönen Gözler Yarasa Kılıç Cadılar Bayramı Dekorasyonu: 6 Adım
Yanıp Sönen Gözler Yarasa Kılıcı Cadılar Bayramı Dekorasyonu: Robotik dersi, proje oluşturmak için bilgisayar bilimi ve teknolojisini nasıl kullanacağınızı öğrenmenin harika bir yoludur. Robotik bilgimi kullanarak, ön kapılar, duvarlardan asılı ve her şey için harika, eğlenceli ve basit bir Cadılar Bayramı dekorasyonu yarattım
LED Arkadan Aydınlatmalı İşaret: 10 Adım (Resimlerle)
LED Arkadan Aydınlatmalı İşaret: Bu LED arkadan aydınlatmalı işareti üretmek için uyguladığım adımlar. Kendi tasarımınızın bir LED arkadan aydınlatmalı işaretini yapmak için bu Eğitilebilir Yazıyı kullanabilirsiniz. Bu proje çok zaman alıcıydı ve tamamlanması için birden fazla kaynak ve ekipman gerekiyordu. Bu şo
Sesli Mesajınız İçin Pininizi Asla Girmeyin: 3 Adım
Sesli Mesajınız İçin Pininizi Asla Girmeyin: Telesekreterinizi her kontrol ettiğinizde telesekreterinizi girmek zorunda kalmaktan bıktınız mı? Ben öyleyim, bunun için bir numara buldum