Steam Controller'ı kullanarak Lego motorlarını kablosuz olarak kontrol edin

Steam Controller'ı kullanarak Lego motorlarını kablosuz olarak kontrol edin

Gençken her zaman Lego teknoloji setlerine sahip olmak isterdim, böylece onlarla her türlü harika şeyi inşa edebilirdim. Lego tuğlalarını fırlatan, dönen taretlere sahip otonom tanklar. Ama o zaman böyle bir setim yoktu.

Ve normal Lego tuğlaları bile yoktu. Sadece erkek kardeşinin bu kadar pahalı oyuncaklara sahip olduğu bir arkadaşım vardı.

Ve şimdi benim de bu yaşta bir oğlum var. Ve duvara çarpana kadar aptalca ilerleyen tanklar yapıyor :)

Şimdi sıra ESP32'ye ve havyanın büyüsüne geldi; haydi onlar için doğru uzaktan kumandayı toplayalım!

Hayır, elbette bu tür uzaktan kumandaların varlığından haberdarım. Ama hiçbiri bana tam olarak uymuyor. Ya kızılötesidirler, 80'lerin teknolojisidir ya da çok büyüktürler. Veya pahalı olanları. Ve en önemlisi oğluma bunların hiçbirini anlatamayacağım: “Bunu özellikle senin için yaptım!”

Öyleyse hepsine hükmedecek yeni ve geliştirilmiş bir uzaktan kumanda yapalım!

Steam Controller'ı kullanarak Lego motorlarını kablosuz olarak kontrol edin

Malzemeler:

  • ESP32-WROOM-32D | WiFi, BLE ve G/Ç'li işlemci - iki kişiyi kontrol etmek için yeterli motorlar и NEDEN OLMUŞ.
  • DRV8833 | motorlar için yeterli güce sahip çift H köprüsü.
  • TPS62162 | WSON-17 8x2 mm kasayı lehimlerken voltajın 2 V'a düşürülmesinin yanı sıra eğlence için
  • CP2104 | ESP32'yi programlamak için
  • konnektörleri motorları ve diyotları bağlamak için. Telleri kesip alt tarafa lehimleyeceğiz ve Lego konektörünü üste yapıştıracağız.

Bütün bunlar oldukça küçük bir panoya sığacak - işte EasyEDA editöründeki görünümü:

Steam Controller'ı kullanarak Lego motorlarını kablosuz olarak kontrol edin

Başlık fotoğrafında görülen kablo herhangi bir hatayı düzeltmek için değil, USB'den güç sağlamak için gereklidir. Motor için yeterli olmayabilir ama ne yazık ki hala Çin’den bağlantı alamadım. Bu yüzden önce LED'lerin çalışmasını kontrol ediyorum. Fotoğraftaki güzellik için, motorun konnektörünü panoya koymam yeterli.

Anakartımın 1.1 versiyonunda (zaten EasyEDA'da bulunan 1.2 versiyonunun aksine), LED yoktu, bu yüzden ne olduğunu görebilmek için çıkışa iki anti-paralel diyot lehimledim. Yakından bakarsanız video, ileri/geri hareketi gösteren bir çift diyotun (0603) dönüşümlü aktivasyonunu gösterir.

Kontrol paneline gelince, ilk başta sadece düğmeli ek bir kart ve klasik bir uzaktan kumanda olan başka bir ESP32 monte etmek istedim.

Ancak daha sonra Steam Kontrolcülerinin Bluetooth Düşük Enerji (BLE) çalışma moduna sahip olduğunu hatırladım. Bu sorunu çözmeye karar verdim ve birkaç saat sonra denetleyiciden paket almayı öğrendim.

Bunu yapmak için, kendisine SteamController adını veren bir HID cihazı aramanız ve ona bağlanmanız yeterlidir. Ve sonra Valve'ın belgelenmemiş bir hizmetini ve birkaçını kullanın belgelenmemiş komutlar, paketlerin iletilmesine izin verir.

Steam Controller'ı kullanarak Lego motorlarını kablosuz olarak kontrol edin

Ayrıca manuel olarak ayrıştırdığım belgelenmemiş bir rapor formatıyla da karşılaştım.

Steam Controller'ı kullanarak Lego motorlarını kablosuz olarak kontrol edin

Yaklaşık bir saat sonra bayrakların ve değerlerin anlamı netleşti ve Steam kontrol cihazını ve ESP32'yi kullanarak LED'i yanıp sönmeyi başardım. ¯_(ツ)_/¯

Dosyalar

v1.0: "deneme yaklaşımı"
- yanlış voltaj regülatörünü seçtiğim ilk seçenek. TPS62291 voltajı sadece 6 V'a çıkarıyor. Birkaç projeyi paralel olarak geliştiriyordum ve cihazın 9 V ile çalışması gerektiğini unuttum.

v1.1: "yeterince iyi"
— bu seçenek videolarda görünür ve her şey çalışır

v1.2: "son"
— çıkışa gösterge LED'leri eklendi ve kartın boyutu ve düzeni optimize edildi

Aşağıdaki kısa video bağlantı aşamasını (gücü açtıktan 1-3 saniye sonra) ve motor çıkışlarının kontrolünü göstermektedir. Lego konektörü henüz bağlanmadı. Diğer konektörlerin yanındaki beyaz dikdörtgenle işaretlenmiş boş alana gidecektir.

Oğlum artık ürettiği cihazları kontrol etmek için bu denetleyiciyi düzenli olarak kullanıyor.

Stres testi sırasında yalnızca bir sorunla karşılaştım: Motor sürücüsünün "hızlı azalma" modunun en iyi sonucu vereceğini düşündüm, ancak birkaç saniye çalıştıktan sonra motor hızının önemli ölçüde düşmesine neden oldu. Bu yüzden yavaş bozulmayı kullanacak şekilde kodu değiştirdim.

Steam Controller'ı kullanarak Lego motorlarını kablosuz olarak kontrol edin

DRV'nin nasıl çalıştığından ve motorun neden ilk başta hızlı bir şekilde döndüğünden ve 10 saniye sonra yavaş yavaş yavaşlamaya başladığından henüz emin değilim. Belki de MOSFET'ler ısınıyor ve dirençleri çok fazla artıyor.

Umarım Arduino'nun bu zahmetsiz kullanımı, diğerlerine çocuklarını elektronikle ilgilenme konusunda ilham kaynağı olur.

Kaynak: habr.com

Yorum ekle