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... se qualche anima pia si vuole immolare, gliene sarei veramente grato!