Vado ad aggiungere questa sezione perché mi sono reso conto che lo sketch è piuttosto complesso e ci sono molte librerie da importare, una piccola guida può aiutare nell’operazione di compilazione.
Installa strumenti opzionali
L’utilizzo di questi strumenti è facoltativo in quanto utili, ma non obbligatori.
Git
Git 2.0 o superiore è richiesto solo se si desidera clonare il codice sorgente in locale. Dalla riga di comando, puoi verificare se git è già installato eseguendo il comando:
git --version
Se non è installato correttamente o non è una versione successiva alla 2.0, visita https://git-scm.com/downloads per scaricare e installare una versione aggiornata per la tua piattaforma.
Ottieni il codice sorgente tramite Git
Se hai git installato sulla tua workstation, puoi usare le seguenti istruzioni per estrarre il codice sorgente nella tua directory di lavoro.
- Dalla riga di comando, accedi alla directory di lavoro sul desktop:
arduino-projects
- Esegui il comando seguente per estrarre il codice sorgente in una directory di lavoro:
git clone https://github.com/xreef/Aurora_Web_Invert_Monitor.git
Fai il Download del codice sorgente
Se non si dispone di git installato, scarica e decomprimi il contenuto zip del master da https://github.com/xreef/Aurora_Web_Invert_Monitor/archive/master.zip nella vostra directory di lavoro: Aurora_Web_Invert_Monitor
.
Librerie
Ora devi installare un lungo elenco di librerie
- ArduinoJson
Puoi trovare informazioni su questa libreria su “Gestire file JSON con Arduino, esp32 ed esp8266“ - ArduinoThread
La puoi trovare nel gestore delle librerie dell’Arduino IDE o su GitHub - ABB_Aurora_Solar_Inverter_Library
Puoi trovare informazioni su questa libreria su “Gestire file JSON con Arduino, esp32 ed esp8266“ - DNSServer
esp8266 core integrato. - EMailSender
È possibile trovare informazioni su questa libreria su “Inviare email con allegati (libreria v2.x): esp32 e esp8266” (Disabilita allegati per salvare mem) - ESP8266mDNS
esp8266 core integrato. - ESP8266SdFat
esp8266 core builtin, fai attenzione se hai la libreria SdFat, rimuovila. - ESP8266WiFi
esp8266 core integrato. - Hash
esp8266 core incorporato. - NTPClient
- TimeLib
- Timezone
È possibile trovare informazioni su queste librerie 3 su “Protocollo NTP, fuso orario e ora legale (DST) con esp8266, esp32 o Arduino“ - SD
È possibile trovare informazioni su questa libreria su “Come usare la scheda SD con esp8266 e Arduino“ - SDFS
esp8266 core integrato. - SPI
esp8266 core integrato. - ESP8266WebServer
È possibile trovare informazioni su questa libreria su “Come creare un Web Server con esp8266 e esp32“ - WebSocket
È possibile trovare informazioni su questa libreria su “WebSocket su Arduino, esp8266 e esp32“ - WiFiManager
Puoi trovare informazioni su questa libreria su “Come gestire dinamicamente la configurazione WIFI su esp8266 o esp32“ - Wire
Ora dopo aver caricato il codice devi caricare la cartella dei dati, per farlo puoi seguire questa guida “WeMos D1 mini (esp8266), file system SPIFFS integrato“.
Per caricare i dati puoi anche rimuovere il commento dalla define del server ftp
// Uncomment to enable server ftp.
#define SERVER_FTP
se lo fai puoi caricare i dati della parte web, l’utente è aurora
e la password aurora
, fai attenzione alla configurazione del tuo client, segui questo tutorial “Server FTP su esp8266 e esp32“.
Per la gestione NTP utilizzo il server europeo, ed è sincronizzato una volta all’ora, se vuoi cambiare questa impostazione la linea da modificare è questa
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 0*60*60, 60*60*1000);
Per funzionare è necessario collegare l’adattatore SD, con la relativa SD.
Problema memoria in invio email
Se riscontrate problemi nell’invio email è necessario installare il tutto con la versione 2.4.2 dell’ambiente core dell’esp8266.
La lista librerie cambia leggermente a causa della gestione rinnovata delle schede SD.
ABB_Aurora_Solar_Inverter_Library:
commenta//#define ADD_SOFTWARE_SERIAL
Wire
SD
SPI
ArduinoThread
ESP8266WiFi
TimeLib
NTPClient
ESP8266mDNS
ESP8266WebServer
ArduinoJson
WiFiManager
DNSServer
EMailSender:
è necessario impostare#define DEFAULT_EMAIL_NETWORK_TYPE_ESP8266 NETWORK_ESP8266_242
Timezone
WebSockets
Hash
Caricamento firmware precompilato (consigliato)
Per semplificare il processo aggiungo il firmware precompilato, puoi trovare 4 file:
Firmware
- Aurora_Web_Inverter_Monitor_DEBUG_FTP.d1_mini.bin: Firmware con server FTP per caricare filesystem e DEBUG attivi
- Aurora_Web_Inverter_Monitor_DEBUG.d1_mini.bin: Firmware con DEBUG attivo
- Aurora_Web_Inverter_Monitor.d1_mini.bin: Firmware standard
Filesystem
- Aurora_Web_Inverter_Monitor.spiffs.bin: Filesystem in binary
Caricamento dal prompt dei comandi
upload.py o esptool.py
Per prima cosa osserviamo che il componente principale del core esp8266 necessita di python installato e durante l’installazione ricorda di aggiungere al percorso (per Windows)
Nella tua installazione di Arduino IDE puoi trovare upload.py
file che è lo stesso esptool.py
.
Puoi installare solo esptool.py
per python con un semplice comando
pip install esptool
oppure puoi scaricare da qui la versione compilata, ricordati di aggiungere l’eseguibile al percorso.
Quindi se avvii esptool sul tuo cmd hai queste informazioni
D:\Projects\Arduino\sloeber-workspace-OTA\keys>esptool
esptool.py v3.1
usage: esptool [-h]
[--chip {auto,esp8266,esp32,esp32s2,esp32s3beta2,esp32s3beta3,esp32c3,esp32c6beta}]
[--port PORT] [--baud BAUD]
[--before {default_reset,usb_reset,no_reset,no_reset_no_sync}]
[--after {hard_reset,soft_reset,no_reset,no_reset_stub}]
[--no-stub] [--trace] [--override-vddsdio [{1.8V,1.9V,OFF}]]
[--connect-attempts CONNECT_ATTEMPTS]
{load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,merge_bin,version,get_security_info}
...
esptool.py v3.1 - ESP8266 ROM Bootloader Utility
positional arguments:
{load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash_status,write_flash_status,read_flash,verify_flash,erase_flash,erase_region,merge_bin,version,get_security_info}
Run esptool {command} -h for additional help
load_ram Download an image to RAM and execute
dump_mem Dump arbitrary memory to disk
read_mem Read arbitrary memory location
write_mem Read-modify-write to arbitrary memory location
write_flash Write a binary blob to flash
run Run application code in flash
image_info Dump headers from an application image
make_image Create an application image from binary files
elf2image Create an application image from ELF file
read_mac Read MAC address from OTP ROM
chip_id Read Chip ID from OTP ROM
flash_id Read SPI flash manufacturer and device ID
read_flash_status Read SPI flash status register
write_flash_status Write SPI flash status register
read_flash Read SPI flash content
verify_flash Verify a binary blob against flash
erase_flash Perform Chip Erase on SPI flash
erase_region Erase a region of the flash
merge_bin Merge multiple raw binary files into a single file for
later flashing
version Print esptool version
get_security_info Get some security-related data
optional arguments:
-h, --help show this help message and exit
--chip {auto,esp8266,esp32,esp32s2,esp32s3beta2,esp32s3beta3,esp32c3,esp32c6beta}, -c {auto,esp8266,esp32,esp32s2,esp32s3beta2,esp32s3beta3,esp32c3,esp32c6beta}
Target chip type
--port PORT, -p PORT Serial port device
--baud BAUD, -b BAUD Serial port baud rate used when flashing/reading
--before {default_reset,usb_reset,no_reset,no_reset_no_sync}
What to do before connecting to the chip
--after {hard_reset,soft_reset,no_reset,no_reset_stub}, -a {hard_reset,soft_reset,no_reset,no_reset_stub}
What to do after esptool.py is finished
--no-stub Disable launching the flasher stub, only talk to ROM
bootloader. Some features will not be available.
--trace, -t Enable trace-level output of esptool.py interactions.
--override-vddsdio [{1.8V,1.9V,OFF}]
Override ESP32 VDDSDIO internal voltage regulator (use
with care)
--connect-attempts CONNECT_ATTEMPTS
Number of attempts to connect, negative or 0 for
infinite. Default: 7.
Parametri della riga di comando
Ora possiamo capire meglio i parametri dei comandi:
--chip esp8266
: qui andremo a selezionare il chip corretto;--port COM17
: impostiamo la porta;--baud 921600
: qui abbiamo la velocità di trasferimento;erase_flash
: esegue la cancellazione del chip su flash SPI (cancella tutte le informazioni);--before default_reset
: operazione di pre-caricamento;--after hard_reset
: operazione di post-caricamento;write_flash
: scrive un blob binario su flash;0x0
<binary file>
: scrivere un file in un indirizzo.
Per caricare puoi provare a usare esptool con questi comandi:
Firmware
esptool --port /dev/COM24 write_flash -fm dio 0x00000 Aurora_Web_Inverter_Monitor.d1_mini.bin
Filesystem
esptool --port /dev/COM24 write_flash -fm dio 0x10000 Aurora_Web_Inverter_Monitor.spiffs.bin
Caricamento con lo strumento grafico
È possibile utilizzare uno strumento grafico di espressif per semplificare il processo, Espressif Download Tool può essere scaricato da qui .
Con la gui dobbiamo semplicemente impostare i files e indirizzi corretti.
È necessario selezionare una versione del firmware e impostare l’ indirizzo 0x0 e il filesystem con l’ indirizzo 0x200000 , selezionare la porta corretta e fare clic per iniziare.
Primo avvio
Ricordati innanzitutto di configurare la connessione WiFi, leggi il relativo articolo “Centralina Web per inverter ABB (Power One) Aurora: configurazione WIFI e server REST“.
Quando hai configurato il WiFi è meglio (ma non necessario) se colleghi una l’USB to TTL sulla Serial1, controlla come farlo su “Centralina Web per inverter ABB Aurora (WIM): notifiche e debug“, ricordati di decommentare la define del debug
// Uncomment to enable printing out nice debug messages.
#define AURORA_SERVER_DEBUG
Dall’uscita Serial1 puoi prendere l’indirizzo IP per connetterti la prima volta via browser.
Dopo il collegamento vai alla sezione di configurazione e imposta un IP statico
Quindi imposta l’ora legale corretta (o, se non definito, imposta il GTM) e l’e-mail d’amministrazione.
Passaggio successivo (molto importante) configurare la notifica degli errori dell’inverter, questa funzionalità può farti risparmiare perdite di denaro se qualcosa va storto.
Ora tutto è configurato, attendi un giorno che il WIC memorizzi alcuni dati, quindi torna sull’interfaccia web e controlla i grafici.
Grazie
Ricorda per tutte le informazioni, problemi utilizza il forum.
- Centralina Web per inverter ABB (ex Power One) Aurora (WIM): intro al progetto
- Centralina Web per inverter ABB Aurora (WIM): connessione Arduino all’RS-485
- Centralina Web per inverter ABB Aurora (WIM): dispositivi di archiviazione
- Centralina Web per inverter ABB Aurora (WIM): debug e notifica
- Centralina Web per inverter ABB Aurora (WIM): impostare l’ora e UPS
- Centralina Web per inverter ABB Aurora (WIM): configurazione WIFI e server REST
- Centralina Web per inverter ABB Aurora (WIM): WebSocket e Web Server
- Centralina Web per inverter ABB Aurora (WIM): cablaggio e PCB
- Centralina Web per inverter ABB Aurora (WIM): caricare il programma ed il front end
- Centralina Web per inverter ABB Aurora (WIM): scatola stampata in 3D e completamento
- Centralina Web per inverter ABB Aurora (WIM): riparare l’errore E013
GitHub repository con tutto il codice FE (transpilato) e BE