Upload di dati online tramite ESP8266-01

Salve, sto cercando da giorni insieme a dei colleghi universitari il modo per caricare dei dati online usando il modulo ESP8266-01 su server o foglio di calcolo (ad esempio Google Spreadsheet).
Ho trovato numerose soluzioni online ma nessuna garantisce una sufficiente velocità di upload, poichè ho necessità di un’acquisizione di circa 100 campioni al secondo.
Pensate ci siano modi per risolvere questa problematica?

Avevo alternativamente pensato di acquisire i dati su una scheda SD e successivamente effettuare l’upload del file salvato. Tuttavia riguardo quest’ultima opzione non sono stato in grado di capire come caricare un File su un server (Dominio gratuito o Google drive).
Può essere una soluzione più fattibile?

Grazie

Si certo che c’è modo.
A tempo perso sto sviluppando una libreria che consente di farlo sfruttando le API messe a disposizione da Google. È ancora da completare e debuggare, ma funzionante.

La trovi qui, ma non ricordo se ho fatto il commit delle ultime modifiche. Più tardi verifico.

Edit:
Ho letto dopo che cerchi per esp-01. Se intendi il modulo in aggiunta ad un altro micro, la libreria non credo vada bene o comunque è da testare.

1 Like

100 al secondo per quanto tempo?

Comunque mi sembrano tanti per i servizi gratutiti esistenti.

L’upload è già diverso ma con l’ESP01 non so se ce la fai a causa dei protocolli di sicurezza di Google.
Sarebbe meglio un banale FTP.

Si è possibile senza alcun problema.
La soluzione del buffer temporaneo su SD o anche in RAM è l’ideale a mio avviso.

Esatto utilizzo il modulo in aggiunta ad Arduino. In ogni caso grazie, provo a dargli un’occhiata e ragionarci su!

100 al secondo per circa 30 secondo ad acquisizione. L’invio dei dati live non è strettamente necessario, può bastarmi anche l’invio post acquisizione…però con il semplice invio con l’ESP ho notato che il tempo per ogni campione è molto alto in quanto si attende la conferma della ricezione del dato rendendo eccessivamente lungo l’invio di un numero cosi elevato di dati.
Utilizzare il protocollo FTP come funziona? mi genera un server sull’ESP o posso inviare comunque dati ad una pagina web accessibile poi da remoto? Mi scuso se faccio osservazioni banali ma non ho una grande esperienza riguardo comunicazioni WiFi e protocolli vari.

Grazie a tutti

Edit:
Ho letto dopo che cerchi per esp-01. Se intendi il modulo in aggiunta ad un altro micro, la libreria non credo vada bene o comunque è da testare.

Riguardo il discorso sull’ESP-01, nel caso scegliessi di utilizzare l’ESP nodeMCU con micro integrato pensi ci sia la possibilità di utilizzarlo come slave solo per inviare i dati e continuare ad utilizzare il mega come controllore principale? o c’è la necessità di utilizzarlo in autonomia?

FTP è un protocollo che permette di inviare file, ma questo implica che ti devi fare da client ed inviare i file su un server remoto.
Se hai uno spazio web di tua proprietà potrebbe essere la strada più semplice.

Per quanto riguarda l’invio a Google Drive è teoricamente possibile anche con ESP-01 nel momento in cui la libreria che lo gestisce lo rende disponibile come una classe Client generica, ma come detto mai provato.
Non ho simpatia per quei moduli… non vedo il senso di aggiungere un ulteriore microcontrollore solo per la connettività (tra l’altro di solito molto più potente di quello a cui lo si abbina).
Molto meglio partire fin da subito solo con ESP8266 con una delle tante board di sviluppo (NodeMCU, Wemos etcetc)
Ma se hai bisogno di prestazioni e soprattutto la possibilità di eseguire più task in parallelo, la scelta più saggia sarebbe un ESP32

È un’altra possibilità.
Io non amo particolarmente questo tipo di approccio ma non vedo problemi per implementare con successo quello che vuoi fare

@stefanops ho aggiornato il repository con le ultime modifiche e qualche esempio funzionante e testato anche su ESP8266.
Se vuoi provare questo approccio usando le API di Google fammi sapere che ti do due dritte per configurare correttamente le credenziali necessarie per “abilitare” l’ESP.

Ciao, si stavo vedendo in questi giorni proprio la libreria che mi hai linkato e la proverò allora con l’esp8266, in alternativa dovrei entrare in possesso di una ESP32 nodeMCU, credi possa essere meglio per questo lavoro?

@stefanops l’ESP32 è un gran pezzo di “silicio” ma non è tanto una questione di “specifiche” o prestazioni.
100 acquisizioni al secondo le fai tranquillamente anche con il Mega (di che tipo? analogiche? sensore digitale?), ma l’Arduino core for the ESP32 è basato sul kernel FreeRTOS che ti consente di eseguire più task in parallelo eventualmente assegnandoli al primo core o al secondo (il NodeMCU dovrebbe montare un modulo ESP32 dual-core). In realtà è meglio evitare di interferire con il core 0 dove gira tutto lo stack WiFi, e lasciare tutti i task “utente” sul core 1 come è di default (la funzione loop() di Arduino infatti non è altro che un task come un altro).

Tieni conto che l’upload comunque non è velocissimo anche con l’ESP32, tra tempo di connessione con il server sicuro, lettura del file dalla memoria e upload vero e proprio per completare un file da 1 Megabyte ci voglio 6/7 secondi e anche più. In teoria dovrebbe essere possibile ottenere risultati migliori, ma non ci sono ancora riuscito (ci sono anche diverse issues aperte nel repository github Espressif a tal proposito, credo sia un limite dell’implementazione del client Arduino).
Sto provando un esempio dove faccio uso di un task distinto come dicevo, più tardi metto tutto online.

Ho dato un’occhiata alla prima pagina del repository, mi sembra un buon inizio.
Il link a pipedream è errato.
Purtroppo si dipende da un servizio esterno che oggi è gratuito ma domani potrebbe cambiare idea. Ma non c’è niente di meglio, credo.

Il NodeMCU è un ESP8266 con tutti i piedini esposti, non un ESP32.

Probabilmente mi sono dimenticato di condividere il workflow pipedream come pubblico.
Il link di redirect ad autorizzazione avvenuta purtroppo deve essere un dominio di primo livello. Ho fatto delle prove anche con una semplice paginetta php su un sito web non mio ma di cui ho accesso però non mi sembrava il caso di metterlo su GitHub :rofl:
Da li la soluzione pipedream che è vero ti espone al rischio che un domani non sia più disponibile.

noooo, ma questa è bella Tolentino, la testo subito! Grande!

mi riferivo a questo link
Another good option for redirect uri, is using a micro-service like pipedream.com for example.
Non funziona.

E’ tutto ancora molto “beta”, come sempre ogni segnalazione di bug e/o suggerimento è sempre il benvenuto.

Grazie, @zoomx , ho corretto il readme. Per quanto riguarda il NodeMCU esiste anche la versione con ESP32, la trovi con NodeMCU-32S, ma alla fine è solo un nome come un altro

So che c’è anche la NodeMCU con ESP32 ma siccome quella con ESP8266 c’è da anni ed era l’unica penso che ci si riferisca sempre alla versione con ESP8266.