Controllo wireless dei motori Lego con Steam Controller

Controllo wireless dei motori Lego con Steam Controller

Quando ero giovane, ho sempre desiderato avere dei set techno Lego con cui costruire cose interessanti. Carri armati autonomi con torrette rotanti che sparano mattoncini Lego. Ma poi non avevo un set del genere.

E non c’erano nemmeno i normali mattoncini Lego. Avevo solo un amico il cui fratello aveva tutti questi giocattoli costosi.

E ora ho un figlio di quell'età. E costruisce carri armati che... stupidamente avanzano finché non si schiantano contro il muro 🙂

E ora è il momento dell'ESP32 e della magia del saldatore: assembliamo il telecomando giusto per loro!

No, ovviamente so dell'esistenza di tali telecomandi. Ma nessuno di loro mi si addice perfettamente. O sono a infrarossi, con tecnologia anni '80, oppure sono troppo grandi. O costosi. E, soprattutto, non potrò raccontarne nessuno a mio figlio: “L’ho fatto apposta per te!”

Quindi creiamo un nuovo telecomando migliorato per governare tutti!

Controllo wireless dei motori Lego con Steam Controller

Ingredienti:

  • ESP32-WROOM-32D | WiFi, BLE e processore con I/O: sufficienti per controllarne due motori и GUIDATO.
  • DRV8833 | doppio ponte ad H con potenza sufficiente per i motori.
  • TPS62162 | ridurre la tensione a 17 V, anche per divertirsi durante la saldatura della custodia WSON-8 2x2 mm
  • CP2104 | per la programmazione ESP32
  • connettori per il collegamento di motori e diodi. Taglia i fili e saldali sul fondo e incolla il connettore Lego sulla parte superiore.

Tutto questo verrà inserito su una bacheca piuttosto piccola: ecco come appare nell'editor EasyEDA:

Controllo wireless dei motori Lego con Steam Controller

Il cavo, visibile nella foto del titolo, è necessario non per correggere alcuni errori, ma per fornire alimentazione tramite USB. Potrebbe non essere sufficiente per il motore, ma purtroppo non mi sono ancora arrivati ​​contatti dalla Cina. Pertanto, controllo prima il funzionamento dei LED. Per bellezza nella foto ho semplicemente inserito il connettore del motore sulla scheda.

La versione 1.1 della mia scheda (a differenza della versione 1.2 già presente su EasyEDA) non aveva LED, quindi ho saldato due diodi antiparalleli all'uscita in modo da poter vedere cosa stava succedendo. Se osservate attentamente, il video mostra l'accensione alternata di una coppia di diodi 0603, indicanti il ​​movimento avanti/indietro.

Per quanto riguarda il telecomando, all'inizio volevo solo assemblare una scheda aggiuntiva con pulsanti e un altro ESP32, un telecomando classico.

Tuttavia, poi mi sono ricordato che gli Steam Controller hanno una modalità operativa Bluetooth Low Energy (BLE). Ho deciso di affrontare questo problema e dopo alcune ore ho imparato come ricevere pacchetti dal controller.

Per fare ciò, devi solo cercare un dispositivo HID che si fa chiamare SteamController e connetterti ad esso. E quindi utilizzare un servizio non documentato di Valve e alcuni comandi non documentati, consentendo la trasmissione di pacchetti.

Controllo wireless dei motori Lego con Steam Controller

Mi sono anche imbattuto in un formato di report non documentato che ho analizzato manualmente.

Controllo wireless dei motori Lego con Steam Controller

Dopo circa un'ora, il significato dei flag e dei valori mi è diventato chiaro e sono riuscito a far lampeggiare il LED utilizzando il controller Steam e l'ESP32. ¯_(ツ)_/¯

file

v1.0: "approccio sperimentale"
- la prima opzione per la quale ho scelto il regolatore di tensione sbagliato. Il TPS62291 accetta una tensione solo fino a 6 V. Stavo sviluppando diversi progetti in parallelo e ho dimenticato che il dispositivo deve funzionare con 9 V.

v1.1: "abbastanza buono"
- questa opzione è visibile nei video e tutto funziona

v1.2: "finale"
- aggiunti indicatori LED all'uscita e ottimizzati le dimensioni e il layout della scheda

Il seguente breve video mostra la fase di connessione (1-3 secondi dopo l'accensione) e il controllo delle uscite del motore. Il connettore di Lego non è ancora collegato. Andrà nello spazio vuoto accanto agli altri connettori, contrassegnato da un rettangolo bianco.

Mio figlio ora usa regolarmente questo controller per controllare le macchine che ha assemblato.

Durante lo stress test, ho riscontrato un solo problema: pensavo che la modalità “fast decadimento” [decadimento rapido] del driver del motore avrebbe funzionato meglio, ma a causa di ciò, dopo pochi secondi di funzionamento, la velocità del motore è diminuita notevolmente . Quindi ho cambiato il codice in modo che utilizzi "slow decadimento" [decadimento lento].

Controllo wireless dei motori Lego con Steam Controller

Anche se non sono sicuro di come funzioni il DRV e perché all'inizio il motore gira velocemente e poi dopo 10 secondi inizia a rallentare gradualmente. Forse i MOSFET si stanno surriscaldando e la loro resistenza sta aumentando troppo.

Spero che questo esempio di come utilizzare Arduino ispiri facilmente altre persone e permetta loro di introdurre i propri figli all'elettronica.

Fonte: habr.com

Aggiungi un commento