Control sense fil dels motors Lego amb el controlador de vapor

Control sense fil dels motors Lego amb el controlador de vapor

Quan era jove, sempre vaig voler tenir jocs de tecnologia de Lego per poder construir tot tipus de coses interessants amb ells. Tancs autònoms amb torretes giratòries que disparen maons Lego. Però llavors no tenia aquest conjunt.

I ni tan sols hi havia maons de Lego normals. Només tenia un amic el germà del qual tenia totes aquestes joguines cares.

I ara jo mateix tinc un fill d'aquesta edat. I construeix tancs que... estúpidament avancen fins que xoquen contra la paret :)

I ara, és el moment de l'ESP32 i la màgia del soldador: muntem el comandament a distància adequat per a ells!

No, és clar que conec l'existència d'aquests comandaments a distància. Però cap d'ells em convé del tot. Són infrarojos, tecnologia dels anys 80 o massa grans. O de cars. I el més important, no podré dir-li cap d'ells al meu fill: "Ho vaig fer especialment per a tu!"

Així que fem un comandament nou i millorat per governar-los tots!

Control sense fil dels motors Lego amb el controlador de vapor

Ingredients:

  • ESP32-WROOM-32D | WiFi, BLE i processador amb E/S: suficient per controlar-ne dos motors и LED.
  • DRV8833 | doble pont en H amb prou potència per a motors.
  • TPS62162 | reducció de tensió a 17 V, així com per diversió quan es solda el paquet WSON-8 2x2 mm
  • CP2104 | per a la programació ESP32
  • Connectors per connectar motors i díodes. Tallarem els cables i els soldarem a la part inferior i enganxarem el connector Lego a la part superior.

Tot això encaixarà en una pissarra força petita: aquí teniu la seva aparició a l'editor EasyEDA:

Control sense fil dels motors Lego amb el controlador de vapor

El cable que es pot veure a la foto del títol no és necessari per corregir cap error, sinó per subministrar energia des d'USB. Potser no n'hi ha prou amb el motor, però, malauradament, encara no he rebut contactes de la Xina. Així que primer comprovo el funcionament dels LED. Per a la bellesa de la foto, simplement poso el connector del motor a la placa.

A la versió 1.1 del meu tauler (a diferència de la versió 1.2, que ja està a EasyEDA), no hi havia LED, així que vaig soldar dos díodes antiparal·lels a la sortida perquè pogués veure què estava passant. Si us fixeu amb atenció, el vídeo mostra l'activació alternada d'un parell de díodes 0603, que indica un moviment cap endavant/enrere.

Pel que fa al tauler de control, al principi només volia muntar un tauler addicional amb botons i un altre ESP32, un comandament a distància clàssic.

Tanmateix, aleshores vaig recordar que els controladors de vapor tenen un mode de funcionament Bluetooth de baixa energia (BLE). Vaig decidir abordar aquest problema i, al cap d'unes hores, vaig aprendre a rebre paquets del controlador.

Per fer-ho, només cal que busqueu un dispositiu HID que es digui SteamController i connecteu-hi. A continuació, utilitzeu un servei no documentat de Valve i diversos ordres no documentades, permetent la transmissió de paquets.

Control sense fil dels motors Lego amb el controlador de vapor

També em vaig trobar amb un format d'informe no documentat, que vaig analitzar manualment.

Control sense fil dels motors Lego amb el controlador de vapor

Al cap d'aproximadament una hora, em va quedar clar el significat de les banderes i els valors i vaig aconseguir parpellejar el LED mitjançant el controlador de Steam i l'ESP32. ¯_(ツ)_/¯

Arxius

v1.0: "enfocament de prova"
- la primera opció per a la qual vaig triar el regulador de tensió incorrecte. El TPS62291 només augmenta la tensió a 6 V. Estava desenvolupant diversos projectes en paral·lel i he oblidat que el dispositiu ha de funcionar amb 9 V.

v1.1: "prou bo"
— aquesta opció és visible als vídeos i tot funciona

v1.2: "final"
— va afegir LED indicadors a la sortida i va optimitzar la mida i la disposició del tauler

El següent vídeo breu mostra la fase de connexió (1-3 segons després de l'encesa) i el control de les sortides del motor. El connector Lego encara no està connectat. Anirà a l'espai buit al costat dels altres connectors, marcat amb un rectangle blanc.

El meu fill ara utilitza regularment aquest controlador per controlar els dispositius que ha construït.

Durant la prova d'estrès només em vaig trobar amb un problema: vaig pensar que el mode "decaiment ràpid" del conductor del motor funcionaria millor, però va provocar que la velocitat del motor baixés dràsticament després d'uns segons de funcionament. Així que vaig canviar el codi per utilitzar la decadència lenta.

Control sense fil dels motors Lego amb el controlador de vapor

Encara no estic segur de com funciona el DRV i per què el motor gira ràpidament al principi, i després de 10 segons comença a disminuir gradualment. Potser els MOSFET s'escalfen i la seva resistència augmenta massa.

Espero que aquest ús sense esforç d'Arduino serveixi d'inspiració per als altres perquè els seus fills s'introdueixin en l'electrònica.

Font: www.habr.com

Afegeix comentari