Différences entre versions de « FEATHER-M0-MicroPython-bibliotheque »
Ligne 148 : | Ligne 148 : | ||
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-11.png|480px}} | {{ADFImage|FEATHER-M0-MicroPython-bibliotheque-11.png|480px}} | ||
− | Si la copie échoue parce qu'il n'y a pas assez d'espace, [ | + | Si la copie échoue parce qu'il n'y a pas assez d'espace, [[FEATHER-M0-MicroPython-bibliotheque#Cartes_Non-Express_-_Plus_d.27espace.3F|alors voyez la section ci-dessus]] pour savoir comment retrouver de la place. Sinon vous pouvez simplement poursuivre votre exploration. |
Lets check the serial connection again. Looks like it worked! We don't have any more {{fname|ImportError}}s and we can see the temperature (in Celsius) and the relative humidity. | Lets check the serial connection again. Looks like it worked! We don't have any more {{fname|ImportError}}s and we can see the temperature (in Celsius) and the relative humidity. |
Version du 23 décembre 2017 à 13:38
Introduction
![]() |
En cours de traduction/élaboration. |
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).
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.
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é.
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.
Crédit: AdaFruit Industries www.adafruit.com
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.
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.
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!
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:
Prevent & Remove Mac OSX Hidden Files
First find the volume name for your board. With the board plugged in run this command in a terminal to list all the volumes:
ls -l /Volumes
Look for a volume with a name like CIRCUITPY (the default for CircuitPython). The full path to the volume is the /Volumes/CIRCUITPY path.
Now follow the steps from this question to run these terminal commands that stop hidden files from being created on the board:
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 -
Replace /Volumes/CIRCUITPY in the commands above with the full path to your board's volume if it's different. At this point all the hidden files should be cleared from the board and some hidden files will be prevented from being created.
However there are still some cases where hidden files will be created by Mac OSX. In particular if you copy a file that was downloaded from the internet it will have special metadata that Mac OSX stores as a hidden file. Luckily you can run a copy command from the terminal to copy files without this hidden metadata file. See the steps below:
Copy Files on Mac OSX Without Creating Hidden Files
Once you've disabled and removed hidden files with the above commands on Mac OSX you need to be careful to copy files to the board with a special command that prevents future hidden files from being created. Unfortunately you cannot use drag and drop copy in Finder because it will still create these hidden extended attribute files in some cases (for files downloaded from the internet, like Adafruit's modules).
To copy a file or folder use the -X option for the cp command in a terminal. For example to copy a foo.mpy file to the board use a command like:
cp -X foo.mpy /Volumes/CIRCUITPY
Or to copy a folder and all of its child files/folders use a command like:
cp -rX folder_to_copy /Volumes/CIRCUITPY
Other Mac OSX Tips
If you'd like to see the amount of space used on the drive and manually delete hidden files here's how to do so. First list the amount of space used on the CIRCUITPY drive with the df command:
Crédit: AdaFruit Industries www.adafruit.com
Lets remove the ._ files first.
Crédit: AdaFruit Industries www.adafruit.com
Whoa! We have 13Ki more than before! Lets continue!
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.
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.
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.
Lets check the serial connection again. Looks like it worked! We don't have any more ImportErrors and we can see the temperature (in Celsius) and the relative humidity.
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.