Outils pour utilisateurs

Outils du site


issue204: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
Dernière révisionLes deux révisions suivantes
issue204:micro-ci_micro-la [2024/04/28 14:50] d52frissue204:micro-ci_micro-la [2024/04/29 10:51] auntiee
Ligne 30: Ligne 30:
 Of course you have to have the datetime module “installed” on your device. There are few ways of doing this. One is my preferred way of getting the entire source code package and copying the necessary modules onto my device. By doing this, I can make sure that any of the dependencies are available and I can examine the code to see how that programmer (or group of programmers) got their code to work. Also if there are any errors being thrown, I can track it down much quicker than relying on a library where I can’t see the source code. You can find the package at https://github.com/micropython/micropython-lib/tree/master and download the entire zip file. Unzip the package into a folder (I use my Downloads folder and unzip it there, since it has the folder already there for me). Once there, you can find the file in the /python-stdlib/datetime/ folder (named datetime.py)** Of course you have to have the datetime module “installed” on your device. There are few ways of doing this. One is my preferred way of getting the entire source code package and copying the necessary modules onto my device. By doing this, I can make sure that any of the dependencies are available and I can examine the code to see how that programmer (or group of programmers) got their code to work. Also if there are any errors being thrown, I can track it down much quicker than relying on a library where I can’t see the source code. You can find the package at https://github.com/micropython/micropython-lib/tree/master and download the entire zip file. Unzip the package into a folder (I use my Downloads folder and unzip it there, since it has the folder already there for me). Once there, you can find the file in the /python-stdlib/datetime/ folder (named datetime.py)**
  
-Dans ma recherche d'une solution facile, je suis tombé sur le fait que le groupe MicroPython a travaillé à la création d'une grande bibliothèque de modules utiles pour les programmeurs qui écrivent des programmes MicroPython. Beaucoup d'entre eux tentent de refléter les bibliothèques standard du monde Python. L'un de ces modules est le module datetime. MicroPython a souffert de l'absence de ce module dans les builds. Maintenant, l'attente est terminée (du moins en grande partie).+Dans ma recherche d'une solution facile, je suis tombé sur le fait que le groupe MicroPython a travaillé à la création d'une grande bibliothèque de modules utiles pour les programmeurs qui écrivent des programmes en MicroPython. Beaucoup d'entre eux tentent de refléter les bibliothèques standard du monde Python. L'un de ces modules est le module datetime. MicroPython souffrait de l'absence de ce module dans les builds. Maintenant, l'attente est terminée (du moins en grande partie).
  
 En utilisant le module datetime de micropython-lib dans nos programmes, nous pouvons, avec quelques modifications, utiliser du code python « normal » dans nos programmes MicroPython. En utilisant le module datetime de micropython-lib dans nos programmes, nous pouvons, avec quelques modifications, utiliser du code python « normal » dans nos programmes MicroPython.
  
-Bien sûr, il faut que le module datetime soit « installé » sur votre appareil. Il y a plusieurs façons de le faire. La première, que je préfère, consiste à obtenir l'ensemble du code source et à copier les modules nécessaires sur mon appareil. Ce faisant, je peux m'assurer que toutes les dépendances sont disponibles et je peux examiner le code pour voir comment le programmeur (ou le groupe de programmeurs) a fait fonctionner son code. De plus, si des erreurs sont générées, je peux les trouver beaucoup plus rapidement qu'en me fiant à une bibliothèque dont je ne peux pas voir le code source. Vous pouvez trouver le paquet à l'adresse https://github.com/micropython/micropython-lib/tree/master et télécharger le fichier zip complet. Décompressez le paquet dans un dossier (j'utilise mon dossier Téléchargements et je le décompresse là, puisqu'il contient déjà le dossier pour moi). Une fois dans ce dossier, vous trouverez le fichier dans le dossier /python-stdlib/datetime/ (nommé datetime.py).+Bien sûr, il faut que le module datetime soit « installé » sur votre appareil. Il y a plusieurs façons de le faire. La première, que je préfère, consiste à obtenir l'ensemble du code source et à copier les modules nécessaires sur mon appareil. Ce faisant, je peux m'assurer que toutes les dépendances sont disponibles et je peux examiner le code pour voir comment le programmeur (ou le groupe de programmeurs) a fait fonctionner son code. De plus, si des erreurs sont générées, je peux les trouver beaucoup plus rapidement qu'en me fiant à une bibliothèque dont je ne peux pas voir le code source. Vous pouvez trouver le paquet à l'adresse https://github.com/micropython/micropython-lib/tree/master et télécharger le fichier zip complet. Décompressez le paquet dans un dossier (j'utilise mon dossier Téléchargements et je le décompresse là, puisqu'il contient déjà mon dossier). Une fois dans ce dossier, vous trouverez le fichier dans le dossier /python-stdlib/datetime/ (nommé datetime.py).
  
  
Ligne 53: Ligne 53:
 Copiez le fichier datetime.py sur votre microcontrôleur et placez-le dans le dossier /lib, ou, si vous ne l'avez pas, créez le dossier et placez-le dedans, ou placez-le simplement dans votre dossier principal sur le microcontrôleur. (Il est préférable de le placer dans le dossier /lib). Copiez le fichier datetime.py sur votre microcontrôleur et placez-le dans le dossier /lib, ou, si vous ne l'avez pas, créez le dossier et placez-le dedans, ou placez-le simplement dans votre dossier principal sur le microcontrôleur. (Il est préférable de le placer dans le dossier /lib).
  
-L'autre moyen, qui est un peu plus facile mais qui ne vous fournit que le fichier mpy compressé, est d'utiliser mip. Voici un lien vers l'utilisation de mip : https://www.tomshardware.com/how-to/raspberry-pi-pico-micropython-mip.+L'autre moyen, qui est un peu plus facilemais qui ne vous fournit que le fichier mpy compressé, est d'utiliser mip. Voici un lien vers l'utilisation de mip : https://www.tomshardware.com/how-to/raspberry-pi-pico-micropython-mip.
  
 Quoi qu'il en soit, je n'ai pas eu l'occasion d'explorer pleinement toutes les fonctions disponibles, mais pour ce mois-ci, nous utiliserons la bibliothèque datetime pour obtenir la fonction datetime.now. Vous l'appellerez comme ceci : Quoi qu'il en soit, je n'ai pas eu l'occasion d'explorer pleinement toutes les fonctions disponibles, mais pour ce mois-ci, nous utiliserons la bibliothèque datetime pour obtenir la fonction datetime.now. Vous l'appellerez comme ceci :
Ligne 61: Ligne 61:
 current_time = datetime.datetime.now(my_timezone) current_time = datetime.datetime.now(my_timezone)
  
-Bien sûr, vous devez importer la bibliothèque avant de pouvoir l'appeler, mais nous verrons cela dans le premier projet de ce mois.+Bien entendu, vous devez importer la bibliothèque avant de pouvoir l'appeler, mais nous verrons cela dans le premier projet de ce mois.
  
 Si vous êtes un programmeur Python « normal », vous reconnaîtrez la deuxième ligne, qui utilise la méthode datetime.datetime.now(). Si vous êtes un programmeur Python « normal », vous reconnaîtrez la deuxième ligne, qui utilise la méthode datetime.datetime.now().
Ligne 79: Ligne 79:
 Really simple huh?** Really simple huh?**
  
-Donc, pour le projet principal de ce mois, nous allons nous connecter à Internet (assurez-vous que vous utilisez un RPi Pico-W), utiliser le module portable NTPTime de Peter Hinch, obtenir l'heure du réseau, régler l'horloge temps réel sur le Pico-Wet ensuite commencer à imprimer l'heure dans le REPL une fois toutes les 10 secondes. J'ai nommé le programme « timetestFCM1.py ». Assurez-vous que vous avez le fichier datetime.py ou datetime.mpy dans le dossier de votre périphérique principal ou dans le dossier lib. Toutes les autres bibliothèques nécessaires sont des bibliothèques « standard », à l'exception de la bibliothèque portable NTPtime de Peter. Elle se trouve dans le dépôt listé à la fin de cet article.+Ainsi, pour le projet principal de ce mois, nous allons nous connecter à Internet (assurez-vous que vous utilisez un RPi Pico-W), utiliser le module portable NTPTime de Peter Hinch, obtenir l'heure du réseau, régler l'horloge temps réel sur le Pico-W et ensuite commencer à imprimer l'heure dans le REPL une fois toutes les 10 secondes. J'ai nommé le programme « timetestFCM1.py ». Assurez-vous que vous avez le fichier datetime.py ou datetime.mpy dans le dossier de votre périphérique principal ou dans le dossier lib. Toutes les autres bibliothèques nécessaires sont des bibliothèques « standard », à l'exception de la bibliothèque portable NTPtime de Peter. Elle se trouve dans le dépôt listé à la fin de cet article.
  
 Le code Le code
Ligne 101: Ligne 101:
 Next we have the settime2 function. It’s very similar to the one defined in the NTPTime module, but this one will return a 0 if, for some reason, it can’t set the time correctly. We get the time and date tuple by sending the number of seconds since our EPOCH (from the network time server) to utime.gmtime and then set the software real time clock with that value. If everything worked correctly we return a True, otherwise return a False (next page, top left).** Next we have the settime2 function. It’s very similar to the one defined in the NTPTime module, but this one will return a 0 if, for some reason, it can’t set the time correctly. We get the time and date tuple by sending the number of seconds since our EPOCH (from the network time server) to utime.gmtime and then set the software real time clock with that value. If everything worked correctly we return a True, otherwise return a False (next page, top left).**
  
-Passons à autre chose. Nous allons maintenant avoir besoin de la routine portable NTPTime de Peter. Elle se trouve également dans le référentiel, enregistrée sous le nom de port_ntptime.py. Assurez-vous qu'elle se trouve également sur votre appareil.+Passons à autre chose. Nous allons maintenant avoir besoin de la routine portable NTPTime de Peter. Elle se trouve également dans le dépôt, enregistrée sous le nom de port_ntptime.py. Assurez-vous qu'elle se trouve également sur votre appareil.
  
-Maintenant (en haut à droite) nous allons commencer à plonger dans le projet timetestFCM1.py. Tout d'abord, les importations. Cela va vous sembler être un nombre VRAIMENT important d'importations, mais ce n'est pas grand chose.+Maintenant (en haut à droite) nous allons commencer à plonger dans le projet timetestFCM1.py. Tout d'abord, les importations. Cela va vous sembler un nombre VRAIMENT important d'importations, mais ce n'est pas grand chose.
  
 Ensuite vient la fonction connectNetwork. C'est une fonction assez simple que je réutilise souvent. Tout d'abord, je configure la LED embarquée du Pico (nommez-la « led »), puis je m'assure qu'elle est éteinte. Ensuite, je commence à configurer les modes réseau, j'envoie le SSID et le mot de passe à l'objet wlan et je boucle jusqu'à ce que nous soyons connectés. Une fois que nous sommes connectés à notre réseau local, nous allumons la LED embarquée (page suivante, en haut à droite). Ensuite vient la fonction connectNetwork. C'est une fonction assez simple que je réutilise souvent. Tout d'abord, je configure la LED embarquée du Pico (nommez-la « led »), puis je m'assure qu'elle est éteinte. Ensuite, je commence à configurer les modes réseau, j'envoie le SSID et le mot de passe à l'objet wlan et je boucle jusqu'à ce que nous soyons connectés. Une fois que nous sommes connectés à notre réseau local, nous allumons la LED embarquée (page suivante, en haut à droite).
Ligne 131: Ligne 131:
 C'est tout pour nos fonctions de support. Nous avons maintenant la routine principale. Celle-ci appelle les différentes fonctions dont nous avons déjà parlé. C'est tout pour nos fonctions de support. Nous avons maintenant la routine principale. Celle-ci appelle les différentes fonctions dont nous avons déjà parlé.
  
-Tout d'abord, je définis les deux décalages de fuseau horaire utilisés ici, là où je vis. Cst est 6 heures derrière GMT (à partir de l'automne) et cdt est 5 heures derrière (à partir du printemps). Je multiplie le nombre d'heures par 3600 (le nombre de secondes dans une heure) et comme nous sommes en retard sur l'heure GMT, j'utilise un nombre négatif.+Tout d'abord, je définis les deux décalages de fuseau horaire utilisés ici, là où je vis. Cst est 6 heures derrière GMT (à partir de l'automne) et cdt est 5 heures derrière (à partir du printemps). Je multiplie le nombre d'heures par 3600 (le nombre de secondes dans une heure) etcomme nous sommes en retard sur l'heure GMT, j'utilise un nombre négatif.
  
  
Ligne 191: Ligne 191:
 connectNetwork() connectNetwork()
  
-Maintenant que nous sommes connectés, nous pouvons essayer d'obtenir l'heure (en secondes) du serveur NTP. C'est assez simple. Une fois que nous sommes dans la boucle, nous faisons un appel à la fonction portable ntptime de Peter. Si la valeur est supérieure à zéro, nous procédons à un tri rapide des déchets (pour nous débarrasser de tout ce qui n'est pas nécessaire)et nous appelons la fonction settime2 avec le bon décalage de fuseau horaire. Si l'appel à settime2 est réussi, nous mettons la variable de boucle à False, sinon nous dormons pendant 2 secondes (page suivante, en haut à gauche).+Maintenant que nous sommes connectés, nous pouvons essayer d'obtenir l'heure (en secondes) du serveur NTP. C'est assez simple. Une fois que nous sommes dans la boucle, nous faisons un appel à la fonction portable ntptime de Peter. Il donnera, soit la valeur de l'heure du serveur NTP, soit un 0. Si la valeur est supérieure à zéro, nous procédons à un tri rapide des déchets (pour nous débarrasser de tout ce qui n'est pas nécessaire) et nous appelons la fonction settime2 avec le bon décalage de fuseau horaire. Si l'appel à settime2 est réussi, nous mettons la variable de boucle à False, sinon nous dormons pendant 2 secondes (page suivante, en haut à gauche).
  
 À ce stade, nous pouvons supposer que nous avons obtenu l'heure du réseau. Maintenant, tout ce qu'il nous reste à faire est d'imprimer les temps time.gmtime et time.local sur le REPL, puis d'imprimer le retour de showMyTime (en bas à gauche). À ce stade, nous pouvons supposer que nous avons obtenu l'heure du réseau. Maintenant, tout ce qu'il nous reste à faire est d'imprimer les temps time.gmtime et time.local sur le REPL, puis d'imprimer le retour de showMyTime (en bas à gauche).
Ligne 205: Ligne 205:
 // Encart p 43 en haut à droite, lignes noires // // Encart p 43 en haut à droite, lignes noires //
 **Now we can define our internal functions. First the PI function GetWhichPico, which is useful if you have both types of the RPi Pico.** **Now we can define our internal functions. First the PI function GetWhichPico, which is useful if you have both types of the RPi Pico.**
-Maintenant, nous pouvons définir nos foncions internes. D'abord la fonction PI GetWhichPico, qui est utile si vous avez deux types de RPi Pico.+Maintenant, nous pouvons définir nos fonctions internes. D'abord la fonction PI GetWhichPico, qui est utile si vous avez deux types de RPi Pico.
  
 // Encart p 45 en bas à gauche, lignes noires // // Encart p 45 en bas à gauche, lignes noires //
issue204/micro-ci_micro-la.txt · Dernière modification : 2024/05/01 11:41 de andre_domenech