Outils pour utilisateurs

Outils du site


issue170: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
issue170:micro-ci_micro-la [2021/06/29 14:29] d52frissue170:micro-ci_micro-la [2021/06/30 15:55] (Version actuelle) andre_domenech
Ligne 4: Ligne 4:
  
 Arduino has finally released their Nano RP2040 Connect which costs about $26 USD. It supports Wi-Fi, Bluetooth, and Bluetooth Low-Energy (v4.2), a built-in microphone for sound or voice activation, an RGB LED, and a six-axis motion sensor. ** Arduino has finally released their Nano RP2040 Connect which costs about $26 USD. It supports Wi-Fi, Bluetooth, and Bluetooth Low-Energy (v4.2), a built-in microphone for sound or voice activation, an RGB LED, and a six-axis motion sensor. **
 +
 +Je tiens à m'excuser si l'article de ce mois-ci semble un peu décousu. J'ai eu plusieurs problèmes médicaux ces dernières semaines, mais je voulais VRAIMENT vous faire parvenir cet article.
 +
 +Le mois dernier, je vous ai dit que nous allions examiner le SparkFun Thing Plus ESP-32 WROOM (https://www.sparkfun.com/products/15663) et c'est ce que nous allons faire. Cependant, je veux d'abord vous apporter des nouvelles du monde du RP2040 et du Raspberry Pi Pico.
 +
 +Arduino a enfin sorti son Nano RP2040 Connect qui coûte environ 26 dollars US. Il prend en charge les technologies Wi-Fi, Bluetooth et Bluetooth Low-Energy (v4.2) ; il a un microphone intégré pour le son ou l'activation vocale, une LED RVB et un capteur de mouvement à six axes.
 +
  
 **Seeed Studio has released the Wio RP2040 mini development board which includes 2.4 GHz 802.11b/g/n WiFi 4 supporting AP & station modes, but no Bluetooth support. The estimated price will be about $13 USD and is available only for pre-order at this point. It’s still unclear when the board will start shipping. **Seeed Studio has released the Wio RP2040 mini development board which includes 2.4 GHz 802.11b/g/n WiFi 4 supporting AP & station modes, but no Bluetooth support. The estimated price will be about $13 USD and is available only for pre-order at this point. It’s still unclear when the board will start shipping.
  
 Finally, there is really big news from Adafruit. I’ll quote the headline from Tom’s Hardware site…”CircuitPython Libraries Slither Into MicroPython on the Raspberry Pi Pico”. That’s right. This is a big thing for the RPi Pico, since eventually the entire CircuitPython library should be available to MicroPython users. Currently, there are many drivers that don’t work, but it’s early days yet. Congratulations to Adafruit for making this move! You can find more about it at https://learn.adafruit.com/circuitpython-libraries-on-micropython-using-the-raspberry-pi-pico .** Finally, there is really big news from Adafruit. I’ll quote the headline from Tom’s Hardware site…”CircuitPython Libraries Slither Into MicroPython on the Raspberry Pi Pico”. That’s right. This is a big thing for the RPi Pico, since eventually the entire CircuitPython library should be available to MicroPython users. Currently, there are many drivers that don’t work, but it’s early days yet. Congratulations to Adafruit for making this move! You can find more about it at https://learn.adafruit.com/circuitpython-libraries-on-micropython-using-the-raspberry-pi-pico .**
 +
 +Seeed Studio a sorti la mini-carte de développement Wio RP2040 qui inclut le WiFi 4 2.4 GHz 802.11b/g/n supportant les modes AP et station, mais sans support du Bluetooth. Le prix est estimé à environ 13 dollars US et elle n'est disponible pour le moment qu'en pré-commande. On ne sait toujours pas quand la carte sera livrée.
 +
 +Enfin, il y a de très grandes nouvelles en provenance d'Adafruit. Je vais citer le titre du site Tom's Hardware... « Les bibliothèques CircuitPython se glissent dans MicroPython sur le Raspberry Pi Pico. » C'est bien cela. C'est une grande chose pour le RPi Pico, puisqu'à terme, l'ensemble de la bibliothèque CircuitPython devrait être disponible pour les utilisateurs de MicroPython. Actuellement, de nombreux pilotes ne fonctionnent pas, mais on n'en est qu'aux débuts. Félicitations à Adafruit pour cette initiative ! Vous pouvez trouver plus d'informations à ce sujet sur https://learn.adafruit.com/circuitpython-libraries-on-micropython-using-the-raspberry-pi-pico.
 +
  
 **Sparkfun Thing Plus 32 Wroom **Sparkfun Thing Plus 32 Wroom
Ligne 22: Ligne 34:
  
 Now, let’s get into our projects for this month...** Now, let’s get into our projects for this month...**
 +
 +Sparkfun Thing Plus 32 Wroom
 +
 +Venons-en au véritable sujet de mon article de ce mois-ci. Le SparkFun Thing Plus 32 Wroom est un petit microcontrôleur génial qui fait tourner facilement MicroPython. Le prix de la carte est un peu élevé, environ 21 dollars US. Si le prix est trop élevé pour votre budget, vous pouvez trouver une carte générique similaire avec la puce WiFi Wroom sur le Web. J'ai trouvé une carte de développement Aokin ESP32 sur Amazon dans un pack de trois pour un peu moins de 17 dollars US. Le brochage et le format des deux cartes sont différents, mais le même firmware MicroPython fonctionne sur les deux. Assurez-vous simplement de trouver le brochage de la carte que vous choisissez. En outre, la carte de développement ESP32 générique peut ne pas s'adapter correctement à votre plaque d'essai.
 +
 +Pour la carte générique, vous pouvez obtenir le brochage sur https://circuits4you.com/2018/12/31/esp32-devkit-esp32-wroom-gpio-pinout/, ainsi qu'à d'autres endroits. Pour la carte Sparkfun Thing Plus, voir le lien en haut de cet article.
 +
 +Les deux cartes prennent en charge le WiFi 2,4 Ghz et le Bluetooth, ainsi que les capteurs tactiles capacitifs, le capteur de Hall (capteur magnétique) et d'autres éléments.
 +
 +Vous trouverez ci-dessous le brochage de la carte Sparkfun Thing Plus 32 WROOM :
 +
 +Ci-dessus, la carte de développement générique ESP32.
 +
 +Maintenant, entrons dans nos projets de ce mois-ci.
 +
  
 **Project Program #1 - TouchPad **Project Program #1 - TouchPad
Ligne 32: Ligne 59:
  
 touch7 = machine.TouchPad(machine.Pin(27))** touch7 = machine.TouchPad(machine.Pin(27))**
 +
 +Programme du projet n° 1 - Pavé tactile
 +
 +Le SparkFun Thing Plus et la carte de développement générique ESP32 sont tous deux dotés de plusieurs entrées de capteur de pavé tactile. Pour le Thing Plus, il y en a 8 qui sont réparties sur les broches externes. Pour le Generic que j'utilise, il y en a 9 qui sont réparties et une qui est réglée sur GPIO 0. Les broches qui correspondent à chaque entrée sont indiquées sur le diagramme de brochage de votre carte. Lorsque vous spécifiez le numéro de broche, assurez-vous d'utiliser le numéro de broche GPIO, et non le numéro de touche ou la broche physique. Dans ce cas, nous utiliserons simplement un cavalier mâle-mâle connecté à la broche GPIO n° 27 comme notre « pavé » d'entrée désigné par Touch7. L'importation et la configuration seront les suivantes...
 +
 +import machine
 +
 +import utime
 +
 +touch7 = machine.TouchPad(machine.Pin(27))
 +
  
 **Now (top right), we’ll create a variable called lowvalue and initialize it to 1000. When running, the touch pad actually floats between 700 and 600. Then we start a “forever loop”. We’ll read the value of the touch pin and compare that with the last recorded lowvalue figure. If the current touchvalue is lower than the last lowvalue, we set lowvalue to the touchvalue. We also print the lowvalue at this point. Finally we sleep for 100 milliseconds and loop again. We can use the {Stop} button in Thonny to quit the program. **Now (top right), we’ll create a variable called lowvalue and initialize it to 1000. When running, the touch pad actually floats between 700 and 600. Then we start a “forever loop”. We’ll read the value of the touch pin and compare that with the last recorded lowvalue figure. If the current touchvalue is lower than the last lowvalue, we set lowvalue to the touchvalue. We also print the lowvalue at this point. Finally we sleep for 100 milliseconds and loop again. We can use the {Stop} button in Thonny to quit the program.
Ligne 55: Ligne 93:
  
 Now (below), we can modify the program a little bit to allow the program to self terminate…** Now (below), we can modify the program a little bit to allow the program to self terminate…**
 +
 +Maintenant (en haut à droite), nous allons créer une variable appelée lowvalue et l'initialiser à 1000. Lors de l'exécution, le pavé tactile flotte en fait entre 700 et 600. Ensuite, nous démarrons une « boucle éternelle ». Nous allons lire la valeur de la touche et la comparer avec la dernière valeur basse enregistrée. Si la valeur actuelle de la touche est inférieure à la dernière valeur basse, nous réglons la valeur basse sur la valeur de la touche. Nous imprimons également la valeur basse à ce stade. Enfin, nous dormons pendant 100 millisecondes et bouclons à nouveau. Nous pouvons utiliser le bouton {Stop} de Thonny pour quitter le programme.
 +
 +Voici à quoi ressemble l'impression. Il faut environ 1,5 à 2 secondes pour atteindre la valeur la plus basse.
 +
 +LowValue = 677
 +LowValue = 671
 +LowValue = 667
 +LowValue = 658
 +LowValue = 616
 +LowValue = 456
 +LowValue = 390
 +LowValue = 347
 +LowValue = 227
 +LowValue = 128
 +LowValue = 107
 +LowValue = 100
 +LowValue = 94
 +LowValue = 92
 +LowValue = 88
 +LowValue = 87
 +
 +À présent (ci-dessous), nous pouvons modifier un peu le programme pour permettre au programme de se terminer automatiquement :
 +
  
 **Notice that we haven’t changed it that much. We just added an assignment to a variable called loopit, changed the while statement to “while loopit:” instead of “while True:”, and then check to see if the lowvalue is less than 90 as a “trigger”. If it is, then we set the loopit value to False to make the loop fail. **Notice that we haven’t changed it that much. We just added an assignment to a variable called loopit, changed the while statement to “while loopit:” instead of “while True:”, and then check to see if the lowvalue is less than 90 as a “trigger”. If it is, then we set the loopit value to False to make the loop fail.
Ligne 72: Ligne 134:
  
 passwd = 'YourNetworkPassword'** passwd = 'YourNetworkPassword'**
 +
 +Remarquez que nous ne l'avons pas beaucoup modifié. Nous avons simplement ajouté une affectation à une variable appelée loopit, modifié l'instruction while en « while loopit : » au lieu de « while True : », puis vérifié si la valeur basse est inférieure à 90 comme « déclencheur ». Si c'est le cas, nous mettons la valeur de loopit à False pour faire échouer la boucle.
 +
 +Je dois tenir et presser doucement le cavalier mâle pour que la valeur soit suffisamment basse pour déclencher la sortie.
 +
 +Programme du projet n° 2 - Programmation du réseau
 +
 +Ceci est un exemple simple de la façon de se connecter à votre routeur local. Tout ce qu'il fait réellement est de se connecter au routeur avec votre mot de passe, obtenir une adresse IP et l'imprimer. Nous aborderons un exemple plus complet dans un prochain article.
 +
 +Tout d'abord, nous devons importer la bibliothèque réseau et configurer l'essid et le mot de passe. Veillez à les remplacer par vos valeurs réelles.
 +
 +import network
 +
 +essid = 'Votre RouteurRéseau'
 +
 +
 +passwd = 'Votre mot de passe réseau'
 +
  
 **Now (top right) we’ll create the function to do the actual communications with the router (essid). We set the network object (wlan) to station mode, which is like a “normal” computer on the network. You could also set it up as an access point. Next, we set the network object to active and then try to connect. Once we have connected, we print out the network information (ip address, etc). The final line calls the connection function. **Now (top right) we’ll create the function to do the actual communications with the router (essid). We set the network object (wlan) to station mode, which is like a “normal” computer on the network. You could also set it up as an access point. Next, we set the network object to active and then try to connect. Once we have connected, we print out the network information (ip address, etc). The final line calls the connection function.
Ligne 80: Ligne 160:
  
 Our final project for this month involves using the ESP32/Sparkfun 32 Thing Plus as a web server as well as DHT-11/22 Temperature/Humidity sensor reader, and a touchpad and button display program. Below is what it looks like when it’s running…** Our final project for this month involves using the ESP32/Sparkfun 32 Thing Plus as a web server as well as DHT-11/22 Temperature/Humidity sensor reader, and a touchpad and button display program. Below is what it looks like when it’s running…**
 +
 +Maintenant (en haut à droite), nous allons créer la fonction pour effectuer les communications réelles avec le routeur (essid). Nous définissons l'objet réseau (wlan) en mode station, qui est comme un ordinateur « normal » sur le réseau. Vous pouvez également le configurer comme un point d'accès. Ensuite, nous définissons l'objet réseau comme actif, puis nous essayons de nous connecter. Une fois la connexion établie, nous imprimons les informations du réseau (adresse IP, etc.). La dernière ligne appelle la fonction de connexion.
 +
 +Comme je l'ai dit, il s'agit d'un exemple très simple qui ne fait rien d'autre que de se connecter au routeur local et de renvoyer une adresse IP. L'utilisation des « sockets » sera abordée dans un prochain article.
 +
 +Programme du projet #3 - Serveur Web et DHT-11/22
 +
 +Notre projet final pour ce mois-ci implique l'utilisation de l'ESP32/Sparkfun 32 Thing Plus comme serveur Web ainsi que le lecteur de capteur de température/humidité DHT-11/22, et un programme d'affichage de pavé tactile et de boutons. Voici à quoi il ressemble  pendant qu'il fonctionne :
 +
  
 **The entire project is described in detail at: https://itywik.org/2018/10/30/eight-micropython-python-experiments-for-the-esp32/. **The entire project is described in detail at: https://itywik.org/2018/10/30/eight-micropython-python-experiments-for-the-esp32/.
Ligne 98: Ligne 187:
  
 You can find out more about upip at: https://docs.micropython.org/en/latest/reference/packages.html** You can find out more about upip at: https://docs.micropython.org/en/latest/reference/packages.html**
 +
 +L'ensemble du projet est décrit en détail à l'adresse suivante : https://itywik.org/2018/10/30/eight-micropython-python-experiments-for-the-esp32/.
 +
 +Ce projet utilise la bibliothèque PicoWeb qui se trouve à l'adresse https://github.com/pfalcon/picoweb.    
 +
 +Bien entendu, vous devez ajouter Picoweb et ses dépendances. Vous pouvez essayer de suivre les instructions dans le lien pour le projet lui-même, ou vous pouvez utiliser upip dans le REPL de Thonny. Vous devrez installer micropython-pkg_resources, ulogging, uasyncio et picoweb. Vous devrez faire un import d'upip par la ligne de commande du REPL pour pouvoir l'utiliser.
 +
 +import upip
 +
 +upip.install('micropython-pkg_resources')
 +
 +upip.install('micropython-ulogging')
 +
 +upip.install('micropython-uasyncio')
 +
 +upip.install('picoweb')
 +
 +Vous pouvez trouver plus d'informations sur upip à l'adresse suivante : https://docs.micropython.org/en/latest/reference/packages.html.
 +
  
 **There is the code, diagrams and step-by-step projects leading up to the full webserver project. The code for the webserver project is pretty long and includes both the python file and the index.html file that displays the web information. I won’t duplicate it here, but I will point out a few changes that I had to make to get the project to work the way that I wanted it to. **There is the code, diagrams and step-by-step projects leading up to the full webserver project. The code for the webserver project is pretty long and includes both the python file and the index.html file that displays the web information. I won’t duplicate it here, but I will point out a few changes that I had to make to get the project to work the way that I wanted it to.
Ligne 110: Ligne 218:
 Line 33 (in my code) needs to be modified to support your network. Line 33 (in my code) needs to be modified to support your network.
 sta_if.connect('YourNetworkESSID', 'YourPasswordHere')** sta_if.connect('YourNetworkESSID', 'YourPasswordHere')**
 +
 +Il y a le code, les diagrammes et les projets, étape par étape, menant au projet complet de serveur Web. Le code du projet de serveur Web est assez long et comprend à la fois le fichier python et le fichier index.html qui affiche les informations Web. Je ne vais pas le reproduire ici, mais je vais signaler quelques changements que j'ai dû faire pour que le projet fonctionne comme je le voulais.
 +
 +J'ai enregistré le code principal dans un fichier nommé ESP32-DHT-Touch-Picoweb.py.
 +
 +Les lignes 18, 19 et 20 définissent les broches pour les LEDs. J'ai décidé de n'utiliser que la LED embarquée sur la carte ESP32 Dev qui est sur la broche 2. J'ai changé la ligne 18 en :
 +r_led = machine.Pin(2, machine.Pin.OUT)
 +
 +Et j'ai laissé les lignes 19 et 20 telles quelles.
 +
 +La ligne 33 (dans mon code) doit être modifiée pour supporter votre réseau.
 +sta_if.connect('ESSIDdevotreréseau', 'VotreMotdepasseici')
 +
  
 **Line 58 defines the callback for the touchpad timer interrupt handler. I modified lines 62, 70 and 78. They each are an if statement testing the touchpad.read() value to be less than 100. Since I’m just using just wires, not true copper pads, the earlier tests showed that I can achieve a value of under 100, but it takes a number of seconds for it to get that low. So, I changed the test value to less than 200 for all three values. It still takes around 2 ½ seconds to 3 seconds and a fairly tight squeeze to get it to trigger, but it does. So line 62 was changed to: **Line 58 defines the callback for the touchpad timer interrupt handler. I modified lines 62, 70 and 78. They each are an if statement testing the touchpad.read() value to be less than 100. Since I’m just using just wires, not true copper pads, the earlier tests showed that I can achieve a value of under 100, but it takes a number of seconds for it to get that low. So, I changed the test value to less than 200 for all three values. It still takes around 2 ½ seconds to 3 seconds and a fairly tight squeeze to get it to trigger, but it does. So line 62 was changed to:
Ligne 127: Ligne 248:
  
 dht22_timer.init(period=1000, mode=machine.Timer.PERIODIC, callback=timerIntHandler_temperature)** dht22_timer.init(period=1000, mode=machine.Timer.PERIODIC, callback=timerIntHandler_temperature)**
 +
 +La ligne 58 définit le callback pour le gestionnaire d'interruption du timer du pavé tactile. J'ai modifié les lignes 62, 70 et 78. Chacune est une instruction if testant que la valeur de touchpad.read() est inférieure à 100. Puisque je n'utilise que des fils, et non de vraies plaques de cuivre, les tests précédents ont montré que je peux obtenir une valeur inférieure à 100, mais qu'il faut un certain nombre de secondes pour qu'elle soit aussi basse. J'ai donc modifié la valeur du test pour qu'elle soit inférieure à 200 pour les trois valeurs. Il faut encore environ 2,5 à 3 secondes et un serrage assez fort pour qu'il se déclenche, mais il le fait. La ligne 62 a donc été modifiée comme suit :
 +if t7 < 200 :
 +
 +La ligne 70 a été changée en :
 +if t8 < 200 :
 +
 +Et la ligne 78 a été changée en :
 +if t9 < 200 :
 +
 +Les lignes 87, 89 et 90 (mon code) font référence au capteur DHT11. Comme j'utilise un DHT22, j'ai dû changer les trois instances de DHT11 à DHT22.
 +
 +d = dht.DHT22(machine.Pin(23))
 +
 +dht22_timer = machine.Timer(0)
 +
 +dht22_timer.init(period=1000, mode=machine.Timer.PERIODIC, callback=timerIntHandler_temperature)
 +
  
 **Also, in the index.html file I made a change to make the temperature and humidity display text smaller. Around line 45, you will find the code: **Also, in the index.html file I made a change to make the temperature and humidity display text smaller. Around line 45, you will find the code:
Ligne 149: Ligne 288:
  
 Until then, as always; stay safe, healthy, positive and creative!** Until then, as always; stay safe, healthy, positive and creative!**
 +
 +De plus, dans le fichier index.html, j'ai fait une modification pour rendre le texte d'affichage de la température et de l'humidité plus petit. Vers la ligne 45, vous trouverez le code :
 +
 +       .table-value {
 +            font-size : 160px ;
 +            color : #999 ;
 + }
 +
 +J'ai trouvé que la taille de la police était beaucoup trop grande pour moi. Je l'ai changée en :
 +
 +        .table-value {
 +            font-size : 60px ;
 +            color : #999 ;
 +        }
 +
 +ce qui fonctionne beaucoup mieux, du moins pour moi. Vous pouvez faire ce changement si vous le souhaitez.
 +
 +Mon code peut être trouvé sur mon dépôt github à l'adresse https://github.com/gregwa1953/FCM170_MicroThisAndThat. Le code du projet de serveur Web sur le dépôt contient mes modifications.
 +
 +La prochaine fois, nous verrons les dispositifs NeoPixel et comment les programmer en utilisant l'ESP-32 et le RPI Pico.
 +
 +D'ici là, comme toujours, restez en sécurité, en bonne santé, positifs et créatifs !
 +
  
issue170/micro-ci_micro-la.1624969751.txt.gz · Dernière modification : 2021/06/29 14:29 de d52fr