Go Down

Topic: Crash ESP32 SIM800 (Read 241 times) previous topic - next topic

slayes

Bonjour à tous,

J'utilise un ESP32 Sim800 pour faire le lien entre mon server est mes capteurs (ESP8266).
3 à 4 fois par jour l'ESP plante et redémarre, le backtrace indique un plantage dans la lib et ne donne pas de position dans mon code.
Avec des affichage via Serial.print, je peux voir que mon app plante à la ligne du << modem.restart()>>

J'ai mis ce bou de code, qui commence à <<if (!modem.sGrpsConnected()....>>, car la connection ne reste pas active tout le temps et je n'ai pas trouvé de paramètre pour faire une auto-reconnection.

Code: [Select]
void OnDataRecv(const uint8_t * mac, const uint8_t *incomingData, int len) {
  memcpy(&myData, incomingData, sizeof(myData));
  sprintf(senderMacAddress, "%02x:%02x:%02x:%02x:%02x:%02x",mac[0], mac[1], mac[2], mac[3], mac[4],mac[5]);
  Serial.println(String("Réception d'une requête de : ") + senderMacAddress + " / Voltage : " + myData.vcc);

  if (!modem.isGprsConnected()) {
    Serial.print("GRPS déconnecté >> reconnection ... ");
    setupModem();
    Serial.print("setupModem : ok ... ");
    modem.restart();
    Serial.print("modem.restart : ok ... ");
    if (!modem.gprsConnect(apn)) {
      Serial.print("check modem.gprsConnect(apn) : ok ... ");
      Serial.println("échec.");
      delay(10000);
      return;
    }
    Serial.println("succès.");
    delay(1000);
  }


Code: [Select]
Backtrace :

Decoding stack results
0x4008cbf8: invoke_abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c line 155
0x4008ce29: abort at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/panic.c line 170
0x400d77cf: task_wdt_isr at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/task_wdt.c line 174
0x4008a8cf: vTaskDelay at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/tasks.c line 1484
0x400d44f5: delay at C:\Users\xxxxxxxxxxxxxHome\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\cores\esp32\esp32-hal-misc.c line 144
0x400d1229: TinyGsmSim800::waitResponse(unsigned int, String&, char const*, char const*, char const*, char const*, char const*) at C:\Users\xxxxxxxxxxxxxHome\Documents\Arduino\libraries\TinyGSM\src/TinyGsmClientSIM800.h line 639
0x400d168d: TinyGsmSim800::waitResponse(unsigned int, char const*, char const*, char const*, char const*, char const*) at C:\Users\xxxxxxxxxxxxxHome\Documents\Arduino\libraries\TinyGSM\src/TinyGsmClientSIM800.h line 736
0x400d1e72: TinyGsmSim800::restartImpl() at C:\Users\xxxxxxxxxxxxxHome\Documents\Arduino\libraries\TinyGSM\src/TinyGsmClientSIM800.h line 258
0x400d275a: OnDataRecv(unsigned char const*, unsigned char const*, int) at C:\Users\xxxxxxxxxxxxxHome\Documents\Arduino\libraries\TinyGSM\src/TinyGsmModem.tpp line 57
0x4008930d: vPortTaskWrapper at /home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/freertos/port.c line 143


Si quelqu'un à une idée de l'origine de mon problème .....

Merci par avance ;)

al1fch

#1
Sep 04, 2020, 06:40 pm Last Edit: Sep 04, 2020, 06:46 pm by al1fch
Bonjour

Carte Esp32 TTGO CALL  ?  Si oui quelle version ? Montage perso ESP32+SIM800 ?

Le redémarrage du ?module SIM800 sollicite fortement  l'alimentation. Celle-ci a peut etre du mal a fournir les pics  de courant élevés a cette phase du fonctionnement.

Quel message de redémarrage est affiché juste avant Backtrace ?

lesept

Je pense aussi que c'est un problème de puissance d'alimentation. Peux-tu expliquer comment tout ça est alimenté.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

slayes

Merci pour vos réponses

@al1fch :j'ai acheté la version "TTGO T-Call V1.3 ESP32 Module sans Fil GPRS Antenne Carte SIM Module SIM800L"
Code: [Select]
Réception d'une requête de : 4a:3f:da:58:8a:13 / Voltage : 3.21
14:30:30.730 -> GRPS déconnecté >> reconnection ... setupModem : ok ... E (22477614) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
14:30:36.858 -> E (22477614) task_wdt:  - IDLE0 (CPU 0)
14:30:36.858 -> E (22477614) task_wdt: Tasks currently running:
14:30:36.858 -> E (22477614) task_wdt: CPU 0: wifi
14:30:36.858 -> E (22477614) task_wdt: CPU 1: loopTask
14:30:36.858 -> E (22477614) task_wdt: Aborting.
14:30:36.858 -> abort() was called at PC 0x400d77cf on core 0
14:30:36.858 ->


@lesept :J'avais pensé à un problème d'alim après avoir tenté d'alimenter l'ESP avec un vieux chargeur de téléphone (j'avais beaucoup plus de plantage). J'ai utilisé 6 ou 7 sources d'alim différentes (différents chargeurs USB, powerbank, port usb PC, chargeur laptop avec port usb intégré), mais toujours ~3 ou 4 reboot par jour.

lesept

Si c'est un problème de watchdog, ilfaut identifier l'endroit où ça plante et ajouter un yield() pour voir si ça arrange les choses.

yield est équivalent à delay(1), ça laisse la main au cœur numéro 1 en charge des communications sans fil. S'il n'a pas assez souvent la main, par exemple car l'autre processeur prend toutes les ressources trop longtemps, le watchdog se déclenche.
A force d'essayer on finit par réussir... Donc, plus ça rate, plus on a de chances que ça marche (proverbe Sharduinok).

al1fch

#5
Sep 06, 2020, 12:04 pm Last Edit: Sep 06, 2020, 12:22 pm by al1fch
Bonjour

je pense également qu'il faut regarder à la loupe le code effectuant la reconnection , quelque chose de bloquant pourrait s'y trouver qui perturbe  FreeRTOS et l'empêche d'assurer la coopération des tâches réparties sur les deux coeurs.

Voir içi les réponses   https://esp32.com/viewtopic.php?t=14477

slayes

#6
Sep 07, 2020, 08:25 am Last Edit: Sep 07, 2020, 08:30 am by slayes
J'ai tenté d'ajouter yield aux endroits stragégiques dans mon code, sans succès.

Si je comprend bien, vous me conseillez de jeter un coup d'oeil dans la lib du modem pour chercher une anomalie ? (TinyGsmClient)

al1fch

#7
Sep 07, 2020, 08:42 am Last Edit: Sep 07, 2020, 09:08 am by al1fch
Oui

La déconnection qui se produit de temps à autres est-elle une déconnection du réseau téléphonique,  du serveur distant.... autre....?  

Est-il indispensable de lancer modem.restart ?   (je ne connais pas la librairie utilisée...)



slayes

2 à 3 fois par jours, le modem n'est plus connecté sur le réseau GPRS (modem.isGprsConnected()). J'ai tenté de le reconnecter sans succès, c'est pourquoi j'essaie de le redémarrer.

Je viens de recompiler en activant le DEBUG pour avoir plus d'info. C'est juste un peu long, il faut attendre le prochain plantage ......

Go Up