mercredi 20 mai 2020

Enregistrement sur Google Drive des photos de l'ESP32-CAM

Dans ce tuto, j'utilise un Google App Script qui permettra d'enregistrer périodiquement, sur Google Drive, un photo prise par l'ESP32-CAM. Pour la réalisation de ce projet, j'ai beaucoup profité du travail précédemment accompli par Guillermo Sampallo.

Rédaction d'un Apps Script

Nous avons dernièrement eu l'occasion d'utiliser les Google Apps Scripts pour consigner des informations dans un document Google Doc ou encore dans une feuille de calcul Google Sheets.

Il s'agit d'abord de se rendre sur le site Google Apps Script, de créer un nouveau projet, et d'y coller le script qui apparaît ci-dessous.

Ce script décode l'information reçue en codage base64, l'enregistre dans Google Drive sous la forme d'un fichier jpeg dont le nom est la date et l'heure de l'enregistrement. Ce fichier est enregistré dans un répertoire intitulé "ESP32-CAM" (qui sera automatiquement créé s'il n'existait pas déjà).

-
-

Déploiement du script en application web

Nous devons ensuite faire en sorte que ce script puisse être exécuté par un url envoyé par notre ESP-32 CAM.  Dans le menu "Publier" de Google Scripts, nous sélectionnons "Déployer en tant qu'application Web...".



Nous réglons "Project version:" à "Nouveau" et "Who has access to the app:" à "Anyone, even anonymous".


Google nous demande de confirmer l'autorisation...



Et finalement, nous obtenons l'url qui devra être utilisé pour provoquer l'exécution du script. Nous devrons copier cet url dans le sketch de l'ESP32 CAM, à l'étape suivante de notre projet.


Programmation de l'ESP32-CAM

Si vous n'êtes pas familier avec la programmation de l'ESP32-CAM avec l'IDE Arduino, cet article d'introduction pourrait vous intéresser.

Une fois par minute, ce sketch prend une photo, encode l'information en base64, et l'envoie à l'url correspondant à notre Google App Script.

Pour que le script soit fonctionnel, vous devez y inscrire le nom de votre réseau Wifi (ligne 17), le mot de passe de votre réseau Wifi (ligne 18) et l'url de votre Apps Script (ligne 20).

-
-

Résultat

À chaque minute, une nouvelle photographie apparaît dans le répertoire "ESP32-CAM" de Google Drive. Vous devriez assez facilement pouvoir modifier le sketch pour que la prise de photo soit provoquée par un événement comme l'appui d'un bouton ou la détection d'un mouvement par un capteur PIR.



À lire également


Yves Pelletier (Twitter, Facebook)

dimanche 17 mai 2020

Matrice de LEDs et ESP8266 / ESP32

Je vous présente aujourd'hui un dispositif qui permet de contrôler à distance, par l'entremise d'une page web, une matrice de 64 LEDs. Pour ce faire, j'ai utilisé un ESP8266 ou un ESP32, un circuit intégré MAX7219 et une matrice de 8 X 8 LEDs.



Le module matrice 8 X 8 et MAX7219

Si, comme moi, vous désirez fabriquer votre propre module en connectant une matrice de 64 LEDs (8 X 8) à un circuit intégré MAX7219 (ou MAX7221), je vous invite à lire cet article, publié il y a près de 5 ans, qui contient tous les détails concernant le circuit. Si vous préférez, vous pouvez facilement vous procurer un module prêt à l'emploi, combinant déjà une matrice de LEDs et un MAX7219.


Connexions du module à l'ESP32 ou ESP8266

5 connexions sont suffisantes pour contrôler le module MAX7219:
  • VCC du module MAX7219: sortie 5 V de l'ESP8266 ou de l'ESP32
  • GND du module MAX7219: broche GND de l'ESP8266 ou de l'ESP32
  • DIN du module MAX7219: broche GPIO 12 de l'ESP8266 ou de l'ESP32
  • CS (LOAD) du module MAX7219: broche GPIO 15 de l'ESP8266 ou de l'ESP32
  • CLK du module MAX7219: broche GPIO 13 de l'ESP8266 ou de l'ESP32





Installation et modification de la bibliothèque LED Control

L'IDE Arduino doit avoir été configuré pour programmer une carte ESP8266 ou ESP32. Si ce n'est pas le cas, référez-vous à ces guides détaillés: pour l'ESP8266 ou pour l'ESP32.

Il faut également installer la bibliothèque LedControl par Eberhard Fahle. Ça peut se faire par le gestionnaire de bibliothèques.


Si vous utilisez un ESP32, il faudra probablement effectuer une petite modification dans le fichier LedControl.h de cette bibliothèque: il faut inclure le fichier "pgmspace.h" plutôt que "avr\pgmspace.h", sinon ça provoque une erreur de compilation (je n'ai pas eu ce problème avec l'ESP8266, toutefois).

Sketch

Voici le sketch qui construit une page web comportant une matrice de 64 cases à cocher, et qui allume les LEDs de la matrice qui correspondent aux cases cochées par l'utilisateur.

Avant de pouvoir utiliser ce sketch, il faudra y écrire le nom et le mot de passe de votre réseau WiFi.

-
-

Résultat

Lors du démarrage du programme, le moniteur série indique l'URL de l'ESP8266 / ESP32.


On copie cette adresse dans un navigateur web, ce qui nous donne accès à une page web comportant une matrice de 64 cases à cocher. Lorsque vous cliquez sur le bouton "Appliquer", les LEDs correspondant aux cases que vous avez cochées s'allument.


À lire également


Yves Pelletier (Twitter, Facebook)

samedi 9 mai 2020

Écrire dans un document Google Docs avec ESP32 ou ESP8266

Je continue d'explorer l'utilisation des Google Apps Scripts pour établir une connexion entre un ESP32 ou un ESP8266 et les services de Google.

Dans l'expérience d'aujourd'hui, chaque fois qu'on pressera un bouton connecté à l'ESP, l'événement sera consigné à l'intérieur d'un document "Google Docs". Il va sans dire que ce projet pourra facilement être modifié afin de répondre à un besoin plus concret, comme tenir un registre de l'utilisation d'un appareil au moyen d'une carte RFID, etc.

Le circuit

Le circuit est constitué d'un bouton poussoir et d'une résistance pull-up, branché à la broche GPIO 4 d'un ESP8266 ou d'un ESP32. Le bouton est évidemment alimenté avec 3,3 V, le niveau logique des entrées de l'ESP8266 et de l'ESP32.

Schéma du circuit avec un Wemos Mini D1 (pour ce modèle, GPIO 4 est la broche D2):

Schéma du circuit avec un module ESP32:


Création d'un document Google Docs

Nous allons ensuite sur le site Google Docs afin de créer un nouveau document Google Docs dans lequel notre ESP consignera des informations.  Vous pouvez donner à ce document le nom que vous désirez, ça n'aura pas d'importance pour la suite.  Copiez l'URL de ce nouveau document, car nous en aurons besoin dans notre script.

Rédaction d'un Apps Script

Sur le site Google Apps Scripts, nous créons un nouveau projet. Là encore, son nom n'a pas d'importance.


Voici le script à coller dans votre nouveau projet. Attention: il faut remplacer l'URL par celui de votre document Google Docs (ligne 32). Vous pourriez également préférer un autre fuseau horaire pour l'affichage de la date et de l'heure ("Europe/Paris", par exemple, plutôt que "America/Montreal").

-

-

Ce script est constitué de deux fonctions: doGet reçoit les requêtes GET émises par l'ESP et lui retourne un message pour indiquer que tout a bien fonctionné, et ecritDansGoogleDoc se chargera d'ouvrir notre document Google Docs pour y consigner de l'information.

Déploiement du script en application web

Il faut ensuite faire les réglages qui permettront à notre script d'être accessible à partir du web. Pour ce faire, nous sélectionnons "Déployer en tant qu'application Web" dans le menu "Publier" de Google Scripts.


À la question "Who has access to the app", nous répondons "Anyone, even anonymous".


Nous devons ensuite autoriser notre script à jouer dans nos fichiers sur Google Drive...



À la fin du processus, une boîte de dialogue vous confirme le déploiement de votre script, et vous fournit l'URL de votre web app: il est important de copier cette adresse car nous l'utiliserons dans le sketch de l'ESP32 / ESP8266.


Si vous le désirez, vous pouvez tester votre script à partir du navigateur web en ajoutant, à la fin de l'URL de votre web app, les informations suivantes "?func=registre&quoi=bouton".

Rédaction d'un sketch pour l'ESP32 / ESP8266

Il ne reste plus qu'à téléverser dans votre ESP32 ou ESP8266 le sketch qui enverra une requête GET à notre web app chaque fois que nous appuierons sur le bouton.

S'il s'agit de votre première occasion de programmer un ESP32 ou un ESP8266 avec l'IDE Arduino, vous trouverez la marche à suivre ici pour l'ESP32, et ici pour l'ESP8266.

Avant d'utiliser ce sketch, il est important d'y mettre certaines informations importantes:

  • le nom et le mot de passe de votre réseau Wi-Fi (lignes 20 et 21)
  • l'URL de votre application web (ligne 77)
  • si vous utilisez un ESP8266: le fingerprint SHA1 de votre app script (ligne 27)

Pour récupérer ce fingerprint SHA1, allez sur la page de votre feuille de calcul ou de votre script avec un navigateur web, cliquez sur le cadenas à gauche de l'URL, et visionnez le certificat de sécurité de google.com. Copiez les octets correspondant au fingerprint SHA1 et copiez-le dans votre sketch. Cette information n'est pas nécessaire si vous utilisez un ESP32.


-

-

Si tout fonctionne correctement, le message "On a osé appuyer sur le bouton!!!, suivi de la date et de l'heure, s'affiche dans votre document Google Docs chaque fois que vous appuyez sur le bouton.

À lire aussi:

Dans un projet très similaire, nous avons consigné dans un document Google Sheets les mesures d'un capteur branché à l'ESP32 ou à l'ESP8266. Vous serez peut-être intéressés à consulter la liste des projets impliquant l'ESP32 ou l'ESP8266.

Yves Pelletier (Twitter, Facebook)