ESP32-Cam má vestavěnou diodu, jako zdroj světla pro přisvícení obrazu. Zde je návod, jak rozšířit ovládací software o přepínač pro zapnutí/vypnutí diody.
Nevýhodou je to, že se jedná a DPS diodu, která je přímo na desce ESP a tudíž, pokud chceme desku dát do krabičky, je nám k ničemu. Další nevýhodou je, že se dioda extrémně zahřívá a lze se o ní spálit. Lze tedy využít externě připojenou diodu. Tato dioda je připojena piny, ke kterým je připojená i interní DPS dioda tj. GPIO 4.
Upravíme kód v jednotlivých souborech následujícím způsobem.
V první řadě upravíme výchozí soubor CameraWebServerAccessPoint.ino. Do funkce setup()
přidáme definici GPIO (řádek 90).
...
WiFi.softAP(ssid, password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
startCameraServer();
//GPIO output LED flashlight
pinMode (4, OUTPUT);
...
Dále upravíme soubor app_http.cpp. Přidáme proměnou pro kontrolu diody.
- 0 je OFF
- 1 je ON
Definice kontrolní proměnné (řádek 68).
...
static face_id_list id_list = {0};
//LED flashlight control variable
static int8_t flash_enabled = 0;
static ra_filter_t * ra_filter_init(ra_filter_t * filter, size_t sample_size){
...
Ve funkci cmd_handler()
přidáme podmínku pro test proměnné flash_enabled
(řádek 535).
- Jestliže je proměnná
flash_enabled
TRUE, potom LED svítí - Pro vypnutou LED je
flash_enabled
FALSE
...
else if(!strcmp(variable, "face_recognize")) {
recognition_enabled = val;
if(recognition_enabled){
detection_enabled = val;
}
}
//LED flash control process
else if(!strcmp(variable, "flash_enabled")) {
flash_enabled = val;
if(flash_enabled){
digitalWrite(4, HIGH); //LED ON
} else{
digitalWrite(4, LOW); //LED OFF
}
}
else {
res = -1;
}
...
Do funkce status_handler()
se provádí aktualizace proměnné flash_enabled
(řádek 594).
...
p+=sprintf(p, ""face_recognize":%u,", recognition_enabled);
//LED flash control from HTML commands
p+=sprintf (p,""Flash_enabled":% u ", flash_enabled);
p+=sprintf(p, ""cam_name":"%s",", myName);
...
Posledním souborem pro úpravu je camera_index.h, který obsahuje html rozhraní pro ovládání funkcionalit kamery. Do html kódu se přidá zaškrtávací políčko pro ovládání LED (řádek 590).
...
<div class="container">
<!-- LED flash ON/OFF control for the switch from here //-->
<div class="input-group" id="flash_light-group">
<label for="flash_enabled">Flash Light</label>
<div class="switch">
<input id="flash_enabled" type="checkbox" class="default-action">
<label class="slider" for="flash_enabled"></label>
</div>
</div>
<!-- switch to here for the LED flash ON/OFF control //-->
<button id="get-still">Get Still</button>
<button id="toggle-stream">Start Stream</button>
</div>
...
Jak bylo uvedeno v úvodu, DPS dioda se poměrně dost zahřívá. Proto, pokud se použije externí dioda, může být DPS odstraněna. Stačí je odloupnout z ESP desky.