ESP32 CAM watchdog

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

ESP32 CAM watchdog

Příspěvek od visk52 » 18 bře 2022, 12:01

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 :)

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: ESP32 CAM watchdog

Příspěvek od kiRRow » 18 bře 2022, 15:05

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.

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: ESP32 CAM watchdog

Příspěvek od kiRRow » 18 bře 2022, 15:11


Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM watchdog

Příspěvek od visk52 » 19 bře 2022, 13:50

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é :shock: nevím čím to ? díky

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: ESP32 CAM watchdog

Příspěvek od kiRRow » 20 bře 2022, 07:02

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ší"

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM watchdog

Příspěvek od visk52 » 20 bře 2022, 10:43

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

martinius96
Příspěvky: 579
Registrován: 01 srp 2017, 19:29
Reputation: 0
Bydliště: Poprad
Kontaktovat uživatele:

Re: ESP32 CAM watchdog

Příspěvek od martinius96 » 20 bře 2022, 21:30

visk52 píše:
20 bře 2022, 10:43
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
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);
}

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM watchdog

Příspěvek od visk52 » 23 bře 2022, 11:49

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); 
}
Tak konečně jsem se dostal k tomu ,mimochodem nechybí tam reconnect wifi? to vím zase odjinut :oops: díky předem za pomoc já jsem teď tak hektické době v osobním životě že mi jde hlava kolem :o

Uživatelský avatar
visk52
Příspěvky: 146
Registrován: 29 led 2020, 15:51
Reputation: 0

Re: ESP32 CAM watchdog

Příspěvek od visk52 » 23 bře 2022, 12:44

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

Uživatelský avatar
kiRRow
Příspěvky: 1151
Registrován: 07 kvě 2019, 07:03
Reputation: 0
Bydliště: Opava

Re: ESP32 CAM watchdog

Příspěvek od kiRRow » 23 bře 2022, 14:45

Kód: Vybrat vše

if (((millis() - TimeStamp) > SamplingTime) && (WiFi.status() == WL_CONNECTED)) { // tohle mě zaujalo - pokud vypadne wifi, nikdy se ti nic nespustí
rozděl to takhle nějak

Kód: Vybrat vše

if((millis() - TimeStamp) > SamplingTime){
	if(WiFi.status() == WL_CONNECTED)){
		TimeStamp=millis();
		...
		...
		...
	} else {
		// není wifi - připoj se na wifi
		
	}
}

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 11 hostů