Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Raspberry Pi Pico et Pico W
  3. Apprentissage par la pratique
Extrait - Raspberry Pi Pico et Pico W La programmation Python sur microcontrôleur avec MicroPython
Extraits du livre
Raspberry Pi Pico et Pico W La programmation Python sur microcontrôleur avec MicroPython
2 avis
Revenir à la page d'achat du livre

Apprentissage par la pratique

Préambule

Rien de tel que la réalisation de projets pour maîtriser un microcontrôleur.

Ce chapitre propose huit projets abordables pour découvrir et maîtriser différents aspects du Raspberry-Pi Pico sous MicroPython.

Ces projets étant également orientés STEM (Science, Technology, Engineering, Mathematics), ils pourront servir de fondement pour l’apprentissage de la programmation Python sur microcontrôleur.

Les schémas de raccordements et scripts d’exemples sont également disponibles sur le dépôt : https://github.com/mchobby/pico-projects

L’anglais étant la langue maîtresse dans le monde de la programmation et de l’électronique, bon nombre de termes, noms de variables et noms de fonctions seront en anglais.

Feu de circulation simple

Le feu de circulation est l’une des applications les plus fréquemment rencontrées dans l’apprentissage des microcontrôleurs. Ce projet propose d’implémenter un feu de circulation pour en maîtriser le contrôle.

1. Présentation

Un feu de circulation se compose de trois LEDs : rouge, vert et jaune. Le feu piéton est, lui, composé de deux LEDs (rouge, vert) et d’un bouton pour le passage piéton.

Dans un feu de circulation simple, le trafic n’est jamais interrompu sauf si un piéton doit traverser. Le piéton a la priorité absolue sur le trafic routier, une pression sur le bouton au passage piéton interrompt immédiatement le trafic routier.

Le graphique ci-dessous présente les états et étapes du fonctionnement du feu de circulation et du feu du passage piéton.

images/06RI05.png

États d’un passage piéton

1 - En temps normal, le feu de circulation est vert. Le système est en attente de présentation d’un piéton (et sa pression sur le bouton).

2  - Le feu de circulation passe à l’orange (deux secondes) pour stopper le trafic avant de passer au rouge.

3 - Étape importante où tout trafic (piéton et véhicule) est à l’arrêt. Une période qui dure 2 secondes. 

4 - Le feu piéton passe enfin au vert pendant une période de 20 secondes.

5 - Deuxième étape importante où tout trafic est à l’arrêt. Une période qui se prolonge durant 3 secondes avant que la circulation automobile puisse reprendre (étape 1).

2. Matériel et montage

Ce projet nécessite le matériel suivant :

  • 2x LED verte,

  • 2x LED rouge,

  • 1x LED orange,

  • 4x résistance de 470 (jaune, violet, brun, or)...

Jeu de rapidité

Le jeu de rapidité se joue à deux. Il est à la fois simple et ludique.

Chaque joueur dispose d’un bouton qu’il doit presser le plus vite possible à l’activation d’un avertisseur (signal lumineux, signal sonore). Le signal est émis à un temps aléatoire après le début du round.

Si un utilisateur presse son bouton avant l’émission de l’activation de l’avertisseur (s’il triche, donc), alors il perd son droit de participation pour le round.

Le gagnant est notifié à l’aide d’un signal lumineux (situé dans le bouton ou à côté de celui-ci).

Un troisième bouton est placé près de l’avertisseur ; celui-ci est utilisé pour démarrer le round. Ce démarrage de round est également notifié par l’avertisseur.

1. Matériel et montage

Ce projet nécessite le matériel suivant :

  • 1x LED verte,

  • 2x LED rouge,

  • 1x Piezo buzzer,

  • 3x résistance de 470  (jaune, violet, brun, or),

  • 1x résistance de 100  (brun, noir, brun, or),

  • 3x bouton poussoir.

images/06RI08.png

Jeu de rapidité

N’hésitez pas à consulter la version en ligne de l’ouvrage pour disposer d’un schéma de raccordement en couleur.

Comme pour le précédent projet, les boutons poussoir permettent de raccorder les broches à la masse lorsqu’ils sont pressés. L’action utilisateur crée donc un flanc descendant sur la broche.

2. Fonctionnement du jeu

Les deux joueurs sont répartis de part et d’autre du microcontrôleur pour refléter la disposition du jeu. La LED de chaque utilisateur est :

  • éteinte pour le perdant,

  • allumée pour le gagnant,

  • clignotante pour le joueur passant son tour (parce qu’il...

Détecteur de présence

Voici un petit projet qui garde la lampe du bureau allumée tant qu’une présence est détectée près de celui-ci. Un capteur PIR (Passive Infra Red) est un capteur infrarouge passif qui mesure les radiations infrarouges (donc la chaleur) des objets qui passent dans son champ de vision. En détectant les variations rapides d’infrarouge, il est possible de détecter le mouvement d’un corps.

Sachant que les manipulations sur le réseau de distribution électrique peuvent s’avérer dangereuses, ce projet proposera dans un premier temps de contrôler une simple LED, puis un éclairage sous 12 V continu à l’aide d’un relais (tension facile à produire avec un bloc d’alimentation). Enfin, la troisième partie utilisera un PowerSwitchTail qui permet de contrôler, sans risque, un appareil raccordé sur le réseau électrique.

1. Matériel et montage

Ce projet nécessite le matériel suivant :

  • 1x capteur infrarouge PIR (Adafruit 189)

  • 1x LED rouge

  • 1x résistance de 470 (jaune, violet, brun, or)

  • 1x module relais 5 V de Pololu (Pololu 2480, optionnel)

Dans le schéma de raccordement ci-dessous, le module relais reste un élément optionnel. S’il est disponible, il permettra de commander un appoint d’éclairage en 12 V.

images/06RI09.png

Montage avec LED et relais

L’intérêt du module relais de Pololu est qu’il accepte un signal en logique 3,3 V pour activer le relais. Pour sa part, le module relais nécessite néanmoins une alimentation 5 V pour son propre fonctionnement.

Le module PIR sélectionné est distribué par Adafruit Industries (Adafruit 189). Celui-ci dispose d’un réglage de sensibilité et de temps d’activation. Bien...

Thermomètre Neopixel

Ce projet propose de créer un objet dont la couleur varie en fonction de la température.

Dans ce projet, ce sont des LEDs WS2812 (dite LEDs NeoPixels chez Adafruit Industries et LEDs ZIP chez Kitronik) qui sont mises à l’honneur. Les LEDs NeoPixels sont des LEDs RVB intelligentes et autonomes capables de produire des ambiances lumineuses variées.

Depuis la version 1.19 de MicroPython, le Pico dispose d’une classe NeoPixel pour en faciliter le contrôle.

Le capteur de température TMP36 sera utilisé pour obtenir la température de la pièce et adapter la couleur des LEDs en fonction de celle-ci (de bleu pour 16 °C à rouge vif pour 30 °C).

Les LEDs WS2812 fonctionnent en 3,3 V et 5 V. Le signal de données doit juste avoir le même niveau logique que l’alimentation des pixels. C’est sous 5 V qu’elles produiront le maximum de luminosité. Dans le cadre de ce projet, ces LEDs seront alimentées en 3,3 V pour simplifier le montage.

Les LEDs WS2812 consomment beaucoup de courant. À un tiers de la consommation maximale pour le rendu couleur, chaque LED consomme encore 20 mA. Les projets de plus grande envergure devront donc utiliser une alimentation séparée.

1. Matériel et montage

Ce projet nécessite le matériel suivant :

  • 1x Neopixel Jewel (Adafruit 2226) ou tout équivalent contenant 5 ou 7 LEDs WS2812.

  • 1x TMP36 - capteur de température analogique (cf. chapitre Programmer, section Entrées/sorties).

Le montage initial se présentait comme ci-dessous, il fut pourtant rapidement écarté à cause d’une grande variabilité dans les mesures de température (oscille de plus ou moins 1,5 °C autour de la température réelle), l’ajout d’un condensateur...

Thermomètre bargraphe

Ce projet est une variante du projet précédent utilisant une série de 10 LEDs ou un bargraphe (composant contenant de multiples LEDs alignées) à 10 LEDs.

Un tel projet peut facilement être dérivé en modifiant la source de mesure (comme le bruit plutôt que la température) ou devenir ludique en plaçant les LEDs dans un objet à la mode « CyberPunk », pour créer un thermomètre avec un cachet original.

1. Matériel et montage

Ce projet nécessite le matériel suivant :

  • 1x TMP36 - capteur de température analogique (cf. chapitre Programmer - Entrées/sorties).

  • 10x résistance de 470 Ohms.

  • 1x bargraphe à 10 LEDs rouge ou 10x LED individuelle rouge.

Le montage est réalisé comme suit en utilisant 10 GPIOs consécutifs du Pico pour commander les LEDs.

images/06RI25.png

Montage du thermomètre bargraphe

Le bargraphe contient des LEDs, mais ce composant n’indique pas toujours la polarité (le courant ne passe que dans un seul sens). Dans pareil cas, il faudra procéder par essai/erreur pour identifier le pôle négatif. Pour les LEDs individuelles, la patte la plus longue correspond au pôle positif de la LED.

Dans ce projet, une seule LED est destinée à être allumée à la fois. Toutes les LEDs pourraient être raccordées à la masse à l’aide d’une unique résistance de 470 Ohms. Si plusieurs LEDs sont susceptibles d’être allumées en même temps, alors chaque LED doit disposer de sa propre résistance. Le montage ci-dessus couvre le cas général pour éviter tout incident en cas de réutilisation du montage à d’autres fins.

2. Fonctionnement du thermomètre bargraphe

Le capteur...

DataLogger

Ce projet propose de capturer les données de trois capteurs analogiques (température, luminosité, humidité du sol) pour surveiller les conditions et variations d’humidité dans le sol, en fonction des conditions météorologiques.

Le but du projet est d’apprendre comment capturer et stocker des données pour un traitement a posteriori.

La capture de température sera assurée par le capteur analogique TMP36 et la luminosité sera mesurée par une photo-résistance (LDR). Ces éléments ont déjà été abordés dans l’ouvrage (cf. chapitre Programmer - section Entrées/sorties - Capteur analogique - TMP36 et suivants).

L’humidité du sol sera relevée à l’aide du capteur DFRobot SEN0114 présenté ci-dessous.

Capteur d’humidité du sol

images/06RI29.png

Capteur d’humidité de sol SEN0114

Le capteur d’humidité de sol est un capteur simple basé sur deux électrodes enfoncées dans le sol. Le dispositif mesure la résistance du sol au passage du courant. Plus le sol est humide et plus le courant passe facilement. La tension de sortie augmente donc lorsque l’humidité contenue dans le sol augmente.

Ce capteur fonctionne aussi bien avec une tension d’alimentation de 3,3 V (Pico) qu’une tension d’alimentation 5 V (Arduino). Il présente une consommation d’environ 35 mA, ce qui est relativement conséquent d’un point de vue électronique.

Voici différentes informations de référence concernant ce capteur :

  • 0 V : boucle ouverte, hors terre.

  • 0 à 400 mV : sol sec avec très peu/pas d’humidité.

  • 400 mV à 1100 mV : sol humide.

  • 1100 mV à 1800 mV :...

Robot deux roues (servomoteurs à rotation continue)

Ce projet propose de créer une plateforme robotique deux roues autonomes.

Équipée d’un capteur ultrason, celle-ci pourra se mouvoir et éviter des obstacles.

Ce robot universel est conçu à partir d’équipement peu onéreux et facile à trouver.

Plateforme mobile et servomoteurs à rotation continue

Bon nombre de fabricants proposent des plateformes mobiles utilisant des servomoteurs à rotation continue.

images/06RI50.png

Robot deux roues à servomoteurs

Les servomoteurs sont connus pour être faciles à piloter et à alimenter.

Ces servomoteurs utilisent un signal servo 0-180° (angulaire) avec la position 90° comme point 0 (arrêt moteur). Le servomoteur à rotation continue utilise une convention -90° = marche arrière, 0 = arrêt, +90° = marche avant. Plus l’angle s’écarte de 0° et plus le moteur tourne vite.

Comme les moteurs sont montés dos à dos, la marche avant/arrière de la plateforme est assurée en faisant tourner les deux moteurs en sens opposés. La rotation gauche/droite se fait en tournant les deux moteurs dans le même sens de rotation.

Il est également possible de créer une plateforme mobile à partir d’une planche à pain, deux servomoteurs à rotation continue, une roulette en roue libre et des attaches rapides (Colsons).

images/06RI53.png

Projet « Planche à pain mobile »

Le projet « Planche à pain mobile » est documenté ici : https://wiki.mchobby.be/index.php?title=Plateforme-PAPM-Montage

Pour plus d’informations :

En dernière...

Créer un minuteur

Ce projet propose de créer un minuteur avec alarme à l’aide d’un afficheur deux lignes, de boutons et d’un buzzer.

images/06RI62.png

Exemple minuteur

1. Matériel et montage

Pour réaliser ce projet, les éléments suivants sont nécessaires :

Le schéma de raccordement ci-dessous est également disponible sur la version en ligne de l’ouvrage. Cette version en ligne permettra de profiter d’un schéma en couleur donnant la possibilité d’inspecter les raccordements en détail.

images/06RI65.png

Raccordements du minuteur

Avec dans l’ordre des boutons :

  • GP16 : +1 Minutes

  • GP17 : +5 Minutes

  • GP18 : Reset

  • GP19 : Start/Stop

Piezo Buzzer

  • GP15 : Piezo buzzer avec une résistance de limitation de 100 Ohms

À propos de l’afficheur LCD I2C

L’afficheur proposé fonctionne sur le bus I2C et ne nécessite donc que deux signaux de données pour fonctionner, en plus de l’alimentation.

Ce produit de DFRobot, connu pour son utilisation avec Arduino UNO, est très largement distribué en Europe et ne sera pas difficile à se procurer. Ce module propose un rétroéclairage d’un bleu très profond avec un affichage des caractères en blanc bien contrasté.

La bibliothèque lcdi2c.py permettra de commander facilement la plupart des afficheurs 16x2 avec interface I2C. Ainsi, si le lecteur dispose d’un autre modèle, il pourra consulter le lien suivant reprenant des raccordements d’autres modèles : https://github.com/mchobby/esp8266-upy/tree/master/lcdi2c

À noter que la bibliothèque lcdi2c.py...