Contrôle sans fil des moteurs Lego avec le Steam Controller

Contrôle sans fil des moteurs Lego avec le Steam Controller

Quand j'étais jeune, j'ai toujours voulu avoir des sets techno Lego avec lesquels construire des choses sympas. Des chars autonomes dotés de tourelles tournantes qui tirent des briques Lego. Mais je n’avais pas un tel ensemble.

Et il n’y avait même pas de briques Lego ordinaires. Je n'avais qu'un ami dont le frère possédait tous ces jouets coûteux.

Et maintenant, j'ai un fils de cet âge. Et il construit des tanks qui... avancent bêtement jusqu'à s'écraser contre le mur 🙂

Et maintenant, place à l'ESP32 et à la magie du fer à souder : assemblons la télécommande qui leur convient !

Non, bien sûr, je connais l'existence de telles télécommandes. Mais aucun d’entre eux ne me convient parfaitement. Ils sont soit infrarouges, avec la technologie des années 80, soit trop grands. Ou des plus chers. Et surtout, je ne pourrai en parler à mon fils : « Je l’ai fait spécialement pour toi !

Alors créons une nouvelle télécommande améliorée pour gouverner tout le monde !

Contrôle sans fil des moteurs Lego avec le Steam Controller

Ingrédients:

  • ESP32-WROOM-32D | WiFi, BLE et processeur avec E/S - de quoi en contrôler deux moteurs и LED.
  • DRV8833 | double pont en H avec suffisamment de puissance pour les moteurs.
  • TPS62162 | abaissez la tension à 17 V, également pour vous amuser lors de la soudure du boîtier WSON-8 2x2 mm
  • CP2104 | pour la programmation ESP32
  • Connecteurs pour connecter des moteurs et des diodes. Coupez les fils et soudez-les en bas, et collez le connecteur Lego sur le dessus.

Tout cela sera placé sur un tableau assez petit - voici son apparition dans l'éditeur EasyEDA :

Contrôle sans fil des moteurs Lego avec le Steam Controller

Le fil, visible sur la photo de titre, n'est pas nécessaire pour corriger certaines erreurs, mais pour alimenter depuis USB. Ce n'est peut-être pas suffisant pour le moteur, mais malheureusement, je n'ai pas encore reçu de contacts en provenance de Chine. Par conséquent, je vérifie d'abord le fonctionnement des LED. Pour la beauté de la photo, j'ai juste mis le connecteur du moteur sur la carte.

La version 1.1 de ma carte (contrairement à la version 1.2 déjà sur EasyEDA) n'avait pas de LED, j'ai donc soudé deux diodes anti-parallèles à la sortie pour voir ce qui se passait. Si vous regardez bien, la vidéo montre l'allumage alterné d'une paire de diodes 0603, indiquant un mouvement avant/arrière.

Quant à la télécommande, au début je voulais juste assembler une carte supplémentaire avec des boutons et un autre ESP32 - une télécommande classique.

Cependant, je me suis ensuite rappelé que les contrôleurs Steam disposent d'un mode de fonctionnement Bluetooth Low Energy (BLE). J'ai décidé de résoudre ce problème et après quelques heures, j'ai appris comment recevoir des paquets du contrôleur.

Pour ce faire, il vous suffit de rechercher un périphérique HID qui s'appelle SteamController et de vous y connecter. Et puis utilisez un service non documenté de Valve et quelques commandes non documentées, permettant la transmission de paquets.

Contrôle sans fil des moteurs Lego avec le Steam Controller

Je suis également tombé sur un format de rapport non documenté que j'ai analysé manuellement.

Contrôle sans fil des moteurs Lego avec le Steam Controller

Après environ une heure, la signification des drapeaux et des valeurs m'est devenue claire et j'ai réussi à faire clignoter la LED à l'aide du contrôleur Steam et de l'ESP32. ¯_(ツ)_/¯

Fichiers

v1.0: "approche d'essai"
- la première option pour laquelle j'ai choisi le mauvais régulateur de tension. Le TPS62291 ne prend que la tension jusqu'à 6 V. Je développais plusieurs projets en parallèle, et j'avais oublié que l'appareil devait fonctionner en 9V.

v1.1: "assez bien"
- cette option est visible dans les vidéos, et tout fonctionne

v1.2: "final"
- ajout de LED d'indication à la sortie et optimisation de la taille et de la disposition de la carte

La courte vidéo suivante montre la phase de connexion (1 à 3 secondes après la mise sous tension) et le contrôle des sorties du moteur. Le connecteur de Lego n'est pas encore connecté. Il ira dans l'espace vide à côté des autres connecteurs, marqué d'un rectangle blanc.

Mon fils utilise désormais régulièrement ce contrôleur pour contrôler les machines qu'il a assemblées.

Lors du test de résistance, je n'ai rencontré qu'un seul problème : je pensais que le mode « décroissance rapide » [décroissance rapide] du pilote du moteur fonctionnerait mieux, mais à cause de cela, après quelques secondes de fonctionnement, la vitesse du moteur a beaucoup chuté. . J'ai donc modifié le code pour qu'il utilise "slow decay" [slow decay].

Contrôle sans fil des moteurs Lego avec le Steam Controller

Bien que je ne sache pas comment fonctionne le DRV et pourquoi le moteur tourne vite au début, puis après 10 secondes, il commence à ralentir progressivement. Peut-être que les MOSFET chauffent et que leur résistance augmente trop.

J'espère que cet exemple d'utilisation simple de l'Arduino inspirera d'autres personnes et leur permettra d'initier leurs enfants à l'électronique.

Source: habr.com

Ajouter un commentaire