Caméra pour Imprimante 3D

Ou avoir un oeil sur sa machine depuis le canapé !

Esp32cam ope      Les impressions 3D prennent un temps considérable, et bien sûr on a autre chose à faire que camper dans l'atelier pour attendre une anomalie, la fin de la bobine ou simplement faire des allées/retours pour voir si la pièce est terminée . Bien qu'allergique à toutes formes de surveillances,  je propose de réaliser, pour moins de 10€ , une caméra wifi (donc sans fil) connectée sur la boxe de la maison et sur laquelle on peut suivre le bon (ou le mauvais ) déroulement des opérations depuis un PC ou un Smartphone. Je l'utilise pour avoir un regard sur mon printer 3D mais l'usage n'est pas exclusif: ça peut servir à tout ! Bon pour la discrétion, ce n'est pas gagné, car une puissante Led s'allume pendant la prise de vue, pour éclairer la zone à photographier ... Pour qui voudrait l'utiliser pour des fonctions plus discrètes, il suffit de retirer deux lignes de programme pour que la lumière ne s'active pas !

Esp32cam vue      Le fonctionnement de la caméra est assuré par deux sources d'énergie: sur secteur de 94 à 260 volts ou sur batterie interne pour un usage hors d'une installation domestique, mais attention le circuit utilisé est assez gourmand en courant puisque sa consommation est de 40 mA au repos ; donc à ne pas négliger si l'on utilise une petite batterie ... Egalement, si on envisage une utilisation extérieure, il faut la doter d'un boîtier IP 66 et si la source d'alimentation est le secteur, un disjoncteur différentiel haute sensibilité doit être en tête de ligne ....

      Une fois mise en marche avec l'interrupteur latéral, et si l'on a renseigné le bon code SSID et Clé de réseau, la boxe attribue une adresse IP à la caméra ... Dans le navigateur habituel, il suffit de taper l'adresse pour se connecter et ouvrir la page HTML d'accueil . Un clic sur le bouton gauche prend une photo et après 5" , on affiche l'image par un clic sur le bouton droit. 

Esp32cam scrn

 

Et si on mettait la main à la pâte ....

Le matériel : 

      La pièce maîtresse de l'édifice n'est autre qu'un ESP32-CAM . C'est un CPU 32 bits dual-core qui intègre une SRAM  de 520 ko, PSRAM externe de 4Mo, avec un support  de carte TF. Il inclut des interfaces telles que UART/SPI/I2C/PWM/ADC/DAC, et il supporte les caméras OV2640 et OV7670. Un flash y est intégré, ainsi que les fonctions de sommeil (SLEEP), et la prise en charge du téléchargement d'images Wi-Fi . Voilà un descriptif du circuit dans toute sa puissance, pour même pas un billet de 5€ (4,28 € chez Ali )... Le mien ne m'a rien coûté et je remercie mon ami Christian .

Esp32cam

 

 

 

 

 

 

 

 

 

 

       La batterie que j'ai utilisée donne une tension de 3,6 volts avec une capacité de 1400 mA . C'est un élément de récupération dans mon montage mais les mêmes sont disponibles chez les fournisseurs habituels . Si une utilisation prolongée est envisagée en autonome (Ex.: surveillance de la boîte à lettre ) il faudra en augmenter la capacité et mettre un panneau photovoltaïque pour la recharger, mais là, on s'éloigne de la fonction originale du montage !

Esp32cam bat

 

 

 

 

 

 

 

 

 

 

 

 

      Pour générer la tension de 5 volts nécessaire à l'ESP32 (sur mon montage, c'est du 5 volts, bien que ce circuit puisse fonctionner sous 3,3 volts ),  j'utilise un élévateur de tension bien classique qui peut fournir jusqu'à 1A, voir 1,5A en crête. La tension inférieure de batterie est fixée à 2,7 volt, ce qui en garantie la protection. C'est un circuit à rendement élevé (80 à 90 %) et qui se coupe automatiquement si le courant est inférieur à 100µA . La fréquence de travail est de 500KHz et l'ondulation résiduelle est de 30 mV pour 1A sous 5V .

Esp32cam alim

 

 

 

 

 

 

 

   

      Et son acolyte, le chargeur ! Maintes et maintes fois utilisé dans ces pages ... Entrée avec MICRO USB femelle, tension d'entrée: 5V. Courant de charge Maximum: 1000mA. Tension de protection contre la surcharge de la batterie: 2.5V.  Protection contre les surintensités de la batterie: 3A ! Voilà, c'est tout ce qu'il faut pour que ça fonctionne !

Un élément facultatif qui ne sert que lors de la programmation:

Usb uart

 

 

 

 

 

 

 

 

     

      Pour ma part, j'ai ajouté sur le circuit un connecteur pour recevoir un convertisseur USB <--> UART et un cavalier enfichable pour passer en mode programmation...  Mais celle-ci peut tout à fait être effectuée sur une simple plaquette d'essais avant insertion du circuit ... et le module convertisseur retournera dans le tiroir de rangement .

      Le CP2102 , contrôleur de fonction  USB 2.0, intégre un émetteur-récepteur USB,  un oscillateur à quartz,  une EEPROM et un bus de données en série asynchrones (UART). Il Répond aux exigences de spécification USB2.0 au format de 8 bits de données, 1 bit d'arrêt et bit de parité. Pour que la liason soit complète, il intégre un bus de données série asynchrone pour le handshake logiciel et matériel  X-ON/X-OFF. Les tampons de réception et tampons de transmission sont de 512 octets chacun.

 

Et si on faisait le tour du patelin maintenant :

Le schémas :

Esp32cam sch

      Il n'y a rien, là dessus, ou presque ! Le module ESP32-Cam avec son mini connecteur qui est dédié aux caméras OV2640 et OV7670 . Tout ce qui est ajouté, c'est l'alimentation. L'énergie (5Volts), issue d'un bloc secteur de récupération (vieux chargeur de smartphone) arrive sur le connecteur JP2 (attention à la polarité ) et va sur le chargeur de batterie TP4056 ! Ce dernier doit fournir du 5 volts et assurer la charge de la batterie . On passe ensuite sur un interrupteur Marche/Arrêt qui alimente un convertisseur 3,6v-->5v DC/DC pour élever la tension batterie au niveau requis par l'ESP32 dans le cas où celle-ci commence à baisser . 

      On aperçoit sur le schémas le connecteur du module USB/UART  (J5-1 à J5-6) qui ne sert que pour la programmation ... Le mode "programmation" est validé en enfichant le cavalier JP1, hors tension évidement. Opération qui n'est réalisée qu'une fois si on ne fait pas de mises à jour du logiciel .

 

Le Circuit imprimé et le montage des Composants :

Esp32cam pcb 1

      Le circuit simple face connecte entre eux les quelques composants nécessaires. Réalisé avec les moyens classiques, ce circuit ne présente aucune difficulté pour l'amateur ... Les typons sont dans le fichier .zip en fin de page. J'ai mis deux éléments facultatifs qui servent à la programmation 'in situ' , pour recevoir le convertisseur USB/UART et le jumper qui fait passer le circuit en mode prog, mais cette dernière peut être faite sur une plaquette d'essai avant insertion du circuit. L'élévateur de tension batterie se place sous l'ESP32 pour réduire les dimensions : la fréquence de travail de 500KHz ne perturbe pas le fonctionnement des autres circuits, surtout  le module principal, grâce à l'utilisation de l'antenne externe et qui plus est, améliore sensiblement la portée Wi-Fi  ...

Le Sketch : (Là, on frôle la haute technologie )

      Le programme est développé et téléversé avec l'IDE Arduino  après avoir installé le circuit correspondant dans le 'board manager' suivant la méthode expliquée sur ce lien ! et sélectionné dans le 'Gestionnaire de cartes' la version de l'ESP32-Cam:  'Al Thinker ESP32-CAM' ! Les commentaires, abondants dans le sketch, permettent de voir ce que l'on veut faire avec les lignes  de code. Une version texte est inclue dans le zip des fichiers de réalisation, pour les curieux qui veulent y jeter un coup d'oeil sans utiliser l'éditeur de IDE .

Cela commence par l'appel des librairies dont on a besoin (Merci l'open source, ça évite de refaire ce que d'autres ont déjà écrit  ) et elles sont nombreuses ici :

 //Appel des librairies utilisées 
#include "WiFi.h"
#include "esp_camera.h"
#include "esp_timer.h"
#include "img_converters.h"
#include "Arduino.h"
#include "soc/soc.h"           
#include "soc/rtc_cntl_reg.h"  
#include "driver/rtc_io.h"
#include <ESPAsyncWebServer.h>
#include <StringArray.h>
#include <SPIFFS.h>
#include <FS.h>

N'oublions pas de renseigner le "Non de le Boxe et son mot de passe "

//Saisie des identifiant de la box, reseau et clé 
const char* ssid = "XXXXXXXXXXXXX";
const char* password = "ZZZZZZZZZZZZZZZZZZZ";

Puis ensuite vient la déclaration des micro-pinuches de la caméra sur le connecteur miniature !

//Broches du module de caméra OV2640 (CAMERA_MODEL_AI_THINKER)
#define PWDN_GPIO_NUM     32
#define RESET_GPIO_NUM    -1
#define XCLK_GPIO_NUM      0
#define SIOD_GPIO_NUM     26
#define SIOC_GPIO_NUM     27
#define Y9_GPIO_NUM       35
#define Y8_GPIO_NUM       34
#define Y7_GPIO_NUM       39
#define Y6_GPIO_NUM       36
#define Y5_GPIO_NUM       21
#define Y4_GPIO_NUM       19
#define Y3_GPIO_NUM       18
#define Y2_GPIO_NUM        5
#define VSYNC_GPIO_NUM    25
#define HREF_GPIO_NUM     23
#define PCLK_GPIO_NUM     22

Egalement la partie HTML embarquée qui va générer l'écran d'accueil sur le terminal de réception  ... (J'ai repris du code existant que j'ai modifié et recopié ... Merci à Paul pour son astuce d'édition HTML avec le clic droit de la souris et la fonction 'inspecter' du menu déroulant ).

Et la configuration à la fonction des broches de la caméra :

 // Configuration et paramétrage du module Caméra OV2640
  camera_config_t config;
  config.ledc_channel = LEDC_CHANNEL_0;
  config.ledc_timer = LEDC_TIMER_0;
  config.pin_d0 = Y2_GPIO_NUM;
  config.pin_d1 = Y3_GPIO_NUM;
  config.pin_d2 = Y4_GPIO_NUM;
  config.pin_d3 = Y5_GPIO_NUM;
  config.pin_d4 = Y6_GPIO_NUM;
  config.pin_d5 = Y7_GPIO_NUM;
  config.pin_d6 = Y8_GPIO_NUM;
  config.pin_d7 = Y9_GPIO_NUM;
  config.pin_xclk = XCLK_GPIO_NUM;
  config.pin_pclk = PCLK_GPIO_NUM;
  config.pin_vsync = VSYNC_GPIO_NUM;
  config.pin_href = HREF_GPIO_NUM;
  config.pin_sscb_sda = SIOD_GPIO_NUM;
  config.pin_sscb_scl = SIOC_GPIO_NUM;
  config.pin_pwdn = PWDN_GPIO_NUM;
  config.pin_reset = RESET_GPIO_NUM;
  config.xclk_freq_hz = 20000000;
  config.pixel_format = PIXFORMAT_JPEG;

Vient enfin la boucle de programme (loop) et le renvoi, si il y a capture d'une photo, avec vérification et stockage en JPEG  dans l'EEPROM, pour pouvoir l'appeller par clic ou appui sur le bouton "AFFICHAGE" .

 

La mise en Boîte :

Esp32cam box      Le boîtier est réalisé en deux parties : le fond qui supporte le circuit et la batterie, et le capot qui, en plus de l'oreille de fixation, reçoit l'antenne Wi-Fi, l'interrupteur et passage du câble d'alimentation ! Deux fenêtres sont aménagées pour l'objectif et pour la Led flash ... Comme d'hab, j'ai utilisé DesignSpark  Mechanical pour l'élaboration et la sortie au format STL pour l'imprimante 3D. 

Esp32cam clos

Pour conclure, le paquet de fichiers où il y a tout ce qu'il faut :

Esp32 camEsp32 cam (745.16 Ko)

      Voilà une réalisation qui n'est pas dédiée qu'à l'usage que j'en fais ! Libre à chacun de lui trouver une nouvelle fonction et de nouveaux atouts.  Comme l'ESP32CAM inclus un support de carte SD, il serait intéressant d'y adjoindre un détecteur Pyro (comme pour le JimmyPhone) , un détecteur de proximité laser ou tout simplement un détecteur Dopler à UltraSons  pour prendre et enregistrer des photos, suite à des mouvements ou des approches ! Libre cours à notre imagination, et je ne serais pas surpris de voir ce module apparaître dans une autre de mes réalisations .

 

Ajouter un commentaire