Initiation au langage CircuitPython et à la puc nRF52840 en moins de 100 lignes de code par projet avec les cartes Feather Sense et Clue Express d'Adafruit
Michaël Bottin
Elektor
Préface
11
Présentation générale11
Ce que vous allez apprendre11
Quels sont les prérequis ?12
À qui s'adresse ce livre ?12
Quel est le contenu de ce livre ?13
Ressources en téléchargement14
Préface de Ladyada15
Partie I17
Chapitre 1 • Qu'est-ce que CircuitPython ?
18
1.1 - Historique18
1.2 - Pourquoi utiliser CircuitPython ?20
1.3 - Ressources CircuitPython23
1.4 - Cartes supportant CircuitPython24
Chapitre 2 • Carte Adafruit Feather nRF52840 Sense
26
2.1 - Présentation de la carte Feather nRF52840 Sense26
2.1.2 Brochage de la carte30
2.2 - Quelques mots sur le SoC Nordic nRF5284033
2.3 - Caractéristiques des capteurs embarqués sur la carte34
Chapitre 3 • Premiers programmes
46
3.1 - Introduction46
3.2 - Branchement de la carte Feather nRF52840 Sense en USB47
3.3 - Mise à jour de la version du microprogramme CircuitPython47
3.4 - Environnement de développement52
3.5 - Utilisation de la console (REPL)57
3.5.1 - Console série57
3.5.2 - REPL - Tester quelques instructions59
3.5.3 - REPL - Obtenir des informations sur la carte62
3.6 - Premiers programmes64
3.6.1 - Lancer d'un dé65
3.6.2 - Lancer d'un dé amélioré67
3.6.3 - Calculatrice68
3.6.4 - Affichage d'une sinusoïde69
3.7 - Sortir proprement du mode programmation70
3.8 - Dépannage71
Chapitre 4 • Bases du langage CircuitPython
72
4.1 - Introduction72
4.2 - Programme type en CircuitPython72
4.3 - Bases du langage CircuitPython73
4.3.1 - Concepts de base pour l'écriture du code73
4.3.2 - Forçage de type (cast)76
4.3.3 - Instructions d'affichage76
4.3.4 - Structures de données : listes, tuples et dictionnaires77
4.3.5 - Opérateurs80
4.3.6 - Instructions conditionnelles et les boucles81
4.3.7 - Les fonctions82
4.3.8 - La notion de module83
4.4 - Comprendre l'utilisation des classes d'objets84
4.4.1 - Qu'est-ce qu'un objet ?84
4.4.2 - Qu'est-ce qu'une classe ?84
4.4.3 - Comment accède-t-on aux attributs et aux méthodes d'un objet ?85
4.5 - Limitations du langage CircuitPython85
Chapitre 5 • Préparation du matériel
87
5.1 - Quels connecteurs pour la carte Feather nRF52840 Sense ?87
5.2 - Utilisation d'une platine d'essai (breadboard)89
5.3 - Utilisation d'adaptateurs Feather91
5.4 - Reste du matériel92
Partie II95
Chapitre 6 • Découverte du langage CircuitPython par la pratique
96
6.1 - Entrées/sorties numériques96
6.1.1 - Exemple avec la LED et le bouton internes96
6.1.2 - Exemple avec une LED et un bouton extérieurs à la carte102
6.1.3 - Application : simple testeur de réflexes105
6.2 - Entrées analogiques107
6.2.1 - Module 'analogio'108
6.2.2 - Exemple avec un potentiomètre108
6.2.3 - Application : radar de distance112
6.3 - Sorties PWM118
6.3.1 - Module 'pulesio'120
6.3.2 - Exemple de variation d'intensité lumineuse sur une LED122
6.3.3 - Application : piloter un servomoteur126
6.3.4 - Application : mini-piano131
6.4 - Entrées tactiles136
6.4.1 - Module 'touchio'137
6.4.2 - Exemple de détection tactile137
6.4.3 - Application : mini-piano tactile139
6.5 - Utilisation de bibliothèques supplémentaires144
6.5.1 - Installation de nouvelles bibliothèques pour la carte Feather144
6.5.2 - Quelques recommandations146
6.5.3 - Exempte avec une bibliothèque anti-rebond148
6.5.4 - Exemple avec une bibliothèque servomoteur150
6.5.5 - Exemple avec une bibliothèque de génération de tons153
6.6 - Les différents capteurs intégrés à la carte Feather154
6.6.1 - Bibliothèques utiles pour accéder aux capteurs embarqués155
6.6.2 - Température / Pression / Humidité155
6.6.3 - Indicateur de niveau sonore sur une LED157
6.6.4 - Indicateur de niveau sonore sur une LED NeoPixel160
6.6.5 - Variation de la teinte de la LED NeoPixel par gestes162
6.6.6 - Couleur aléatoire de la LED NeoPixel par accéléromètre167
6.7 - Bus de communication disponibles170
6.7.1 - Module 'busio'170
6.7.2 - Liaison série asynchrone de type UART171
6.7.3 - Liaison série synchrone de type I2C179
6.7.4 - Liaison série synchrone de type SPI183
6.8 - Émulation de périphériques HID190
6.8.1 - Module 'usb_hid'191
6.8.2 - Émulation d'un clavier191
6.8.3 - Émulation de la souris202
6.9 - Quelques informations sur les autres modules disponibles209
6.9.1 - Modules 'Core'209
6.9.2 - Modules additionnels Adafruit209
6.9.3 - Modules additionnels autres210
6.10 - Comment faire si le module de mon composant n'existe pas ?211
6.10.1 - Partir d'une bibliothèque Python211
6.10.2 - Partir d'un code MicroPython217
Chapitre 7 • Projets avec les cartes d'extension FeatherWing
221
7.1 - Qu'est-ce qu'une FeatherWing ?221
7.2 - Préparation des modules FeatherWing223
7.3 - Alimentation des projets225
7.4 - FeatherWing DotStar226
7.4.1 Présentation de la carte d'extension226
7.4.2 Projet de station météo locale229
7.5 - FeatherWing Adalogger236
7.5.1 Présentation de la carte d'extension236
7.5.2 Projet d'enregistreur de température239
7.6 - FeatherWing e-Ink246
7.6.1 Présentation de la carte d'extension246
7.6.2 Description du module displayio248
7.6.3 Tutoriel avec le module displayio253
7.6.4 Préparation de ses images266
7.6.5 Projet de badge événementiel267
7.7 - FeatherWing TFT de 2,4 pouces271
7.7.1 Présentation de la carte d'extension271
7.7.2 Projet de Visionneuse d'images272
7.7.3 Projet de thermographe278
7.8 - FeatherWing OLED286
7.8.1 Présentation de la carte d'extension286
7.8.2 Projet de clavier macro pour Windows287
7.9 - FeatherWing Prop-Maker297
7.9.1 Présentation de la carte d'extension297
7.9.2 Projet de voltmètre parlant300
7.9.3 Projet de thermomètre à LED309
7.9.4 Projet de lampe d'ambiance à LED315
7.10 - FeatherWing RTC321
7.10.1 Présentation de la carte d'extension321
7.10.2 Projet d'horloge NeoPixel324
7.11 - FeatherWing RGB Matrix335
7.11.1 Présentation de la carte d'extension335
7.11.2 Projet Pixel Art344
7.11.3 Projet horloge348
7.11.4 Projet de radar de recul353
7.12 - FeatherWing Music Maker359
7.12.1 Présentation de la carte d'extension359
7.12.2 Projet d'instrument MIDI362
7.13 - Utilisation de la Joy FeatherWing378
7.13.1 Présentation de la carte d'extension378
7.13.2 Projet de contrôleur de jeu379
7.14 - FeatherWing servo387
7.14.1 Présentation de la carte d'extension PWM387
7.14.2 Projet de tourelle labyrinthe390
7.15 - Power Relay FeatherWing396
7.15.1 Présentation de la carte d'extension396
7.15.2 Projet de commande à reconnaissance faciale399
7.16 - Utilisation des FeatherWing DC motor/ RFM69411
7.16.1 Présentation de la carte d'extension DC Motor411
7.16.2 Projet de commande de robot roulant414
7.16.3 Présentation de la carte d'extension RFM69420
7.16.4 Projet de commande de robot à distance424
7.17 - Autres FeatherWings433
7.18 - Utilisation de la Feather Click Shield433
7.18.1 Présentation des modules Click Boards435
7.18.2 Présentation de la carte de MikroElektronika436
7.18.3 Projet de télécommande infrarouge437
Partie III445
Chapitre 8 • Carte Adafruit CLUE nRF52840 Express
446
8.1 - Présentation de la carte CLUE nRF52840 Express446
8.1.1 - Principales caractéristiques447
8.1.2 - Brochage de la carte CLUE449
8.1.3 - Caractéristiques des capteurs embarqués sur la carte CLUE453
8.1.4 - Mise à jour de son micrologiciel CircuitPython453
8.2 - Bibliothèque CircuitPython spécialisée pour CLUE455
8.3 - Interfaçage matériel456
8.4 - Quelques projets avec la carte CLUE nRF52840459
8.4.1 - Projet de sonomètre459
8.4.2 - Projet d'horloge analogique464
8.4.3 - Projet de thermomètre470
8.4.4 - Projet de thermomètre sans contact474
8.4.5 - Projet de taux d'occupation d'une pièce480
8.4.6 - Projet de Pong491
8.4.7 - Projet de radar 2D Laser503
8.4.8 - Projet d'éclairage caméléon512
8.4.9 - Projet de robot autonome détecteur d'obstacles519
8.4.10 - Exemple d'animation528
8.5 - Simulation avec Microsoft Visual Studio Code533
Chapitre 9 • Un projet Bluetooth
537
9.1 - Introduction537
9.2 - Commande d'éclairage par Bluetooth537
Chapitre 10 • Conclusion
549
Index
551