Table des matières:
Vidéo: Télécommande Bluetooth en bois pour train Lego Duplo : 3 étapes (avec photos)
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:06
Mes enfants ont adoré ce petit train Lego Duplo, en particulier mon plus jeune qui a du mal à se communiquer avec des mots. Je voulais donc lui construire quelque chose qui l'aiderait à jouer avec le train indépendamment des adultes ou des téléphones/tablettes. Quelque chose qui ajouterait une dimension supplémentaire au train et lui donnerait une valeur ludique supplémentaire
L'ensemble Lego a déjà peu de moyens de contrôler le train, vous pouvez le pousser vers l'avant pour démarrer et le maintenir pour l'arrêter, vous pouvez le contrôler à l'aide d'étiquettes de couleur qui vont sur la voie afin que lorsque le train le passe dessus, il déclenche différentes actions, c'est-à-dire avant, arrière, jouer des sons allumer les lumières. Vous pouvez également télécharger une application pour votre téléphone ou votre tablette qui peut se connecter au train via Bluetooth.
Voici un examen complet du train
Après avoir cherché sur Internet, j'ai découvert qu'il y avait assez peu de personnes différentes qui avaient toutes un code écrit pour contrôler le train. Le nœud 'Poweredup' écrit par nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) ressemblait à un début parfait, il a été écrit en utilisant Javascript avec lequel je n'étais pas partiellement familier mais je pensais que si je pourrait trouver une puce basée sur Java, ce serait un bon début.
Encore une fois, après avoir cherché à nouveau sur Internet, j'ai trouvé le système espruino, il est similaire à l'ardiuno mais basé sur javascript. Le code espriuno peut être chargé sur une puce MDBT42Q dotée d'un Bluetooth intégré. Je pensais que si je pouvais y charger le module "sous tension", j'en serais à mi-chemin, mais ce n'était pas le cas car le module contenait de nombreuses bibliothèques trop grandes pour être chargées sur le MDBT42Q, il semble donc que je dois trouver une solution plus simple ….
Étape 1: le code
Esprinuo
Pour ceux qui ne connaissent pas la plate-forme Espruino https://www.espruino.com (et je ne l'ai pas fait) est-ce très similaire à l'Arduino, il y a quelques différences principales, il a écrit pour javascript plutôt c, il se sent légèrement plus récent il y a donc moins d'exemples, mais le support via les forums est excellent et très utile.
Javascript rencontrez le train
Le premier obstacle était de se connecter au train via Bluetooth, cela peut être fait en utilisant la classe NRF fournie avec le code espruino.
NRF.connect peut être utilisé pour se connecter au train, mais votre premier besoin de trouver l'adresse du train lui-même, vous pouvez utiliser NRF.findDevices pour obtenir cette information
Une fois que vous avez fait cela, vous devez ensuite envoyer la valeur du train deux à la poignée de main avec le train, pour mon train c'était "00001623-1212-efde-1623-785feabcd123" suivi de "00001624-1212-efde-1623-785feabcd123" je crois ce sera le même pour tous les trains à vapeur mais les autres versions c'est-à-dire le kit cargo peuvent être différentes
Une fois que vous avez cela, vous pouvez connecter le train en utilisant une fonction comme la suivante, pouvez-vous dire quand le train s'est connecté car il clignotera en bleu
NRF.connect("e0:7d:ea:0c:03:29").then(function(g) {
console.log("Démarrage de la connexion2"); gatt = g; return gatt.getPrimaryService("00001623-1212-efde-1623-785feabcd123"); }).then(function(service) { return service.getCharacteristic("00001624-1212-efde-1623-785feabcd123"); }).then(function(characteristic) { Characteristic_store = caractéristique; return caractéristique.readValue(); }).then(value => { console.log(value); }).then(function() { console.log("Train Connected"); connected = 1;
Les trucs amusants
Maintenant que vous êtes connecté au train, il est temps de faire toutes les choses amusantes comme le faire avancer, faire du son et allumer et éteindre la lumière. C'est un travail simple d'envoyer au train une valeur de préparation, suivie de la commande réelle, c'est-à-dire
fonction play_horn() {
console.log("message = ", Characteristic_store); const prepval = new Uint8Array([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue(prepval).then(_ => { Characteristic_store.writeValue(sendvalue); }); }
Vous devrez peut-être fouiller un peu pour trouver une autre commande que celles que j'ai utilisées
Boutons et leviers
Le côté physique de la télécommande est très simple, quatre boutons (pour jouer des sons, allumer et éteindre les lumières) et un potentiomètre qui se connecte au levier pour que vous puissiez contrôler la vitesse et la direction du train
Le bouton n'a pas besoin de résistance de rappel à la place, vous pouvez le faire dans le code, c'est-à-dire
pinMode(D15, 'input_pulldown');
Vous pouvez connecter le potentiomètre à l'une des entrées puis lui lire le signal analogique à l'aide de la commande suivante
var lecture = analogRead(D31);
L'autre différence avec l'arduino est que esprunio n'a pas de configuration ni de boucle. Au lieu de cela, je place toutes les commandes/déclencheurs séparés dans des fonctions, puis je configure setInterval qui boucle toutes les 100 millisecondes, en écoutant le bouton puis en exécutant la fonction requise lorsque le bouton a été enfoncé.
if (digitalRead(D15) == 1) { play_horn(); }
Actionner le levier était un peu plus compliqué car je voulais pouvoir ajuster la vitesse de manière incrémentielle, je devais donc d'abord envoyer la valeur analogique pour fonctionner
var lecture = analogRead(D31);
train_direction(lecture * 1024);
Ensuite, dans la fonction train_direction, j'ai décomposé la commande en 6 incréments différents en fonction de la valeur du pot
Tout en haut, dit au train d'aller à toute vitesse
A mi-hauteur, dit au train d'avancer à 50% de sa vitesse
Au milieu, dit au train de s'arrêter
A mi-chemin, dit au train de reculer à 50% de sa vitesse
Tout en bas, dit au train d'aller à toute vitesse en marche arrière
c'est à dire
fonction train_direction(dir_val) {
//console.log("message = ", Characteristic_store); const prepval = new Uint8Array([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); if (dir_val > 300 && dir_val 400 && dir_val 500) { const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) { const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) { const sendvalue = new Uint8Array([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } if (dir_val { Characteristic_store.writeValue(sendvalue); }); }
Le code complet peut être en bas pour le lien ci-dessous
Étape 2: Le câblage
Le câblage était la partie la plus simple
Il se composait simplement de 4 boutons-poussoirs connectés à D15, D16, D17 et D18 sans aucune résistance de rappel comme cela a été fait dans le code et 1 résistance de 10k connectée à D31
Je travaille toujours sur l'alimentation mais actuellement toute l'alimentation provient d'un micro USB et cela pourrait être connecté directement à une banque d'alimentation ou à un port USB
Étape 3: La construction
La télécommande est principalement composée de feuilles de contreplaqué A4 de 3 mm, 6 mm ou 9 mm.
J'espère que le modèle et les photos vous donneront tout ce dont vous avez besoin pour refaire, mais il y a quelques notes qui pourraient vous aider
Le support de bouton-poussoir de 3 mm sert à coller le bouton-poussoir, l'espace positionnera le bouton au bon endroit mais nous vous permettons d'accéder à la jambe à l'arrière afin que vous puissiez souder à la puce électronique, à l'envers, vous pouvez également monter le MDBT42Q en utilisant de la colle. Sur le devant, vous devrez ajouter de la mousse pour que les boutons rebondissent un peu lorsque vous les appuyez, vous pouvez également utiliser des ressorts
Les boutons de 9 mm auront besoin de la peinture, de la gravure ou de quelque chose d'autre du logo pour montrer quel bouton fait quoi
Le levier/poignée devra être superposé, j'ai utilisé un goujon de 6 mm pour aider à les aligner dans toutes les positions correctes
Conseillé:
La télécommande TV devient une télécommande RF -- Tutoriel NRF24L01+ : 5 étapes (avec photos)
La télécommande TV devient une télécommande RF || Tutoriel NRF24L01+ : Dans ce projet, je vais vous montrer comment j'ai utilisé le populaire IC RF nRF24L01+ pour régler la luminosité d'une bande LED sans fil à l'aide de trois boutons inutiles d'une télécommande de téléviseur. Commençons
Contrôlez la disposition de votre train miniature avec votre TÉLÉCOMMANDE TV ! : 7 étapes (avec photos)
Contrôlez votre disposition de train miniature avec votre télécommande TV ! : dans cette instructable, je vais vous montrer comment faire un système de télécommande IR pour un train miniature. Vous pourrez alors contrôler vos trains tout en vous relaxant sur votre canapé. Alors, commençons
Comment utiliser quelques morceaux de bois pour assembler un bras de robot en bois mignon et puissant : 10 étapes
Comment utiliser quelques morceaux de bois pour assembler un bras de robot en bois mignon et puissant : Le nom du bras de robot est WoodenArm. Ça a l'air très mignon ! Si vous voulez plus de détails sur WoodenArm, veuillez vous référer à www.lewansoul.com Maintenant, nous pouvons faire une introduction sur le WoodenArm, passons à autre chose
Convertissez votre télécommande IR en télécommande RF : 9 étapes (avec photos)
Convertissez votre télécommande IR en télécommande RF : dans Instructable d'aujourd'hui, je vais vous montrer comment vous pouvez utiliser un module RF générique sans microcontrôleur, ce qui nous conduira éventuellement à créer un projet dans lequel vous pourrez convertir une télécommande IR de n'importe quel appareil en RF À distance. Le principal avantage de convertir un
Contrôleur numérique pour suspension pneumatique à l'aide d'Arduino et d'une télécommande pour smartphone : 7 étapes (avec photos)
Contrôleur numérique pour suspension pneumatique à l'aide d'Arduino et d'une télécommande pour smartphone : Bonjour à tous. c'est aussi mon tout premier instructable donc supporter w