dimanche 23 février 2020

Livre: Python pour la carte micro:bit par Julien Launay

Python pour la carte micro:bit
par Julien Launay
Éditions Eyrolles, 2019
Collection Serial makers
168 pages


Les éditions Eyrolles nous proposent un nouveau livre consacré à la carte micro:bit, cette petite carte programmable conçue au départ pour être utilisée dans les écoles britanniques. Mais alors que les autres livres que j'ai eu l'occasion de consulter (40 activités avec la carte micro:bit et Petits robots à fabriquer) préconisent l'utilisation de l'environnement graphique Makecode, celui-ci propose d'apprendre à programmer la micro:bit en langage Python.

Après une brève présentation de la carte micro:bit et de quelques environnements de développement qui peuvent être utilisés pour la programmer, le contenu du livre se divise en 3 grandes sections:

1)  Les bases en MicroPython. Cette section s'adresse au lecteur qui n'a jamais eu l'occasion de programmer en langage Python auparavant. On y présente la syntaxe de base du langage (variables, conditions, boucles...), mais rien de spécifique à la carte micro:bit.

2) Applications simples avec la carte micro:bit. Dans cette deuxième partie, on explique comment utiliser les différents capteurs et actionneurs intégrés à la carte: la matrice de LEDs, les boutons, le capteur de température, l'accéléromètre, la boussole, les entrées et les sorties (mesure d'un signal logique ou analogique, production d'un signal logique ou PWM), la communication entre deux cartes (grâce au module radio ou à une connexion filaire) ...

3) Applications avancées avec la carte micro:bit. On termine avec quelques projets qui nécessitent l'utilisation de cartes d'extension: on mentionne la carte d'extension Shield Grove, la carte CODO, la carte pour servomoteurs et LED de Kitronik, le capteur à ultrasons Grove 2.0.

Les principes de base sont explorés à travers des applications concrètes:  jeu de "tir à la corde" virtuel, dé à jouer électronique, boussole, lampe contrôlable à distance, robot éviteur d'obstacle, robot contrôlé à distance, etc. Les codes complets sont fournis, mais ils sont accompagnés d'un algorithme en français, le but de l'auteur étant de bien faire comprendre les concepts.

Puisqu'on utilise essentiellement les capteurs et actuateurs déjà présents sur la carte (ou encore des cartes d'extensions prêtes à l'emploi), il s'agit d'abord et avant tout d'un livre d'informatique, avec assez peu d'électronique (il n'y a pas de circuits à monter).

Même si le public cible est visiblement le milieu scolaire, les dilettantes devraient y trouver leur compte également (en particulier ceux qui n'ont aucune expérience en programmation).

À lire également

Des commentaires sur d'autres livres traitant d'électronique.

Yves Pelletier (TwitterFacebook)

mercredi 12 février 2020

Mouvement panoramique avec ESP32-CAM et servomoteur


Je continue de bien m'amuser avec l'ESP32-CAM. Cette fois, j'ai installé la caméra sur un servomoteur afin qu'elle puisse effectuer un mouvement panoramique horizontal­. J'ai ainsi obtenu une caméra de surveillance qui balaie un champ de vision beaucoup plus large.

À cette étape du projet, le servomoteur tourne en continu aussitôt qu'un utilisateur visionne l'image vidéo diffusée par le web server de l'ESP32-CAM. Il sera certainement intéressant, comme développement ultérieur, d'ajouter un deuxième servomoteur ainsi que des boutons de contrôle sur la page web, ce qui permettrait à l'utilisateur de positionner la caméra à distance (pan & tilt).

Connexions

J'ai branché le servomoteur à la broche GPIO 2 de l'ESP32-CAM.

Pour l'exécution d'un sketch simple dans lequel l'ESP32-CAM ne faisait rien d'autre que faire tourner le servomoteur, j'ai pu alimenter le servomoteur en le branchant à la même alimentation 5 V que l'ESP32-CAM. Mais aussitôt que j'essayais de brancher l'ESP32-CAM au réseau WiFi, le "brownout detector" interrompait le programme au démarrage. Pour cette raison, j'ai alimenté le servomoteur avec une alimentation 5 V distincte.


Test du servomoteur

Il y a quelques mois, j'avais exploré la production d'un signal PWM avec un ESP32; ça m'a facilité la tâche pour produire ce sketch qui ne fait rien d'autre que faire tourner le servomoteur dans un sens, puis dans l'autre. Dans mon cas, le servomoteur atteignait ses positions extrêmes pour un rapport cyclique d'environ 3550 et 8000, mais ces valeurs peuvent varier un peu d'un servomoteur à l'autre.

-
-

Sketch: web server avec mouvement panoramique

Voici finalement le sketch qui permet d'observer l'image vidéo sur un navigateur web. Il s'agit essentiellement de mon sketch de web server de base, auquel j'ai ajouté quelques lignes pour gérer le servomoteur.

Aux lignes 29 à 36, je définis quelques constantes (broche à laquelle le servomoteur est connecté, position minimale désirée, position maximale désirée, vitesse désirée) et deux variables globales: la position du servomoteur et la direction dans laquelle il tourne.


Aux lignes 223 à 225, j'initialise le signal PWM et l'assigne à la broche à laquelle j'ai branché le servomoteur.


La position du servomoteur est réglée à la ligne 103. Les lignes suivantes calculent la prochaine position et vérifient s'il est temps d'inverser le sens de rotation..



La vidéo ci-dessous montre le résultat. Le mouvement du servomoteur n'est pas parfaitement régulier (il semble ralentir à certains moments) et le support en papier que j'ai bricolé pour ma ESP32-CAM manque de rigidité (il se déforme un peu pendant la rotation, ce qui ajoute une oscillation verticale à l'image). Mais comme prototype, ça me semble assez bien.




-
-

À lire également:

Première utilisation de l'ESP32-CAM avec l'IDE Arduino , un web server minimaliste , enregistrer des photos sur la carte microSD, les LEDs de l'ESP32-CAM, time-lapse avec l'ESP32-CAM.

Yves Pelletier (TwitterFacebook)

mardi 11 février 2020

Dans un blog près de chez vous (8)


Ce dont on parle dans d'autres blogs...

RitonDuino:

Arduiblog:

Framboise 314:

Les carnets de Byfeel:

IDEHack:

Papsoid:

Raspberry Pi FR:

Yves Pelletier (TwitterFacebook)

vendredi 7 février 2020

Les LEDs de l'ESP32-CAM

Les modules ESP32_CAM de type "AI Thinker" comportent deux LEDs: une LED blanche de forte intensité située à l'avant de la caméra, et une LED rouge située à l'arrière.

La LED blanche est liée à la broche GPIO 4. Elle semble avoir été mise en place pour éclairer le sujet que vous photographiez ou filmez, si la lumière ambiante est insuffisante. Si vous désirez plutôt l'utiliser comme LED indicatrice, il sera très pertinent de réduire son intensité en l'alimentant par un signal PWM. Puisque la broche GPIO 4 est également liée au lecteur de carte microSD, la LED blanche s'allume inutilement chaque fois que des données sont enregistrées sur la carte, au grand désespoir de plusieurs utilisateurs.


La LED rouge est branchée à la broche GPIO 33.  Elle est allumée quand la broche GPIO 33 est au niveau logique bas, et éteinte quand elle est au niveau logique haut.



Voici, en guise de démonstration , un court sketch qui fait clignoter par alternance les deux LEDs de l'ESP32-CAM. Remarquez que pour allumer la LED blanche avec une intensité pas trop irritante, j'ai réglé le rapport cyclique du signal PWM a un niveau incroyablement faible.

-
-

À lire également:

Première utilisation de l'ESP32-CAM avec l'IDE Arduino , un web server minimaliste , enregistrer des photos sur la carte microSD, time-lapse avec l'ESP32-CAM, mouvement panoramique (ESP32-CAM et servomoteur).


Yves Pelletier (TwitterFacebook)

samedi 1 février 2020

ESP32-CAM: enregistrer des photos sur la carte microSD

Je vous propose aujourd'hui une version légèrement remaniée du web server que je vous présentais la semaine dernière: la page web générée par l'ESP32-CAM comporte maintenant un bouton qui permet d'enregistrer l'image sous la forme d'un fichier jpeg dans la carte microSD insérée dans l'ESP32-CAM. L'ESP32-CAM devient ainsi un appareil photo pouvant être déclenché à distance par WiFi.

Nous programmons l'ESP32-CAM avec l'IDE Arduino (voir ce précédent article pour plus de détails).

Pour utiliser le lecteur de cartes microSD de l'ESP32-CAM, l'inclusion des fichiers d'entête "FS.h" et "SD_MMC.h" est nécessaire.


J'ai défini deux variables globales: "carte_presente", qui prendra la valeur "1" si une carte microSD est détectée au démarrage du programme, et "numero_fichier", qui sera utilisée pour numéroter les photos. Dans ce programme, numero_fichier prend la même valeur à chaque redémarrage de la caméra: dans une future version, on pourrait conserver le dernier numéro en EEPROM pour éviter d'effacer une photo déjà présente sur la carte SD.


Dans setUp(), quelques lignes sont consacrées à l'initialisation de la carte.


Dans web_handler(), si une carte SD a été détectée, on ajoute à la page web un bouton qui permettra la prise de la photo. Sinon, on affiche plutôt un court message indiquant l'absence de carte SD.


L'enregistrement du fichier jpeg s'effectue à l'intérieur de la routine enregistrer_photo().


Utilisation

Lors du démarrage, l'adresse IP de la page web est affichée dans le moniteur série.



On copie l'adresse dans un navigateur web: une page web affiche l'image vidéo ainsi que le bouton "Photo".



Chaque clic sur le bouton "photo" génère un nouveau fichier jpeg sur la carte microSD.



Si aucune carte n'a été détectée, la page web présente quand même l'image vidéo, mais elle indique qu'aucune carte microSD n'est présente.




Sketch

Voici le sketch complet:

-
-

À lire également:

Première utilisation de l'ESP32-CAM avec l'IDE Arduino , un web server minimalisteles LEDs de l'ESP32-CAM, time-lapse avec l'ESP32-CAM, mouvement panoramique (ESP32-CAM et servomoteur).


Yves Pelletier (TwitterFacebook)