L'ESP32-CAM est une carte de développement dotée de capacités Wi-Fi et Bluetooth, comprenant une petite caméra, un lecteur de carte micro SD, un flash.
La carte ESP32-CAM possède :
Cette carte ESP32-CAM peut se programmer via :
Cette carte s'alimente en 5 V et peut consommer jusqu'à 2 A.
Il s'agit d'ajouter le module adéquat.
Fichier / Préférences.
URL de gestionnaire de cartes supplémentaires, entrer :
OK.
Outils / Type de carte / Gestionnaire de carte.
esp32.
Outils, sélectionner la carte
Al Thinker ESP32-CAM, penser également à vérifier le port.
Les repères des connecteurs sont indiqués sur le dessin ci-dessous.
La carte branchée sur son adaptateur fonctionne selon deux modes différents :
mode de transfert(IO0).
La carte comporte une DEL rouge associée à la sortie 33. Pour la faire clignoter :
void setup() { pinMode(33, OUTPUT); } void loop() { digitalWrite(33, HIGH); delay(1500); digitalWrite(33, LOW); delay(500); }
Pour que clignote la DEL servant de flash :
void setup() { pinMode(4, OUTPUT); } void loop() { digitalWrite(4, HIGH); delay(1500); digitalWrite(4, LOW); delay(500); }
Ici, la carte se comporte en point d'accès Wi-Fi, au lieu de se connecter à un point d'accès Wi-Fi comme précédemment. L'exemple est repris et modifié, sont changées les lignes 18 à 19 et 87 à 94. Le mot de passe défini à la ligne 19 comporte 8 caractères au minimum.
#include "esp_camera.h" #include <WiFi.h> // // WARNING!!! Make sure that you have either selected ESP32 Wrover Module, // or another board which has PSRAM enabled // // Select camera model //define CAMERA_MODEL_WROVER_KIT //#define CAMERA_MODEL_ESP_EYE //#define CAMERA_MODEL_M5STACK_PSRAM //#define CAMERA_MODEL_M5STACK_WIDE #define CAMERA_MODEL_AI_THINKER #include "camera_pins.h" const char* ssid = "Robot"; const char* password = "123456789"; IPAddress local_ip(192,168,0,111); IPAddress gateway(192,168,0,111); IPAddress subnet(255,255,255,0); void startCameraServer(); void setup() { Serial.begin(115200); Serial.setDebugOutput(true); Serial.println(); 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; //init with high specs to pre-allocate larger buffers if(psramFound()){ config.frame_size = FRAMESIZE_UXGA; config.jpeg_quality = 10; config.fb_count = 2; } else { config.frame_size = FRAMESIZE_SVGA; config.jpeg_quality = 12; config.fb_count = 1; } #if defined(CAMERA_MODEL_ESP_EYE) pinMode(13, INPUT_PULLUP); pinMode(14, INPUT_PULLUP); #endif // camera init esp_err_t err = esp_camera_init(&config); if (err != ESP_OK) { Serial.printf("Camera init failed with error 0x%x", err); return; } sensor_t * s = esp_camera_sensor_get(); //initial sensors are flipped vertically and colors are a bit saturated if (s->id.PID == OV3660_PID) { s->set_vflip(s, 1);//flip it back s->set_brightness(s, 1);//up the blightness just a bit s->set_saturation(s, -2);//lower the saturation } //drop down frame size for higher initial frame rate s->set_framesize(s, FRAMESIZE_QVGA); #if defined(CAMERA_MODEL_M5STACK_WIDE) s->set_vflip(s, 1); s->set_hmirror(s, 1); #endif Serial.println(""); Serial.print("Configuration en point d'accès Wifi ... "); WiFi.mode(WIFI_AP); WiFi.softAPConfig(local_ip, gateway, subnet); WiFi.softAP(ssid, password); Serial.print("Adresse IP du point d'accès Wifi : "); Serial.println(WiFi.softAPIP()); startCameraServer(); } void loop() { // put your main code here, to run repeatedly: delay(10000); }
Taper l'adresse IP du serveur web dans la barre d'adresse d'un navigateur.
Penser à cliquer sur le bouton Start Stream
en bas à gauche de la page web...
La vidéo s'affiche seule en tapant http://192.168.0.111:81/stream
.