Initiation au langage CircuitPython et à la puce nRF52840
en moins de 100 lignes de code par projet avec les cartes Feather Sense et Clue Express d'Adafruit
Par Michaël Bottin
Éditeur : Elektor
Table des matières
Préface
Présentation générale
Ce que vous allez apprendre
Quels sont les prérequis ?
À qui s'adresse ce livre ?
Quel est le contenu de ce livre ?
Ressources en téléchargement
Préface de Ladyada
Partie I
Chapitre 1 • Qu'est-ce que CircuitPython ?
1.1 - Historique
1.2 - Pourquoi utiliser CircuitPython ?
1.3 - Ressources CircuitPython
1.4 - Cartes supportant CircuitPython
Chapitre 2 • Carte Adafruit Feather nRF52840 Sense
2.1 - Présentation de la carte Feather nRF52840 Sense
2.1.2 Brochage de la carte
2.2 - Quelques mots sur le SoC Nordic nRF52840
2.3 - Caractéristiques des capteurs embarqués sur la carte
Chapitre 3 • Premiers programmes
3.1 - Introduction
3.2 - Branchement de la carte Feather nRF52840 Sense en USB
3.3 - Mise à jour de la version du microprogramme CircuitPython
3.4 - Environnement de développement
3.5 - Utilisation de la console (REPL)
3.5.1 - Console série
3.5.2 - REPL - Tester quelques instructions
3.5.3 - REPL - Obtenir des informations sur la carte
3.6 - Premiers programmes
3.6.1 - Lancer d'un dé
3.6.2 - Lancer d'un dé amélioré
3.6.3 - Calculatrice
3.6.4 - Affichage d'une sinusoïde
3.7 - Sortir proprement du mode programmation
3.8 - Dépannage
Chapitre 4 • Bases du langage CircuitPython
4.1 - Introduction
4.2 - Programme type en CircuitPython
4.3 - Bases du langage CircuitPython
4.3.1 - Concepts de base pour l'écriture du code
4.3.2 - Forçage de type (cast)
4.3.3 - Instructions d'affichage
4.3.4 - Structures de données : listes, tuples et dictionnaires
4.3.5 - Opérateurs
4.3.6 - Instructions conditionnelles et les boucles
4.3.7 - Les fonctions
4.3.8 - La notion de module
4.4 - Comprendre l'utilisation des classes d'objets
4.4.1 - Qu'est-ce qu'un objet ?
4.4.2 - Qu'est-ce qu'une classe ?
4.4.3 - Comment accède-t-on aux attributs et aux méthodes d'un objet ?
4.5 - Limitations du langage CircuitPython
Chapitre 5 • Préparation du matériel
5.1 - Quels connecteurs pour la carte Feather nRF52840 Sense ?
5.2 - Utilisation d'une platine d'essai (breadboard)
5.3 - Utilisation d'adaptateurs Feather
5.4 - Reste du matériel
Partie II
Chapitre 6 • Découverte du langage CircuitPython par la pratique
6.1 - Entrées/sorties numériques
6.1.1 - Exemple avec la LED et le bouton internes
6.1.2 - Exemple avec une LED et un bouton extérieurs à la carte
6.1.3 - Application : simple testeur de réflexes
6.2 - Entrées analogiques
6.2.1 - Module 'analogio'
6.2.2 - Exemple avec un potentiomètre
6.2.3 - Application : radar de distance
6.3 - Sorties PWM
6.3.1 - Module 'pulesio'
6.3.2 - Exemple de variation d'intensité lumineuse sur une LED
6.3.3 - Application : piloter un servomoteur
6.3.4 - Application : mini-piano
6.4 - Entrées tactiles
6.4.1 - Module 'touchio'
6.4.2 - Exemple de détection tactile
6.4.3 - Application : mini-piano tactile
6.5 - Utilisation de bibliothèques supplémentaires
6.5.1 - Installation de nouvelles bibliothèques pour la carte Feather
6.5.2 - Quelques recommandations
6.5.3 - Exemple avec une bibliothèque anti-rebond
6.5.4 - Exemple avec une bibliothèque servomoteur
6.5.5 - Exemple avec une bibliothèque de génération de tons
6.6 - Les différents capteurs intégrés à la carte Feather
6.6.1 - Bibliothèques utiles pour accéder aux capteurs embarqués
6.6.2 - Température / Pression / Humidité
6.6.3 - Indicateur de niveau sonore sur une LED
6.6.4 - Indicateur de niveau sonore sur une LED NeoPixel
6.6.5 - Variation de la teinte de la LED NeoPixel par gestes
6.6.6 - Couleur aléatoire de la LED NeoPixel par accéléromètre
6.7 - Bus de communication disponibles
6.7.1 - Module 'busio'
6.7.2 - Liaison série asynchrone de type UART
6.7.3 - Liaison série synchrone de type I2C
6.7.4 - Liaison série synchrone de type SPI
6.8 - Émulation de périphériques HID
6.8.1 - Module 'usb_hid'
6.8.2 - Émulation d'un clavier
6.8.3 - Émulation de la souris
6.9 - Quelques informations sur les autres modules disponibles
6.9.1 - Modules 'Core'
6.9.2 - Modules additionnels Adafruit
6.9.3 - Modules additionnels autres
6.10 - Comment faire si le module de mon composant n'existe pas ?
6.10.1 - Partir d'une bibliothèque Python
6.10.2 - Partir d'un code MicroPython
Chapitre 7 • Projets avec les cartes d'extension FeatherWing
7.1 - Qu'est-ce qu'une FeatherWing ?
7.2 - Préparation des modules FeatherWing
7.3 - Alimentation des projets
7.4 - FeatherWing DotStar
7.4.1 Présentation de la carte d'extension
7.4.2 Projet de station météo locale
7.5 - FeatherWing Adalogger
7.5.1 Présentation de la carte d'extension
7.5.2 Projet d'enregistreur de température
7.6 - FeatherWing e-Ink
7.6.1 Présentation de la carte d'extension
7.6.2 Description du module displayio
7.6.3 Tutoriel avec le module displayio
7.6.4 Préparation de ses images
7.6.5 Projet de badge évènementiel
7.7 – FeatherWing TFT de 2,4 pouces
7.7.1 Présentation de la carte d'extension
7.7.2 Projet de Visionneuse d'images
7.7.3 Projet de thermographe
7.8 - FeatherWing OLED
7.8.1 Présentation de la carte d'extension
7.8.2 Projet de clavier macro pour Windows
7.9 – FeatherWing Prop-Maker
7.9.1 Présentation de la carte d'extension
7.9.2 Projet de voltmètre parlant
7.9.3 Projet de thermomètre à LED
7.9.4 Projet de lampe d'ambiance à LED
7.10 – FeatherWing RTC
7.10.1 Présentation de la carte d'extension
7.10.2 Projet d'horloge NeoPixel
7.11 – FeatherWing RGB Matrix
7.11.1 Présentation de la carte d'extension
7.11.2 Projet Pixel Art
7.11.3 Projet horloge
7.11.4 Projet de radar de recul
7.12 – FeatherWing Music Maker
7.12.1 Présentation de la carte d'extension
7.12.2 Projet d'instrument MIDI
7.13 – Utilisation de la Joy FeatherWing
7.13.1 Présentation de la carte d'extension
7.13.2 Projet de contrôleur de jeu
7.14 – FeatherWing servo
7.14.1 Présentation de la carte d'extension PWM
7.14.2 Projet de tourelle labyrinthe
7.15 – Power Relay FeatherWing
7.15.1 Présentation de la carte d'extension
7.15.2 Projet de commande à reconnaissance faciale
7.16 - Utilisation des FeatherWing DC motor / RFM69
7.16.1 Présentation de la carte d'extension DC Motor
7.16.2 Projet de commande de robot roulant
7.16.3 Présentation de la carte d'extension RFM69
7.16.4 Projet de commande de robot à distance
7.17 – Autres FeatherWings
7.18 – Utilisation de la Feather Click Shield
7.18.1 Présentation des modules Click Boards
7.18.2 Présentation de la carte de MikroElektronika
7.18.3 Projet de télécommande infrarouge
Partie III
Chapitre 8 • Carte Adafruit CLUE nRF52840 Express
8.1 - Présentation de la carte CLUE nRF52840 Express
8.1.1 - Principales caractéristiques
8.1.2 - Brochage de la carte CLUE
8.1.3 – Caractéristiques des capteurs embarqués sur la carte CLUE
8.1.4 - Mise à jour de son micrologiciel CircuitPython
8.2 – Bibliothèque CircuitPython spécialisée pour CLUE
8.3 – Interfaçage matériel
8.4 – Quelques projets avec la carte CLUE nRF52840
8.4.1 – Projet de sonomètre
8.4.2 – Projet d'horloge analogique
8.4.3 – Projet de thermomètre
8.4.4 – Projet de thermomètre sans contact
8.4.5 – Projet de taux d'occupation d'une pièce
8.4.6 - Projet de Pong
8.4.7 – Projet de radar 2D Laser
8.4.8 - Projet d'éclairage caméléon
8.4.9 Projet de robot autonome détecteur d'obstacles
8.4.10 – Exemple d'animation
8.5 - Simulation avec Microsoft Visual Studio Code
Chapitre 9 • Un projet Bluetooth
9.1 - Introduction
9.2 – Commande d'éclairage par Bluetooth
Chapitre 10 • Conclusion
Index