# Micro:bit

Le micro:bit (aussi noté BBC micro:bit ou micro bit) est un ordinateur à carte unique doté d'un processeur ARM. Conçu au Royaume-Uni pour un usage éducatif dans un premier temps, le nanoordinateur est maintenant disponible au grand public dans de nombreux pays.
La platine de 4 × 5 cm embarque un processeur ARM Cortex-M0, un capteur de mouvement 3D (ou accéléromètre) et un magnétomètre 3D (ou boussole numérique), des connectiques Bluetooth et USB, une matrice de 5 x 5 DEL (25 diodes électroluminescentes), un bouton de réinitialisation et deux boutons programmables. Le petit circuit imprimé peut être alimenté par un connecteur USB sur le port micro-USB ou par deux piles AAA (3V) en série sur un autre connecteur. La carte se branche à l'aide de cinq anneaux et 20 broches de connexion.

## Composants

Le nanoordinateur est décrit comme faisant la moitié de la taille d'une carte de crédit, soit 43 × 52 mm, et pesant 8 g. Le libellé des principaux composants est inscrit sur le circuit imprimé afin de pouvoir facilement les identifier. La facture finale comprend :
Au verso :
* Microcontrôleur Nordic Semiconductor nRF51822, 16 MHz, 32 bits, à processeur ARM Cortex-M0, 256 ko de mémoire de stockage flash (ou mémoire morte, EEPROM ou ROM), 16 ko de mémoire vive (SRAM ou RAM) statique. Le noyau ARM peut passer de 16 à 32,768 kHz$^,$$^,$$^,$$^,$. Le composant est libellé PROCESSOR ;
* Microcontrôleur NXP/Freescale KL26Z, 48 MHz doté d'un noyau ARM Cortex-M0+ incluant un contrôleur USB 2.0 On-The-Go comme interface de communication entre le port micro-USB et le microcontrôleur. Ce composant régule aussi la tension provenant du connecteur USB (oscillant entre 4.5 et 5.25V) et le maintient à 3.3V, soit la tension d'usage sur le circuit imprimé. Sur piles (3V), le régulateur est inutile ;
** Le premier microcontrôleur est embarqué sur le second microcontrôleur;
** Au sens large: « Un microcontrôleur est un circuit intégré rassemblant un microprocesseur et d'autres composants tels que de la mémoire et des périphériques. Il permet de réaliser des montages sans nécessiter l'ajout de composants annexes». À noter qu'il se branche également sur des composants externes. Comme le micro:bit est composé d'un processeur (unité centrale de traitement), de mémoires et de ports entrées-sortie, le nanoordinateur peut aussi être qualifié de microcontrôleur selon le schéma de la page 273. « Ce sont de véritables microordinateurs intégrés sur une puce de silicium qui comportent une unité centrale de traitement, de la mémoire ou une interface à de la mémoire externe, des ports d’entrée-sortie, une interface pour lignes série [...] ainsi qu’une unité de gestion de temps et d’évènements. » « Les éléments qui composent un microcontrôleur sont comparables aux périphériques d'un ordinateur. La différence réside dans le fait que les trois parties citées précédemment sont intégrées au microcontrôleur. Elles se trouvent toutes dans le même boitier [ou sur la même carte des circuits imprimés], ce qui est plus simple et plus compact »;
* Connectique 2,4 GHz Bluetooth 4.0 LE (Low Energy pour faible consommation)$^,$, libellée BLE ANTENNA ;
** La connexion Bluetooth permet de charger des programmes par liaison sans fil OTA (Over The Air);
** Dans les langages de programmation objet, les objets reliés à la connexion Bluetooth sont catégorisés « radio » ou « signal radio » ;
* Magnétomètre 3D (ou boussole numérique) NPX/Freescale MAG3110 via le bus I$^2$C, libellé COMPASS;
** Le magnétomètre peut aussi détecter la présence de certains métaux et d'aimants et retourner une lecture en microtesla (μT) ;
* Capteur de mouvements 3D (ou accéléromètre, capteur gyroscopique, capteur d'accélération linéaire) NXP/Freescale MMA8652 via le bus I$^2$C, libellé ACCELEROMETER ;
** Le capteur mesure les trois axes – X, Y, Z – en milliGs et peut générer des données de mouvement (la notation de l'accélération normale de la pesanteur terrestre varie de g, gn, g0, G ou Gs; consulter les articles sur l'accélération et la pesanteur) ;
*** Le capteur détecte des seuils d'accélération (plus de 3g, plus de 6g ou plus de 9g);
*** L'accéléromètre détecte aussi des actions de base telles que secouer, incliner ou tomber;
** Si le micro:bit est posé à plat sur une table, le bouton A à gauche et le B à droit, la table représente le plan de base. Ce plan est traversé par un axe transversal de gauche à droite, traversant les boutons, et un axe longitudinal, passant au milieu des boutons, suivant la colonne centrale de la matrice de DEL ;3 axes de l'accéléromètre.
*** X est le tangage; le degré de balancement entre l'avant et l'arrière autour de l’axe transversal$^,$;
*** Y est le roulis ; le mouvement d'oscillation gauche-droite autour de l'axe longitudinal$^,$;
*** Z est la déviation; le décalage vers le haut ou vers le bas (à travers la table)$^,$;
*** Consulter les articles sur le sujet: Aircraft principal axes et Ship motions ;
** La rotation, autour d'un axe vertical passant à travers la DEL centrale de la matrice, est plutôt captée par la boussole ;
** L'accéléromètre peut servir comme unité de contrôle, manette de jeu ou détecteur de mouvement;
* Capteur de température embarqué ;
** Le capteur retourne une estimation de la température en centigrades sur la carte;
** Cette lecture est utile pour estimer la dissipation thermique par conduction du circuit imprimé: si le circuit est actif, la température monte ;
* Port micro-USB, pour l'alimentation électrique et la connexion à un ordinateur par exemple, libellé USB$^,$$^,$$^,$;
** Connectée à un ordinateur, la carte est traitée comme une clé USB. De l'ordinateur, on peut téléverser un programme dans la mémoire du microcontrôleur comme on glisse-dépose un fichier sur une clé USB;
* Connecteur pour piles, libellé BATTERY ;
* Un bouton de réinitialisation, libellé RESET ;
* Une DEL jaune du système;
** Par exemple, elle clignote lors du téléversement d'un programme dans la mémoire ;
Au recto :
* Deux boutons programmables, libellés A et B ;
* Une matrice 5 x 5 de 25 DEL rouges programmables individuellement servant d'affichage, notamment, de motifs statiques ou animés et de texte alphanumérique déroulant;Positions x,y des DEL.
** Caractéristique notable : on peut non seulement programmer le micro:bit pour l'allumage de la matrice en dirigeant un courant électrique dans chaque DEL, mais on peut aussi programmer la matrice à convertir la lumière ambiante en intensité ou courant électrique. Dans ce cas, on exploite une propriété des DEL éteintes: la sensibilité à la lumière ambiante. Éteinte, la matrice devient un capteur. On peut ainsi quantifier l'intensité lumineuse ambiante. Dans l'obscurité, la matrice capte peu de lumière et retourne un faible courant électrique. En plein lumière, la matrice enregistre une augmentation du courant électrique. Cette expérience se répète sur des DEL en périphérique branchées au micro:bit.
* Cinq anneaux d'entrée-sortie et 20 broches de connexion (ports GPIO), libellés PINS au verso ;
** Les anneaux sont compatibles avec des prises crocodile ou des fiches bananes de 4 mm;
** 1 anneau courant, référencé 3v3 et libellés 3V sur la carte;
** 1 anneau terre (mise à la terre ou prise de terre), référencé GND et libellé GND sur la carte. Ensemble, les anneaux 3V et GND fournissent 3V et peuvent alimenter un appareil externe;
** 3 anneaux entrées-sorties, référencés ANALOG IN P0, ANALOG IN P1 et ANALOG IN P2 (P pour Pins), libellés 0, 1, 2 sur la carte;
** Les anneaux peuvent se connecter sur des capteurs de température, d'humidité ou d'autres appareils. Le processeur peut lire les valeurs envoyées par les capteurs, interpréter les lectures pour déclencher des commandes programmées ou faire suivre les lectures vers un appareil externe. Les anneaux peuvent aussi piloter un moteur ou un robot;
** Connecteur latéral de 20 broches de 1,27 × 7,6 mm, à connexion standard, référencés P3, P4, P5, P6, P7, P8, P9, P10, P10, p12, P13, P14, P15, P16, +3v3, +3v3, P19, P20, GND et GND;
*** Chacune des broches contrôle soit une DEL soit un bouton soit un autre élément. Ce connecteur permet de brancher à un appareil, comme un Arduino, Galileo, Kano et Raspberry Pi$^,$;
** En plus de connexions GPIO, certaines broches du connecteur latéral sont conçues pour d'autres protocoles: UART, I2C et SPI$^,$;
** Le logo et une sorte de chevelure sérigraphiée, les deux en couleur.

## Programmation

Un ordinateur ou un appareil mobile est nécessaire pour programmer le micro:bit avant de rendre ce dernier parfaitement autonome.
La programmation du micro:bit se fait principalement dans un environnement de développement sur le Web. L'environnement comprend un éditeur et un compilateur. Il peut aussi y avoir un simulateur. Il existe des EDI ne nécessitant aucun connexion à Internet; ce sont des logiciels.
L’utilisateur écrit le programme dans l'éditeur. Il écrit en langage évolué (JavaScript, Python, etc.), c'est-à-dire qui s'écrit avec du texte, comme une langue. L'utilisateur envoie son programme à un serveur distant qui le compile. Il est possible de programmer le micro:bit avec les langages suivants : JavaScript, Python, C/C++, Rust, Forth, Pascal et Ada (et consulter les sections sur les EDI plus bas).
Le compilateur traduit le langage évolué en langage machine, compréhensible par le processeur. Ce langage est aussi appelé code natif et se compose exclusivement de valeurs numériques. « Le microcontrôleur ne connait à son niveau d'interprétation que le langage machine, appelé aussi code natif, composé exclusivement de valeur numérique. Un environnement de développement [...] traduit les commandes dans un langage dit évolué [comme le C/C++, le Python ou le JavaScript]. Le compilateur convertit un programme écrit en langage évolué en langage machine, compréhensible par le processeur. »
Un programme compilé apparait alors sous la forme d'un fichier « .hex », pour hexadécimal. Le format hexadécimal est numérique ; il est en base 16 ou système hexadécimal (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F), par rapport à la base 10 ou système décimal (0 à 9) utilisée dans les mathématiques de tous les jours. À noter que le système hexadécimal est un compromis entre le code binaire ou système binaire des machines et une base de numération pratique à utiliser pour les ingénieurs.
Le programme compilé est ensuite téléchargeable par l’utilisateur et transférable sur le micro:bit. Les programmes en langage évolué (appelés scripts), sont enregistrés dans le nuage et peuvent se retrouver si l'on n'efface pas les mouchards ou témoins (cookies) correspondants de son ordinateur. Il est aussi possible d'archiver les programmes en langage évolué (un fichier en code source) et en langage natif (un fichier hexadécimal) sur l'ordinateur, d'en importer ou de les exporter. On peut aussi retranscrire le code source ou le copier-coller dans des langages de balisage de site Internet tels que Html ou Markdown ; comme illustré ci-dessous.
Voici un exemple de code source JavaScript pour afficher un bonhomme-sourire :
Voici un exemple de code source Python pour créer un dé (on secoue le micro:bit et la matrice de DEL affiche un chiffre de 1 à 6) :

### Principaux environnement de développement intégrés (EDI) en ligne

Le site officiel du BBC micro:bit propose deux environnements de développement.
L'EDI JavaScript Blocks Editor de Microsoft permet de programmer en blocs de commandes. C'est l'EDI le plus convivial. On glisse-dépose des blocs de couleur dans un éditeur graphique. Chaque couleur représente une catégorie de commandes. Chaque bloc comporte une commande avec aucun, un ou plusieurs paramètres à moduler. Certains blocs doivent s'imbriquer dans d'autres blocs et l'assemblage des blocs forme le programme. On retrouve cette façon de programmer dans d'autres langages comme le Scratch, le Microsoft Block Edition (voir les autres EDI en ligne) ou le Python en blocs de commandes. Comme le JavaScript étant un langage de programmation en bonne et due forme, il est possible de convertir les blocs de commandes en code source (texte ou script) et vice-versa. L'assemblage de blocs devient du texte et vice-versa. L'EDI comporte aussi un simulateur pour tester le programme sur un micro:bit virtuel – y compris la simulation de certains composants externes. Cette fonction permet de valider le script avant de le téléverser sur la micro:bit.
L'EDI Python Editor est un peu plus avancé. L'éditeur permet d'écrire du code source (un script) en langage Python. Il comprend une documentation et un module de simulation.
Les deux EDI permettent d'écrire des programmes et de les enregistrer pour les récupérer ultérieurement. Dans les deux cas, les EDI compilent le code en ligne et renvoient un fichier compilé (format hexadécimal ou .hex). C'est ce dernier que l'on téléverse sur le microcontrôleur via une connexion USB ou Bluetooth.

### Autres EDI en ligne

Le site officiel propose deux autres EDI sur une ancienne page : l'EDI Microsoft Block Edition, un langage en blocs de commandes, et l'EDI Microsoft TouchDevelop, un langage en blocs de texte. Dans le deuxième langage, on assemble des blocs de texte prédéfinis (action rappelant un copier-coller). Le logiciel et/ou site web Scratch est également disponible pour faire de la programmation sur celui-ci. Il est aussi possible d'écrire en code source. Les trois EDI comportent des simulateurs pour tester les programmes. Il est aussi possible de convertir le programme d'un langage à l'autre langage. Encore une fois, peu importe le langage, il faut compiler le programme et envoyer le fichier hexadécimal sur le microcontrôleur via une connexion USB ou Bluetooth.

### Autres EDI

L'Université Lancaster a encodé les composants embarqués sur le circuit imprimé du micro:bit avec la bibliothèque logicielle de chiffrement (Software Development Kit ou SDK) mbed d'ARM. Le Device Abstraction Layer se pilote par d'autres langages « au niveau supérieur ». Les langages JavaScript (avec l'EDI MakeCode et le logiciel Espruino, par exemple) et Python, ou microPython, (avec l'EDI Mu, par exemple) sont les principaux langages. Il est possible de programmer le micro:bit avec d'autres langages et avec d'autres logiciels tels que le C/C++ (avec l'EDI Arduino, par exemple), le Rust, le Forth (avec l'EDI SwiftX, par exemple, un EDI conçu pour les processeurs ARM, entre autres; processeur que l'on retrouve sur le micro:bit), le Pascal (avec l'EDI Free Pascal) et le Ada.
MATLAB et Simulink et son Coder Support Package permet d'actionner les composants du micro:bit unique grâce à un éditeur graphique similaire aux blocs de commandes.
L'EDI Scratch 3.0 permet de piloter le microcontrôleur avec un éditeur graphique; le programme est un assemblage de blocs de commandes$^,$.

### Applications mobiles

Le site officiel du BBC micro:bit propose aussi des applications Android et iOS. Les applications sont livrées avec les EDI en ligne décrits plus haut. Il faut une connexion Internet et des appareils mobiles compatibles Bluetooth Smart Technology pour compiler le code, récupérer le fichier hexadécimal et l'envoyer au microcontrôleur par connexion Bluetooth.

### Systèmes d'exploitation

Le système d'exploitation Zephyr OS est une distribution Linux comportant des fichiers de paramètres pour fonctionner sur le micro:bit.

## Historique
### Objectifs

Lancé en juillet 2015 par la BBC, le projet prévoit de distribuer gratuitement un million d'exemplaires à des écoliers britanniques de onze et douze ans (la septième année ou l'équivalent) pour leur apprendre les fondements de la programmation$^,$$^,$$^,$$^,$. Le but est à la fois de familiariser les enseignants avec ces technologies, mais aussi d’initier les enfants avec des cas simples et concrets.
La BBC déclare : « Le BBC micro:bit est un ordinateur de poche que vous pouvez programmer, personnaliser et contrôler afin de rendre concrets vos idées numériques, des jeux et des applications. » Il a été pensé afin de pousser les plus jeunes à découvrir facilement les « joies » de la programmation. Une initiative qui s'inscrit dans la lignée des annonces des autorités qui ont ajouté l'éveil au code pour les élèves dès l'école primaire.
Le programme se place dans la droite lignée – et tire son nom – du microordinateur Micro développé par la BBC dans les années 1980 pour favoriser l'apprentissage de l'informatique. Construit par Acorn Computers en partenariat avec la chaine publique anglaise, le BBC Micro connait un grand succès avec 1.5 million d'unités vendues et une percée autant dans les écoles britanniques que les universités. 30 ans plus tard, la BBC veut relancer ce programme. Acorn est célèbre pour avoir inventé le processeur ARM, qui est partie intégrante du micro:bit.
Le BBC micro:bit s'inspire aussi du Raspberry Pi, l'autre grand succès britannique dans le secteur des ordinateurs éducatifs. Or, le micro:bit est pensé pour toucher un public plus jeune et moins familier de l'informatique, afin de l'initier dès son plus jeune âge au numérique. Il n'est pas sans rappeler l'Arduino. Il se présente plus comme une solution complémentaire plutôt qu'un concurrent direct aux nanoordinateurs du secteur (consulter les articles connexes, plus bas).

### Développements

En juillet 2015, la BBC lance le nanoordinateur BBC micro:bit. L'ordinateur fait partie de la compagne Make It Digital que la BBC met de l'avant pour promouvoir la technologie chez les enfants et « inspirer une nouvelle génération de développeurs, d'inventeurs et de pionniers du numérique. » D'abord offert gratuitement à des élèves britanniques à partir du mois d'octobre 2015 – et aux élèves scolarisés à domicile –, la BBC le rend ensuite disponible au grand public; il est vendu au Royaume-Uni ainsi qu'à l'extérieur via des distributeurs. Les Britanniques introduisent ainsi une petite révolution numérique dans le domaine de l’éducation en devenant le premier pays dans le monde à imposer la programmation informatique dans les établissements primaires et secondaires. « Nous ne pouvons pas attendre de voir ce que les élèves vont faire avec cela, » affirme le chef de BBC Learning Rocks Sinead. « Ils sont déjà venus avec toutes sortes d'idées au cours des essais et des évènements à travers le pays – quelques idées aident à résoudre certains des défis de la vie quotidienne, certaines pourraient avoir un potentiel d'affaires, et d'autres sont tout simplement pour du fun », a-t-il ajouté. Une grande partie de son logiciel devrait être un code ouvert.
En octobre 2016, la Micro:bit Educational Foundation annonce sa fondation$^,$. Sans but lucratif, elle a pour mission de démocratiser l'innovation technologique auprès de la jeunesse et des développeurs. Suivant la première phase de déploiement au Royaume-Uni (la distribution gratuite d'un million d'unités aux écoliers britanniques durant la dernière année), la fondation vise l'Europe, puis l'international. Son objectif est d'appuyer les enseignants, les gouvernements et les organismes éducatifs. La fondation « veut rejoindre 100 millions de personnes. »
En décembre 2016, la Micro:bit Educational Foundation fournit 2500 unités en Europe pour Hour of Code, un organisme qui enseigne les technologies de l'information à des millions d'élèves dans 180 pays.
En juin 2017, la Micro:bit Educational Foundation annonce que d'ici 2020, elle s'engage à distribuer aux écoliers des États-Unis et du Canada 2 millions d'unités$^,$. La distribution pour l'Amérique du Nord (et la Chine) commence d'ailleurs en 2017. Au Canada, le programme CodeCan du gouvernement fédéral s'ajoute à l'initiative et finance la distribution de 100,000 unités par un regroupement d'organismes. Cette annonce a lieu au début de l'année 2018, mais le programme CodeCan, annoncé au courant de 2017 et échelonné sur 2017-2018, appuie d'autres initiatives de formation en programmation et en perfectionnement des compétences numériques chez les jeunes Canadiens et Canadiennes de la maternelle à la fin du secondaire.
En juin 2017, une enquête de la firme Gallup révèle que 90 % des parents veulent que leur enfant apprenne l'informatique, mais que seulement 40 % des écoles offrent des cours de programmation. De plus, la disparité établie dans les domaines des STEM prend racine à l'école primaire. Les filles, les minorités visibles et les élèves de foyers à revenus faibles sont moins susceptibles d'avoir accès à l'informatique lors de leur parcours scolaire.

### Partenariats

La BBC conclut des ententes, dont ARM Holding, Microsoft, Samsung et Barclays pour concevoir l'ordinateur à carte unique; au total, un consortium de 29 partenaires conçoivent, développent, fournissent ou soutiennent le nanoordinateur :
* ARM Holdings fournit le matériel mbed, les kits de développement et les services de compilation ;
* Barclays contribue à la livraison des produits finis et aux activités de sensibilisation ;
* Bluetooth SIG développe un profil Bluetooth LE adapté au micro:bit ;
* Cisco Systems pourvoit le personnel et les ressources au STEMNET pour appuyer le lancement et la distribution ;
* Code Club élabore des activités ciblant les enfants de 9 à 11 ans et les diffuse via les bénévoles de ses clubs de programmation ;
* Creative Digital Solutions procure du matériel pédagogique, des ateliers et des groupes d'assistance ;
* Farnell Element14 supervise la fabrication du circuit imprimé ;
* Kitronik produit et distribue 5,500 kits de textile intelligent à des professeurs de design et technologie (D&T) du Royaume-Uni. Parmi le matériel conçu, des cartes de pilotage étend les possibilités du micro:bit en le transformant en dispositif de pilotage pour des périphériques tels que des moteurs et des servomécanismes ;
* La Python Software Foundation adapte le langage Python au circuit imprimé – le MicroPython est un langage adapté aux ordinateurs à carte unique dont le pyboard. La fondation crée un logiciel d'édition et un EDI en ligne. Elle produit de nombreuses ressources pédagogiques et organise des ateliers de formation pour enseignants ;
* Le Wellcome Trust dispense la formation aux enseignants et aux écoles ;
* L'université de Lancastre développe le programme d'exécution du microcontrôleur ;
* Microsoft apporte son expertise en matière de logiciels et adapte sa plateforme d'édition TouchDevelop à l'appareil. Une fois le produit sur le marché, l'entreprise prend la responsabilité de l'hébergement des projets et du code source pour tous les utilisateurs de l'appareil. L'entreprise met également au point le matériel de formation des enseignants ;
* Nordic Semiconductor fournit le processeur du circuit imprimé ;
* NXP Semiconductors fournit le contrôleur USB et des capteurs du circuit imprimé ;
* Samsung développe une application Android pour connecter le micro:bit à des téléphones intelligents et des tablettes ;
* Sciencescope développe une application iOS pour connecter le micro:bit et s'occupe de pourvoir les nanoordinateur aux écoles ;
* STEMNET procure des ambassadeurs STEM pour appuyer les écoles et les enseignants. L'organisation travaille en liaison avec des tiers tels que Bloodhound SSC et Cisco Systems ;
* Tangent Design crée l'image de marque du micro:bit et développe le site Web ;
* Technology Will Save Us conçoit le design du micro:bit.
Parmi les partenaires, on compte aussi Amazon, le British Council, l'Institution of Engineering and Technology et Nominet.
Un prototype créé par la section R&D de la BBC sert de démonstration lors de l'annonce initiale du projet. Le prototype contribue à tester la proposition d'affaire dans les écoles. Ce banc d'essai permet d'élaborer le cahier de charges à la base du consortium.