1. Introduction
Objectifs de l'atelier
Dans cet atelier de programmation, nous allons apprendre à exécuter un modèle de deep learning sur Arduino Nano 33 BLE à l'aide de TensorFlow Lite For Microcontrollers. Le microcontrôleur est transformé en "baguette magique" numérique. de lancer différents sortilèges. Lorsque l'utilisateur déplace la baguette, ces données complexes et multidimensionnelles du capteur, qui ne sont pas lisibles pour un être humain, sont transmises en tant qu'entrées au modèle, qui génère une classification simple qui nous avertit si un mouvement s'est produit.
Machine learning sur des microcontrôleurs
Le machine learning peut servir à créer des outils intelligents qui améliorent l'expérience comme l'Assistant Google. Mais souvent, ces expériences nécessitent beaucoup de calculs ou de ressources, comme un serveur cloud puissant ou un ordinateur de bureau. Toutefois, il est désormais possible d'exécuter des inférences de machine learning sur du matériel minuscule et peu puissant, comme des microcontrôleurs.
Les microcontrôleurs sont extrêmement courants, bon marché, nécessitent très peu d'énergie et sont très fiables. Ils font partie de toutes sortes d'appareils ménagers: appareils électroménagers, voitures, jouets, etc. Dans les faits, on produit environ 30 milliards d'appareils équipés de microcontrôleurs chaque année.
En appliquant le machine learning à de minuscules microcontrôleurs, nous pouvons renforcer l'intelligence des milliards d'appareils que nous utilisons dans notre vie, sans dépendre de matériel coûteux ni de connexions Internet fiables. Imaginez des appareils électroménagers intelligents capables de s'adapter à votre quotidien, des capteurs industriels intelligents qui comprennent la différence entre les problèmes et un fonctionnement normal, et des jouets magiques qui aident les enfants à apprendre de manière amusante et agréable.
TensorFlow Lite pour microcontrôleurs (logiciel)
TensorFlow est le framework de machine learning Open Source de Google qui permet d'entraîner et d'exécuter des modèles. TensorFlow Lite est un framework logiciel, une version optimisée de TensorFlow, conçue pour exécuter des modèles TensorFlow sur de petits appareils relativement peu puissants, tels que les téléphones mobiles.
TensorFlow Lite For Microcontrollers est un framework logiciel, une version optimisée de TensorFlow, conçue pour exécuter des modèles TensorFlow sur du matériel minuscule et de faible puissance, tel que des microcontrôleurs. Il respecte les contraintes requises dans ces environnements intégrés : sa taille binaire est petite, il ne nécessite aucune compatibilité avec le système d'exploitation, aucune bibliothèque C ou C++ standard, aucune allocation de mémoire dynamique, etc.
Arduino Nano 33 BLE (matériel)
Arduino est une plate-forme Open Source populaire pour créer des projets électroniques. Il se compose des éléments suivants:
- Un circuit imprimé physique programmable (souvent un microcontrôleur) comme l'Arduino Nano 33 BLE utilisé dans cet atelier de programmation.
- L'IDE (environnement de développement intégré) Arduino, qui permet d'écrire et d'importer du code informatique sur la carte physique.
Arduino Nano 33 BLE est une plate-forme basée sur un microcontrôleur: un petit ordinateur sur un seul circuit imprimé. Il est doté d'un processeur, d'une mémoire et d'un matériel d'E/S qui lui permet d'envoyer et de recevoir des signaux numériques vers d'autres appareils. Contrairement à un ordinateur, un microcontrôleur n'est pas puissant et n'exécute généralement pas un système d'exploitation. Au lieu de cela, ils disposent de petits processeurs, de peu de mémoire et les programmes que vous écrivez s'exécutent directement sur le matériel. Mais comme ils sont conçus pour être aussi simples que possible, un microcontrôleur peut utiliser très peu d'énergie.
Objectifs de l'atelier
- Configurer le microcontrôleur Arduino Nano 33 BLE et le transformer en "baguette magique" numérique
- Configurez l'IDE Arduino et installez les bibliothèques requises
- Déployer le programme sur l'appareil
- Lancez différents sorts en agitant la baguette magique et affichez les prédictions
Prérequis
- Ordinateur portable Linux, macOS ou Windows
- Arduino Nano BLE Sense 33 (sans en-têtes)
- Câble micro USB (si vous utilisez un ordinateur portable USB-C, munissez-vous d'un câble USB-C vers micro USB)
- (Facultatif) Spatule d'environ 30 cm de long
- (Facultatif) Adhésif adhésif
2. Configurer le microcontrôleur Arduino
Déballez votre Arduino
Retirez-la de la boîte et retirez-la de la mousse d'emballage. Il est conducteur, et peut causer des problèmes dans le cas contraire !
Branchez-le sur votre ordinateur portable
- Branchez le câble micro USB dans la prise de la puce.
- Branchez l'autre extrémité du câble sur une prise USB de votre ordinateur portable.
- La LED en bas à gauche de l'Arduino (en haut à gauche sur l'image ci-dessous) devrait s'allumer.
Se familiariser avec le workflow
Comme le montre le schéma ci-dessus, l'interpréteur TFLite sur l'Arduino exécute régulièrement des inférences sur le modèle. Le modèle utilise les données traitées de l'accéléromètre comme entrée et génère une prédiction suggérant le geste qui s'est probablement produit. De plus, la sortie souhaitée serait imprimée et les voyants de droite s'allumeraient.
3. Configurer l'IDE Arduino
1. Télécharger l'IDE Arduino
Pour déployer le programme sur le microcontrôleur Arduino, nous utilisons l'IDE Arduino.
Après l'avoir téléchargée, installez et ouvrez l'IDE Arduino en cliquant sur l'application dont l'icône ressemble à ceci:
La page de destination initiale s'ouvre comme suit:
2. Configurez le Board Manager
- Dans le menu Arduino, sélectionnez
Tools -> Board: "Arduino .." —> Boards Manager
. - Recherchez
"Arduino Nano 33 BLE"
et installezArduino nRF528x Boards (Mbed OS)
. Le microcontrôleur BLE Arduino Nano 33 sera ainsi compatible avec l'IDE Arduino.
- Dans le menu Arduino, sélectionnez
Tools -> Board: "Arduino .." -> "Arduino Nano 33 BLE"
.
- Enfin, vérifiez que la carte sélectionnée est bien "Arduino Nano 33 BLE" en bas à droite de l'IDE.
3. Configurez le port
Dans le menu Arduino, sélectionnez Tools -> Port: "/.../" -> /dev/... (Arduino Nano 33 BLE)
. Le résultat doit ressembler à ceci :
4. Vérifiez la connexion de la carte
Dans le menu Arduino, sélectionnez Tools -> Get Board Info
. Le résultat doit ressembler à ceci :
4. Installer des bibliothèques
1. bibliothèque TensorFlow Arduino
Cette bibliothèque contient tous les exemples de TensorFlow Lite for Microcontroller, y compris le code source de la baguette magique requis pour cet atelier de programmation.
- Dans le menu Arduino, sélectionnez
Sketch -> Include Library -> Add .ZIP Library...
. - Ajoutez la bibliothèque TensorFlow Arduino
.zip
que vous avez téléchargée.
2. Bibliothèque LSM9DS1 Arduino
Cette bibliothèque vous permet de lire les valeurs de l'accéléromètre, du magnétomètre et du gyroscope de l'IMU LSM9DS1 sur votre Arduino Nano 33 BLE Sense.
- Dans le menu Arduino, sélectionnez
Sketch -> Include -> Manage Libraries...
. - Recherchez et installez
"Arduino_LSM9DS1"
.
5. Charger et compiler l'exemple
1. Charger l'exemple
Dans le menu Arduino, sélectionnez File -> Examples -> Arduino_TensorFlowLite -> magic_wand
pour charger l'exemple de code.
Le code source de la baguette magique est chargé.
2. Créer l'exemple
Cliquez sur le bouton Upload
dans la fenêtre de dessin.
Après quelques minutes, vous devriez voir un texte rouge indiquant que le clignotement est terminé. Le voyant de droite doit clignoter, puis s'éteindre une fois l'importation terminée.
6. Démo
La baguette magique peut actuellement détecter trois gestes, comme illustré ci-dessous:
- Wing: commencez par l'angle supérieur gauche et tracez soigneusement la lettre "W" pendant deux secondes.
- Bague: partez à la verticale et tournez la baguette dans le sens des aiguilles d'une montre pendant une seconde.
- Inclinaison: commencez par tenir la baguette vers le haut, les voyants vers vous. Déplacez la baguette vers le bas selon une pente vers la gauche, puis horizontalement vers la droite pendant une seconde.
L'image suivante illustre deux gestes. d'abord une pente, puis une aile (utilisez-la comme référence pour votre démonstration).
Pour exécuter la démonstration, suivez les instructions ci-dessous:
- Branchez le câble USB, puis sélectionnez
Tools -> Serial Monitor
dans le menu Arduino. Elle ouvre initialement un écran vide sans sortie.
- Déplacez le microcontrôleur Arduino pour tracer soigneusement chacune des formes ci-dessus et vérifier si le moniteur série détecte le geste.
- D'après la sortie de l'écran série, la baguette magique a effectivement détecté toutes les formes. Vous remarquerez également que le voyant de droite s'allume.
7. Étapes suivantes
Félicitations, vous venez de créer votre premier geste de reconnaissance de "baguette magique" sur un microcontrôleur Arduino !
Nous espérons que cette brève introduction au développement avec TensorFlow Lite for Microcontrollers vous a plu. L'idée du deep learning sur les microcontrôleurs est nouvelle et passionnante, et nous vous encourageons à l'expérimenter.
Documents de référence
- Entraînez votre propre modèle, maintenant que vous savez utiliser le programme de base.
- Pour en savoir plus sur TensorFlow Lite for Microcontrollers, consultez le site Web, GitHub.
- Essayez d'autres exemples et exécutez-les sur l'Arduino, s'il est pris en charge.
- Essayez l'autre atelier de programmation: L'IA sur un microcontrôleur avec TensorFlow Lite et SparkFun Edge.
- Reportez-vous à l'ouvrage TinyML: Machine Learning with TensorFlow on Arduino and Ultra-Low Power Micro-Controllers publié par O'Reilly, qui présente le machine learning sur de petits appareils et présente plusieurs projets amusants. Cet atelier de programmation est basé sur le chapitre 11 de ce livre.
Merci et amusez-vous bien !