Lego motoru bezvadu vadība ar tvaika kontrolieri

Lego motoru bezvadu vadība ar tvaika kontrolieri

Kad es biju jauns, es vienmēr gribēju Lego tehno komplektus, ar kuriem veidot foršas lietas. Autonomi tanki ar griežamiem torņiem, kas šauj ar Lego klucīšiem. Bet tad man tāda komplekta nebija.

Un nebija pat parasto Lego klucīšu. Man bija tikai draugs, kura brālim bija visas šīs dārgās rotaļlietas.

Un tagad man ir tāda vecuma dēls. Un viņš būvē tankus, kas ... muļķīgi uz priekšu, līdz ietriecas sienā 🙂

Un tagad ir pienācis laiks ESP32 un lodāmura burvībai - saliksim viņiem pareizo tālvadības pulti!

Nē, es, protams, zinu par šādu pults esamību. Bet neviens no tiem man neder. Tie ir vai nu infrasarkanie, ar 80. gadu tehnoloģiju, vai arī pārāk lieli. Vai dārgas. Un pats galvenais, es nevarēšu savam dēlam pateikt ne par vienu no viņiem: "Es to izdarīju īpaši jūsu dēļ!"

Tāpēc izveidosim jaunu, uzlabotu tālvadības pulti, lai pārvaldītu visus!

Lego motoru bezvadu vadība ar tvaika kontrolieri

Sastāvdaļas:

  • ESP32-WROOM-32D | WiFi, BLE un procesors ar I/O – pietiek, lai vadītu divus motori и LED.
  • DRV8833 | dubultais H tilts ar pietiekamu jaudu motoriem.
  • TPS62162 | samaziniet spriegumu līdz 17 V, arī prieka pēc, lodējot WSON-8 2x2mm korpusu
  • CP2104 | ESP32 programmēšanai
  • Savienotāji motoru un diožu savienošanai. Izgrieziet vadus un pielodējiet tos apakšā, bet augšpusē pielīmējiet Lego savienotāju.

Tas viss tiks novietots uz diezgan mazas tāfeles - šeit ir tā parādīšanās EasyEDA redaktorā:

Lego motoru bezvadu vadība ar tvaika kontrolieri

Vads, kas redzams titulbildē, ir vajadzīgs nevis dažu kļūdu labošanai, bet gan barošanas nodrošināšanai no USB. Motoram ar to var nepietikt, bet diemžēl kontakti no Ķīnas pie manis vēl nav nonākuši. Tāpēc es vispirms pārbaudu gaismas diožu darbību. Skaistumam fotoattēlā es vienkārši uzliku savienotāju no motora uz tāfeles.

Manas plates versijai 1.1 (atšķirībā no versijas 1.2, kas jau ir EasyEDA) nebija gaismas diožu, tāpēc es pielodēju divas pretparalēlas diodes pie izejas, lai varētu redzēt, kas notiek. Ja paskatās uzmanīgi, videoklipā ir redzama alternatīva diožu pāra 0603 ieslēgšanās, kas norāda uz kustību uz priekšu/atpakaļ.

Kas attiecas uz tālvadības pulti, tad sākumā vienkārši gribēju salikt papildu plati ar pogām un vēl vienu ESP32 - klasisko tālvadības pulti.

Tomēr tad es atcerējos, ka Steam Controllers ir Bluetooth Low Energy (BLE) darbības režīms. Es nolēmu risināt šo problēmu un pēc dažām stundām uzzināju, kā saņemt paketes no kontroliera.

Lai to izdarītu, jums vienkārši jāatrod HID ierīce, kas sevi sauc par SteamController, un izveidojiet savienojumu ar to. Un pēc tam izmantojiet Valve un dažus nedokumentētu pakalpojumu nedokumentētas komandas, kas ļauj pārsūtīt paketes.

Lego motoru bezvadu vadība ar tvaika kontrolieri

Es atklāju arī nedokumentētu pārskata formātu, kuru es parsēju manuāli.

Lego motoru bezvadu vadība ar tvaika kontrolieri

Apmēram pēc stundas karogu un vērtību nozīme man kļuva skaidra, un man izdevās mirgot LED, izmantojot Steam kontrolieri un ESP32. ¯_(ツ)_/¯

Faili

v1.0: "izmēģinājuma pieeja"
- pirmais variants, kuram izvēlējos nepareizo sprieguma regulatoru. TPS62291 ņem spriegumu tikai līdz 6V. Paralēli izstrādāju vairākus projektus un aizmirsu, ka ierīcei jādarbojas ar 9V.

v1.1: "pietiekami labs"
- šī opcija ir redzama videoklipos, un viss darbojas

v1.2: "fināls"
- pievienoja izvadei indikatora gaismas diodes un optimizēja tāfeles izmēru un izkārtojumu

Nākamajā īsajā video ir parādīta savienojuma fāze (1-3 sekundes pēc ieslēgšanas) un motora izeju vadība. Lego savienotājs vēl nav pievienots. Tas nonāks tukšajā vietā blakus citiem savienotājiem, kas atzīmēti ar baltu taisnstūri.

Mans dēls tagad regulāri izmanto šo kontrolieri, lai vadītu mašīnas, kuras viņš ir samontējis.

Stresa testa laikā saskāros tikai ar vienu problēmu: domāju, ka motora vadītāja “ātrās samazināšanās” režīms [fast decay] darbosies vislabāk, taču tā dēļ pēc dažu sekunžu darbības motora ātrums ļoti samazinājās. . Tāpēc es nomainīju kodu, lai tas izmantotu "lēnu samazināšanos" [slow decay].

Lego motoru bezvadu vadība ar tvaika kontrolieri

Kamēr es neesmu pārliecināts, kā darbojas DRV un kāpēc motors sākumā griežas ātri, bet pēc 10 sekundēm tas sāk pakāpeniski palēnināties. Iespējams, MOSFET uzkarst un to pretestība palielinās pārāk daudz.

Es ceru, ka šis piemērs, kā bez piepūles izmantot Arduino, iedvesmo citus cilvēkus un ļauj iepazīstināt savus bērnus ar elektroniku.

Avots: www.habr.com

Pievieno komentāru