Différences entre versions de « FEATHER-M0-MicroPython-bibliotheque »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(41 versions intermédiaires par le même utilisateur non affichées)
Ligne 2 : Ligne 2 :
  
 
== Introduction ==
 
== Introduction ==
{{traduction}}
+
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 {{fname|lib}} de votre lecteur {{fname|CIRCUITPY}}.
  
Part of what makes CircuitPython so awesome is its ability to store code separately from the firmware itself. Storing code separately from the firmware makes it easier to update both the code you write and the libraries you depend. So, instead of compiling libraries in, you simply place them into your <code class="prettyprint">lib</code> directory on the <code class="prettyprint">CIRCUITPY</code> drive.
+
Votre carte CircuitPython devrait déjà contenir un répertoire {{fname|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).
  
Your board may ship with a <code class="prettyprint">lib</code> folder already, its in the base directory of the drive. If not, simply create the folder yourself.
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-01.png|480px}}
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-01.png|640px}}
+
Les bibliothèques CircuitPython fonctionnent de façon identique aux modules Python traditionnels. Par conséquent [https://docs.python.org/3/tutorial/modules.html 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 {{fname|lib}} parce que ce dernier est le répertoire par défaut de Python.
  
CircuitPython libraries work in the same was as regular Python modules so the <a href="https://docs.python.org/3/tutorial/modules.html">Python docs</a> are a great reference for how it all should work. In Python terms, we can place our library files in the <code class="prettyprint">lib</code> directory because its part of the Python path by default.
+
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 {{fname|CIRCUITPY}} avant de pouvoir les utiliser. Par chance, Adafruit offre un ensemble complet de bibliothèque.
  
One downside of this approach of separate libraries is that they are not built in. To use them, one needs to copy them to the <code class="prettyprint">CIRCUITPY</code> drive before they can be used. Fortunately, we provide a bundle full of our libraries.
+
Le bundle Adafruit et les releases sont des versions optimisées des bibliothèques Adafruit avec l'extension de fichier {{fname|.mpy}}. Ces fichiers prennent moins de place sur le lecteur et un impact en mémoire moins important quand ils sont chargés.
  
Our bundle and releases also feature optimized versions of the libraries with the <code class="prettyprint">.mpy</code> file extension. These files take less space on the drive and have a smaller memory footprint as they are loaded.
+
== 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 {{fname|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é!
  
<h2>
+
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.  
<a href="#installing-the-bundle" class="anchor-link"><span class="fa fa-link"></span></a><span id="installing-the-bundle" class="anchor-link-target"></span>Installing the bundle</h2>
 
We're constantly updating and improving our libraries, so we don't (at this time) ship our CircuitPython boards with the full library bundle. Instead, you may find example code that depends on (<code class="prettyprint">import</code>) libraries. Some of these libraries may be available from us at Adafruit, some may be written by community members!
 
  
Either way, once you get past the most basic blink scripts, you'll want to know how to get libraries on board. So, lets take a look at this silly example below which uses a SI7021 I2C temperature sensor.
+
Jetons un petit coup d'oeil sur l'exemple, ci-dessous, utilisant le senseur de température SI7021 (bus I2C).
  
<pre><code class="prettyprint lang-python">import adafruit_si7021
+
<syntaxhighlight lang="python">import adafruit_si7021
 
import busio
 
import busio
 
import board
 
import board
Ligne 29 : Ligne 28 :
 
sensor = adafruit_si7021.SI7021(i2c)
 
sensor = adafruit_si7021.SI7021(i2c)
 
print("Temperature:", sensor.temperature)
 
print("Temperature:", sensor.temperature)
print("Humidity:", sensor.relative_humidity)
+
print("Humidite:", sensor.relative_humidity)
</code>
+
</syntaxhighlight>
</pre>
+
 
After saving that as <code class="prettyprint">code.py</code> on the drive we see the status NeoPixel flashes that an error has occurred. Opening up the serial console we see that an <code class="prettyprint">ImportError</code> has occurred.
+
Après avoir sauvé ce code dans le fichier {{fname|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.
 +
 
 +
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-02.png|480px}}
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-02.png|640px}}
+
L'erreur indique qu'il n'existe pas de module nommé {{fname|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 [https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest 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 [https://github.com/adafruit/CircuitPython_Community_Bundle/releases/latest the Community bundle] (''le bundle communautaire'') qui dispose de bibliothèques auxquels contribue la communauté.
  
It says that no module exists named <code class="prettyprint">adafruit_si7021</code>. Thats the library we need to download! Since we bought the sensor from Adafruit its likely there is a library for in <a href="https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest">the official Adafruit bundle</a>. If its not an Adafruit part or its missing, we can also check <a href="https://github.com/adafruit/CircuitPython_Community_Bundle/releases/latest">the Community bundle</a> which has libraries contributed by the community.
+
{{download-box|Cliquer ici pour obtenir la dernière version du bundle d'Adafruit|https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/latest}}
  
Visiting the bundle release page will show us information on the latest release including a list of all the versions of the included drivers. Scrolling to the bottom of the page will reveal the downloads. We'll download the first zip file which starts with <code class="prettyprint">adafruit-circuitpython-bundle</code>.
+
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 {{fname|adafruit-circuitpython-bundle}}.
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-03.png|640px}}
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-03.png|480px}}
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-04.png|640px}}
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-04.png|480px}}
  
After downloading the zip, extract its contents. This is usually done by double clicking on the zip. On Mac OSX as I'm using, it places the file in the same directory as the zip. I usually sort my Downloads by file data so the <code class="prettyprint">lib</code> directory that was contained in the zip ends up next to the zip file.
+
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 {{fname|lib}}.
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-05.png|640px}}
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-05.png|480px}}
  
== Express Boards ==
+
== Les cartes Express ==
If you are using a Feather M0 Express, Metro M0 Express or Circuit Playground Express (e.g. "Express" board) your CircuitPython board comes with 2 MB of Flash storage. This is ''plenty'' of space for all of our library files so we recommend you just install them all! (If you have a Gemma M0 or Trinket M0 or other non-Express board, skip down to the next section)
+
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)
  
On Express boards, the <code class="prettyprint">lib</code> directory can be copied directly to the CIRCUITPY drive.
+
Sur une carte Express, le répertoire {{fname|lib}} peut être copié directement sur le lecteur CIRCUITPY.
  
Just drag the entire <code class="prettyprint">lib</code> folder into the CIRCUITPY drive, and 'replace' any old files if your operating system prompts you
+
Faites un simple glisser/déposer du répertoire {{fname|lib}} sur le lecteur CIRCUITPY et 'replacez' tous les anciens fichiers présents (si jamais le système d'exploitation se plaint)
  
You're done! You can go back to coding your project :) The rest of this page is for non-Express boards
+
Voila, c'est fait! Vous pouvez maintenant retourner au codage de votre projet :) Le restant de cette page concerne les cartes '''non-Express'''.
  
== Non-Express Boards ==
+
== Les cartes Non-Express ==
If you have a Gemma M0 or Trinket M0, your internal storage is from the chip itself. So, this board doesn't have enough space for all of the libraries. If you try to copy over the entire <code class="prettyprint">lib</code> folder you'll overwhelm your store.  
+
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 {{fname|lib}} vous dépasserez le quota de l'espace de stockage.  
  
Instead, we'll copy over just what we need as we need it. In the <code class="prettyprint">lib</code> folder there is an <code class="prettyprint">adafruit_si7021.mpy</code> file. That matches the missing module! Python imports modules based on the filename so they will always match up. Lets drag it over. If this works, skip to <a href="https://learn.adafruit.com/adafruit-gemma-m0/installing-libraries#continuing-after-copy">the next section</a>. Keep reading if you have an error.
+
A la place, copiez uniquement les fichiers dont vous avez besoin. Dans le répertoire {{fname|lib</code>}} il y a  un fichier {{fname|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 {{fname|adafruit_si7021.mpy}} sur votre carte.  
 +
 
 +
Si cela fonctionne, vous pouvez passer directement [[FEATHER-M0-MicroPython-bibliotheque#Continuer_apr.C3.A8s_la_copie|à la prochaine section]].  
 +
Poursuivez votre lecture si vous constatez une erreur.
  
 
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-06.png|640px}}
 
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-06.png|640px}}
  
<h2>
+
=== Cartes Non-Express - Plus d'espace? ===
<a href="#non-express-boards-out-of-space" class="anchor-link"><span class="fa fa-link"></span></a><span id="non-express-boards-out-of-space" class="anchor-link-target"></span>Non-Express boards - Out of space?</h2>
+
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.
The file system on the board is very tiny. (Smaller than an ancient floppy disk.) So, its likely you'll run out of space but don't panic! There are a couple ways to free up space.
 
  
The board ships with the Windows 7 serial driver too! Feel free to delete that if you don't need it or have already installed it. Its ~12KiB or so.
+
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.
  
<h3>Delete something!</h3>
+
==== Effacer quelque-chose! ====
The simplest way of freeing up space is to delete files from the drive. Perhaps there are libraries in the <code class="prettyprint">lib</code> that you aren't using anymore or test code that isn't in use.
+
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 {{fname|lib}} que vous n'utilisez plus ou pour tester du code qui n'est plus utilisé.
  
<h3>Use tabs</h3>
+
==== Utiliser les tabulations ====
One unique feature of Python is that the indentation of code matters. Usually the recommendation is to indent code with four spaces for every indent. In general, we recommend that too. '''However''', one trick to storing more human-readable code is to use a single tab character for indentation. This approach uses 1/4 of the space for indentation and can be significant when we're counting bytes.
+
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.  
  
<h3>Mac OSX loves to add extra files.</h3>
+
'''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.
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-07.png|640px}}
 
  
Luckily you can disable some of the extra hidden files that Mac OSX adds by running a few commands to disable search indexing and create zero byte placeholders. Follow the steps below to maximize the amount of space available on OSX:
+
==== Mac OSX aime ajouter des fichiers supplémentaires! ====
 +
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-07.png|480px}}
  
<h3>Prevent & Remove Mac OSX Hidden Files</h3>
+
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.
First find the volume name for your board.  With the board plugged in run this command in a terminal to list all the volumes:
 
  
<syntaxhighlight lang="python">
+
Suivez les étape suivantes pour maximiser l'espace de stockage disponible sous OSX:
ls -l /Volumes</pre>
+
 
</syntaxhighlight>
+
===== 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:
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
 +
ls -l /Volumes
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Look for a volume with a name like '''CIRCUITPY''' (the default for CircuitPython).  The full path to the volume is the '''/Volumes/CIRCUITPY''' path.
+
Cherchez un volume qui ne nomme '''CIRCUITPY''' (nom par défaut pour CircuitPython).  La chemin complet est '''/Volumes/CIRCUITPY'''.
  
Now follow the <a href="http://apple.stackexchange.com/questions/6707/how-to-stop-os-x-from-writing-spotlight-and-trash-files-to-memory-cards-and-usb/7135#7135">steps from this question</a> to run these terminal commands that stop hidden files from being created on the board:
+
Suivez maintenant [http://apple.stackexchange.com/questions/6707/how-to-stop-os-x-from-writing-spotlight-and-trash-files-to-memory-cards-and-usb/7135#7135 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:
  
 
<syntaxhighlight lang="python">
 
<syntaxhighlight lang="python">
Ligne 104 : Ligne 108 :
 
</syntaxhighlight>
 
</syntaxhighlight>
  
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.
+
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.
  
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:
+
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:
  
<h3>Copy Files on Mac OSX Without Creating Hidden Files</h3>
+
===== Copier un fichier sur Mac OSX sans créer le fichier caché =====
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).
+
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.  
  
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:
+
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).
  
<syntaxhighlight lang="python">
+
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</pre>
 
</syntaxhighlight>
 
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="bash">
 +
cp -X foo.mpy /Volumes/CIRCUITPY
 
</syntaxhighlight>
 
</syntaxhighlight>
  
Or to copy a folder and all of its child files/folders use a command like:
+
Ou pour copier un répertoire entier (incluant fichiers et sous répertories), nous utiliserons la commande:
  
<syntaxhighlight lang="python">
+
<syntaxhighlight lang="bash">
cp -rX folder_to_copy /Volumes/CIRCUITPY</pre>
+
cp -rX folder_to_copy /Volumes/CIRCUITPY
 
</syntaxhighlight>
 
</syntaxhighlight>
  
<syntaxhighlight lang="python">
+
===== Autres astuces Mac OSX =====
</syntaxhighlight>
+
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 {{fname|df}} :
  
<h3>Other Mac OSX Tips</h3>
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-08.png|480px}}
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:
 
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-08.png|640px}}
+
Commencez par retirer le fichier {{fname|._}} .
  
Lets remove the <code class="prettyprint">._</code> files first.
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-09.png|480px}}
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-09.png|640px}}
+
Voilà! Nous venons de récupérer 13Ki en une opération!
  
Whoa! We have 13Ki more than before! Lets continue!
+
Passons maintenant à l'étape suivante.
  
<h2>
+
== Continuer après la copie ==
<a href="#continuing-after-copy" class="anchor-link"><span class="fa fa-link"></span></a><span id="continuing-after-copy" class="anchor-link-target"></span>Continuing after copy</h2>
+
Génial! tout à été copié sur la carte. Voyons maintenant le moniteur série pour voir comment vont les choses.
Woohoo! Everything copied over just fine. Lets check the serial terminal to see how things are going.
 
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-10.png|640px}}
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-10.png|480px}}
  
Oops! Another <code class="prettyprint">ImportError</code>! Libraries can depend on other libraries so copying one file over may not be enough. Looking in the bundle, there is an <code class="prettyprint">adafruit_bus_device</code> directory. In Python terms this is a package. It contains module files. Lets copy the folder over to make sure we get everything.
+
Oups! Un autre {{fname|ImportError}}! La bibliothèque peut dépendre d'autre'''s''' bibliothèque'''s''', 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 {{fname|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.
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-11.png|640px}}
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-11.png|480px}}
  
If that fails due to out of space, <a href="https://learn.adafruit.com/adafruit-gemma-m0/installing-libraries#out-of-space">see above</a>. If not, continue on.
+
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 <code class="prettyprint">ImportError</code>s and we can see the temperature (in Celsius) and the relative humidity.
+
Vérifions une nouvelle fois la connexion série. Super,voyez, cela fonctionne! Nous n'avons plus d'erreur {{fname|ImportError}} et la température est enfin affichée (en Celsius) et l'humidité relative.
  
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-12.png|640px}}
+
{{ADFImage|FEATHER-M0-MicroPython-bibliotheque-12.png|480px}}
  
  
 
{{FEATHER-M0-EXPRESS-TRAILER}}
 
{{FEATHER-M0-EXPRESS-TRAILER}}

Version actuelle datée du 23 décembre 2017 à 15:31


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.