FEATHER-M0-MicroPython-bibliotheque

De MCHobby - Wiki
Révision datée du 23 décembre 2017 à 15:31 par Admin (discussion | contributions) (→‎Introduction)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Sauter à la navigation Sauter à la recherche


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Introduction

Ce qui rend CircuitPython si génial, c'est la possibilité de stocker du code séparé du firmware proprement dit. Cette séparation entre code et firmware facilite la mise-à-jour du code que vous écrivez et des bibliothèques dont il dépend. Par conséquent, à la place de compiler les bibliothèques dans votre programme, vous les placer simplement dans votre répertoire lib de votre lecteur CIRCUITPY.

Votre carte CircuitPython devrait déjà contenir un répertoire lib, c'est un répertoire présent dans la racine du lecteur. S'il n'y est pas, vous pouvez simplement créer ce répertoire vous même (attention à la case, en minuscule uniquement).

FEATHER-M0-MicroPython-bibliotheque-01.png
Crédit: AdaFruit Industries www.adafruit.com

Les bibliothèques CircuitPython fonctionnent de façon identique aux modules Python traditionnels. Par conséquent les docs Python sont une excellente référence pour comprendre comment ces bibliothèques devraient fonctionner. En termes Pythonics, nous pouvons placer nos fichiers de bibliothèques dans le répertoire lib parce que ce dernier est le répertoire par défaut de Python.

L'inconvénient de cette approche des bibliothèques séparées c'est qu'elles ne sont "pas incluses". Pour les utiliser, il est nécessaire de les copier dans le lecteur CIRCUITPY avant de pouvoir les utiliser. Par chance, Adafruit offre un ensemble complet de bibliothèque.

Le bundle Adafruit et les releases sont des versions optimisées des bibliothèques Adafruit avec l'extension de fichier .mpy. Ces fichiers prennent moins de place sur le lecteur et un impact en mémoire moins important quand ils sont chargés.

Installer un bundle

Adafruit améliore constamment ses bibliothèques, bibliothèques qui sont mises-à-jour régulièrement. La totalité des bibliothèques ne sont donc pas incluses (pour le moment) sur les cartes CircuitPython. Par conséquent, vous pourriez trouver des codes d'exemples qui utilise certaines bibliothèques (instruction import) de chargement de bibliothèques). Certaines de ces bibliothèques pourraient être disponible depuis Adafruit, d'autres écrites par des membres de la communauté!

Quoi qu'il en soit, une fois passer l'exemple blink (exemple simple qui fait clignoter une LED), vous aurez besoin de savoir comment obtenir la bibliothèque et la charger sur votre carte.

Jetons un petit coup d'oeil sur l'exemple, ci-dessous, utilisant le senseur de température SI7021 (bus I2C).

import adafruit_si7021
import busio
import board

i2c = busio.I2C(board.SCL, board.SDA)
sensor = adafruit_si7021.SI7021(i2c)
print("Temperature:", sensor.temperature)
print("Humidite:", sensor.relative_humidity)

Après avoir sauvé ce code dans le fichier code.py sur le lecteur, nous pouvons voir la LED NeoPixel affichier un statur d'erreur (elle flash). En utilisant la console série nous pouvons constater qu'une erreur ImportError s'est produite.

FEATHER-M0-MicroPython-bibliotheque-02.png
Crédit: AdaFruit Industries www.adafruit.com

L'erreur indique qu'il n'existe pas de module nommé adafruit_si7021. C'est la bibliothèque que nous avons besoin de télécharger! Etant donné que le senseur provient d'Adafruit, il y a fortes chances d'y trouver la bibliothèque depuis le bundle officiel d'Adafruit. S'il ne s'agit pas d'un composant Adafruit ou s'il est manquant dans le bundle officiel, vous pouvez vérifier le the Community bundle (le bundle communautaire) qui dispose de bibliothèques auxquels contribue la communauté.

Download-icon.pngCliquer ici pour obtenir la dernière version du bundle d'Adafruit

Visiter la page release du bundle qui affiche des informations sur la dernière release incluant une liste de toutes les versions et liste des pilotes inclus dans la release. Faire défiller la page jusqu'en bas affiche les téléchargements ("Downloads"). Bien, commencons par le premier fichier zip qui commence par adafruit-circuitpython-bundle.

FEATHER-M0-MicroPython-bibliotheque-03.png
Crédit: AdaFruit Industries www.adafruit.com

FEATHER-M0-MicroPython-bibliotheque-04.png
Crédit: AdaFruit Industries www.adafruit.com

Après avoir téléchargé le zip et extrait le contenu. Cela se fait habituellement en double-cliquant sur le fichier zip. Sur un Mac OSX cela extrait les fichiers dans le même répertoire que le fichier zip. Le fichier zip contient un répertoire lib.

FEATHER-M0-MicroPython-bibliotheque-05.png
Crédit: AdaFruit Industries www.adafruit.com

Les cartes Express

Si vous utilisez un Feather M0 Express, Metro M0 Express ou Circuit Playground Express (ex: carte "Express") alors votre carte CircuitPython dispose de 2 MB de mémoire Flash (pour le stockage). Cela représente beaucoup d'espace pour les fichiers de la bibliothèque, vous pouvez donc totes les installer! (Si vous disposez d'un Gemma M0 ou Trinket M0 ou autre carte non-Express alors passez à la section suivante)

Sur une carte Express, le répertoire lib peut être copié directement sur le lecteur CIRCUITPY.

Faites un simple glisser/déposer du répertoire lib sur le lecteur CIRCUITPY et 'replacez' tous les anciens fichiers présents (si jamais le système d'exploitation se plaint)

Voila, c'est fait! Vous pouvez maintenant retourner au codage de votre projet :) Le restant de cette page concerne les cartes non-Express.

Les cartes Non-Express

Si vous disposez d'un Gemma M0 ou Trinket M0 alors votre espace de stockage est sur la puce elle-même. Par conséquent, ces cartes ne dispose pas d'assez d'espace de stockage pour acceuillir le bundle complet des bibliothèques Adafruit. Si vous essayez de copier l'entièreté du répertoire lib vous dépasserez le quota de l'espace de stockage.

A la place, copiez uniquement les fichiers dont vous avez besoin. Dans le répertoire lib il y a un fichier adafruit_si7021.mpy. Celui-ci correspond au module manquant! Python importe les modules sur base de leur nom de fichier donc le module et le nom de fichier correspondent. Copiez le fichier adafruit_si7021.mpy sur votre carte.

Si cela fonctionne, vous pouvez passer directement à la prochaine section. Poursuivez votre lecture si vous constatez une erreur.

FEATHER-M0-MicroPython-bibliotheque-06.png
Crédit: AdaFruit Industries www.adafruit.com

Cartes Non-Express - Plus d'espace?

Le système de fichier est vraiment très petit (plus petit que les anciennes disquettes). Il y a donc de fortes chances que vous manquiez d'espace... mais pas de panique, il y a quelques trucs et astuces pour récupérer de la place.

La carte contient un pilote série pour Windows 7 aussi! Vous pouvez l'effacer si vous n'en avez pas besoin ou s'il est déjà installé. ce fichier fait environ ~12KiB.

Effacer quelque-chose!

La façon la plus simple de récupérer de l'espace est d'effacer un fichier du lecteur. Il y a peut être des bibliothèques dans lib que vous n'utilisez plus ou pour tester du code qui n'est plus utilisé.

Utiliser les tabulations

Une des fonctionnalités particulièrement unique de Python est l'indentation du code (utilisé pour pour les différents niveau du bloc). La recommandation habituelle est d'utiliser 4 espaces ou une tabulation pour chaque indentation de bloc. La recommandation générale est d'utiliser des espaces.

Cependant, une astuce consiste à utiliser une tabulation (un caractère de tabulation) au lieu de 4 espaces. Cela divise par 4 la quantité de caractères nécessaires pour assurer l'indentation du code... ce qui permet d'économiser de précieux octets.

Mac OSX aime ajouter des fichiers supplémentaires!

FEATHER-M0-MicroPython-bibliotheque-07.png
Crédit: AdaFruit Industries www.adafruit.com

Par chance, il est possible de désactiver l'ajout de fichiers cachés par Mac OSX en exécutant quelques commandes permettant de désactiver l'index de recherche en créant un emplacement de stockage vide.

Suivez les étape suivantes pour maximiser l'espace de stockage disponible sous OSX:

Enlever les fichiers cachés sur Mac OSX (empêcher leur création)

Pour commencer, il faut identifier le lecteur correspondant à la carte. Exécutez la commande suivante dans un terminal avec la carte branchée, cela permet de lister tous les volumes:

ls -l /Volumes

Cherchez un volume qui ne nomme CIRCUITPY (nom par défaut pour CircuitPython).  La chemin complet est /Volumes/CIRCUITPY.

Suivez maintenant les étapes de cette question (stackexchange.com) en saisissant les commandes permettant d'arrêter la création de fichiers cachés sur la carte:

mdutil -i off /Volumes/CIRCUITPY
cd /Volumes/CIRCUITPY
rm -rf .{,_.}{fseventsd,Spotlight-V*,Trashes}
mkdir .fseventsd
touch .fseventsd/no_log .metadata_never_index .Trashes
cd -

Dans les commandes ci-dessus, remplacez /Volumes/CIRCUITPY par le chemin de votre propre carte. Une fois fait, tous les fichiers cachés devraient être enlevés de la carte et le système d'exploitation ne devrait plus en créer.

Il reste cependant des cas où Mac OSX crée encore des fichier cachés.  Plus particulièrement lorsque l'on copie des fichiers qui ont étés téléchargés depuis Internet, MAc OSX crée un fichier caché spécial contenant des métadonnée. Par chance, il est possible d'utiliser une commande de copie (dans le terminal) permettant de réaliser la copie de fichier sans le fichier de métadonnée caché.  Voyez les étapes ci-dessous:

Copier un fichier sur Mac OSX sans créer le fichier caché

Une fois que vous avez désactivé (et enlevé) la création de fichier caché sur Mac OSX, il sera nécessaire de faire plus attention durant la copie des fichier sur la carte en utilisant une commande qui empêche la création de tels fichiers cachés durant la copie.

Vous ne pourrez malheureusement pas utiliser de glissé/déposé dans Finder parce que, dans certains cas, il crée des fichiers cachés renfermant des informations sur le fichier (pour les fichiers téléchargés d'Internet comme, par exemple, les modules Python Adafruit).

Pour copier un fichier ou un répertoire sans fichiers cachés, il faut utiliser l'option -X de la commande cp. Par exemple, pour copier le fichier foo.mpy sur la carte, nous utiliserons la commande:

cp -X foo.mpy /Volumes/CIRCUITPY

Ou pour copier un répertoire entier (incluant fichiers et sous répertories), nous utiliserons la commande:

cp -rX folder_to_copy /Volumes/CIRCUITPY
Autres astuces Mac OSX

Voici comment faire si vous désirez connaître l'espace utilisé sur la carte -ou- effacer les fichiers cachés manuellement.

Pour commencer, listez l'espace disponible sur CIRCUITPY avec la commande df :

FEATHER-M0-MicroPython-bibliotheque-08.png
Crédit: AdaFruit Industries www.adafruit.com

Commencez par retirer le fichier ._ .

FEATHER-M0-MicroPython-bibliotheque-09.png
Crédit: AdaFruit Industries www.adafruit.com

Voilà! Nous venons de récupérer 13Ki en une opération!

Passons maintenant à l'étape suivante.

Continuer après la copie

Génial! tout à été copié sur la carte. Voyons maintenant le moniteur série pour voir comment vont les choses.

FEATHER-M0-MicroPython-bibliotheque-10.png
Crédit: AdaFruit Industries www.adafruit.com

Oups! Un autre ImportError! La bibliothèque peut dépendre d'autres bibliothèques, par conséquent, la copie d'un seule fichier peut très bien ne pas être suffisant. Si vous inspectez le bundle d'Adafruit, il y a un répertoire adafruit_bus_device . Ce répertoire est un paquet (package) en termes Python. Il contient des modules (fichiers python). Copions donc le répertoire sur la carte pour nous assurer d'avoir tout ce qui est nécessaire.

FEATHER-M0-MicroPython-bibliotheque-11.png
Crédit: AdaFruit Industries www.adafruit.com

Si la copie échoue parce qu'il n'y a pas assez d'espace, alors voyez la section ci-dessus pour savoir comment retrouver de la place. Sinon vous pouvez simplement poursuivre votre exploration.

Vérifions une nouvelle fois la connexion série. Super,voyez, cela fonctionne! Nous n'avons plus d'erreur ImportError et la température est enfin affichée (en Celsius) et l'humidité relative.

FEATHER-M0-MicroPython-bibliotheque-12.png
Crédit: AdaFruit Industries www.adafruit.com



Source: Adafruit Feather M0 Express - Designed for CircuitPython créé par LadyAda, Tony DiCola, Scorr Shawcroft, Dan Halbert pour AdaFruit Industries. Crédit AdaFruit Industries

Traduit par Meurisse D. pour MCHobby.be

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.