Commande de moteur sans fil de Lego à l'aide de Steam Controller



Quand j'étais jeune, j'ai toujours voulu avoir des kits Lego Technics pour collecter toutes sortes de trucs sympas d'eux. Réservoirs autonomes avec tourelles rotatives tirant des briques Lego. Mais je n'avais pas un tel ensemble.

Et même les briques habituelles de Lego ne l'étaient pas. Je n'avais qu'un ami dont le frère avait tous ces jouets chers.

Et maintenant, j'ai un fils de son âge. Et il construit des réservoirs qui ... collent bêtement en avant jusqu'à ce qu'ils heurtent le mur :)

Et maintenant, le moment est venu pour ESP32 et la magie du fer à souder - nous allons assembler la télécommande appropriée pour eux!

Non, bien sûr, je connais l'existence de telles télécommandes. Mais aucun ne me convient parfaitement. Ils sont soit infrarouges, avec la technologie des années 80, soit trop grands. Ou cher. Et le plus important - je ne peux pas dire à mon fils à propos de l'un d'eux: "Je l'ai fait spécialement pour vous!"

Faisons donc une nouvelle télécommande améliorée pour gouverner tout le monde!



Ingrédients:

  • ESP32-WROOM-32D | WiFi, BLE et un processeur avec E / S - assez pour contrôler deux moteurs et une LED .
  • DRV8833 | double pont en H avec suffisamment de puissance pour les moteurs.
  • TPS62162 | abaissement de la tension à 17 V, ainsi que pour le divertissement lors du soudage du boîtier WSON-8 2 × 2 mm
  • CP2104 | pour programmer ESP32
  • . , Lego .

Tout cela sera situé sur une carte assez petite - voici son apparence dans l'éditeur EasyEDA: Le



fil visible sur la photo d'en-tête n'est pas nécessaire pour corriger les erreurs, mais pour alimenter l'USB. Ce n'est peut-être pas suffisant pour le moteur, mais, malheureusement, les contacts de la Chine ne me sont toujours pas parvenus. Par conséquent, je vérifie d'abord le fonctionnement des LED. Pour la beauté de la photo, je viens de mettre le connecteur du moteur sur la carte.

Sur la version 1.1 de ma carte (contrairement à la version 1.2, qui est déjà sur EasyEDA), il n'y avait pas de LED, j'ai donc soudé deux diodes anti-parallèles à la sortie pour que ce qui se passait soit visible. Si vous regardez de près, la vidéo montre une inclusion alternative d'une paire de diodes 0603, indiquant un mouvement avant / arrière.



En ce qui concerne le panneau de commande, au début, je voulais simplement récupérer une carte supplémentaire avec des boutons et un autre ESP32 - une télécommande classique.

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

Pour ce faire, recherchez simplement le périphérique HID qui s'appelle SteamController et connectez-vous à celui-ci. Et puis utilisez le service non documenté de Valve et quelques commandes non documentées qui permettent les transferts de paquets.



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



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

Des dossiers



v1.0: «approche d'essai»
- la première option pour laquelle j'ai choisi le mauvais régulateur de tension. Le TPS62291 n'augmente la tension qu'à 6 V. J'ai développé plusieurs projets en parallèle, et j'ai oublié que l'appareil doit fonctionner avec 9 V.

v1.1: «assez bien»
- cette option est visible dans les publicités, 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 Lego n'est pas encore connecté. Il ira dans un espace vide à côté des autres connecteurs, marqué d'un rectangle blanc.



Mon fils utilise maintenant régulièrement ce contrôleur pour contrôler les appareils qu'il a assemblés.

Pendant le test de stress, je n'ai rencontré qu'un seul problème: je pensais que le mode de «décroissance rapide» du pilote de moteur fonctionnerait mieux, mais à cause de cela, après quelques secondes de fonctionnement, la vitesse du moteur chuterait beaucoup. J'ai donc changé le code pour qu'il utilise la «décroissance lente».



Jusqu'à présent, je ne sais pas comment fonctionne le DRV et pourquoi le moteur tourne d'abord rapidement, puis après 10 secondes, il commence à ralentir progressivement. Peut-être que les MOSFET se réchauffent et que leur résistance augmente trop.



J'espère que cet exemple d'utilisation d'Arduino inspire sans effort d'autres personnes et leur permet d'initier leurs enfants à l'électronique.

All Articles