Control sen fíos de motores Lego co controlador de vapor

Control sen fíos de motores Lego co controlador de vapor

Cando era novo, sempre quixen ter conxuntos de techno Lego para construír cousas interesantes. Tanques autónomos con torretas xiratorias que disparan ladrillos de Lego. Pero entón non tiña tal conxunto.

E nin sequera había ladrillos Lego habituais. Só tiña un amigo cuxo irmán tiña todos estes xoguetes caros.

E agora teño un fillo desa idade. E constrúe tanques que... estúpidamente adiante ata que chocan contra a parede 🙂

E agora toca o ESP32 e a maxia do soldador: montemos o control remoto adecuado para eles.

Non, claro que sei da existencia de tales mandos a distancia. Pero ningún deles me convén perfectamente. Son infravermellos, con tecnoloxía dos anos 80 ou demasiado grandes. Ou caras. E o máis importante, non lle poderei dicir ao meu fillo ningún deles: "Fíxeno especialmente para ti!"

Entón, imos facer un novo control remoto mellorado para gobernar a todos!

Control sen fíos de motores Lego co controlador de vapor

Ingredientes:

  • ESP32-WROOM-32D | WiFi, BLE e procesador con E/S: suficiente para controlar dous motores и LED.
  • DRV8833 | Dobre ponte en H con potencia suficiente para os motores.
  • TPS62162 | rebaixa a tensión a 17 V, tamén para divertirse ao soldar a caixa WSON-8 de 2x2 mm
  • CP2104 | para programación ESP32
  • Conectores para conectar motores e diodos. Corta os fíos e soldaos na parte inferior e pega o conector Lego na parte superior.

Todo isto colocarase nun taboleiro bastante pequeno: aquí está a súa aparición no editor EasyEDA:

Control sen fíos de motores Lego co controlador de vapor

O cable, que é visible na foto do título, non é necesario para corrixir algúns erros, senón para subministrar enerxía desde USB. Pode que non sexa suficiente para o motor, pero, por desgraza, aínda non me chegaron contactos de China. Polo tanto, primeiro comprobo o funcionamento dos LED. Para a beleza da foto, acabo de poñer o conector do motor na placa.

A versión 1.1 da miña placa (a diferenza da versión 1.2 que xa está en EasyEDA) non tiña LEDs, polo que soldei dous díodos antiparalelos á saída para poder ver o que estaba a pasar. Se miras detidamente, o vídeo mostra o acendido alternativo dun par de díodos 0603, que indica un movemento cara a adiante/atrás.

En canto ao control remoto, ao principio só quería montar unha placa adicional con botóns e outro ESP32, un mando a distancia clásico.

Non obstante, recordei que os controladores de vapor teñen un modo de funcionamento Bluetooth Low Energy (BLE). Decidín tratar este problema e, despois dunhas horas, aprendín a recibir paquetes do controlador.

Para iso, só precisa buscar un dispositivo HID que se chame SteamController e conectarse a el. E despois usa un servizo non documentado de Valve e algúns comandos non documentados, permitindo a transmisión de paquetes.

Control sen fíos de motores Lego co controlador de vapor

Tamén atopei un formato de informe non documentado que analizei manualmente.

Control sen fíos de motores Lego co controlador de vapor

Despois de aproximadamente unha hora, o significado das bandeiras e dos valores quedou claro para min, e conseguín pestanexar o LED usando o controlador Steam e o ESP32. ¯_(ツ)_/¯

Arquivos

v1.0: "enfoque de proba"
- a primeira opción para a que escollín o regulador de tensión incorrecto. O TPS62291 só toma a tensión ata 6 V. Estaba desenvolvendo varios proxectos en paralelo e esquecín que o dispositivo necesita funcionar con 9 V.

v1.1: "suficientemente bo"
- esta opción está visible nos vídeos e todo funciona

v1.2: "final"
- engadiu LEDs indicadores á saída e optimizou o tamaño e a disposición do taboleiro

O seguinte vídeo breve mostra a fase de conexión (1-3 segundos despois do encendido) e o control das saídas do motor. O conector de Lego aínda non está conectado. Irá ao espazo baleiro xunto aos outros conectores, marcado cun rectángulo branco.

O meu fillo agora usa regularmente este controlador para controlar as máquinas que montou.

Durante a proba de esforzo, atopei só un problema: pensei que o modo de "desintegración rápida" [decadencia rápida] do controlador do motor funcionaría mellor, pero por iso, despois duns segundos de funcionamento, a velocidade do motor baixou moito. . Entón cambiei o código para que utilizase "slow decay" [slow decay].

Control sen fíos de motores Lego co controlador de vapor

Aínda que non estou seguro de como funciona o DRV e por que o motor xira rápido ao principio, e despois de 10 segundos comeza a diminuír gradualmente. Quizais os MOSFET estean quentando e a súa resistencia aumente demasiado.

Espero que este exemplo de como usar o Arduino inspire a outras persoas sen esforzo e lles permita introducir aos seus fillos á electrónica.

Fonte: www.habr.com

Engadir un comentario