| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente |
| microc:micropython:tuto1gpio [2025/02/17 16:00] – [3.3 PRG3 - Afficheur graphique] phil | microc:micropython:tuto1gpio [2025/06/19 19:29] (Version actuelle) – modification externe 127.0.0.1 |
|---|
| * PRG5. **affbme280.py** - Afficheur graphique et capteur numérique : afficher la température, l'humidité et la pression ambiantes. | * PRG5. **affbme280.py** - Afficheur graphique et capteur numérique : afficher la température, l'humidité et la pression ambiantes. |
| * PRG6. **afftsl2591** - Afficheur graphique et capteur numérique : afficher la luminosité ambiante. | * PRG6. **afftsl2591** - Afficheur graphique et capteur numérique : afficher la luminosité ambiante. |
| | * PRG7. **webserver** - Transmettre des grandeurs physiques à un serveur Web |
| |
| \\ | \\ |
| </tabs> | </tabs> |
| |
| | {{ :microc:micropython:buzzer.jpg?nolink&200|Buzzer passif}} |
| === 3.2 PRG2 - Sortie numérique (PWM) === | === 3.2 PRG2 - Sortie numérique (PWM) === |
| <callout type="primary" title="Objectif" icon="true">Jouer des notes de musique </callout> | <callout type="primary" title="Objectif" icon="true">Jouer des notes de musique. </callout> |
| | |
| | == 3.2.1 Matériels == |
| | * **Transducteur** : buzzer passif <html><a href="https://wiki.seeedstudio.com/Grove-Passive-Buzzer/" target="_blank">Grove</a></html> |
| | |
| | == 3.2.2 Généralités == |
| | <<La modulation de largeur d'impulsions (MLI ; en anglais : Pulse Width Modulation, soit PWM), est une technique couramment utilisée pour synthétiser des signaux pseudo analogiques à l'aide de circuits numériques (tout ou rien, 1 ou 0), ou plus généralement à états discrets>>. <html><a href="https://fr.wikipedia.org/wiki/Modulation_de_largeur_d%27impulsion#:~:text=La%20modulation%20de%20largeur%20d,plus%20g%C3%A9n%C3%A9ralement%20%C3%A0%20%C3%A9tats%20discrets." target="_blank">Wikipédia</a></html> |
| | |
| | == 3.2.3 Activités de programmation == |
| | <tabs> |
| | * [[#tab-micropy_32|MicroPython]] |
| | * [[#tab-circuitpy_32|CircuitPython]] |
| | <pane id="tab-micropy_32"> |
| | </pane> |
| | <pane id="tab-circuitpy_32"> |
| | </pane> |
| | </tabs> |
| | |
| | \\ |
| |
| {{ :materiels:capteurs:potentiometre.png?nolink&80|Potentiomètre}} | {{ :materiels:capteurs:potentiometre.png?nolink&80|Potentiomètre}} |
| === 3.2 PRG3 - Lecture d'une entrée analogique === | === 3.3 PRG3 - Lecture d'une entrée analogique === |
| <callout type="primary" title="Objectif" icon="true">Afficher la position angulaire (en °) d'un axe dans la console de l'IDE.</callout> | <callout type="primary" title="Objectif" icon="true">Afficher la position angulaire (en °) d'un axe dans la console de l'IDE.</callout> |
| |
| == 3.2.1 Matériels == | == 3.3.1 Matériels == |
| * **Capteur** : <html><a href="https://wiki.seeedstudio.com/Grove-Rotary_Angle_Sensor/" target="_blank">Rotary angle sensor Grove</a></html> | * **Capteur** : <html><a href="https://wiki.seeedstudio.com/Grove-Rotary_Angle_Sensor/" target="_blank">Rotary angle sensor Grove</a></html> |
| |
| == 3.2.2 Généralités == | == 3.3.2 Généralités == |
| * <html><a href="https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/745_les-grandeurs-analogiques/3430_les-entrees-analogiques-de-larduino/" target="_blank">Un signal analogique : petits rappels</a></html> sur le site Zeste de savoir. | * <html><a href="https://zestedesavoir.com/tutoriels/686/arduino-premiers-pas-en-informatique-embarquee/745_les-grandeurs-analogiques/3430_les-entrees-analogiques-de-larduino/" target="_blank">Un signal analogique : petits rappels</a></html> sur le site Zeste de savoir. |
| |
| == 3.2.3 Activités de programmation == | == 3.3.3 Activités de programmation == |
| <tabs> | <tabs> |
| * [[#tab-micropy_4|MicroPython]] | * [[#tab-micropy_4|MicroPython]] |
| |
| {{ :arduino:gravity-i2c-oled-128x64-display.jpg?nolink&150|Gravity OLED-2864 Display}} | {{ :arduino:gravity-i2c-oled-128x64-display.jpg?nolink&150|Gravity OLED-2864 Display}} |
| === 3.3 PRG4 - Afficheur graphique === | === 3.4 PRG4 - Afficheur graphique === |
| <callout type="primary" title="Objectif" icon="true">Afficher la température délivrée par le **capteur interne** au microcontrôleur sur un afficheur graphique.</callout> | <callout type="primary" title="Objectif" icon="true">Afficher la température délivrée par le **capteur interne** au microcontrôleur sur un afficheur graphique.</callout> |
| |
| == 3.3.1 Matériels == | == 3.4.1 Matériels == |
| * **Afficheur graphique** : [[materiels:afficheurs:ard0_96|0,96" 128x64 OLED 2864 Display module - SSD1306 (I2C)]] | * **Afficheur graphique** : [[materiels:afficheurs:ard0_96|0,96" 128x64 OLED 2864 Display module - SSD1306 (I2C)]] |
| |
| == 3.3.2 Généralités == | == 3.4.2 Généralités == |
| Sur un écran, les **pixels** constituent une **image numérique**. On y accède par l'intermédiaire de leurs **coordonnées** **horizontales** (**X**) et **verticales** (**Y**). Le système de coordonnées place l'origine (0,0) dans le coin supérieur gauche de l'écran, avec X positif croissant vers la droite et Y positif croissant vers le bas. L'axe Y est inversé par rapport au repère cartésien utilisé en mathématiques, mais c'est une pratique établie dans de nombreux systèmes graphiques informatiques. Si nécessaire, l'affichage peut être pivoté. | Sur un écran, les **pixels** constituent une **image numérique**. On y accède par l'intermédiaire de leurs **coordonnées** **horizontales** (**X**) et **verticales** (**Y**). Le système de coordonnées place l'origine (0,0) dans le coin supérieur gauche de l'écran, avec X positif croissant vers la droite et Y positif croissant vers le bas. L'axe Y est inversé par rapport au repère cartésien utilisé en mathématiques, mais c'est une pratique établie dans de nombreux systèmes graphiques informatiques. Si nécessaire, l'affichage peut être pivoté. |
| {{ :arduino:adagfx1.jpg?500&nolink |}} | {{ :arduino:adagfx1.jpg?500&nolink |}} |
| Pour les affichages **monochromes** (unicolores), les "couleurs" sont toujours spécifiées comme étant simplement **1** (**afficher**) ou **0** (**effacer**). La sémantique **set/clear** est spécifique au type d'affichage : avec un affichage lumineux **OLED**, un pixel "set" est allumé, alors qu'avec un écran **LCD** réfléchissant, pour "set" le pixel est généralement sombre. Il peut y avoir des exceptions, mais généralement vous pouvez compter sur 0 (effacer) représentant l'état d'arrière-plan par défaut pour un affichage récemment initialisé. | Pour les affichages **monochromes** (unicolores), les "couleurs" sont toujours spécifiées comme étant simplement **1** (**afficher**) ou **0** (**effacer**). La sémantique **set/clear** est spécifique au type d'affichage : avec un affichage lumineux **OLED**, un pixel "set" est allumé, alors qu'avec un écran **LCD** réfléchissant, pour "set" le pixel est généralement sombre. Il peut y avoir des exceptions, mais généralement vous pouvez compter sur 0 (effacer) représentant l'état d'arrière-plan par défaut pour un affichage récemment initialisé. |
| |
| == 3.3.3 Activités de programmation == | == 3.4.3 Activités de programmation == |
| <tabs> | <tabs> |
| * [[#tab-micropy_5|MicroPython]] | * [[#tab-micropy_5|MicroPython]] |
| |
| |
| === 3.4 Programme 4 - Capteur atmosphérique === | === 3.5 PRG 5 - Capteur atmosphérique === |
| {{ :python:micropython:ada2652.jpg?nolink|}} | {{ :python:micropython:ada2652.jpg?nolink|}} |
| <callout type="primary" title="Objectif" icon="true"> Afficher la température, l'humidité et la pression délivrées par un capteur à circuit **BME280** sur un afficheur graphique.</callout> | <callout type="primary" title="Objectif" icon="true"> Afficher la température, l'humidité et la pression délivrées par un capteur à circuit **BME280** sur un afficheur graphique.</callout> |
| |
| == 3.4.1 Matériels == | == 3.5.1 Matériels == |
| * **Afficheur graphique** : Wiki - [[materiels:afficheurs:ard0_96|0,96" 128x64 OLED 2864 Display module - SSD1306 (I2C)]] | * **Afficheur graphique** : Wiki - [[materiels:afficheurs:ard0_96|0,96" 128x64 OLED 2864 Display module - SSD1306 (I2C)]] |
| * **Capteur atmosphérique** : Wiki - [[materiels:capteurs:environnement:environnement|Capteurs - Environnement]] | * **Capteur atmosphérique** : Wiki - [[materiels:capteurs:environnement:environnement|Capteurs - Environnement]] |
| |
| == 3.4.2 Généralités == | == 3.5.2 Généralités == |
| Le capteur utilisé est basé sur un circuit BME280 et mesure la température, l'humidité et la pression atmosphérique. Il communique avec un microcontrôleur via un bus I2C ou SPI. | Le capteur utilisé est basé sur un circuit BME280 et mesure la température, l'humidité et la pression atmosphérique. Il communique avec un microcontrôleur via un bus I2C ou SPI. |
| * **Caractéristiques** | * **Caractéristiques** |
| * SPI: sur pastilles femelles au pas de 2,54 mm (connecteurs mâles à souder inclus) | * SPI: sur pastilles femelles au pas de 2,54 mm (connecteurs mâles à souder inclus) |
| | |
| == 3.4.3 Activités de programmation == | == 3.5.3 Activités de programmation == |
| <tabs> | <tabs> |
| * [[#tab-micropy_6|MicroPython]] | * [[#tab-micropy_6|MicroPython]] |
| * Exécutez le programme en cliquant sur {{:python:micropython:startcoderp2.jpg?nolink|}}. | * Exécutez le programme en cliquant sur {{:python:micropython:startcoderp2.jpg?nolink|}}. |
| |
| <callout type="question" title="MODIFICATION du PROGRAMME 4" color="red" icon="true">Modifiez le programme précédent pour qu'il affiche les 3 grandeurs physiques sur l'afficheur graphique. \\ __Exemple d'affichage attendu__ : \\ **BME280** \\ - **T = 23.94C** \\ - **H = 59.59%** \\ - **P = 992.54hPa**</callout> | <callout type="question" title="MODIFICATION du PROGRAMME 5" color="red" icon="true">Modifiez le programme précédent pour qu'il affiche les 3 grandeurs physiques sur l'afficheur graphique. \\ __Exemple d'affichage attendu__ : \\ **BME280** \\ - **T = 23.94C** \\ - **H = 59.59%** \\ - **P = 992.54hPa**</callout> |
| </pane> | </pane> |
| |
| </pane> | </pane> |
| </tabs> | </tabs> |
| === 3.5 Programme 5 - Capteur de luminosité === | === 3.6 PRG6 6 - Capteur de luminosité === |
| {{ :python:micropython:ar-capteur-de-lumiere-tsl2591-ada1980-22971.jpg?nolink&200|}} | {{ :python:micropython:ar-capteur-de-lumiere-tsl2591-ada1980-22971.jpg?nolink&200|}} |
| <callout type="primary" title="Objectif" icon="true">Afficher la luminosité ambiante sur un afficheur graphique.</callout> | <callout type="primary" title="Objectif" icon="true">Afficher la luminosité ambiante sur un afficheur graphique.</callout> |
| |
| == 3.5.1 Matériels == | == 3.6.1 Matériels == |
| * **Afficheur graphique** : Wiki - [[materiels:afficheurs:ard0_96|0,96" 128x64 OLED 2864 Display module - SSD1306 (I2C)]] | * **Afficheur graphique** : Wiki - [[materiels:afficheurs:ard0_96|0,96" 128x64 OLED 2864 Display module - SSD1306 (I2C)]] |
| * **Capteur de luminosité** : Wiki - [[materiels:capteurs:eclairement:luminosite|Capteurs - Eclairement]] | * **Capteur de luminosité** : Wiki - [[materiels:capteurs:eclairement:luminosite|Capteurs - Eclairement]] |
| |
| == 3.5.2 Généralités == | == 3.6.2 Généralités == |
| Le capteur utilisé est basé sur un circuit TSL2591 permettant de mesurer l'éclairement lumineux. Ce capteur communique avec un microcontrôleur via le bus I2C. | Le capteur utilisé est basé sur un circuit TSL2591 permettant de mesurer l'éclairement lumineux. Ce capteur communique avec un microcontrôleur via le bus I2C. |
| |
| * Plage de mesure: 188 µLux à 88000 Lux | * Plage de mesure: 188 µLux à 88000 Lux |
| |
| == 3.5.3 Activités de programmation == | == 3.6.3 Activités de programmation == |
| <tabs> | <tabs> |
| * [[#tab-micropy_7|MicroPython]] | * [[#tab-micropy_7|MicroPython]] |
| * Exécutez le programme en cliquant sur {{:python:micropython:startcoderp2.jpg?nolink|}}. | * Exécutez le programme en cliquant sur {{:python:micropython:startcoderp2.jpg?nolink|}}. |
| |
| <callout type="question" title="MODIFICATION du PROGRAMME 5" color="red" icon="true">Modifiez le programme précédent pour qu'il affiche les 3 grandeurs physiques sur l'afficheur graphique. \\ __Exemple d'affichage attendu__ : \\ **TSL2561** \\ - **Ecl. = 207.4lx** \\ - **Ir = 0%** \\ - **Lum. vis. = 100%**</callout> | <callout type="question" title="MODIFICATION du PROGRAMME 6" color="red" icon="true">Modifiez le programme précédent pour qu'il affiche les 3 grandeurs physiques sur l'afficheur graphique. \\ __Exemple d'affichage attendu__ : \\ **TSL2561** \\ - **Ecl. = 207.4lx** \\ - **Ir = 0%** \\ - **Lum. vis. = 100%**</callout> |
| </pane> | </pane> |
| |
| <code python affbme280.py> | <code python affbme280.py> |
| </code> | </code> |
| |
| |
| * **Etape 2** - Enregistrer le programme | * **Etape 2** - Enregistrer le programme |
| </pane> | </pane> |
| </tabs> | </tabs> |
| === 3.6 Serveur WEB === | === 3.7 Serveur WEB === |
| * <color #ed1c24>Ressource provisoire</color> : <html><a href="https://randomnerdtutorials.com/esp32-esp8266-micropython-web-server/" target="_blank">ESP32/ESP8266 MicroPython Web Server</a></html> | * <color #ed1c24>Ressource provisoire</color> : <html><a href="https://randomnerdtutorials.com/esp32-esp8266-micropython-web-server/" target="_blank">ESP32/ESP8266 MicroPython Web Server</a></html> |
| |
| <color #ed1c24>A faire</color> | <color #ed1c24>A faire</color> |
| | |
| | \\ |
| |
| === Pour aller plus loin === | === Pour aller plus loin === |
| - **Tutoriels** sur <html><a href="https://randomnerdtutorials.com/projects-esp32-esp8266-micropython/" target="_blank">RANDOM NERD TUTORIALS</a></html>((Random Nerd Tutorials helps makers, hobbyists and engineers build electronics projects. We make projects with: ESP32, ESP8266, Arduino, Raspberry Pi, ...)) | - **Tutoriels** sur <html><a href="https://randomnerdtutorials.com/projects-esp32-esp8266-micropython/" target="_blank">RANDOM NERD TUTORIALS</a></html>((Random Nerd Tutorials helps makers, hobbyists and engineers build electronics projects. We make projects with: ESP32, ESP8266, Arduino, Raspberry Pi, ...)) |
| |