Contrôler vos modèles LEGO Powered Up au Nunchuk à l'aide de votre Arduino

Magazine
Marque
Hackable
Numéro
33
Mois de parution
avril 2020
Spécialité(s)


Résumé

Dans cet article, nous allons voir comment piloter un robot LEGO Powered Up à l’aide d’un Nintendo Nunchuk, grâce à un Arduino. Nous allons installer les librairies nécessaires pour pouvoir piloter notre modèle Powered Up et accéder aux informations du Nunchuk. Nous développerons ensuite notre programme de contrôle en C.


Body

v-photo

Dans l’article « Contrôler vos modèles LEGO au joypad à l'aide de BrickPi » de Hackable n°29, nous avons vu comment piloter des moteurs LEGO Mindstorms à l’aide de la carte d’extension BrickPi. Dans l’article « Contrôler vos modèles LEGO Powered Up au joypad à l'aide votre Raspberry Pi » de Hackable n°30, nous avons vu comment piloter des moteurs LEGO Powered Up à l’aide d’un Raspberry Pi. Nous allons maintenant remplacer notre Raspberry Pi par un Arduino, pour des raisons de simplicité, nous remplacerons aussi notre joypad par un Nintendo Nunchuk. Bien sûr, le langage de programmation va lui aussi changer, après le python, le NodeJS, nous allons coder en C.

1. Powered Up LEGO

LEGO propose depuis peu des moteurs et senseurs pilotables par Bluetooth. Toute l’intelligence est donc déportée sur la tablette ou le téléphone mobile. Le composant central est appelé Hub. Ce composant est à la fois le boîtier contenant les piles ainsi que le récepteur Bluetooth 4.1.

v-poweredup

Le but de cet article est donc de remplacer l’application LEGO Powered Up [1] par du code C que nous exécuterons sur Arduino.

2. Le matériel

La liste du matériel est assez simple, car LEGO nous propose déjà un modèle contenant pratiquement tout ce qui nous intéresse :

  • 1 Arduino supportant le Bluetooth et I2C. Dans notre exemple, nous utiliserons M5Stick-C.
  • 1 LEGO «Le train de passagers télécommandé» modèle 60197. Ce modèle fonctionne avec LEGO Powered Up [2].
  • 1 Nintendo Nunchuk.
  • 1 adaptateur Nunchuk / I2C.
  • 1 câble Grove.

3. Construction du Robot LEGO

v-modele

LEGO propose un modèle contenant tout ce qui nous intéresse, il s’agit de « Le train de passagers télécommandé » modèle numéro 60197. On trouve la notice de montage sur le site LEGO :

https://www.lego.com/fr-fr/service/buildinginstructions/search#?search&text=60197

Vous trouverez ce modèle sur le site MecaBricks :

https://www.mecabricks.com/fr/models/bJ2b65LK2yB

4. Montage électronique

v-cordon

Le montage électronique est très simple, il s’agit de connecter le Wii Nunchuk au M5Stick-C en utilisant la connexion I2C. Le plus simple est de connecter un cordon Grove vers l’adaptateur Wii Nunchuk. Voici comment créer votre cordon :

  • Noir : - (masse)
  • Rouge : + (+5 V)
  • Blanc : d (SDA)
  • Jaune : c (SCL)

5. Configuration logicielle

Nous allons utiliser le logiciel Arduino pour développer sur notre M5Stick-C. Un tutoriel en anglais est disponible sur le site M5Stack [3], voici un résumé des actions à effectuer :

  • Installer l’IDE Arduino à partir du site officiel [4].
  • Installer le kit de développement ESP32 [5].
  • Installer la bibliothèque M5StickC.

De plus pour notre projet, nous allons ajouter :

  • NintendoExtensionCtrl : pour pouvoir récupérer les informations du Nintendo Nunchuk.
  • Legoino : pour nous permettre de connecter le Hub LEGO via Bluetooth, puis de piloter le moteur du train LEGO. Attention, cette librairie est à télécharger sous forme de fichier ZIP [6].

Nous utiliserons aussi une librairie installée par défaut :

  • Wire : pour nous permettre de spécifier quelles GPIO vont nous permettre de communiquer en I2C.

6. Principe et Fonctionnement

v-nunchuck

Le but du programme que nous allons écrire est très simple: pouvoir piloter notre train LEGO à l’aide d’un Nintendo Nunchuk.

Pour piloter notre train LEGO, nous allons nous servir du Nintendo Nunchuk de la façon suivante :

  • Si le bouton Z est relâché, le train sera à l’arrêt.
  • Si le bouton Z est pressé, la vitesse du train sera calculée par rapport à l’inclinaison droite/gauche du Nunchuk. Inclinaison à droite le train avancera, inclinaison à gauche, le train reculera. La vitesse du train sera proportionnelle à l’inclinaison.

Les valeurs de l’inclinaison se situent dans l’intervalle 290 à 760 avec une position verticale à 510.

Les valeurs d’entrée du moteur se situent entre -100 et +100 avec un moteur à l’arrêt à 0.

Nous allons donc devoir convertir les valeurs d’entrée récupérées du Nunchuk pour obtenir les bonnes valeurs de sortie à transmettre au moteur.

La vitesse à transmettre au moteur sera donc calculée avec la formule suivante :

round((nchuk.accelX()-510)/2.5)

7. Programmation

Ci-dessous, le code que nous détaillerons par la suite.

  1 #include <NintendoExtensionCtrl.h>
  2 #include <PoweredUpHub.h>
  3 #include <Wire.h>
  4
  5 #define SDA       32
  6 #define SCL       33
  7
  8 PoweredUpHub myHub;
  9 PoweredUpHub::Port _portA = PoweredUpHub::Port::A;
10
11 Nunchuk nchuk;
12
13 void setup() {
14   Wire.begin(SDA,SCL,1000);
15   nchuk.begin();
16   myHub.init();
17 }
18
19 void loop() {
20   boolean nunchuk_ok = nchuk.update();
21   boolean powerup_ok = myHub.isConnected();
22
23   if (!nunchuk_ok) {
24     while (!nchuk.connect()) {
25       delay(100);
26     }
27   }
28   else {
29     if (!powerup_ok)
30     {
31       if (myHub.isConnecting()) {
32         myHub.connectHub();
33       }
34     }
35     else
36     {
37       if (nchuk.buttonZ() == true) {
38           myHub.setLedColor(GREEN);
39           myHub.setMotorSpeed(_portA, round((nchuk.accelX()-510)/2.5));
40       }
41       else {
42           myHub.stopMotor(_portA);
43           myHub.setLedColor(WHITE);
44       }
45     }
46     delay(100);
47   }
48 }

Voici une description du fonctionnement de notre programme.

Des lignes 1 à 3, nous commençons par déclarer les bibliothèques que nous allons utiliser.

En lignes 5 et 6, nous déclarons sur quelles GPIO nous voulons utiliser l’I2C, il s’agit du seul connecteur Grove disponible sur le M5Stick-C.

Les lignes 8 et 9 nous permettent de déclarer notre Hub LEGO ainsi que le moteur qui sera attaché sur le port A.

En ligne 11, on déclare notre Nunchuk.

Des lignes 13 à 17, il s’agit de l’initialisation du programme. Nous initialisons le port I2C, le Nunchuk et le Hub LEGO.

Attaquons-nous maintenant au programme principal, à partir de la ligne 19.

Des lignes 23 à 27, nous attendons que le Nunchuk soit reconnu.

De même, des lignes 29 à 34, nous attendons que le Hub soit reconnu.

Si le bouton Z du Nunchuk est pressé, nous passons la LED du Hub à vert et on transmet la vitesse à l’aide de la formule calculée précédemment (lignes 37 à 40).

Si le bouton Z du Nunchuk est relâché, nous arrêtons le moteur et nous passons la LED du Hub à blanc (lignes 41 à 44).

Conclusion

Nous voici maintenant capables de piloter nos modèles LEGO à l’aide de composants compatibles Arduino. Vous n’avez plus qu’à imaginer vos propres montages, les réaliser et bien sûr, les partager avec la communauté.

Références

[1] Powered Up sur le site LEGO : https://www.lego.com/en-us/service/device-guide/powered-up

[2] Le train de passagers télécommandé sur le site LEGO : https://www.lego.com/fr-fr/product/passenger-train-60197

[3] Arduino IDE pour M5Stick-C : https://docs.m5stack.com/#/en/arduino/arduino_development

[4] Téléchargement de l’IDE Arduino  : https://www.arduino.cc/en/Main/Software

[5] Kit de développement esp32 pour Arduino  : https://dl.espressif.com/dl/package_esp32_index.json

[6] Librairie Legoino : https://github.com/corneliusmunz/legoino



Article rédigé par

Par le(s) même(s) auteur(s)

Auto-héberger son agenda avec Baïkal

Magazine
Marque
Linux Pratique
HS n°
Numéro
46
Mois de parution
octobre 2019
Spécialité(s)
Résumé

Il est très utile de pouvoir avoir un calendrier partagé accessible à tout moment sur toute sorte de clients : PC, tablette, téléphone... La solution la plus simple est souvent d’utiliser Google Calendar. Dans cet article, nous allons voir qu’il n’est pas si compliqué d’héberger soi-même un calendrier partagé à l’aide de Baïkal. Nous aborderons l’installation et la configuration de Baïkal. Pour finir, nous découvrirons la configuration des clients Thunderbird, Android et iOS.

Contrôler vos modèles Lego PoweredUp au Joypad à l'aide de votre Raspberry Pi

Magazine
Marque
Hackable
Numéro
30
Mois de parution
juillet 2019
Spécialité(s)
Résumé

Dans cet article, nous allons voir comment piloter un robot Lego PoweredUp à l’aide d’un JoyPad, grâce à un Raspberry Pi. Nous allons installer tout le nécessaire sur notre Raspberry Pi pour pouvoir piloter notre modèle Lego PoweredUp. Nous utiliserons NodeJS, donc le langage JavaScript, pour piloter notre modèle Lego.

Les derniers articles Premiums

Les derniers articles Premium

La place de l’Intelligence Artificielle dans les entreprises

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

L’intelligence artificielle est en train de redéfinir le paysage professionnel. De l’automatisation des tâches répétitives à la cybersécurité, en passant par l’analyse des données, l’IA s’immisce dans tous les aspects de l’entreprise moderne. Toutefois, cette révolution technologique soulève des questions éthiques et sociétales, notamment sur l’avenir des emplois. Cet article se penche sur l’évolution de l’IA, ses applications variées, et les enjeux qu’elle engendre dans le monde du travail.

Petit guide d’outils open source pour le télétravail

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Ah le Covid ! Si en cette période de nombreux cas resurgissent, ce n’est rien comparé aux vagues que nous avons connues en 2020 et 2021. Ce fléau a contraint une large partie de la population à faire ce que tout le monde connaît sous le nom de télétravail. Nous avons dû changer nos habitudes et avons dû apprendre à utiliser de nombreux outils collaboratifs, de visioconférence, etc., dont tout le monde n’était pas habitué. Dans cet article, nous passons en revue quelques outils open source utiles pour le travail à la maison. En effet, pour les adeptes du costume en haut et du pyjama en bas, la communauté open source s’est démenée pour proposer des alternatives aux outils propriétaires et payants.

Sécurisez vos applications web : comment Symfony vous protège des menaces courantes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les frameworks tels que Symfony ont bouleversé le développement web en apportant une structure solide et des outils performants. Malgré ces qualités, nous pouvons découvrir d’innombrables vulnérabilités. Cet article met le doigt sur les failles de sécurité les plus fréquentes qui affectent même les environnements les plus robustes. De l’injection de requêtes à distance à l’exécution de scripts malveillants, découvrez comment ces failles peuvent mettre en péril vos applications et, surtout, comment vous en prémunir.

Bash des temps modernes

Magazine
Marque
Contenu Premium
Spécialité(s)
Résumé

Les scripts Shell, et Bash spécifiquement, demeurent un standard, de facto, de notre industrie. Ils forment un composant primordial de toute distribution Linux, mais c’est aussi un outil de prédilection pour implémenter de nombreuses tâches d’automatisation, en particulier dans le « Cloud », par eux-mêmes ou conjointement à des solutions telles que Ansible. Pour toutes ces raisons et bien d’autres encore, savoir les concevoir de manière robuste et idempotente est crucial.

Les listes de lecture

7 article(s) - ajoutée le 01/07/2020
La SDR permet désormais de toucher du doigt un domaine qui était jusqu'alors inaccessible : la réception et l'interprétation de signaux venus de l'espace. Découvrez ici différentes techniques utilisables, de la plus simple à la plus avancée...
8 article(s) - ajoutée le 01/07/2020
Au-delà de l'aspect nostalgique, le rétrocomputing est l'opportunité unique de renouer avec les concepts de base dans leur plus simple expression. Vous trouverez ici quelques-unes des technologies qui ont fait de l'informatique ce qu'elle est aujourd'hui.
9 article(s) - ajoutée le 01/07/2020
S'initier à la SDR est une activité financièrement très accessible, mais devant l'offre matérielle il est parfois difficile de faire ses premiers pas. Découvrez ici les options à votre disposition et les bases pour aborder cette thématique sereinement.
Voir les 33 listes de lecture

Abonnez-vous maintenant

et profitez de tous les contenus en illimité

Je découvre les offres

Déjà abonné ? Connectez-vous