Outils pour utilisateurs

Outils du site


issue178: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
issue178:micro-ci_micro-la [2022/02/26 18:47] d52frissue178:micro-ci_micro-la [2022/03/02 11:23] (Version actuelle) auntiee
Ligne 4: Ligne 4:
  
 You can find a driver for the si7021 that I modified to work successfully on the RPi Pico at https://github.com/gregwa1953/SI7021-MicroPython-RPi-Pico. You’ll need to copy this driver to the RPi Pico. You’ll also need to have the ssd1306 driver that we have used multiple times on the Pico as well.** You can find a driver for the si7021 that I modified to work successfully on the RPi Pico at https://github.com/gregwa1953/SI7021-MicroPython-RPi-Pico. You’ll need to copy this driver to the RPi Pico. You’ll also need to have the ssd1306 driver that we have used multiple times on the Pico as well.**
 +
 +Il est difficile de croire que cela fait un an depuis que j'ai commencé cette série d'articles. Il me semble juste de revenir au début avec le Raspberry Pi Pico et de faire quelque chose de nouveau avec lui, puisque nous avons passé tant de mois sur les microcontrôleurs de la série ESP.
 +
 +Cette fois-ci, nous allons travailler avec le RPi Pico et utiliser un capteur de température et d'humidité si7021 ainsi qu'un écran OLED ssd1306. Le câblage est essentiellement le même que celui de n'importe quelle RPi Pico avec le ssd1306, mais nous allons étendre l'I2C pour travailler avec le si7021. J'ai acheté mon si7021 chez Adafruit pour moins de $10 USD. https://www.adafruit.com/product/3251 
 +
 +Vous pouvez trouver un pilote pour le si7021, que j'ai modifié pour qu'il fonctionne avec succès sur la RPi Pico, à https://github.com/gregwa1953/SI7021-MicroPython-RPi-Pico. Vous devrez copier ce pilote sur le RPi Pico. Vous aurez également besoin du pilote du ssd1306 que nous avons utilisé plusieurs fois sur le Pico.
 +
  
 **Here is the wiring diagram: **Here is the wiring diagram:
Ligne 25: Ligne 32:
 oled.show() oled.show()
 time.sleep(5)** time.sleep(5)**
 +
 +Voici le schéma de câblage :
 +
 +Je lance toujours l'utilitaire i2cscan.py pour vérifier mon câblage et que tous mes périphériques I2C fonctionnent correctement. Lorsque vous l'exécutez, vous devez voir la réponse suivante :
 +
 +0x3c
 +0x40
 +
 +Bien sûr, le 0x3c est l'écran et le 0x40 est le capteur de température/humidité.
 +
 +Maintenant, passons au code. J'ai pris le fichier de test si7021 que j'ai créé pour le pilote et je l'ai modifié pour supporter l'ajout de l'écran OLED. Voici (en haut à droite) la section d'importation.
 +
 +Une fois que nous avons configuré tout le matériel, nous pouvons faire un petit test pour vérifier que l'OLED fonctionne. Nous allons dormir pendant 5 secondes pour pour que l'utilisateur le voie. Si vous voulez, vous pouvez laisser ce bloc de côté :
 +
 +oled.fill(0)
 +oled.show()
 +oled.text("Raspberry Pi",5,5)
 +oled.text("Pico",5,15)
 +# Enfin, mettez à jour l'écran oled pour que le texte soit affiché
 +oled.show()
 +time.sleep(5)
 +
  
 **Now we need to start querying the si7021. The si7021 seems to be a bit odd: to get the proper temperature readings, you have to query the humidity first. It’s part of the chip firmware. We also use this time to get the dew point (not really needed, but why not?), the serial number, and revision. I’ve never gotten the revision to show correctly, but that’s ok, because the chip runs just fine. **Now we need to start querying the si7021. The si7021 seems to be a bit odd: to get the proper temperature readings, you have to query the humidity first. It’s part of the chip firmware. We also use this time to get the dew point (not really needed, but why not?), the serial number, and revision. I’ve never gotten the revision to show correctly, but that’s ok, because the chip runs just fine.
Ligne 40: Ligne 69:
 revision = si7021.revision revision = si7021.revision
 print(revision)** print(revision)**
 +
 +Maintenant, nous devons commencer à interroger le si7021. Le si7021 semble être un peu bizarre : pour obtenir des lectures de température correctes, vous devez d'abord interroger l'humidité. Cela fait partie du firmware de la puce. Nous utilisons également ce temps pour obtenir le point de rosée (pas vraiment nécessaire, mais pourquoi pas ?), le numéro de série et la révision. Je n'ai jamais réussi à afficher correctement la révision, mais ce n'est pas grave, car la puce fonctionne très bien.
 +
 +humidity = si7021.humidity()
 +temperature = si7021.temperature()
 +print('Temperature: {0}C'.format(temperature))
 +print('Temperature: {0}F'.format(temperature*9/5+32))
 +humidity = si7021.humidity()
 +print('Humidity: {0}'.format(humidity))
 +dew_point = si7021.dew_point()
 +print('Dew Point: {0}'.format(dew_point))
 +serial = si7021.serialnumber
 +print(serial)
 +revision = si7021.revision
 +print(revision)
 +
  
 **This is what should be displayed in the IDE REPL: **This is what should be displayed in the IDE REPL:
Ligne 53: Ligne 98:
  
 As you can see, we go into a “forever loop” and clear the display (oled.fill(0), oled.show()). Then we pull the temperature, humidity and dew point. As I’ve stated many times, I can’t think in metric anything, so I convert the temperature to Fahrenheit so I can understand it.** As you can see, we go into a “forever loop” and clear the display (oled.fill(0), oled.show()). Then we pull the temperature, humidity and dew point. As I’ve stated many times, I can’t think in metric anything, so I convert the temperature to Fahrenheit so I can understand it.**
 +
 +Voici ce qui devrait être affiché dans l'IDE REPL :
 +
 +Temperature : 25.17976C
 +Temperature : 77.32357F
 +Humidity : 41.80579
 +Dew Point : 11.29874
 +bytearray(b'\x0c\xfe\x854\x15\xff\xff\xff')
 +b' '
 +
 +Nous pouvons enfin passer à la lecture et à l'affichage de la température et de l'humidité sur l'écran (en haut à droite).
 +
 +Comme vous pouvez le voir, nous entrons dans une « boucle infinie » et effaçons l'affichage (oled.fill(0), oled.show()). Ensuite, nous affichons la température, l'humidité et le point de rosée. Comme je l'ai déjà dit à plusieurs reprises, je ne peux pas penser en système métrique, donc je convertis la température en Fahrenheit pour pouvoir la comprendre.
 +
  
 **I print to the REPL, then create two strings to send to the OLED, one for temperature that starts a column 5, row 5, and one for the humidity that shows at column 5, row 15. Again, we call the oled.show() method to push the data to the display, and sleep for 5 seconds. Feel free to change the sleep time up or down. **I print to the REPL, then create two strings to send to the OLED, one for temperature that starts a column 5, row 5, and one for the humidity that shows at column 5, row 15. Again, we call the oled.show() method to push the data to the display, and sleep for 5 seconds. Feel free to change the sleep time up or down.
Ligne 60: Ligne 119:
 My si7021 from Adafruit is the one that comes with the STEMMA/QT female connectors on each end. I got a 150mm STEMMA/QT to Male Pin cable for less than $1.00 which allows me to quickly plug into the breadboard. My si7021 from Adafruit is the one that comes with the STEMMA/QT female connectors on each end. I got a 150mm STEMMA/QT to Male Pin cable for less than $1.00 which allows me to quickly plug into the breadboard.
  
-I’ve put the code, drivers and the wiring diagram on my repository at https://github.com/gregwa1953/FCM-178_MicroThisMicroThat.**+I’ve put the code, drivers and the wiring diagram on my repository at https://github.com/gregwa1953/FCM-178_MicroThisMicroThat. 
 + 
 +Until next time, as always; stay safe, healthy, positive and creative!** 
 + 
 +J'imprime dans le REPL, puis je crée deux chaînes à envoyer à l'OLED, une pour la température qui commence à la colonne 5, ligne 5, et une pour l'humidité qui s'affiche à la colonne 5, ligne 15. Encore une fois, nous appelons la méthode oled.show() pour pousser les données à l'écran, et nous dormons pendant 5 secondes. N'hésitez pas à modifier le temps de sommeil à la hausse ou à la baisse. 
 + 
 +C'est tout. Un projet facile pour un bon et solide capteur de température/humidité. 
 + 
 +Mon si7021 d'Adafruit est celui qui est livré avec les connecteurs STEMMA/QT femelles à chaque extrémité. J'ai obtenu un câble STEMMA/QT de 150mm à broche mâle pour moins de 1,00 $ qui me permet de le brancher rapidement sur la plaque d'essai. 
 + 
 +J'ai mis le code, les pilotes et le schéma de câblage sur mon dépôt à https://github.com/gregwa1953/FCM-178_MicroThisMicroThat. 
 + 
 +Jusqu'à la prochaine fois, comme toujours, restez en sécurité, en bonne santé, positif et créatif !
  
-Until next time, as always; stay safe, healthy, positive and creative! 
issue178/micro-ci_micro-la.1645897639.txt.gz · Dernière modification : 2022/02/26 18:47 de d52fr