mercredi 29 juillet 2020

ESP32-CAM et capteur infrarouge passif (PIR)


Le projet que je vais décrire dans cet article consiste à faire en sorte que l'ESP32-CAM prenne automatiquement des photos (et les enregistre sur une carte microSD) chaque fois qu'un capteur infrarouge passif (PIR) détecte une présence. Ça peut faire partie d'un système d'alarme (prendre les photos d'un intrus dans une pièce) , constituer un dispositif qui photographie des animaux sauvages, etc.



Il y quelques années, j'avais rédigé un article assez détaillé sur les capteurs PIR. Le modèle que j'utilise est muni d'un régulateur de tension: on doit l'alimenter avec 5 V pour qu'il fonctionne correctement, mais son signal de sortie passe de 0 V à 3,3 V lorsque la présence d'un humain ou d'un animal est détectée (N.B.: ce n'est probablement pas le cas pour tous les modules PIR disponibles sur le marché).


Une pénurie de broches

La caméra de l'ESP32-CAM utilise déjà un très grand nombre d'entrées/sorties de l'ESP32, ce qui explique pourquoi un  module ESP32-CAM comporte beaucoup moins de broches qu'on module ESP32 conventionnel. Mais lorsque vous utilisez le lecteur de cartes microSD intégré au module, la situation devient vraiment délicate: à lui-seul, le lecteur de cartes microSD accapare 6 broches (GPIO 2, 4, 12, 13, 14 et 15).  Puisque GPIO 0 , 1 et 3 sont utilisés pour la programmation de la carte, il ne reste que GPIO 16;  mais en plus d'être reliée à une résistance pull up qui la tient par défaut au niveau logique haut, cette broche est liée à la mémoire PSRAM.

La solution que j'ai choisie consiste à utiliser le module de carte SD en mode 1 bit plutôt qu'en mode 4 bits. C'est en principe un peu plus lent, mais ça permet de rendre disponibles les broches GPIO 4, 12 et 13.

J'ai donc branché la sortie du capteur PIR à la broche D13 de l'ESP32-CAM.



Des faux positifs?

Si votre capteur PIR détecte une présence même lorsqu'il n'y a personne, vous pouvez diminuer sa sensibilité en ajustant le potentiomètre "Sensitivity". Dans mon cas, il s'est avéré nécessaire d'alimenter le capteur PIR et l'ESP32-CAM de façon indépendante. Lorsqu'ils partageaient tous les deux la même alimentation de 5 V, ils se perturbaient mutuellement: des photos étaient prises sans raison apparente, et l'ESP32-CAM redémarrait parfois de façon impromptue.

Sketch

(En cas de besoin, vous pouvez consulter cet article pour plus de détails concernant la façon de programmer l'ESP32-CAM avec l'IDE Arduino.)

Voici un premier sketch plutôt simple qui n'exploite pas les capacités WIFI de l'ESP32-CAM. Lorsque la broche D13 de l'ESP32-CAM se trouve au niveau logique "Haut" (parce que le capteur PIR a détecté une présence), des photos sont prises et enregistrées sur la carte microSD. Vous devez ensuite éjecter la carte et l'insérer dans un autre appareil pour voir son contenu.

-
-

Voici un  deuxième exemple, plus élaboré, qui permet de voir le contenu de la carte à distance, grâce à une page web générée par l'ESP32-CAM (voir ce précédent article pour plus d'informations).

-
-



3 commentaires:

  1. Bonjour, article clair et plein d'infos sur une utilisation de l'ESP32-cam dans un projet de détection.. Et les infos sur les GPIO est cruciale.. Je rame dessus depuis un certain temps.. Je vais essayer de réaliser ce petit projet en utilisant Telegram pour envoi de notification. Je me pose quand même une question.. Utiliser le Pir pour réveiller l'esp32 super idée...mais l'esp32 n'est pas alimenté semble-t-il.

    RépondreSupprimer
  2. Merci pour ce magnifique tuto.
    Il serait intéressant de pouvoir faire la même chose en mettant l'esp 32 en point d'accès. ;-)

    RépondreSupprimer
  3. il serait intéressant de pouvoir mettre l'esp32 en point d'accès.

    RépondreSupprimer