Blog
Erreurs de code ESP32 : conversions, compilations
Erreurs de conversion, messages de panique et croquis qui compilent mais mentent — le texte d’erreur de l’ESP32 est laconique, mais chaque message pointe vers un correctif précis. Ce que signifient les erreurs courantes et quoi changer en premier.
Impossible de convertir bytearray en int sur ESP32 ?
En MicroPython, int.from_bytes(bytes, ‘little’) est la fonction que vous cherchez — un bytearray est un itérable d’octets, pas un nombre. En C, la même forme d’erreur signifie que vous assignez un tableau uint8_t à un int ; copiez la valeur à la place. Cherchez « can’t convert bytearray to int esp32 » et la moitié des fils sont de l’analyse UART MicroPython, l’autre moitié de la lecture de structs en C. Collez le croquis fautif dans le simulateur MCP et il exécute l’erreur pour vous.
Que signifie « Guru Meditation Error » ?
C’est l’en-tête de panique — la puce a rencontré une exception et a imprimé une backtrace avant de se réinitialiser. Le texte qui suit, comme « core 1 panic » plus une adresse, vous dit où. Les lignes de backtrace sont les fonctions qui tournaient ; lisez depuis le bas, parce que la panique se déclenche à la dernière fonction appelée.
Comment décoder une backtrace ?
Collez les adresses dans addr2line, ou laissez l’outil le faire — idf.py monitor décode automatiquement, et PlatformIO fait pareil. Une ligne résolue comme 0x400d1234: loop() at sketch.ino:42 nomme l’endroit exact. Dans l’IDE Arduino, vous décodez à la main.
Pourquoi mon ESP32 redémarre-t-il en boucle ?
Lisez la dernière sortie série — la puce imprime pourquoi elle est morte, à chaque fois. Une boucle de redémarrage est une panique, un brown-out ou un reset du chien de garde, et le message dit lequel. Le brown-out veut une meilleure alimentation ; le chien de garde veut une tâche qui cède la main. La FAQ débogage sépare les trois cas par symptôme.
C’est quoi « exit status 1 » ?
C’est l’enveloppe générique d’échec de compilation d’Arduino — la vraie erreur se trouve quelques lignes au-dessus, en général la première ligne « error: ». Corrigez la première erreur et la cascade se dissout en général. « exit status 1 » tout seul n’est jamais le problème ; c’est le résumé. Si l’erreur pointe vers un en-tête que vous n’avez jamais touché, mettez à jour la bibliothèque.
Pourquoi mon entier est-il toujours zéro après la lecture d’un capteur ?
Trois causes classiques : la division entière (5/2 vaut 2 en C), la lecture de l’ADC avant qu’il ne se stabilise, et le texte série qui arrive comme « 42n » que atoi() lit mal. Affichez la valeur brute d’abord — elle répond laquelle en dix secondes. J’ai brûlé une heure là-dessus avec un DHT22 le mois dernier.
Pourquoi toInt() renvoie-t-il 0 sur une entrée valide ?
toInt() échoue en silence — déchets en entrée, zéro en sortie, aucune erreur. Vérifiez la chaîne avec isDigit() ou découpez-la d’abord ; un saut de ligne final la casse plus souvent qu’autrement. La même chose s’applique à atoi() en C : validez la chaîne avant de faire confiance au nombre.
C’est quoi un débordement de pile sur l’ESP32 ?
C’est le canari — la puce détecte la corruption de pile et panique avec « stack canary » dans la trace. La récursion profonde et les gros tableaux locaux en sont la source habituelle ; déplacez les tampons en statique ou en tas, et augmentez la taille de pile dans xTaskCreate. La FAQ sur l’intérieur de la puce cartographie le layout mémoire qui explique pourquoi.
Erreur de compilation contre erreur de liaison — quelle différence ?
Les erreurs de compilation vivent dans un seul fichier : syntaxe, types, noms non déclarés. Les erreurs de liaison sont des pièces manquantes : « undefined reference to » signifie que la fonction n’existe nulle part ou que la bibliothèque n’est pas liée. Le premier mot de la ligne d’erreur vous dit la phase, et la phase vous dit où chercher.
Pourquoi l’erreur pointe-t-elle vers une ligne qui semble correcte ?
En pratique, les compilateurs rapportent là où ils ont remarqué, pas où le problème a commencé — en général une accolade ou un point-virgule manquant plusieurs lignes au-dessus. Remontez depuis la ligne marquée, et activez la sortie verbeuse de l’IDE pour voir la chaîne complète.
Les projets de ce sujet s’exécutent directement dans le simulateur gratuit de sensbench : circuit pré-câblé, firmware inclus, sans compte ni installation.