MicroPython.présentation

De MCHobby - Wiki
Aller à : navigation, rechercher

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

Micro Python est une version rapide, optimisée et allégée du langage de programmation Python 3 (Python.org) pour système embarqué.

PyBoard, la carte Micro Python est une petite carte électronique qui exécute Micro Python en bare metal et vous offre un système d'exploitation Python bas niveau permettant de contrôler toute sorte de projets électroniques.

Grâce au lancement de Micro Python en KickStarter, il a été possible de concevoir la carte en y incluant:

  • Le support de connexion Wi-Fi à l'aide du module CC3000. Micro Python incluera une bibliothèque permettant vous permettant de vous connecter via Wi-Fi. Il est donc possible d'ajouter un module CC3000. Ce module se connecte via les broches du bus SPI sur la carte Micro Python.
  • Le support Ethernet à l'aide d'un module WIZ820io module. Similaire au module CC3000, le module WIZ820io se branche également sur la carte micro Python via le module le bus SPI et une bibliothèque développée dans ce but.
  • Le support de communication sans-fil basse consommation avec le NRF24L01+ (et une bibliothèque adéquate).

Micro Python est un projet logiciel open-source (sous licence MIT) que vous pouvez utiliser dans vos propres projets.

Upython-with-micro.jpg
Crédit: MicroPython micropython.org

Python est une langage de scripting vraiment très facile à apprendre, très expressif, vraiment très puissant et disposant d'une gigantesque communauté. En fonctionnant sur un microcontroleur, Micro Python permet de faire clignoter des LEDs sans aucun effort, lire des tensions, faire bouger des moteurs et servo moteurs, jouer du son, écrire/lire des données sur la carte micro SD, établir des communications sans fils (avec un module complémentaire) et devenir ce cerveau que votre robot attend désespérément. Il y a tant d'autres d'opportunité accessible à PyBoard et MicroPyhton.... c'est un choix parfait pour votre prochain projet!

Lors de la conception d'un projet électronique, tel qu'un détecteur d'intrusion or a robot intelligent, le microcontroleur est utilisé en tant que "cerveau" et prend toutes les décisions d'action et de vérifications. Un microcontroleur a typiquement besoin de faire deux choses: (1) il doit être capable d'agir au niveau matériel (dit "low level") pour commander des lumières, écran LCD, moteurs, être très réactif, etc, (2) ainsi que des opération de haut niveau (dit "high level") comme comme lire et écrire des données, images, communiquer sans fil ou disposer d'une "intelligence artificiel".

Micro Python à ceci d'extraordinaire qu'il permet le contrôle low-level et high-level en agrémentant le language Python avec de l'assembleur inline et des types natifs (comme présenté ci-dessous).

Comment l'utiliser?

La carte Micro Python est flashée (pré-installée) avec Micro Python pour le rendre instantanément accessible aussi bien au néophyte, au débutant, développeur curieux, maker qu'à l'expert, ingénieur ou roboticien. La carte ne requière aucune installation/configuration, pas de compilateur, pas de soudure et si vous ne connaissez pas Python vous le découvrirez qu'il est très facile à apprendre.

Vous branchez votre carte PyBoard sur votre ordinateur (fonctionne sur Windows, Mac et Linux) en utilisant un cable USB. PyBoard se comporte alors comme un lecteur Flash USB.

Contrôler des servo moteurs est aussi simple que d'écrire les quelques lignes de code suivantes:

pyb.servo(1, 45) # mettre le servo 1 a 45 degres
pyb.servo(2, 90) # set servo 2 a 90 degres

Placez ce code dans un fichier texte puis copier le sur le lecteur Flash de Micro Python. Presser le bouton "Reset" (réinitialisation) de la carte et il fonctionnera! Vous pouvez également ouvrir un terminal émulateur (disponible gratuitement pour Windows, Mac et Linux) pour vous connecter sur la carte via USB et tapez ces commandes directement sur la carte (la ligne de commande Python est vraiment pratique), le moteur bougera immédiatement après que vous ayez pressé la touche Return/Entrée/Retour clavier.

Pour faire clignoter une LED une fois par seconde, vous pouvez utiliser le code suivant:

while True:  # Faire une boucle infinie
     pyb.led( True )  # allumer la LED
     pyb.delay(1000)  # Attendre 1000 millisecondes (1 seconde)
     pyb.led( False ) # eteindre la LED
     pyb.delay(1000)

Lire l’accéléromètre et afficher la valeur de l'axe-x:

accel = pyb.mma() # obtenir les donnees de l accelerometre
print( accel[0] ) # afficher la donnee de l axe-X

Vous avez à votre disposition un langage de programmation Python complet. Vous pouvez écrire des fonctions et des classes, faire créer des listes et dictionnaires, faire du traitement de chaine de caractère (les string), lire et écrire des fichiers (sur la carte SD ou la flash de stockage interne). Micro Python dispose même de fonctionnalités avancées tels que les générateurs, les closures (programiz.com), les comprehension list (fgallaire.flext.net) et gestion d'exception. Les possibilités de programmation sont infinies!

La carte dispose de nombreuses broches d'entrées/sorties que vous pouvez connecter sur d'autres circuits et vous pouvez y souder des fils pour inclure Micro Python dans vos propres projets.


La carte peut fonctionner sans PC, pour autant qu'elle soit connectée sur une source d'alimentation/accu fournissant une tension entre 3.6V et 10V.


Dans l'attente de la constitution/traduction de tutoriel en Français, vous pouvez trouver des instructions en ligne sur le site MicroPython.org (anglais) incluant exemples et projets. Même avec la seule carte Micro Python vous pouvez déjà réaliser de chouette choses, tels que faire un enregistrement des données de l'accéléromètre, réaliser une souris USB en Python et utiliser la ligne de commande via USB série.

PyBoard et les autres cartes

Comment Micro Python se positionne t'il par rapport aux autres cartes?

Comparé à Arduino

La carte Micro Python est nettement plus puissante et plus facile à programmer. Vous n'avez pas besoin de complilateur sur votre PC.

Comparé à Raspberry-Pi

La Micro Python est moins cher, plus petite, plus simple (vous pouvez même en faire une vous même, ou modifier la conception de la carte pour qu'elle rencontre vos besoins) et PyBoard utilise moins de puissance.

Comparé à d'autres cartes

La plupart des autres cartes sont programmées en C. Le C est un langage de bas niveau et peut-être difficile à programmer correctement.

D'autre part, Python est un langage de très haut niveau, ce qui signifie que Python est plus simple, nécessite moins de code pour réaliser des tâches identique à celle programmée en C.

Logiciel Micro Python

Micro Python est évidemment une ré-écriture complète (en partant de rien) du langage de programmation Python. Il est écrit en C ANSI, proprement et inclus un parser complet, compilateur byte-code Python, une machine virtuelle, un environnement d'exécution, un garbage collector (dit 'ramasse miette' en France) et support de bibliothèque... le tout fonctionnant sur le microcontrolleur. Le compilateur peu générer du byte code ou du code machine natif (configurable par fonction en utilisant un décorateur Python). Micro Python supporte également l'inline assembler. Toutes les taches de compilations sont effectuées sur le microcontroleur... pas besoin de logiciel sur le PC.

Micro Python supporte actuellement les processeurs ARM 32-bits avec le jeu d'instruction Thumb v2, comme c'est le cas pour la gamme des microcontrôleurs Cortex-M. Micro Python a été testé sur la puce STM32F405.

Micro Python dispose des fonctionnalités suivantes:

  • Implémentation complète de la grammaire de Python 3 (mais pas encore toutes les bibliothèques standard de Python).
  • Implémentation d'un lexer (analyse syntaxique), parser, compilateur, machine virtuelle et environnement d'exécution.
  • Peut exécuter des fichier et dispose également d'une interface en ligne de commande (REPL ou read-evaluate-print-loop boucle-lire-évaluer-imprimer).
  • Le code Python est ompilé en un byte code compressé qui fonctionne sur la machine virtuelle intégrée à PyBoard.
  • L'utilisation de la mémoire est minimiser en stockant les objets de manière efficace. Les entiers qui tiennent sur 31-bits n'allouent pas un objet sur la heap (le tas), et ne nécessite, par conséquent, de la mémoire que sur la stack (la pile).
  • En utilisant les décorateurs Python, vous pouvez éventuellement compiler une fonction en core machine natif. Le code natif nécessite plus de mémoire mais fonctionne 2 fois plus vite que du byte code. De telles fonctions implémente toujours le langage Python complet.
  • Une fonction peu éventuellement être compilée pour utiliser des entiers natif (native integer) comme nombre à la place d'objet Python. Une telle fonction s'exécute presque aussi vite que la fonction équivalent en C et peut toujours être appelée depuis Python (et appelé du code Python). Ces fonctions peuvent être utilisées pour exécuter des procédures time-critical (dont le temps nécessaire à sont exécution est un élément critique). Ce type de fonction est bien adapté aux interruption.
  • Une implémentation assembleur inline permet d'avoir un accès complet sur la machine sous-jacente. Les fonctions assembleurs peuvent être appelées depuis Python comme si elles étaient des fonctions normales.
  • La mémoire est gérée en utilisant un garbage collector (ramasse miette) simple et rapide (fast mark-sweep). Une collecte complete nécessite moins de 4ms. De nombreuses fonction peuvent être écrites pour ne pas utiliser de mémoire sur la heap (le tas) et permettant ainsi d'éviter l'usage du Garbage Collector.

PyBoard, la carte Micro Python

La carte Micro Python (PyBoard pour les intimes) est une carte de développement électronique basée sur un microcontroleur STM32F405 qui exécute Micro Python. Ce microcontroleur est un des plus puissant disponible sur le marché et à été spécialement sélectionné parce qu'il permettrait à Micro Python de fonctionner à son plein potentiel.

Le microcontroleur est cadencé à 168MHz (fréquence d'horloge), dispose de 1Mb de Flash et de 192Kb de RAM, un très large espace mémoire pour écrire de complexes scripts Python. La carte mesure 33x40 mm comme présenté sur l'image ci-dessous.

MicroPython-presentation-00.jpg
Crédit: MicroPython micropython.org

La carte intègre une interface USB qui se présente comme un périphérique série (CDC VCP) ainsi que comme un périphérique de stockage USB amovible (MSC, l'équivalent de votre clé USB). Lorsque PyBoard est connecté sur un PC, vous pouvez ouvrir un programme de communication série (terminal telnet/minicom ou Putty) et interagir la carte par l'intermédiaire d'une ligne de commande Python. Vous pouvez également afficher des message (fonction print) et saisir des entrées puisque le périphérique série agit en tant que stdin et stdout (entrée et sortie console, standard simple hérité du monde Unix). La carte se comporte également comme un périphérique de stockage (un lecteur Flash USB) vous permettant de facilement copier vos scripts sur le système de fichier de la carte ou de la carte SD. Ces fichiers peuvent être exécutés indépendamment du PC.


Alimenté par une pile/accu, la carte est capable de compiler et exécuter des scripts Python sans besoin d'une connexion PC. Il y a un connecteur carte Micro SD pour stocker de grandes quantités de donnée, 4 LEDs, des boutons poussoirs, une horloge temps réel, un accéléromètre et 30 broches d'entrée/sortie (dite GPIO ou 'I/O'. Les broche d'I/O inclus: 5 USART (pour Port Série), 2 bus SPI, 2 bus I2C, 14 broches ADC (convertisseur Analogique->digital), 2 broches DAC (convertisseur Digital->Analogique) ainsi que 4 port pour Servo Moteurs (avec alimentation).

MicroPython-presentation-01.jpg

Il y a une broche spéciale BOOT0, qui est utilisée pour reprogrammer le microcontroleur. En connectant BOOT0 sur 3.3V (la broche juste à côté) et en réinitialisant (reset) la carte, vous placez la carte en mode DFU "device firmware upgrade". C'est le mode USB standard qui vous permet de faire une mise-à-jour de Micro Python sur le microcontroleur en utilisant des logiciel librement disponible pour Windows, Mac et Linux). Elle vous permet également de téléverser votre propre version de Micro Python si vous désirez la modifier, voire téléverser vos propres programmes écrit directement en C.


La carte Micro Python est adapté pour tous, peu importe le niveau de connaissance en programmation ou éléectronique. Avec quelques lignes de code Python dans un fichier texte, le bédutant pourra faire clignoter les LEDs et réagir en fonction des données de l'accéléromètre, le tout sans soudure, ni connexion de composant, ni installation de logiciel sur votre l'ordinateur.


PyBoard c'est de nombreuses broches aux fonctionnalités multiples. Avec PyBoard vous avez sous la main:

  • 30 GPIO - Broches d'entrées/sorties pouvant servir à de nombreuses applications. Avec un GPIO, vous pouvez commander des LEDs, des relais (via transistor ou UNL2803), des moteurs (via L293). Lire l'état de boutons et senseurs. Commander des périphériques tels que des écrans LCD, afficheurs graphiques, des cartes d'extension, etc.
  • 2 bus I2C - Pour commander des périphériques à l'aide de 3 fils.
  • 2 bus SPI
  • 2 bus CAN
  • 5 UARTs - Un port série c'est un outil de communication très utile... en avoir 5 c'est absolument génial.
  • 20 PWMs - Permettant de produire des signaux permettant de contrôler des servo-moteurs ou la puissance d'une LED (voyez "[AdaFruit_PWM_Driver#C.27est_quoi_PWM c'est quoi PWM]" dans cet autre tutoriel)
  • 16 ADC - Convertisseur Analogique->Digital permettant de lire une tension analogie (pratique pour utiliser des senseurs flex, photo-résistance, potentiomètre, etc).
  • 2 DAC - Très rares sur les cartes de prototypages, les convertisseurs Digital->Analogique permettent de produire des tensions analogiques en sortie. Grâce à cela, vous pouvez produire divers types de signaux (en dent de scie, sinusoide, ... et même du son).
  • 13 timers - Les timers permettent de mesurer des durées et d'exécuter du code/fonction à intervalle régulier. C'est un élément de synchronisation important lorsque l'on désire écrire des applications avancées.
  • 16 ext int - Les interruptions externes permettent d'interrompre le programme principal pour exécuter du code (fonction d’interruption) lorsqu'une broche change d'état. Cela permet d'écrire des programmes réagissant instantanément à changement de conditions physique autour du la carte. Exemple: arrêter immédiatement des moteurs si l'arrêt d'urgence est activé.
  • 1 RTC - L'horloge temps réel vous permet de connaître l'heure, de mesurer des laps de temps assez grand, de créer des exécutions basées sur un calendrier, de réaliser des horloges. Le RTC est un élément utile qui manque souvent dans les plateformes de prototypage (comme c'est la cas pour Raspberry, Arduino ou encore de Spark Core où le RTC n'est pas exploitée)
  • 4 LEDs - Les LEDs/DELs sont bien pratiques pour informer l'utilisateur sur l'état du programme. En avoir sur la carte permet de tester/prototyper rapidement du code sans avoir besoin de faire des raccordements.
  • 1 Accéléromètre - PyBoard fut conçue avec la robotique comme finalité. Du coup, Damien à intégrer un accéléromètre à même la carte. Un tel dispositif permet de mesurer les accélération (cas pratique: un smartphone qui tombe) mais surtout l’accélération terrestre G sur les 3 axes. Cette accélération terrestre responsable de la gravité est dirigée vers le centre de la terre, en mesurant cette accélération sur 3 axes, il est donc possible de déterminer la position/orientation 3D de la carte par rapport au sol (cas pratique: la rotation automatique des écrans sur un smartphone, tenue d'équilibre pour un robot bipède).

Pour les friands de détails

PyBoard sous le capot

  • Microcontroleur STM32F405RG (fiche technique)
  • CPU Cortex-M4 cadencé 168 MHz avec unité de calcul flottant à 32-bit.
  • 1 Mb de mémoire Flash pour le stockage, 192 Kb de RAM.
  • Connecteur USB microB avec support logiciel USB Série, périphérique de stockage de masse USB, et USB HID (souris, clavier).
  • connecteur pour carte micro SD.
  • Accéléromètre 3-axes MMA7660 FreeScale (fiche technique). Jusqu'à 64 échantillonnages 6-bit par seconde par axe.
  • 4 LEDs, 1 bouton Reset, un bouton utilisateur.
  • Un régulateur 3.3V LDO (à faible perte) de 300mA. Alimenté depuis le connecteur USB ou alimentation externe entre 3.6V et 10V.
  • Horloge Temps Réel (RTC) avec date et heure.
  • 30 broches d'entrée/sortie GPIO, 28 sont tolérantes 5V (excepté en mode ADC / Analogique->Digital).
  • Communication:
    • 2 bus SPI,
    • 2 bus CAN,
    • 2 bus I2C,
    • 5 USART (port série).
  • 14x entrées analogiques avec résolution 12-bit, Valeur entre 0 et 4095 (ADC, Analogic to Digital Converter).
  • 2x sorties analogiques (DAC, Digital to Analogic Converter).
  • Dimension de la carte: 33 x 40mm.
  • Poids de la carte: 6 grammes.
  • Connexion sur la carte: 46 trous avec empattement standard de 2.54mm.

Brochage

Pybv10-pinout.jpg
Crédit: MicroPython micropython.org

L'interpréteur Micro Python

Micro Python est une ré-écriture complète d'un interpréteur Python spécialement, ré-écriture conduite pour fonctionner sur des systèmes MicroControleur ayant une mémoire RAM et Flash limitée. Lorsque des décisions de conceptions se présentait, la première priorité était celles permettant de minimiser l'utilisation de la RAM, puis minimisation de la taille du code, et finalement celle permettant d'augmenter la vitesse d'exécution.

Certaines caractéristiques importantes de l'implémentation de Python son reprise ci-dessous.

  • Suivre la grammaire de Python 3.3 ainsi que la sémantique du langage. Cela signifie que Micro Python produit un byte code équivalent (jusqu'à l'optimisation) à va version 3.3 CPython officiel.
  • La taille du binaire optimisé (en code machine Thumb v2) fait environ 60Kb.
    Cela inclus le parser, compilateur, environnement d'exécution et garbage collector MAIS exclus tous les autre code comme le système de fichier et bibliothèques spécifiques au microcontroleur. Cette taille augmente si vous ajoutez plus de bibliothèques.
  • La taille de tout le code, incluant le support FAT, carte SD, USB série, périphérique de stockage USB, USB HID, Bluetooth, LCD, servo, timer fait environ 110 Kb.
  • La taille minimale de la RAM requise pour compiler et exécuter "print('hello world')" est d'environ 4 Kb.
  • La mémoire est gérée en utilisant un garbage collector (ramasse miette') rapide, non-precise, mark-sweep. Cela élimine la surcharge de code provoquée par une implémentation en "reference counting" (compteur de référence) en mémoire Flash. La taille des objet en RAM diminue par la même occasion. Avec un CPU rapide et une petite quantité de RAM, la processus de collection (garbage collection) prend moins de 4ms. La surcharge de RAM du garbage collector est de 2 bits par 32 bytes soit 1 Kb pour 128Kb de mémoire RAM utilisable.
  • Taille des objets int (entier): 4 bytes, stocké sur la stack (pile) ou directement dans un tuple/list/dictionnaire.
  • Taille des autres objets: 32 bytes, plus extra pour, par exemple, les éléments d'une liste.
  • Limite sur le nombre d'objets: aucune, pour autant qu'il y a assez de RAM.
  • La grammaire est encodée dans une table compacte en utilisant EBNF qui permet de faire une interprétation à la volée pendant la phase de parsin.
  • La RAM est minimisée durant la compilation en effectuant 3 passes séparée sur les mêmes structures de données.
  • Il y a 4 types de générateur de code (code emitters), sélectionnable à l'aide de décorateur de fonction Python:
    • byte code (compressé),
    • code natif avec type natif,
    • code natif avec support du langage python,
    • Assembleur inline assembler.
  • Exécution du code:
    • Le byte code est exécuté sur une machine virtuelle, similaire à CPython.
    • Le code natif ou chaque byte code est décompressé en sont équivalent 'code machine' et supporte pleinement le langage Python. Cela consomme 2 à 3 fois plus de RAM mais s'exécute aussi 2 à 3 fois plus vite que du byte code.
    • Le code natif avec type natif vois sont byte code décomposé en code machine et suppose que les entiers font moins de de 31 bits (ce qui permet d'utiliser des instructions machines simples pour des opérations sur les entiers et les pointeurs). Vous pouvez penser à cela comme "syntaxe Python, sémantique C". Pour les boucles effectuant des opération arithmétiques et manipulations de bit, l'exécution est presque aussi rapide qu'un programme en C.
    • L'emission d'assembleur inline utilise la grammaire Python mais interprète une liste d'instruction code machine. L'assembleur Inline peut être appelé depuis un code Python normal avec des entiers et pointeurs comme arguments.
  • Les exceptions Python sont gérées en utilisant une variante de setjmp/longjmp. Cela réduit la quantité mémoire Flash et RAM nécessaire pour implémenter les exceptions.
  • Une fonction (byte code, native ou assembleur inline) peut être appelé sur une interruption pour autant qu'il n'alloue pas de mémoire sur la heap (le Tas, étant donné qu'une interruption ne peut pas être appelée durant une phase de collecte garbage collecteur). Dans la pratique, cela ne représente pas une grande restriction étant donné qu'il est possible beaucoup de choses uniquement en utilisant la mémoire accessible sur la stack (la pile). Par exemple, vous pouvez faire des boucles avec while/for, réaliser des opérations arithmétiques entière et manipulations booléennes (mais pas des grands nombres), appeler d'autres fonctions, accéder et écraser des éléments d'une collection tels que bytearrays (mais pas en créer un nouveau).

Micro Python sur PC

Le langage Micro Python peut aussi être exécuté sur un PC (il a été développé sous Linux avec une machine 64-bit) et peut être utilisé comme une version légère de Python où l'économie de mémoire est important. La version PC de Micro Python (compilant du byte code) fonctionne plus rapidement que CPython dans différents benchmarks testé par Damien George, et l'option de compilation native rend Micro Python significativement plus rapide que CPython.

Vous trouverez cette version PC sur le GitHub de Micro Python.

Séquence de Boot Micro Python

Vous pouvez voir Micro Python comme un "mini système d'exploitation Python" et le processus de démarrage fonctionne comme suit:

  • Mise sous tension ou Reset (réinitialisation matérielle).
    • SI le connecteur DFU (device firmware upgrade) est actif (BOOT0 sur 3.3V) ALORS le périphérique rentre en mode DFU et vous permet ainsi de faire des mise-à-jour du binaire Micro Python ou téléverser vos propres programmes C/C++.
  • SINON la carte entre en mode "boot" et la LED boot s'allume.

Le mode Boot...

  • Vérifie la présence d'un système de fichier dans la mémoire Flash.
    • SI non existante ou corrompue ALORS crée un nouveau système de fichier est créé.
  • Vérifie la présence de /boot.py.
    • SI non existant ALORS un tout nouveau fichier est boot.py est créé.
  • Exécute /boot.py pour configuration USB et autres paramètres de bas-niveau qui ne peuvent pas être modifiés sans un Reset.
  • Initialise l'interface USB, en fonction de la configuration de boot.py. Par défaut, c'est un CDC VCP (virtual communications port, pour rediriger stdio) et MSD (mass storage device, périphérique de stockage de masse pour la Flash et carte SD).
    Le MSD permet à un PC Linux/Mac/Windows d'accéder au système de fichier de la Flash et de la carte SD comme s'il s'agissait d'un lecteur USB. De cette façon, vous pouvez facilement copier des scripts Python sur la carte... ou placer et récupérer des fichiers.
  • La séquence de Boot terminée avec succès, la LED boot s’éteint.

Après la séquence de boot:

  • Le script Python principal (nommé "main" en anglais) est exécuté s'il existe.
    Par défaut, c'est le fichier /src/main.py. Il s'agit de votre programme Python principal et il peut faire tout ce que vous voulez!
  • SI le script principal n'existe pas (ou s'il est terminé)
    ALORS la carte rentre en mode REPL (read-evaluate-print-loop, boucle-lecture-evaluation-affichage). Cela vous offre un Interpréteur Python Standard via la connexion USB série.
    Sortir de ce mode exécutera une reset logiciel (soft-reset) de la carte.

Licence Micro Python

Micro Python rst sous licence MIT.

J'ai repris le texte de licence tel que disponible sur le site MicroPython.org (docs.micropython.org/en/latest/license.html)

The MIT License (MIT)

Copyright (c) 2013, 2014 Damien P. George, and others

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the 
Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the 
Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN 
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Où Acheter

Vous pouvez vous procurer une carte Micro Python PyBoard chez MCHobby (vendus uniquement sur stock)!



Source: Micro Python Python for microcontrollers écrit par/written by Damien P.George

Traduit par Meurisse D. pour MCHobby.be - Translated by Meurisse D. for MCHobby.be

Traduit avec l'autorisation de micropython.org - Translated with the authorisation of micropython.org

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.