Connessione diretta ad un sever MySQL con un Arduino Client

Ho da poco aggiunto una nuova libreria al repository Arduino e avrei bisogno di qualche tester volenteroso per debuggarla per benino...

La libreria in questione consente di collegarsi in modo diretto ad un database MySQL remoto o locale usando un Client generico Arduino senza passare per gli odiosi script PHP come si vede fare nel 98% degli esempi e tutorial che si trovano online.

Questo significa che può essere usata una qualsiasi interfaccia WiFi (modulo o integrata), Ethernet, GPRS, LTE etc etc.

Per dirla tutta, esistono già un paio di librerie che fanno la stessa cosa (anche se sono in pratica due librerie fotocopia).
In questi giorni sto sviluppando un progetto che fa uso di un database SQL per recuperare alcune informazioni da remoto e quindi ho testato in profondità le due librerie in questione.

Considerato che sono qui a scrivere questo post, è evidente che queste librerie non mi hanno soddisfatto (senza entrare nei dettagli, sofffrono entrambe di un bug che non consente di recuperare campi dal database con lunghezza maggiore di 250 byte ed una soffre anche di "memory leaks").

Siccome non mi piace revinventare l'acqua calda, sono partito da una buona libreria (a mio giudizio) che ho trovato per STM32@mbed che ho quindi adattato per il framework Arduino ed a cui ho aggiunto/modificato diverse cosette.

La libreria fa uso degli Standard Template Library C++ che ormai (e per fortuna) sono supportati su quasi tutte le piattaforme: in particolare viene usato lo std::vector per collezionare i record restituiti dalla query senza impazzire con allocazioni e riallocazioni manuali di memoria.

Per quelle schede dove invece non sono supportati (come ad esempio le AVR), si può facilmente porre rimedio con quest'ottima libreria: ArduinoSTL

Al momento sono riuscito a provare gli esempi inclusi con ESP32 (comprese le varianti C3, S2 ed S3), ESP8266 e Arduino Nano33 IoT (stesso hardware della MKR WiFi, libreria WiFiNINA).
Dovrebbe andare anche con Arduino Uno WiFi Rev2... appena riesco a tirarlo fuori dal cassetto lo proverò di sicuro.
Devo ancora provare con un modulo Ethernet per la quale ho un paio di shield disponibili e con modulo GSM GPRS/LTE.
Qui non ho proprio nulla per provare... :smile: se qualche anima pia si vuole immolare, gliene sarei veramente grato!

3 Likes

Progetto davvero molto interessante. Posso chiedere come mai non vuoi passare da una API in PHP?

Perché è un passaggio in più che non è necessario.

Sul mio attuale PC ad esempio, ho un server MySQL installato, ma nessun server web in esecuzione perché non ne ho bisogno.
Per poter usare uno script PHP dovrei necessariamente configurare anche un server web tipo Apache o simili.
Tutti questi passaggi intermedi inoltre aggiungono latenza e in alcune applicazioni anche questo può essere un problema non voluto ad esempio se ho necessità di fare molte richieste SQL da più dispositivi contemporaneamente.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.