ESP32 CAM watchdog
ESP32 CAM watchdog
Zdravím
Je na modulu ESP32 CAM Watchdog ? na https://www.youtube.com/watch?v=C2xF3O6qkbg je popis že je na ESP32 je ale nevím jestli je i na tomto modulu ESP32 CAM ?.Abych to vysvětlil proč to tam potřebuji mám 15 km daleko tento modul který posílá fotky na můj web někdy se to zasekne a já bych potřeboval něco aby se to resetovalo, 15 km tam nepůjdu abych zmáčkl resetovací tlačítko díky
Je na modulu ESP32 CAM Watchdog ? na https://www.youtube.com/watch?v=C2xF3O6qkbg je popis že je na ESP32 je ale nevím jestli je i na tomto modulu ESP32 CAM ?.Abych to vysvětlil proč to tam potřebuji mám 15 km daleko tento modul který posílá fotky na můj web někdy se to zasekne a já bych potřeboval něco aby se to resetovalo, 15 km tam nepůjdu abych zmáčkl resetovací tlačítko díky
Re: ESP32 CAM watchdog
Watchdog je přímo zabudován v mikrokontroléru. Dokonce běží na vlastních "hodinách". Musíš ho správně nastavit a v programu ho neustále nulovat. Pokud přeteče, resetne mikrokontrolér.
Nebo jsou watchdogové čipy. Je to v podstatě čítač s vlastním hodinovým signálem, který musíš neustále mikrokontrolérem mazat. Pokud ho "nestihneš" smazat v určitém časovém limitu, tak ti přes resetovací pin umí zresetovat mikrokontrolér.
Otázkou je i proč se zasekává? Program se zasekne pokud je v něm chyba, nebo tam tu chybu něco občas zanese.
Nebo jsou watchdogové čipy. Je to v podstatě čítač s vlastním hodinovým signálem, který musíš neustále mikrokontrolérem mazat. Pokud ho "nestihneš" smazat v určitém časovém limitu, tak ti přes resetovací pin umí zresetovat mikrokontrolér.
Otázkou je i proč se zasekává? Program se zasekne pokud je v něm chyba, nebo tam tu chybu něco občas zanese.
Re: ESP32 CAM watchdog
Já když jsem to měl doma tak asi za čtyři měsíce se to zaseklo třikrát a tam to co mám za týden už po druhé nevím čím to ? díky
Re: ESP32 CAM watchdog
Pokud to není tvůj kód zkus pohledat jestli někdo neměl obdobný problém ... Bez kódu ti tu nikdo neporadí a zapnutí watchdogu tvůj problém "vyřeší"
Re: ESP32 CAM watchdog
Ten pochopitelně dodám zdroják ale nejsem teď na kompu kde mám arduino a projekty.Uvažuji nahlas já mám doma ten modul tak metr a půl od routeru přímá viditelnost, tam to je přes dvě zdi a vzdálenost tak asi 3 metry že by toto byl ten problém? zajímavé je že to chvíli- den funguje.Já mám i projekt ESP8266 který pomocí čidla teploty provede php skript kde ukládá hodnoty
18.37%=Temp,3.52%=Volt,-53%=dB pochopitelně jde mi o to to síla signálu wifi RSSI() -53% to bych musel nějak připsat díky
18.37%=Temp,3.52%=Volt,-53%=dB pochopitelně jde mi o to to síla signálu wifi RSSI() -53% to bych musel nějak připsat díky
-
- Příspěvky: 579
- Registrován: 01 srp 2017, 19:29
- Reputation: 0
- Bydliště: Poprad
- Kontaktovat uživatele:
Re: ESP32 CAM watchdog
Posielaš to PHP scriptu v takomto formáte?
To je dosť nevhodné, keďže percentá sa používajú pri encodingu špeciálnych znakov, ktoré môže payload nadobúdať, najmä pri texte, diakritike v znakoch a podobne.
Taktiež položku dB so silou prijatého signálu (RSSI) zrejme nemáš správne pomenovanú.
Keďže RSSI je vyjadrené v jednotkách dBm, ktorá nadobúda hodnoty 0 až -110.
0 znamená výborný signál, -110 minimálny, resp. žiadny signál.
Teda -53 dBm neznamená -53% signálu, ale v prepočte to bude cca 51% sila signálu, ak by bol rozsah väčší, videl by si tam vyššiu chybu.
Ak by si to chcel z toho rozsahu vyjadriť v percentách môžeš nato využiť napríklad funkciu map() v Arduino IDE.
Kód: Vybrat vše
void setup()
{
int myRSSI = -35;
int val = map(myRSSI, -110, 0, 0, 100);
Serial.println(val);
}
Re: ESP32 CAM watchdog
Kód: Vybrat vše
/*
* ESP32cam_ftp
* Blog: http://www.gsampallo.com/blog/?p=686
* Twitter: @gsampallo.com
*/
#if defined(ESP8266)
#include <ESP8266WiFi.h> //ESP8266 Core WiFi Library
#else
#include <WiFi.h> //ESP32 Core WiFi Library
#endif
#if defined(ESP8266)
#include <ESP8266WebServer.h> //Local WebServer used to serve the configuration portal
#else
#include <WebServer.h> //Local DNS Server used for redirecting all requests to the configuration portal ( https://github.com/zhouhan0126/DNSServer---esp32 )
#endif
#include <DNSServer.h> //Local WebServer used to serve the configuration portal ( https://github.com/zhouhan0126/DNSServer---esp32 )
#include <WiFiManager.h> // WiFi Configuration Magic ( https://github.com/zhouhan0126/DNSServer---esp32 ) >> https://github.com/zhouhan0126/DNSServer---esp32 (ORIGINAL)
#include "esp_camera.h"
#include "soc/soc.h" // Disable brownour problems
#include "soc/rtc_cntl_reg.h" // Disable brownour problems
#include "driver/rtc_io.h"
#include <WiFi.h>
#include <WiFiClient.h>
#include "ESP32_FTPClient.h"
#include <WiFiManager.h>
#include <NTPClient.h> //For request date and time
#include <WiFiUdp.h>
#include "time.h"
unsigned long TimeStamp;
const int interval = 1;// minuty
const unsigned long SamplingTime = 60000 * interval;
char ftp_server[] = "******************";
char ftp_user[] = "*************";
char ftp_pass[] = "*********";
char ftp_path[] = "******/";
const char* WIFI_SSID = "*******";
const char* WIFI_PASS = "******";
//const char* WIFI_SSID = "********";
//const char* WIFI_PASS = "**********"
const int PIN_AP = 2;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", (3600), 60000);
ESP32_FTPClient ftp (ftp_server,ftp_user,ftp_pass, 5000, 2);
// Pin definition for 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
camera_config_t config;
void setup() {
pinMode(33, OUTPUT);
digitalWrite(33, LOW);
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
Serial.begin(115200);
pinMode(PIN_AP, INPUT);
//declaração do objeto wifiManager
if ( digitalRead(PIN_AP) == LOW ) {
WiFiManager wifiManager;
wifiManager.startConfigPortal("OnDemandAP");
Serial.println("connected...yeey :)");
}
//WiFi.begin(WIFI_SSID, WIFI_PASS);
WiFi.begin();
//WiFi.begin();
Serial.println("Connecting Wifi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("Connecting to WiFi..");
}
digitalWrite(33, HIGH);
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
Serial.println(" WiFI Manager ON na leve strane v rade prvni pin 5V -predposleni PIN spojeni se zemi");
initCamera();
timeClient.begin();
timeClient.update();
// Serial.println(timeClient.getFormattedTime());
//ftp.OpenConnection();
}
void loop() {
if (((millis() - TimeStamp) > SamplingTime) && (WiFi.status() == WL_CONNECTED)) {
TimeStamp=millis();
//if ((millis() > SamplingTime) && ((millis() - SamplingTime) > TimeStamp) && (WiFi.status() == WL_CONNECTED)) {
timeClient.update();
//WifiManager();
takePhoto();
digitalWrite(33, HIGH);
//delay(100000);
}
}
void initCamera() {
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;
if(psramFound()){
config.frame_size = FRAMESIZE_UXGA;//FRAMESIZE_UXGA; // FRAMESIZE_ + QVGA|CIF|VGA|SVGA|XGA|SXGA|UXGA
config.jpeg_quality = 10;
config.fb_count = 2;
} else {
config.frame_size = FRAMESIZE_UXGA;
config.jpeg_quality = 12;
config.fb_count = 1;
}
// Init Camera
esp_err_t err = esp_camera_init(&config);
if (err != ESP_OK) {
Serial.printf("Camera init failed with error 0x%x", err);
return;
}
}
void WifiManager(){
pinMode(PIN_AP, INPUT);
//declaração do objeto wifiManager
if ( digitalRead(PIN_AP) == LOW ) {
WiFiManager wifiManager;
wifiManager.startConfigPortal("OnDemandAP");
Serial.println("connected...yeey :)");
}
}
void takePhoto() {
ftp.OpenConnection();
camera_fb_t * fb = NULL;
// Take Picture with Camera
fb = esp_camera_fb_get();
if(!fb) {
Serial.println("Camera capture failed");
return;
}
/*
* Upload to ftp server
*/
ftp.ChangeWorkDir(ftp_path);
ftp.InitFile("Type I");
String nombreArchivo = "picture.jpg";
// timeClient.getFormattedTime()+".jpg"; // AAAAMMDD_HHMMSS.jpg
Serial.println("Nahravani "+nombreArchivo);
int str_len = nombreArchivo.length() + 1;
char char_array[str_len];
nombreArchivo.toCharArray(char_array, str_len);
ftp.NewFile(char_array);
ftp.WriteData( fb->buf, fb->len );
ftp.CloseFile();
/*
* Free
*/
esp_camera_fb_return(fb);
}
Re: ESP32 CAM watchdog
Ještě mi napadlo jestli na tom pinu 10 nemusí být pull-up resistors který definuje logickou 1 nebo jestli se nedá zapojit vnitřně jestli není taková možnost? nemám čas studovat datasit té desky díky
Re: ESP32 CAM watchdog
Kód: Vybrat vše
if (((millis() - TimeStamp) > SamplingTime) && (WiFi.status() == WL_CONNECTED)) { // tohle mě zaujalo - pokud vypadne wifi, nikdy se ti nic nespustí
Kód: Vybrat vše
if((millis() - TimeStamp) > SamplingTime){
if(WiFi.status() == WL_CONNECTED)){
TimeStamp=millis();
...
...
...
} else {
// není wifi - připoj se na wifi
}
}
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů