Errore compilazione ESP8266

Ciao a tutti, ho deciso di fare un po' di prove con il modulino ESP-01. IDE 1.8.19, nelle URL aggiuntive ho inserito: http://arduino.esp8266.com/stable/package_esp8266com_index.json
Da gestore schede ho aggiunto ESP8266 v.3.1.2 e selezionato la scheda Generic ESP8266 module, senza modificare alcun parametro.
Dagli esempi specifici ho caricato il Blink, ma mi dà errore di compilazione, quindi c'è un problema software. Ho provato a cercare ma il poco che ho trovato mi conferma che la procedura seguita è esatta.
La scheda l'ho inserita su un adattatore USB specifico, al quale ho aggiunto un tastino per la programmazione, ma tanto se non compila è inutile che tenti di caricare lo sketch.
Sapete darmi qualche indicazione?

Miché, se magari ci dici che errore di compilazione ti da ... :roll_eyes:

Guglielmo

Giusto :sweat_smile:

Arduino:1.8.19 (Windows 10), Scheda:"Generic ESP8266 Module, 80 MHz, Flash, Disabled (new aborts on oom), Disabled, All SSL ciphers (most compatible), 32KB cache + 32KB IRAM (balanced), Use pgm_read macros for IRAM/PROGMEM, dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 1MB (FS:64KB OTA:~470KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\arduino-builder -dump-prefs -logger=machine -hardware G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\hardware -hardware G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages -tools G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\tools-builder -tools G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\hardware\tools\avr -tools G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages -built-in-libraries G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\libraries -libraries G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\sketchbook\libraries -fqbn=esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=40,FlashMode=dout,eesz=1M64,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 -ide-version=10819 -build-path C:\Users\Michele\AppData\Local\Temp\arduino_build_679372 -warnings=none -build-cache C:\Users\Michele\AppData\Local\Temp\arduino_cache_950281 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.mkspiffs.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\mkspiffs\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.mkspiffs-3.1.0-gcc10.3-e5f9fec.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\mkspiffs\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.xtensa-lx106-elf-gcc-3.1.0-gcc10.3-e5f9fec.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.python3.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\python3\3.7.2-post1 -prefs=runtime.tools.python3-3.7.2-post1.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\python3\3.7.2-post1 -prefs=runtime.tools.mklittlefs.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\mklittlefs\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.mklittlefs-3.1.0-gcc10.3-e5f9fec.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\mklittlefs\3.1.0-gcc10.3-e5f9fec -verbose G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\hardware\esp8266\3.1.2\libraries\esp8266\examples\Blink\Blink.ino

G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\arduino-builder -compile -logger=machine -hardware G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\hardware -hardware G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages -tools G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\tools-builder -tools G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\hardware\tools\avr -tools G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages -built-in-libraries G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\libraries -libraries G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\sketchbook\libraries -fqbn=esp8266:esp8266:generic:xtal=80,vt=flash,exception=disabled,stacksmash=disabled,ssl=all,mmu=3232,non32xfer=fast,ResetMethod=nodemcu,CrystalFreq=26,FlashFreq=40,FlashMode=dout,eesz=1M64,led=2,sdk=nonosdk_190703,ip=lm2f,dbg=Disabled,lvl=None____,wipe=none,baud=115200 -ide-version=10819 -build-path C:\Users\Michele\AppData\Local\Temp\arduino_build_679372 -warnings=none -build-cache C:\Users\Michele\AppData\Local\Temp\arduino_cache_950281 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.mkspiffs.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\mkspiffs\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.mkspiffs-3.1.0-gcc10.3-e5f9fec.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\mkspiffs\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.xtensa-lx106-elf-gcc.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.xtensa-lx106-elf-gcc-3.1.0-gcc10.3-e5f9fec.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.python3.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\python3\3.7.2-post1 -prefs=runtime.tools.python3-3.7.2-post1.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\python3\3.7.2-post1 -prefs=runtime.tools.mklittlefs.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\mklittlefs\3.1.0-gcc10.3-e5f9fec -prefs=runtime.tools.mklittlefs-3.1.0-gcc10.3-e5f9fec.path=G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\tools\mklittlefs\3.1.0-gcc10.3-e5f9fec -verbose G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\hardware\esp8266\3.1.2\libraries\esp8266\examples\Blink\Blink.ino

Using board 'generic' from platform in folder: G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\hardware\esp8266\3.1.2

Using core 'esp8266' from platform in folder: G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\hardware\esp8266\3.1.2

"G:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" -I "G:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/mkbuildoptglobals.py" "G:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19" 10819 "C:\\Users\\Michele\\AppData\\Local\\Temp\\arduino_build_679372" "C:\\Users\\Michele\\AppData\\Local\\Temp\\arduino_build_679372/core/build.opt" "G:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2\\libraries\\esp8266\\examples\\Blink/Blink.ino.globals.h" "G:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2\\cores\\esp8266/CommonHFile.h"

default_encoding:       cp1252

Assume aggressive 'core.a' caching enabled.

Clean build, created dir C:\Users\Michele\AppData\Local\Temp\arduino_build_679372\core

Note: optional global include file 'G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\hardware\esp8266\3.1.2\libraries\esp8266\examples\Blink\Blink.ino.globals.h' does not exist.

  Read more at https://arduino-esp8266.readthedocs.io/en/latest/faq/a06-global-build-options.html

Detecting libraries used...

"G:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\3.1.0-gcc10.3-e5f9fec/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ -D_GNU_SOURCE -DESP8266 "@C:\\Users\\Michele\\AppData\\Local\\Temp\\arduino_build_679372/core/build.opt" "-IG:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sdk/include" "-IG:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sdk/lwip2/include" "-IG:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\Michele\\AppData\\Local\\Temp\\arduino_build_679372/core" -c "@G:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2/tools/warnings/none-cppflags" -Os -g -free -fipa-pta -Werror=return-type -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++17 -ffunction-sections -fdata-sections -fno-exceptions -DMMU_IRAM_SIZE=0x8000 -DMMU_ICACHE_SIZE=0x8000 -w -x c++ -E -CC -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10819 -DARDUINO_ESP8266_GENERIC -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_GENERIC\"" "-DARDUINO_BOARD_ID=\"generic\"" -DLED_BUILTIN=2 -DFLASHMODE_DOUT "-IG:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2\\cores\\esp8266" "-IG:\\Documenti\\My eBooks\\Elettronica\\Arduino\\Software\\arduino-1.8.19\\portable\\packages\\esp8266\\hardware\\esp8266\\3.1.2\\variants\\generic" "C:\\Users\\Michele\\AppData\\Local\\Temp\\arduino_build_679372\\sketch\\Blink.ino.cpp" -o nul

Alternatives for bits/c++config.h: []

ResolveLibrary(bits/c++config.h)

  -> candidates: []

In file included from g:\documenti\my ebooks\elettronica\arduino\software\arduino-1.8.19\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.1.0-gcc10.3-e5f9fec\xtensa-lx106-elf\include\c++\10.3.0\stdlib.h:36,

                 from G:\Documenti\My eBooks\Elettronica\Arduino\Software\arduino-1.8.19\portable\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/Arduino.h:27,

                 from C:\Users\Michele\AppData\Local\Temp\arduino_build_679372\sketch\Blink.ino.cpp:1:

g:\documenti\my ebooks\elettronica\arduino\software\arduino-1.8.19\portable\packages\esp8266\tools\xtensa-lx106-elf-gcc\3.1.0-gcc10.3-e5f9fec\xtensa-lx106-elf\include\c++\10.3.0\cstdlib:41:10: fatal error: bits/c++config.h: No such file or directory

   41 | #include <bits/c++config.h>

      |          ^~~~~~~~~~~~~~~~~~

compilation terminated.

exit status 1

Errore durante la compilazione per la scheda Generic ESP8266 Module.


Dice che non trova il config.h...
Google: Arduino <bits/c++config.h>:

Grazie, ho provato ma niente da fare, ho anche cancellato l'intera cartella portable e ripetuto da zero l'operazione ma ottengo sempre lo stesso errore. Ora provo con la versione 1.8.15.
EDIT: niente da fare, proprio non ne vuole sapere. :pensive:

Ho seguito il percorso dell'errore, ho aperto il file cstdlib, che contiene questa riga:
#include <bits/c++config.h>

e in effetti nella cartella bits questo file c++config.h non esiste. Ho riprovato a eliminare le board e le impostazioni, chiudere l'IDE, svuotare il file preferences.txt, riaprire e reinstallare tutto, ma l'errore persiste. Settando la board Arduino UNO compila qualsiasi file, per ulteriore conferma.

AGGIORNAMENTO: Cercando tra i tanti post, ne ho trovato uno riferito a Windows XP che attribuiva l'errore al percorso troppo lungo del file preferences.txt. Io ho Windows 10 PRO, ma ho voluto provare lo stesso, copiando l'intera cartella IDE 1.8.19 sul DESKTOP, ho nuovamente azzerato e reinstallato tutto e finalmente compila!
Ora però voglio capire se riesco a risolvere nel percorso originale, perché sinceramente non mi garba di tenere l'IDE sul Desktop. Intanto se avete suggerimenti saranno comunque graditissimi.

AGGIORNAMENTO 2: Ho provato a copiare la cartella portable dal desktop al percorso originale ma non compila, funziona se porto tutta l'IDE ad un livello superiore a quello attuale. Mentre vado avanti con la sperimentazione, cerco comunque una soluzione, quindi se avete suggerimenti ben vengano.

Si, mi ricordo che ci sono limitazioni sul numero di caratteri gestiti nella path ... :roll_eyes:

Guglielmo

In Windows hai abilitato i percorsi lunghi?
https://www.google.com/search?&q=windows+percorsi+lunghi

Questa non la sapevo, comunque ho provato ma non è cambiato nulla. Probabilmente ricorda bene Guglielmo, anche se non capisco perché il problema lo faccia solo con questa board. Grazie per il suggerimento, tornerà buono in altre occasioni.

Mi sa che ricordi bene, ma non capisco perché me lo faccia solo con questa scheda, forse perché è molto lungo il percorso "interno":
\esp8266\tools\xtensa-lx106-elf-gcc\3.1.0-gcc10.3-e5f9fec\xtensa-lx106-elf\include\c++\10.3.0\cstdlib
per arrivare al bits/c++config.h
Comunque ho creato una copia della 1.8.19 e l'ho messa nel livello precedente, la userò solo per questi test. Grazie ad entrambi per l'aiuto, ma credo che ci sentiremo ancora, mi sembra un po' ostica la gestione di questo schedino; intanto il blink originale non funziona e ho dovuto dichiarare esplicitamente il GPIO1 perché il led_builtin non funziona, e ancora non ho messo mano al WiFi... :sweat_smile:

... ci fosse una scheda ESP (8266 o 32) che ha il LED collegato allo stesso pin ... non c'è uno standard e quindi o hai il modello ESATTO ed il LED_BUILTIN probabilmente va o, in testa al codice, metti ...

#ifdef LED_BUILTIN
#undef LED_BUILTIN
#endif
#define LED_BUILTIN xxx // xxx = il GPIO su cui è collegato il LED

Guglielmo

Visto che prima o poi passerai a ESP32, considera che vagono le stesse considerazioni ... ogni produttore fa come gli pare :roll_eyes:

Non solo, moduli ESP32 ... ne trovi parecchi che hanno un OLED 0.96" integrato ... ce ne fossero due che usano gli stessi pin per il bus I2C (che, su ESP32, puoi definire su che GPIO mettere) :angry:

Guglielmo

La questione LED penso che potrò risolverla col tuo codice, dovrò solo localizzare il pin al quale è collegato. Al momento non ho esigenze di altri accessori. Comunque grazie al tuo aiuto la mia prima necessità è risolta :heart_eyes: Con l'8266, Telegram e un paio degli sketch di esempio miscelati e adattati, ho ottenuto esattamente ciò che mi serviva: il pin GPIO0, se viene attivato, mi invia un messaggio di Allarme ON, all'eventuale disattivazione mi manda un Allarme OFF; posso inoltre interrogarlo in qualsiasi momento ottenendo in risposta Allarme On o OFF.
Inoltre riesco a pilotare il GPIO2 come uscita, cosa che mi potrà tornare utile. Però ho un problema: ho notato che tutti i pin dell'ESP all'accensione vanno su HIGH, nel caso dell'INPUT per attivarlo gli mando un livello LOW, ma nel caso dell'OUTPUT, anche se nel setup lo setto su LOW impiega circa 6 secondi prima di cambiare di stato. Se devo pilotare un pin di Arduino mi basta cambiare la logica ed è fatta, ma se volessi pilotare un circuito esterno mi toccherebbe aggiungere un inverter, magari anche un banale transistor; però è seccante questa cosa. C'è una soluzione? In ogni caso ora posso ordinare gli ESP32 e fare la conversione del firmware, sperando che non sia rognosa. A tale proposito, io per la programmazione sto usando questo Adattatore USB per ESP8266, posso usarlo anche per l'ESP32 o devo prendere qualcosa di specifico?

Sia l'ESP8266 che l'ESP32 esistono con l'USB a bordo! Ho sempre programmato l'8266 con un cavetto USB. :slight_smile:

Mah, ha parte quell'orribile schedina che stai usando tu, ormai tutte le schedine "decenti" ESP hanno, come ti ha indicato datman, la USB a bordo, dalle più piccole alle più grandi e, se occorre, come dicevo, anche un OLED da 0.96" ... :grin:

Guglielmo

Grazie, il mio problema è che io devo montare questo schedino stabilmente su un PCB, quindi la programmazione mi serve solo in fase di test, ecco perché ciò che sto usando attualmente mi viene molto comodo. Ho provato a fare una ricerca sul sito di Futura ma c'è da impazzire :sweat_smile:
Comunque da quello che vedo hanno tutte la porta USB integrata, c'è quella indicata da Guglielmo ESP32 – Mini scheda di sviluppo WIFI + bluetooth ESP-WROOM-32
Ma forse a me converrebbe prendere questo modello Board con ESP32 e caricabatteria perché, se capisco bene, la batteria oltre ad essere caricata fa da tampone e siccome devo usare il modulo per inviare allarmi in caso di malfunzionamento, tra cui a questo punto potrei inserire l'assenza di rete elettrica.
Peraltro mi sto facendo l'idea che forse potrei usarlo proprio al posto dell'ATmega328P standalone, sul quale è basato attualmente lo strumento, ma non so se è realmente fattibile e quanto tempo mi richiederebbe la conversione del firmware.

EDIT: no, ha solo due ADC e me ne servono sei, aggiungere un expander non ha significato.

Mi stai mortificando questa scheda al punto che sono quasi infelice di essere riuscito a farla funzionare :rofl: :rofl: :rofl:

Ma comunque mi piacerebbe sapere se c'è una soluzione al problema che ho descritto prima, circa l'uso dei GPIO come OUTPUT, non so se la cosa si riproporrà con l'ESP32.

Allora, chiariamo, ci sono delle tabelle sui GPIO e sul possibile uso che puoi farne ... NON tutti i GPIO sono disponibili per tutto e cambia da ESP8266 a ESP32:


Guglielmo

Ah ecco, è proprio dichiarato che il GPIO2 parte HIGH, ma siccome il GPIO0 non ha questo problema mi basta invertirne l'uso e con questo risolvo. In realtà usavo questi due perché sono resi disponibili dalla scheda di prototipazione che mi ritrovo, quindi problema risolto.
Con l'ESP32 il problema non esiste proprio.
Ora posso iniziare la sperimentazione con l'ESP32CAM, cerco un tutorial sul link che mi hai inviato.