piGarden + spb16ch: gestiamo fino a 128 zone nel nostro impianto di irrigazione

Avete la necessità di gestire molte zone nel vostro impianto di irrigazione ? Adesso con piGardern non è più un problema. Infatti dalla versione 0.5.0 è possibile controllare schede di terze parti collegate al nostro Raspberry. In particolare, la scheda di cui vi parlerò in questo post è la spb16ch. Ogni board sp16ch può gestire 16 relè e ne possono essere collegate fino a 8 in cascata, raggiungendo così un massimo di 128 zone gestibili.

Vediamo com’è possibile utilizzare la scheda spb16ch.

Innanzi tutto è necessario installare l’ultima versione di piGarden (0.5.0) che permette l’interfacciamento con altri dispositivi grazie alla recente implementazione per l’utilizzo di driver. Procedete seguendo le istruzioni del post Impianto di irrigazione con Raspberry Pi: piGarden, lo script di gestione per installare piGarden. Se invece avete già installato sul vostro Raspberry una versione meno recente di piGarden, potete aggiornarla seguendo le istruzioni che trovate in qui.

Una volta che avete l’ultima versione di piGarden sul vostro sistema, trovate un file di configurazione già pronto e quindi lo potete copiare in /etc:

sudo cp ~/piGarden/conf/piGarden.conf.spb16ch.example /etc/piGarden.conf

Così com’è, nel file sono configurate 128 zone suddivise su 8 schede ed è impostato il supporto per le elettrovalvole mono-stabili. Dovrete quindi editare la configurazione con il numero di zone e le schede effettivamente usate nella vostra configurazione. I parametri su cui agire sono i seguenti:

# Inserite qui la quantità di elettrovalvole collegate.
EV_TOTAL=48
 
# Di seguito sono definiti i nomi delle singole zone (EVx_ALIAS).
# Sono anche mappati i relè delle spb16ch utilizzati per ogni elettrovalvola (EVx_GPIO).
# Modificate a vostro piacimento i nomi ed eliminate le elettrovalvole che non utilizzate
EV1_ALIAS="Zona_1" #
EV1_GPIO="drv:spb16ch:1"
 
EV2_ALIAS="Zona_2" #
EV2_GPIO="drv:spb16ch:2"
 
...
 
EV128_ALIAS="Zona_1" #
EV128_GPIO="drv:spb16ch:128"

Dovete tenere presente che se avete più schede spb16ch collegate in cascata la numerazione dei relè utilizzati nella mappatura del driver avranno la seguente corrispondenza:

drv:spb16ch:1   ==> scheda  1 - relè  1
...
drv:spb16ch:16  ==> scheda  1 - relè 16
drv:spb16ch:17  ==> scheda  2 - relè  1
...
drv:spb16ch:32  ==> scheda  2 - relè 16
drv:spb16ch:33  ==> scheda  3 - relè  1
...
drv:spb16ch:128 ==> scheda  8 - relè 16

Le schede spb16ch utilizzano il protocollo I2C per comunicare con il Raspberry, andrà quindi configurato quest’ultimo abilitando il bus I2C e facendo caricare gli appositi moduli kernel per la gestione. Lo possiamo fare seguendo i passi elencati qui sotto:

Dalla shell lancia raspi-config:

sudo raspi-config
Dal menù scegli il punto 5: Interfacing Options
Dal prossimo elenco scegli la voce: P5 I2C
A questo punto ti verrà richiesto di abilitare l’interfaccia I2C (Would you like the ARM I2C interface to be enabled?), naturalmente rispondi di SI.
A questo punto puoi uscire da raspi-config.

Una volta abilitato il supporto I2C dovremo installare phyton, la libreria python-smbus e dare i permessi all’utente pi per leggere/scrivere sui device i2c:

sudo apt-get install python python-smbus
sudo usermod -a -G i2c pi

Nell’immagine a seguire vediamo in dettaglio come collegare una o più schede spb16ch al nostro raspberry.

Connessioni spb16ch - raspberry

Oltre alle connessioni per il bus I2C, ogni scheda spb16ch utilizza un gpio del raspberry perché queste possano essere abilitate alla ricezione dei comandi. I gpio utilizzati sono definiti nel file di configurazione come segue (se utilizzate meno schede spb16ch potete eliminare le definizioni non necessarie):

# Gpio di per gestire l'abilitazione/disabilitazione delle schede spb16ch
SPB16CH1_GPIO=17   # Physical 11 - wPi 0
SPB16CH2_GPIO=27   # Physical 13 - wPi 2
SPB16CH3_GPIO=22   # Physical 15 - wPi 3
SPB16CH4_GPIO=18   # Physical 12 - wPi 1
SPB16CH5_GPIO=23   # Physical 16 - wPi 4
SPB16CH6_GPIO=24   # Physical 18 - wPi 5
SPB16CH7_GPIO=4    # Physical 7  - wPi 7
SPB16CH8_GPIO=14   # Physical 8  - wPi 15

Ogni scheda collegata al Raspberry deve essere identificata univocamente in base al settaggio dei ponticelli GS1, GS2 e GS3 presenti su ogni singola spb16ch. Riporto qui sotto una tabella con indicato la posizione da utilizzare per i vari ponticelli:

Numero scheda spb16chGS1GS2GS3
1chiusochiusochiuso
2apertochiusochiuso
3chiusoapertochiuso
4apertoapertochiuso
5chiusochiusoaperto
6apertochiusoaperto
7chiusoapertoaperto
8apertoapertoaperto

Per completezza di informazioni riporto nella seguente tabella i gpio utilizzati per eseguire le varie connessioni:

PhysicalNamewPiBCMDescrizioneConnessione a spb16ch
13.3V
25V
3SDA.182I2CConnettore K5 - Pin 3
45V
5SCL.193I2CConnettore K5 - Pin 4
60V
7GPIO. 774SPB16CH7_GPIOScheda 7
Connettore K5 - Pin 5
8TxD1514SPB16CH8_GPIOScheda 8
Connettore K5 - Pin 5
90V
10RxD1615
11GPIO. 0017SPB16CH1_GPIOScheda 1
Connettore K5 - Pin 5
12GPIO. 1118SPB16CH4_GPIOScheda 4
Connettore K5 - Pin 5
13GPIO. 2227SPB16CH2_GPIOScheda 2
Connettore K5 - Pin 5
140V
15GPIO. 3322SPB16CH3_GPIOScheda 3
Connettore K5 - Pin 5
16GPIO. 4423SPB16CH5_GPIOScheda 5
Connettore K5 - Pin 5
173.3V
18GPIO. 5524SPB16CH6_GPIOScheda 6
Connettore K5 - Pin 5
19MOSI1210SUPPLY_GPIO_1
200V
21MISO139SUPPLY_GPIO_2
22GPIO. 6625RAIN_GPIO
23SCLK1411
24CE0108
250V
26CE1117

Bene, adesso abbiamo eseguito tutto il necessario per fare funzionare piGarden con sp16ch, non ci resta che eseguire l’inizializzazione ( attenzione, più zone sono definite e più a lungo impiegherà l’inizializzazione a terminare):

/home/pi/piGarden.sh init

Con questo è tutto, per qualsiasi dubbio potete scrivere nei commenti.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *