ESP32-CAM Dual Core Camera Wifi Bluetooth

150,00 DH 180,00 DH

Disponibilité:

121 en stock

UGS : 0034-A Catégories : ,

Description

ESP32-CAM Dual Core Camera Wifi Bluetooth

L’ESP32-CAM est un module compact intégrant une caméra, basé sur la puce ESP32-S. Il est équipé de la caméra OV2640 et dispose de plusieurs GPIO pour connecter des périphériques, ainsi qu’un emplacement pour carte microSD pour le stockage d’images et de fichiers.

Caractéristiques

  • Microcontrôleur : ESP32-S Dual Core
  • Caméra : OV2640
  • Connectivité : WiFi 802.11 b/g/n, Bluetooth v4.2 BR/EDR et BLE
  • Mémoire Flash : 4MB
  • GPIO : Plusieurs broches disponibles
  • Emplacement carte SD : Oui

Fonctionnement

L’ESP32-CAM se connecte à des réseaux WiFi pour des applications IoT telles que la surveillance vidéo et la reconnaissance d’images. Il peut être programmé via l’IDE Arduino.

Applications

  • Surveillance vidéo : Utilisation comme caméra de sécurité.
  • Projets IoT : Applications nécessitant la capture et le traitement d’images.
  • Prototypage rapide : Développement de solutions connectées.

 

Ce tutoriel vous guide à travers la capture d’images et la sauvegarde de celles-ci sur une carte microSD en utilisant le lecteur intégré.

Matériel nécessaire

Configuration de l’IDE Arduino

  1. Installation de l’IDE Arduino :
    • Téléchargez et installez l’IDE Arduino depuis le site officiel.
  2. Ajout du support pour ESP32 :
    • Ouvrez l’IDE Arduino.
    • Allez dans Fichier > Préférences.
    • Dans la section URL de gestionnaire de cartes supplémentaires, ajoutez : https://dl.espressif.com/dl/package_esp32_index.json.
    • Allez dans Outils > Gestionnaire de cartes et recherchez “esp32”.
    • Sélectionnez “esp32” et cliquez sur “Installer”.
  3. Configuration de la carte :
    • Sélectionnez Outils > Type de carte > ESP32 Wrover Module.

Connexions

    • Connectez l’ESP32-CAM à un adaptateur de programmation.
    • Connexions pour l’adaptateur FTDI: RX à TX, TX à RX, 5V à VCC, GND à GND.

Télécharger le Driver pour Windows: ICI

 

Exemple de Code Arduino

Voici un exemple de code pour clignoter la led interne du ESP32-CAM et capturer une image avec la caméra et la sauvegarder sur une carte microSD en utilisant le lecteur intégré chaque 10s:

#include "esp_camera.h"
#include "FS.h"
#include "SD_MMC.h"


// ----------------------------------------------------------------------------
// 1. Camera pins (AI‑Thinker / ESP32‑CAM)
// ----------------------------------------------------------------------------
#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


// ----------------------------------------------------------------------------
// 2. Allocate an empty camera_config_t
// ----------------------------------------------------------------------------
camera_config_t camera_config;


void setup() {
  Serial.begin(115200);
  delay(100);


  // ——— Fill in the pins & settings ———
  camera_config.ledc_channel = LEDC_CHANNEL_0;
  camera_config.ledc_timer   = LEDC_TIMER_0;
  camera_config.pin_d0       = Y2_GPIO_NUM;
  camera_config.pin_d1       = Y3_GPIO_NUM;
  camera_config.pin_d2       = Y4_GPIO_NUM;
  camera_config.pin_d3       = Y5_GPIO_NUM;
  camera_config.pin_d4       = Y6_GPIO_NUM;
  camera_config.pin_d5       = Y7_GPIO_NUM;
  camera_config.pin_d6       = Y8_GPIO_NUM;
  camera_config.pin_d7       = Y9_GPIO_NUM;
  camera_config.pin_xclk     = XCLK_GPIO_NUM;
  camera_config.pin_pclk     = PCLK_GPIO_NUM;
  camera_config.pin_vsync    = VSYNC_GPIO_NUM;
  camera_config.pin_href     = HREF_GPIO_NUM;
  camera_config.pin_sscb_sda = SIOD_GPIO_NUM;
  camera_config.pin_sscb_scl = SIOC_GPIO_NUM;
  camera_config.pin_pwdn     = PWDN_GPIO_NUM;
  camera_config.pin_reset    = RESET_GPIO_NUM;
  camera_config.xclk_freq_hz = 20000000;   // no underscores
  camera_config.pixel_format = PIXFORMAT_JPEG;


  // ——— Choose frame size / quality based on PSRAM ———
  if (psramFound()) {
    camera_config.frame_size   = FRAMESIZE_UXGA;
    camera_config.jpeg_quality = 10;
    camera_config.fb_count     = 2;
  } else {
    camera_config.frame_size   = FRAMESIZE_SVGA;
    camera_config.jpeg_quality = 12;
    camera_config.fb_count     = 1;
  }


  // ——— Init camera ———
  Serial.println("→ Initializing camera...");
  esp_err_t err = esp_camera_init(&camera_config);
  if (err != ESP_OK) {
    Serial.printf("‼ Camera init failed: 0x%x\n", err);
    while (true) { delay(1000); }
  }
  Serial.println("✓ Camera initialized");


  // ——— Mount SD card ———
  Serial.println("→ Mounting SD card...");
  if (!SD_MMC.begin()) {
    Serial.println("‼ SD_MMC.begin() failed");
    while (true) { delay(1000); }
  }
  if (SD_MMC.cardType() == CARD_NONE) {
    Serial.println("‼ No SD card attached");
    while (true) { delay(1000); }
  }
  Serial.printf("✓ SD mounted, type=%d\n", SD_MMC.cardType());
}


void loop() {
  static uint16_t counter = 0;
  counter++;


  // ——— Capture frame ———
  camera_fb_t* fb = esp_camera_fb_get();
  if (!fb) {
    Serial.println("‼ Frame capture failed");
    delay(2000);
    return;
  }


  // ——— Build filename ———
  char filename[32];
  snprintf(filename, sizeof(filename), "/photo%03u.jpg", counter);


  // ——— Save to SD ———
  File file = SD_MMC.open(filename, FILE_WRITE);
  if (!file) {
    Serial.printf("‼ Failed to open %s for writing\n", filename);
  } else {
    file.write(fb->buf, fb->len);
    Serial.printf("✓ Saved %s (%u bytes)\n", filename, fb->len);
    file.close();
  }


  // ——— Return the frame buffer ———
  esp_camera_fb_return(fb);


  // Wait 10 s before next capture
  delay(10000);
}