PLC Arduino su un camper

Buongiorno a tutti,

è il mio primo (lungo…) post sul forum, ho letto con attenzione ed interesse tutto ciò che viene raccomandato prima di porre domande ed aprire i post, ed è stato utile sia per avvalorare i miei sospetti da neofita (“ma come posso usare Arduino su un camper, che vibra e ha bisogno di connessioni stabili, se tutti usano le breadboard?) che per trovare prodotti che realmente potrebbero fare al caso mio.

Il mio obiettivo: realizzare un sistema di controllo di differenti funzioni del mio camper che operi in modo autonomo e che possa essere controllato da remoto.

Dalla carica delle batterie motore e cellula tramite solare, 230V o alternatore, controllo del riscaldamento, temperatura e livelli acque, temperatura frigo, esterna, sensore allagamento, filtro gasolio, inverter, gradino elettrico, luci, pompa, antifurto ecc.

Premetto che, sapendolo fare, ho già effettuato aggiunte sostanziali all’elettronica base del mezzo montando batteria al litio e relativo BMS con relè di controllo, impianto fotovoltaico da 1 kW, caricabatterie 230V nuovo, mettendo prese USB in vari posti, inverter con prese dedicate (e differenziale opportuno), videosorveglianza, sonde di temperatura, antifurto ecc il tutto senza modificare quasi nulla dell’impianto originale.

Molti degli automatismi che vorrei implementare con Arduino avvengono già tramite una serie di relè Finder e Shelly Uni che ho messo sul mezzo, con logiche automatiche o che posso parzialmente controllare da remoto (via app Shelly, Raspberry PI o VRM Victron) avendo una wifi fissa sul mezzo.

Le mie conoscenze elettroniche sono ancora relativamente scarse lato hardware necessario per le conversioni dei segnali che posso gestire con il PLC che sceglierò, ma anche questo lo sto studiando.
Nel mio caso sul camper posso avere 230V, 13,2V o 5V nominali, e segnali derivanti dalle interfacce dei prodotti Victron (che già parlano col cavo apposito via USB ad un Raspberry con Venus Os) e dal BMS 123\SmartBMS (questo cavo non lo ho, ma potrebbe essere utile per leggere con Arduino i dati che ora leggo nell’app Android del BMS).

Se il progetto dovesse mostrare la fattibilità sia tecnica che software, rimetterei mano a tutto ciò che ho già fatto sul camper (rivedere tutti i cablaggi aggiunti), azzerando quanto già fatto negli ultimi 5 anni per poterlo gestire con Arduino (è una delle mie passioni fare i lavoretti sul camper…).

Lato programmazione io sono praticamente a zero, ma la mia compagna lo fa di lavoro da 20 anni, ed è ben disposta ad aiutarmi, dato che la programmazione la diverte e appassiona (è tipo Matrix… legge pagine di codice come io leggo gli ingredienti del succo di frutta…).

Ho fatto un elenco di ciò che vorrei poter misurare, controllare e comandare. Avrò bisogno di almeno 20 ingressi analogici (16 + 4 di scorta), 20 digitali (16 + 4 di scorta, intesi come segnali on/off che attestano un avvenimento es. carica batteria cellula iniziata), e di poter controllare almeno 20 relé, da studiare ancora se tutti di tipo aperto/chiuso o qualcuno anche NO/C/NC (16 + 4 di scorta).

Dopo un primo entusiasmo per la domotica Loxone (non ancora sopito e per ora messo da parte, ma raffreddato adeguatamente dai costi), ho scoperto appunto i PLC su base Arduino, e sto studiando le possibilità di Controllino Mega ed Arduino Opta, ma non escludo altre scelte.

Prima di investire soldi in prodotti professionali vorrei acquistare una versione di Arduino prototipo da usare a casa simile per la programmazione a quella che ci sarà nel sistema che sceglierò, e eventuali aggiunte (relè, input/output ecc.), e fare dei test sia di funzionalità che di programmazione.

L’obiettivo finale è arrivare ad avere un’app sul telefono con interfaccia grafica per controllare e monitorare il camper, obiettivo ambizioso che la mia compagna giudica fattibile, vedremo come va…

Ora alcune considerazioni per orientare la scelta della soluzione finale, per cui chiedo il parere di chi avrà avuto la pazienza di leggere tutto (e lo ringrazio).
A livello di costo le due scelte sono quasi simili, Opta costa leggermente di più (gli aggiungerei due moduli EMR) ma avrebbe la wi-fi integrata e relè che supportano correnti maggiori (per un paio di applicazioni userei comunque relè esterni di tipo automobilistico, avendo correnti di 5 o 6 A, ad es. per il gradino elettrico). Posso anche pensare ad un cablaggio con cavo di rete, ma dovrei aggiungere un wi-fi bridge che ho già (ho un router senza porte di rete) e che ha un consumo elettrico da considerare.
Come protezioni e certificazioni mi sembrano simili, la tensione di alimentazione deriverebbe dalla batteria al litio (tra 13V quando uso il microonde con l’inverter che assorbe 100A e 13,8V quando è sotto carica).
A livello di consumo elettrico in standby, secondo ciò che ho trovato in rete, Controllino è tra 1,5 e 2W e Opta consuma qualcosa di più, circa 2,8W.
Entrambi i valori sarebbero accettabili, studierò la configurazione per avere tutti i relè diseccitati nelle condizioni normali, e molto difficilmente arriverò ad avere più di 4 o 5 relè attivi contemporaneamente. Per la wi-fi di Controllino occorre considerare il consumo del bridge wi-fi.
Per la resistenza alle vibrazioni trovo dati solo per Controllino, non ne trovo per Opta, ho interrogato la AI (di cui mi fido relativamente poco) e la dà ottima per Opta.
Programmazione: posso solo ipotizzare che sia di difficoltà simile, per entrambi vedo che c’è molta documentazione disponibile, anche se Controllino mi dà l’idea di essere più semplice non dovendo gestire moduli di espansione (però una volta capito come fare, non sarebbe più un ostacolo).

Scelto uno dei due (se non salta fuori un altro PLC che faccia al caso mio e sia una scelta migliore), se per il prototipo di Controllino Mega la scelta è di prendere un Arduino Mega, per Opta Arduino è indicato un Arduino MKR 1010 wi-fi?

Per ora mi fermo qui. Sto leggendo molto da un paio di settimane e più, ed è arrivato il momento di interfacciarmi con qualcuno più esperto di me che mi aiuti a fare considerazioni che non ho fatto per mia inesperienza.

Grazie
Andrea

Poi quando hai finito tutto vedi un bellissimo video dove qualcuno ha Home Assistant su camper... :wink:
Consideri anche Esp32 PLC.
300eur per controllino con atmega2560 mi sembra un po... sbilanciato.

... perché non tieni conto di tutto quello che c'è dietro :roll_eyes:

Guglielmo

Grazie kmin, avevo visto soluzioni con home assistant, che conosco poco e non uso, e avendo già un Raspberry pi magari sarebbe anche più economico.
Ma mi piacerebbe provare con Arduino, coinvolgere la mia compagna per la programmazione e imparare cose nuove.
Opta verso cui propendo costa pure di più di Controllino, entrambi sarebbero un regalo che mi farei per pura passione.
Come dice Guglielmo, dietro a questi sistemi penso ci sia una solidità che si paga e che voglio avere, visto che gli affiderei componenti costosi e potenzialmente pericolosi.

ESP32 PLC richiederebbe diversi moduli esterni per le mie esigenze, almeno l'hardware che ho trovato io, e mi pare che la programmazione sia differente da Arduino puro.

Vorrei fare un prototipo con una scheda Arduino che si programmi come Opta, gentilmente mi confermate se la MKR wifi 1010 è una scelta corretta?

Non intendevo che prezzo e' sbagliato. Ma un cuore pochettino piu' performante..

Se vuoi quello, devi andare com Mega. Programmazione di Esp32 sara' piu' "puro" di Opta.

Condivido la vostra scelta, un prodotto finito con caratteristiche “industriali” e quindi tutte le accortezze necessarie per essere interfacciato al “mondo reale” alla fine dei conti è la scelta più saggia. Anche io opterei per un Opta :sweat_smile:

La versione WiFi costa circa 165€ a cui dovrete poi aggiungere qualche modulo di espansione...

In realtà sono due schede molto diverse tra loro: l’Opta è un STM32H747XI dual-core Cortex®-M7 mentre il MKR è un meno potente SAMD21 Cortex®-M0.

A me comunque non sembra una buona idea passare per un prototipo “diverso” dal prodotto finale. Se hai scelto la famiglia, che per altro è modulare quindi puoi dividere la spesa in più tranche, non ti conviene sviluppare fin da subito con il prodotto finale che andrai ad usare? Quando hai finito di prototipare non devi fare altro che cablare a regola d’arte e sei sicuro che funzionerà tutto quello che hai sviluppato prima.

Più che altro mi stupisce la quantità di ingressi (soprattutto quelli analogici, che sono tipicamente quelli più costosi) e di uscite stimate… su un camper non mi aspettavo tutta ‘sta roba !?! I costi lieviteranno a ben più di 300€ temo.

Per quanto riguarda la programmazione, visto che parli di app mobile, dubito che potrai farla sfruttando gli ambienti di sviluppo “stile PLC IEC 61131-3” (ladder, SFC, FBD etc etc) e quindi secondo me dovrete optare per il classico (ed intramontabile) C/C++ usando Arduino IDE o un ambiente di sviluppo analogo (io consiglio sempre VSCode + plugin Arduino community).

Per il resto la scelta della scheda conta fino ad un certo punto: il framework Arduino mette a disposizione delle classi generiche Client Server Stream etc etc che ti consentono di sviluppare il tuo codice ad un livello di astrazione abbastanza indipendente dall’hardware scelto (ESP32 compreso a grandi linee, nel senso che le API Arduino non consentono di sfruttare tutte le potenzialità della MCU).

Effettivamente stavo erroneamente considerando le 8 temperature che mi interessa monitorare come se fossero ingressi singoli ed analogici :face_with_open_eyes_and_hand_over_mouth:, ma se non erro le sonde DS18B20 possono essere collegate ad un singolo ingresso digitale. Meglio così.

Restano 2 tensioni, 2 correnti, 2 livelli acqua e umidità ambiente (digitale?).

Sarebbe anche bello avere una livella che misuri l'inclinazione sui due assi del mezzo, al momento non ci ho ancora messo la testa (se è meglio una soluzione digitale o una analogica).

Seguirà, ad analisi finita, l'elenco degli ingressi digitali ed analogici e relè di cui ho bisogno, almeno nella prima fase.

L'idea di prendere subito un Opta mi stuzzica :face_with_tongue:, deciderò entro la settimana, sto ancora leggendo e studiando. Un'espansione metto già in conto di aggiungerla successivamente, 12 relè non bastano, ma posso pensare di evitare alcune cose (tipo mettere un relè triplo finder con bobina a 230V che sposti le prese normalmente sotto inverter sull'alimentazione 230V esterna quando mi attacco alla colonnina; ora lo faccio con un selettore manuale).

Per la parte software riporto le domande che mi arrivano dalla mia regi(n)a:

Ciao, dato che sviluppo già API REST in C# e frontend in React, vorrei capire come sfruttare al meglio queste competenze e capire un po’ le diverse architetture.

Secondo te, per un progetto IoT semplice ma scalabile nel tempo, conviene partire con:

  • una PWA in React, oppure
  • un’app mobile nativa in React Native o .NET MAUI?

E per la comunicazione tra app, backend e dispositivi Arduino: io sarei orientata a REST che già conosco ma so che ha limiti per intercettare eventi in tempo reale (ma potrebbe essere sufficiente comunque visto l’utilizzo), dovrei usare WebSocket o altro per iOt? Infine se si usa un server HTTP locale, non posso ricevere notifiche esterne per cui va valutato un sistema cloud? Quale?

Grazie mille :grinning_face:

Per quella che è la mia opinione, tutto quello che puoi portare nel dominio digitale, fallo senza remore. Temperature, umidità etc etc.

Però a questo punto è necessario fare un passo indietro perché l’Arduino Opta è pensato principalmente per lavorare come micro PLC quindi ingressi analogici/digitali, uscite digitali e bus di campo. Non credo che sia possibile far funzionare i sensori DS18B20.

Non sono esposti nemmeno bus come SPI o I2C per dire, anche se per quanto riguarda il bus i2c, si potrebbe prelevare dal connettore AUX.

Quindi valutate per bene quale strada scegliere tenendo conto anche della minor flessibilità di questo sistema.

Per quanto riguarda lo sviluppo del software, lato frontend potete usare sostanzialmente qualsiasi tipo di tecnologia “client side” preferite. Io uso quasi sempre pagine web Vanilla JS (per limitare le dipendenze), quando si tratta di web server locali (nell 99% dei casi usando ESP32) oppure applicazioni C++ sviluppate in Qt-QML.

E’ sul backend che le scelte sono limitate purtroppo.

Il framework Arduino di fatto mette a disposizione solo lo stream dati. Provate ad intallare la board in Arduino IDE e ad aprire uno degli esempi inclusi come ad esempio “SimpleWebserverWifi.ino” per farvi un’idea.

Nel mondo Arduino ci sono diverse librerie che consentono un livello di astrazione maggiore implementando protocolli più complessi (UDP, HTTP, REST, MQTT, WebSocket etc etc) però è necessario controllare la compatibilità con la scheda di ciascuna libreria, perché si tratta comunque di contributi volontari della community ed in fondo ognuno sviluppa secondo le proprie modalità e finalità.

Se si tratta di una libreria hardware-agnostic non dovrebbero esserci grandi problemi anche a fare eventuali porting perché alla fine l'opta non è altro che un stm32 con l’hardware fatto apposta intorno .

Non voglio spingere nessun modo ma se decidi di non andare con Mega, dai occhiata per bene per esp32. Ci sono vari produttori per schede plc e penso che programmazione "arduino" sara' piu facile paragonando con stm32.

Ieri dopo la tua risposta ho approfondito la questione.

Leggo infatti che qualcuno ci ha provato a far funzionare i sensori DS18B20, ma senza successo. Stressando Gemini che mi dava informazioni errate, dice di usare la libreria OneWireNg e la sua integrazione DallasTemperature, collegando il pin dati della sonda a un pin dell'Opta come il D3. Ma non trovo qualcuno che documenti di esserci riuscito.
Premetto che uso la AI con estrema diffidenza, e solo per avere aggregate risposte specifiche che poi verifico attentamente leggendo tutto ciò che trovo con ricerche normali.

Non intendo spendere 165€ per puro test, se vien fuori che con Opta non posso leggere le temperature, qualsiasi sia la sonda usata, faccio il passo indietro suggerito.
Ci sono poi anche altri nodi da sciogliere prima di confermarne la scelta.

Ho letto che sui moduli di espansione analogici Arduino Pro Opta Ext A0602 possono essere collegate solo due sonde PT100, pur avendo 6 ingressi analogici.

Mi chiedo (ehm, chiedo agli esperti... :innocent:) se si possa usare un oggetto simile per aggregare 8 sonde PT100 portandole su Modbus RTU, sia a livello elettrico che poi software.

Non trovo indicazioni contrarie all'uso di sensori TMP36, che vedo molto implementato sugli Arduino normali, ma non su Opta. Considerando che le temperature della batteria sono già lette da dispositivi Victron e dal BMS, a cui posso quindi affidare la logica di interruzione della carica della batteria legata alla temperatura, restano 7 temperature (frigo, freezer, esterna, interna, acque grigie, acque chiare e bombole gas).
Compromesso sarebbe una lettura delle temperature con modulini semplici che hanno però un consumo elettrico e necessità di portare l'alimentazione dove li si posiziona. Sarebbero da escludere quando il veicolo è in rimessaggio, ma preferirei avere tutti i dati sul PLC.

Un altro nodo da risolvere prima di scegliere definitivamente il PLC da usare, è la lettura di dati dal BMS, dallo shunt Victron e dall'MPPT Victron.

Per il BMS ho trovato questa informazione, che mi auguro sia implementabile anche su Opta e non solo su un normale Arduino. Questo darebbe molte informazioni sulla batteria, dalla tensione e temperatura di ogni cella alla corrente in ingresso ed uscita (ho due sensori ad effetto hall collegati)

I due dispositivi Victron hanno la porta VE. Direct, ed attualmente li leggo con un raspberry che ha su Venus OS, cosa che lo rende praticamente come un loro Cerbo GX.
Leggo QUI e QUI che tali porte possono essere lette da Arduino, la domanda anche qui è: e Opta? Questo darebbe ulteriori dettagli alle informazioni del BMS.

Rimane la tensione della batteria motore, che mi auguro sia facilmente leggibile, ed il livello delle acque chiare (quello delle acque grigie non so se riuscirò a mettere un sensore, dovrei smontarlo completamente ed è un macello...)

Grazie

Ascolto ed accolgo con gratitudine ogni parere :slightly_smiling_face: , per cui grazie per la risposta. Non ho ancora escluso Controllino. Sono partito con Opta perché ha relè che sopportano correnti maggiori, pensando che essendo "ufficiale" Arduino avesse caratteristiche estremamente comparabili a livello di interfaccia coi dispositivi, ma temo che possa essere diverso.

Ho abbastanza tempo per l'analisi iniziale, il cablaggio vorrei farlo ad aprile del prossimo anno, quando le temperature saranno più miti perché è un lavoro di almeno tre giorni da fare senza riscaldamento nel camper (staccando tutto...)

Da ignorante quale sono, hai un link al modulo ESP32 che suggerisci di analizzare?
Grazie ancora

Per capire se la cosa è effettivamente possibile senza avere in mano l’oggetto, servirebbe almeno lo schema elettrico completo.

Io immagino che i GPIO del microcontrollore non siano esposti direttamente, ma che in mezzo ci sia altra elettronica necessaria per adeguare i livelli di tensione: la STM32 lavora a 3.3V mentre sul documento ufficiale “full pinout” si parla di segnali digitali 0-10V (quindi nemmeno adeguati per lavorare direttamente con i 12/24V di una batteria da camper :face_with_crossed_out_eyes: )

Alla fine approfondendo meglio la questione e soprattutto considerando anche l’aspetto interfaccia grafica e la molteplicità dei dispositivi da gestire, ho iniziato a riconsiderare il consiglio sull’Opta :sweat_smile:

Probabilmente non riuscireste a fare tutto quello che desiderate; avete bisogno di una flessibilità maggiore che un sistema chiuso come quello di Arduino Opta non offre.

Ho provato a cercare anche io i prodotti basati su ESP32 come suggeriva @kmin ed ho trovato questa serie della Waveshare che è davvero interessante. Se avessero sviluppato anche dei moduli di espansione input/output basati sul bus Modbus o Canbus sarebbero il top.

Molto interessanti anche la famiglia di prodotti offerti da https://erqos.com/ oppure ancora quella di norvi.lk. In questi casi sono più complete rispetto a Waveshare e trovi tutta una serie di moduli di espansione per ogni esigenza. Sui siti ci sono anche alcuni tutorial utili per farsi un’idea delle potenzialità.

... aggiungo un altro molto interessante https://sferalabs.cc/

Guglielmo

Industrial Shields potrebbe avere qualcosa (non ho verificato)..

Il documento ufficiale che citi mi sa che è poco chiaro al riguardo delle tensioni.
I segnali analogici accettati sono 0-10V, mentre quelli digitali 0-24V come riportato sul data sheet ufficiale al cap. 3.5.2.

Ci sono i nodi dei sensori di temperatura (se il modulo che ho linkato funzionasse :thinking:, sarebbe risolto) e le interfacce con il BMS e i Victron da risolvere...

Specifico che se Controllino permettesse collegamenti più in linea con le possibilità offerte da Arduino Mega su cui si basa, la bilancia si sposterebbe un po'. Non ho bisogno di capacità computazionali da record, servono relé che si aprano o chiudano sotto certe condizioni date da segnali +12V, da temperature e livelli o BMS.
L'interfaccia grafica, se ho inteso cosa vuoi dire, sarebbe solo nell'app che immagino di poter (la mia compagna) creare.

Mi metto a studiare i vostri suggerimenti :blush:

Decisamente! Ed in più si tratta anche di un'azienda italiana che non guasta

1 Like

Qui, per ragioni di sicurezza, non si parla di lavori sulla tensione di rete. Comunque non è assolutamente sicuro fare la commutazione con un semplice relè. Servono dispositivi appositi, che devono essere scelti e installati da una persona abilitata a questi lavori.

Grazie per l'indicazione, eviterò di parlarne (e di farlo, come avevo anticipato è una delle cose che stavo pensando di evitare, e che eviterò)
Tutto ciò che farò con il plc che sceglierò sarà in bassa tensione.

Ho guardato tutti i PLC suggeriti. :grinning_face:

  • Iono di Sferalabs: molto interessante, li avevo visti, ma le schede di espansione mi pare di aver capito ci siano per la versione di Strato con Raspberry, e sono proprio schede che non saprei come posizionare. Il modulo Arduino più completo è lo Iono Uno, e il numero di porte/relè non è sufficiente per il mio progetto.

  • Moduli Waveshare: interessanti e prezzo ottimo, ma non ci sono schede di espansione.

  • Moduli Erqos: Piccoli, con i moduli necessari di espansione, costo che salirebbe per le 8 temperature (un modulo legge 2 sonde, 105€), a meno di non metterle su bus RS485 con apposito aggregatore. Mi pare di capire che siano poco diffusi, ma esploro meglio.

  • Norvi (Arita mi pare il più completo): Mi sembra simile a Controllino, che però a fronte di un costo maggiore, ha già 16 relè a bordo. Andrebbero aggiunti ad Arita un paio di moduli di espansione e i relè. Forse Controllino ha più diffusione e a conti fatti costerebbe meno.

  • I moduli Industrial Shield sono interessanti, ma non fatti per consumare poco. Per lo spazio che ho a disposizione in camper, il fattore di forma differente mi creerebbe problemi di installazione.

Qui in azienda vendiamo moduli di TTControl, sicuramente robusti (vanno sui trattori) e ho un collega che li conosce a fondo e li sa programmare, ma anche se potrei averne uno a prezzo più che ottimo (gratis), sono progettati per connessioni cablate molto particolari e customizzate, solo il cavo di connessione costerebbe una fucilata (non ne abbiamo che avanzano….).
Sui prodotti che progettiamo usiamo PLC Mect, che il mio collega programma in Codesys, ma i consumi sono da prodotto per scopi industriali. Su un banco di collaudo con svariati motori di cui uno da 11kW incidono poco. :open_mouth:

Entro nella fase di ricerca e riflessione.

Nei prossimi giorni metto giù bene l’elenco delle funzioni che intendo realizzare, le grandezze da misurare e i dati da leggere dai dispositivi. Faccio un layout di una possibile installazione sul camper per definire correnti, cavi, spazi necessari, intanto che leggo e valuto.

Poi magari mi regalo per Natale :santa_claus:un Opta per giocarci e imparare e sbattere la testa, anche se non sarà la soluzione finale…