Outils pour utilisateurs

Outils du site


issue194:micro-ci_micro-la

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
issue194:micro-ci_micro-la [2023/07/01 20:42] d52frissue194:micro-ci_micro-la [2023/07/03 17:15] (Version actuelle) andre_domenech
Ligne 5: Ligne 5:
 As to the NeoPixel driver, you CAN use the one you used previously, but should rename it, just to avoid any confusion between you and MicroPython. I’ve tested this using the Pico-W and the Pico with three sets of 1-meter strings of 30 devices each. Everything works fine.** As to the NeoPixel driver, you CAN use the one you used previously, but should rename it, just to avoid any confusion between you and MicroPython. I’ve tested this using the Pico-W and the Pico with three sets of 1-meter strings of 30 devices each. Everything works fine.**
  
-Avant de commencer le sujet du mois, je voudrais faire une petite mise à jour sur MicroPython 1.20.+Avant de commencer à parler du sujet du mois, je voudrais faire une petite mise à jour sur MicroPython 1.20.
  
 Depuis le 1er juin 2023, le problème d'I2C est toujours d'actualité. Vous POUVEZ utiliser I2C, mais, pour l'instant, vous ne pouvez pas utiliser les anciennes valeurs par défaut. Je parle d'anciennes valeurs par défaut parce qu'il semble que les gens de RPi aient demandé à ce que les valeurs par défaut soient changées pour ce qu'elles sont maintenant. Donc, pour être sûr que vos projets I2C fonctionneront sous la version 1.20, utilisez le tableau ci-dessous pour configurer vos broches I2C. Depuis le 1er juin 2023, le problème d'I2C est toujours d'actualité. Vous POUVEZ utiliser I2C, mais, pour l'instant, vous ne pouvez pas utiliser les anciennes valeurs par défaut. Je parle d'anciennes valeurs par défaut parce qu'il semble que les gens de RPi aient demandé à ce que les valeurs par défaut soient changées pour ce qu'elles sont maintenant. Donc, pour être sûr que vos projets I2C fonctionneront sous la version 1.20, utilisez le tableau ci-dessous pour configurer vos broches I2C.
  
-En ce qui concerne le pilote NeoPixel, vous pouvez utiliser celui que vous utilisiez précédemment, mais vous devriez le renommer, juste pour éviter toute confusion entre vous et MicroPython. J'ai testé ceci en utilisant le Pico-W et le Pico avec trois séries de rubans de 1 mètre avec 30 éléments chacune. Tout fonctionne bien.+En ce qui concerne le pilote NeoPixel, vous POUVEZ utiliser celui que vous utilisiez précédemment, mais vous devriez le renommer, juste pour éviter toute confusion entre vous et MicroPython. Je l'ai testé en utilisant le Pico-W et le Pico avec trois séries de rubans de 1 mètre avec 30 éléments chacune. Tout fonctionne bien.
  
  
Ligne 22: Ligne 22:
 You can see it in the wiring image above.** You can see it in the wiring image above.**
  
-Par ailleurs, en juin 2023, les pilotes Bluetooth BLE étaient toujours en cours de développement, mais ils progressaient considérablement. Lorsqu'ils seront terminés, vous devriez pouvoir utiliser la plupart des codes des cartes ESP-32.+Par ailleurs, en juin 2023, les pilotes Bluetooth BLE étaient toujours en cours de développement, mais ils progressaient considérablement. Lorsqu'ils seront terminés, vous devriez pouvoir utiliser la plupart du code des cartes ESP-32.
  
-Je vous donne un indice sur le sujet du prochain Micro-ci Miccro-là, qui devrait être le contrôle de moteurs à l'aide du Pico-W. C'est un excellent moyen de s'initier à la robotique.+Je vous donne un indice sur le sujet du prochain Micro-ci Micro-là, qui devrait être le contrôle de moteurs à l'aide du Pico-W. C'est un excellent moyen de s'initier à la robotique.
  
 Passons maintenant au sujet du mois, le capteur d'évitement d'obstacles à ultrasons HC-SR04. Passons maintenant au sujet du mois, le capteur d'évitement d'obstacles à ultrasons HC-SR04.
Ligne 43: Ligne 43:
 Le brochage est assez simple, même si vous utilisez le convertisseur de niveau logique. J'ai créé un petit tableau (ci-dessous) pour vous aider. Le brochage est assez simple, même si vous utilisez le convertisseur de niveau logique. J'ai créé un petit tableau (ci-dessous) pour vous aider.
  
-J'ai testé le projet avec et sans convertisseur de niveau logiqueet je n'ai pas remarqué de différence majeure entre les deux configurations, donc si vous n'avez pas de convertisseur, vous devriez pouvoir l'utiliser sans problème.+J'ai testé le projet avec et sans convertisseur de niveau logique et je n'ai pas remarqué de différence majeure entre les deux configurations, donc si vous n'avez pas de convertisseur, vous devriez pouvoir l'utiliser sans problème.
  
 Comment cela fonctionne-t-il ? Comment cela fonctionne-t-il ?
Ligne 55: Ligne 55:
  
  
-En regardant la fiche technique, chaque fois que le Pico/MicroContrôleur veut voir s'il y a quelque chose dans son rayon d'action, il envoie une impulsion sur la broche de déclenchement du capteur. Le capteur envoie alors une salve de 8 impulsions d'ultrasons à 40 kHz par l'intermédiaire de l'émetteur et commence à écouter l'écho. Les ultrasons rebondissent sur la plupart des objets situés dans la zone de portée maximale de 4 mètres et reviennent, avec un peu de chance, vers le récepteur. Le temps écoulé entre l'émission et la réception est mesuré (en microsecondes) et peut être converti en une mesure de distance à l'aide de la formule EchoTime(µs) / 58 = centimètres. Cette mesure est ensuite renvoyée au pilote qui, à son tour, renvoie la distance à notre programme.+En regardant la fiche technique, chaque fois que le Pico/MicroContrôleur veut voir s'il y a quelque chose dans son rayon d'action, il envoie une impulsion sur la broche de déclenchement du capteur. Le capteur envoie alors une salve de 8 impulsions d'ultrasons à 40 kHz par l'intermédiaire de l'émetteur et commence à écouter l'écho. Les ultrasons rebondissent sur la plupart des objets situés dans la zone de portée maximale de 4 mètres et reviennent, nous l'espérons, vers le récepteur. Le temps écoulé entre l'émission et la réception est mesuré (en microsecondes) et peut être converti en une mesure de distance à l'aide de la formule EchoTime(µs)/58 = centimètres. Cette mesure est ensuite renvoyée au pilote qui, à son tour, renvoie la distance à notre programme.
  
-Notre programme peut alors prendre l'information du pilote et simplement l'afficherou l'utiliser pour déterminer à quelle distance de l'objet détecté l'application veut s'approcher.+Notre programme peut alors prendre l'information du pilote et l'afficher tout simplement ou l'utiliser pour déterminer à quelle distance de l'objet détecté l'application veut s'approcher.
  
  
Ligne 68: Ligne 68:
 Le capteur a une portée comprise entre 2 cm et 4 mètres, mais la distance maximale peut être comprise entre 2 et 4 mètres. Le capteur a une portée comprise entre 2 cm et 4 mètres, mais la distance maximale peut être comprise entre 2 et 4 mètres.
  
-Ceci étant dit, nous devons nous rappeler de prendre en compte le type de matériau que nous allons rencontrer en essayant d'utiliser ce projet.+Cela étant dit, nous devons nous rappeler de prendre en compte le type de matériau que nous allons rencontrer en essayant d'utiliser ce projet.
  
 Comme nous comptons sur un écho revenant au capteur, nous devons tenir compte du type d'objet sur lequel le signal ultrasonique rebondit. S'il s'agit d'une surface dure comme le bois ou les cloisons sèches, il n'y aura pas beaucoup d'absorption. En revanche, si l'objet est un rideau, une bonne partie du signal sera absorbée et ça risque de fausser les données. Comme nous comptons sur un écho revenant au capteur, nous devons tenir compte du type d'objet sur lequel le signal ultrasonique rebondit. S'il s'agit d'une surface dure comme le bois ou les cloisons sèches, il n'y aura pas beaucoup d'absorption. En revanche, si l'objet est un rideau, une bonne partie du signal sera absorbée et ça risque de fausser les données.
Ligne 77: Ligne 77:
 The Code** The Code**
  
-Une autre chose à prendre en considération - si vous vous apprêtez à monter le capteur sur, disons, un rover ou un petit robot - assurez-vous que le capteur est monté aussi droit que possible à l'avant de l'appareil. Cela est dû au fait que la réflexion du signal ne revient pas. La loi de la physique dit que l'angle d'incidence est égal à l'angle de réflexion. Il s'agit là d'une science assez profonde, que je n'aborderai donc pas ici. Si vous êtes curieux, vous pouvez consulter http://www.fast.u-psud.fr/~martin/acoustique/support/réflection-réfraction.pdf ou https://fr.wikipedia.org/wiki/Angle_d'incidence_(optique). Vous pouvez également effectuer une recherche sur Internet sur « réflexion ultrasonique » pour trouver d'autres sources d'information.+Une autre chose à prendre en considération - si vous vous apprêtez à monter le capteur sur, disons, un rover ou un petit robot - assurez-vous que le capteur est monté aussi droit que possible à l'avant de l'appareil. Cela est dû au fait que la réflexion du signal ne revient pas. La loi de la physique dit que l'angle d'incidence est égal à l'angle de réflexion. Il s'agit là de la science des professionnels, que je n'aborderai donc pas ici. Si vous êtes curieux, vous pouvez consulter http://www.fast.u-psud.fr/~martin/acoustique/support/réflection-réfraction.pdf ou https://fr.wikipedia.org/wiki/Angle_d'incidence_(optique). Vous pouvez également effectuer une recherche sur Internet sur « réflexion ultrasonique » pour trouver d'autres sources d'information.
  
 Le code Le code
Ligne 92: Ligne 92:
 from machine import Pin** from machine import Pin**
  
-Il existe plusieurs pilotes et vous pouvez certainement « faire votre propre choix ». Cependant, je vais vous suggérer de commencer par celui qui fonctionne très bien pour moi. Vous pouvez le trouver, ainsi que son code pour l'exécuter le pilote sur le RPi Pico/Pico-W, à https://microcontrollerslab.com/hc-sr04-ultrasonic-sensor-raspberry-pi-pico-micropython-tutorial/.+Il existe plusieurs pilotes et vous pouvez certainement « faire votre propre choix ». Cependant, je vais vous suggérer de commencer par celui qui fonctionne très bien pour moi. Vous pouvez le trouver, ainsi que son code pour exécuter le pilote sur le RPi Pico/Pico-W, à https://microcontrollerslab.com/hc-sr04-ultrasonic-sensor-raspberry-pi-pico-micropython-tutorial/.
  
-Vous y trouverez une explication beaucoup plus détaillée de la façon dont tout cela fonctionne, donc vous pouvez jeter un coup d'œil à cet article et obtenir le code. Je le mettrai également dans un dépôt pour vous faciliter la tâche.+Vous y trouverez une explication beaucoup plus détaillée de la façon dont tout cela fonctionne et vous pouvez donc jeter un coup d'œil à cet article et obtenir le code. Je le mettrai également dans un dépôt pour vous faciliter la tâche.
  
 D'abord le pilote. Je ne montrerai ici que les parties importantes. D'abord le pilote. Je ne montrerai ici que les parties importantes.
Ligne 142: Ligne 142:
 Si vous souhaitez connaître le raisonnement qui sous-tend les formules, vous pouvez consulter les commentaires dans le fichier du pilote. Si vous souhaitez connaître le raisonnement qui sous-tend les formules, vous pouvez consulter les commentaires dans le fichier du pilote.
  
-Le programme de test est quant à lui beaucoup plus simple que le pilote lui-même.+Le programme de test estquant à luibeaucoup plus simple que le pilote lui-même.
  
 Nous importons la classe du pilote et time.sleep. Nous importons la classe du pilote et time.sleep.
Ligne 155: Ligne 155:
 I added an optional line of code to assign a button on GPIO 20 as an input. This is so we can poll pin 20 for a low to let the program know that the button has been pressed. If the button has been pressed, it will allow the program to exit the forever loop that we will create. There is no issue if you don’t include a button in your setup. The code will still look for the falling signal, but it really won’t make any difference if it doesn’t see it. You can always just use the stop button in Thonny to end the program.** I added an optional line of code to assign a button on GPIO 20 as an input. This is so we can poll pin 20 for a low to let the program know that the button has been pressed. If the button has been pressed, it will allow the program to exit the forever loop that we will create. There is no issue if you don’t include a button in your setup. The code will still look for the falling signal, but it really won’t make any difference if it doesn’t see it. You can always just use the stop button in Thonny to end the program.**
  
-Ensuite, nous instancions la classe du pilote, en assignant les pins de déclenchement et d'écho, et en fournissant une valeur de timeout en microsecondes.+Ensuite, nous instancions la classe du pilote, en assignant les broches de déclenchement et d'écho, et en fournissant une valeur de timeout en microsecondes.
  
 J'ai ajouté une ligne de code optionnelle pour assigner un bouton sur le GPIO 20 en tant qu'entrée. Cela nous permet d'interroger la broche 20 pour obtenir un niveau bas afin d'indiquer au programme que le bouton a été enfoncé. Si le bouton a été pressé, cela permettra au programme de sortir de la boucle infinie que nous allons créer. Il n'y a pas de problème si vous n'incluez pas de bouton dans votre configuration. Le code cherchera toujours le signal de chute, mais cela ne fera aucune différence s'il ne le voit pas. Vous pouvez toujours utiliser le bouton d'arrêt de Thonny pour terminer le programme. J'ai ajouté une ligne de code optionnelle pour assigner un bouton sur le GPIO 20 en tant qu'entrée. Cela nous permet d'interroger la broche 20 pour obtenir un niveau bas afin d'indiquer au programme que le bouton a été enfoncé. Si le bouton a été pressé, cela permettra au programme de sortir de la boucle infinie que nous allons créer. Il n'y a pas de problème si vous n'incluez pas de bouton dans votre configuration. Le code cherchera toujours le signal de chute, mais cela ne fera aucune différence s'il ne le voit pas. Vous pouvez toujours utiliser le bouton d'arrêt de Thonny pour terminer le programme.
Ligne 168: Ligne 168:
 Distance 28.95189 cm - 11.39838 in** Distance 28.95189 cm - 11.39838 in**
  
-Nous entrons ensuite dans la boucle « éternelle » (à droite). Nous interrogeons le capteur et obtenons une valeur de distance. Ensuite, j'inclus un calcul pour convertir les centimètres en pouces, afficher les deux sur le terminal REPL, vérifier si le bouton a été pressé (s'il y en a un), interrompre la boucle si nous obtenons un 0 de la broche du bouton, et enfin dormir pendant 1 seconde avant de recommencer la boucle.+Nous entrons ensuite dans la boucle « infinie » (à droite). Nous interrogeons le capteur et obtenons une valeur de distance. Ensuite, j'inclus un calcul pour convertir les centimètres en pouces, afficher les deux sur le terminal REPL, vérifier si le bouton a été pressé (s'il y en a un), interrompre la boucle si nous obtenons un 0 de la broche du bouton, et enfin dormir pendant 1 seconde avant de recommencer la boucle.
  
 Test du programme Test du programme
  
-Je vais supposer que vous utilisez une planque d'essai pour contenir votre projet. Placez-la sur une table et placez une règle entre le capteur et quelque chose d'assez grand comme une boîte de mouchoirs en papier. Cela vous donnera une référence connue. Lorsque vous exécutez le programme de test, vous devriez voir, toutes les secondes environ, quelque chose comme ceci...+Je vais supposer que vous utilisez une planque d'essai pour votre projet. Placez-la sur une table et placez une règle entre le capteur et quelque chose d'assez grand comme une boîte de mouchoirs en papier. Cela vous donnera une référence connue. Lorsque vous exécutez le programme de test, vous devriez voir, toutes les secondes environ, quelque chose comme ceci :
  
 Distance 28.95189 cm - 11.39838 in Distance 28.95189 cm - 11.39838 in
Ligne 183: Ligne 183:
 This is the “default” return that means that the sensor didn’t receive a clear echo back before the timeout value. Given the sensor has a range between about 2 cm and 4 meters, as long as your target is within about 3 meters, this could mean that you have the trigger and echo pins swapped. The other possibility could be that the breadboard you are using has a bad spot or two. Try reseating the Pico, the sensor, and your jumper wires, and try again. I’ve seen it happen that even a brand new breadboard might have a bad spot, or 5, and the normal “tech support” answer is if you are using a breadboard, try different positions for your components and/or check your wires.** This is the “default” return that means that the sensor didn’t receive a clear echo back before the timeout value. Given the sensor has a range between about 2 cm and 4 meters, as long as your target is within about 3 meters, this could mean that you have the trigger and echo pins swapped. The other possibility could be that the breadboard you are using has a bad spot or two. Try reseating the Pico, the sensor, and your jumper wires, and try again. I’ve seen it happen that even a brand new breadboard might have a bad spot, or 5, and the normal “tech support” answer is if you are using a breadboard, try different positions for your components and/or check your wires.**
  
-Si le programme fonctionne et que la distance affichée est raisonnable, vous pouvez tester le capteur en pointant vers quelque chose d'autre. Si ce n'est pas le cas, vous obtiendrez probablement un résultat ressemblant à ceci...+Si le programme fonctionne et que la distance affichée est raisonnable, vous pouvez tester le capteur en pointant vers quelque chose d'autre. Si ce n'est pas le cas, vous obtiendrez probablement un résultat ressemblant à ceci :
  
 Distance 225.0 cm - 88.58268 in Distance 225.0 cm - 88.58268 in
Ligne 194: Ligne 194:
 Until then, as always; stay safe, healthy, positive and creative!** Until then, as always; stay safe, healthy, positive and creative!**
  
-Bon, ce sera tout pour ce mois. Comme je l'ai dit, j'ai mis le code pour le pilote et pour le programme de démo dans mon dépôt à https://github.com/gregwa1953/FCM194_MTMT. Assurez-vous de sauvegarder votre code du projet et du capteur, car nous y reviendrons dans un prochain article quand nous passerons à un sujet sur les robots.+Bon, ce sera tout pour ce mois-ci. Comme je l'ai dit, j'ai mis le code pour le pilote et pour le programme de démo dans mon dépôt à https://github.com/gregwa1953/FCM194_MTMT. Assurez-vous de sauvegarder votre code du projet et du capteur, car nous y reviendrons dans un prochain article quand nous passerons à un sujet sur les robots.
  
-Jusque là et comme d'hab : restez en sécurité, en bonne santé, positifs et créatifs !+Jusque-là et comme d'habitude : restez en sécurité, en bonne santé, positifs et créatifs !
issue194/micro-ci_micro-la.1688236922.txt.gz · Dernière modification : 2023/07/01 20:42 de d52fr