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
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.
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 spb16ch | GS1 | GS2 | GS3 |
---|---|---|---|
1 | chiuso | chiuso | chiuso |
2 | aperto | chiuso | chiuso |
3 | chiuso | aperto | chiuso |
4 | aperto | aperto | chiuso |
5 | chiuso | chiuso | aperto |
6 | aperto | chiuso | aperto |
7 | chiuso | aperto | aperto |
8 | aperto | aperto | aperto |
Per completezza di informazioni riporto nella seguente tabella i gpio utilizzati per eseguire le varie connessioni:
Physical | Name | wPi | BCM | Descrizione | Connessione a spb16ch |
---|---|---|---|---|---|
1 | 3.3V | ||||
2 | 5V | ||||
3 | SDA.1 | 8 | 2 | I2C | Connettore K5 - Pin 3 |
4 | 5V | ||||
5 | SCL.1 | 9 | 3 | I2C | Connettore K5 - Pin 4 |
6 | 0V | ||||
7 | GPIO. 7 | 7 | 4 | SPB16CH7_GPIO | Scheda 7 Connettore K5 - Pin 5 |
8 | TxD | 15 | 14 | SPB16CH8_GPIO | Scheda 8 Connettore K5 - Pin 5 |
9 | 0V | ||||
10 | RxD | 16 | 15 | ||
11 | GPIO. 0 | 0 | 17 | SPB16CH1_GPIO | Scheda 1 Connettore K5 - Pin 5 |
12 | GPIO. 1 | 1 | 18 | SPB16CH4_GPIO | Scheda 4 Connettore K5 - Pin 5 |
13 | GPIO. 2 | 2 | 27 | SPB16CH2_GPIO | Scheda 2 Connettore K5 - Pin 5 |
14 | 0V | ||||
15 | GPIO. 3 | 3 | 22 | SPB16CH3_GPIO | Scheda 3 Connettore K5 - Pin 5 |
16 | GPIO. 4 | 4 | 23 | SPB16CH5_GPIO | Scheda 5 Connettore K5 - Pin 5 |
17 | 3.3V | ||||
18 | GPIO. 5 | 5 | 24 | SPB16CH6_GPIO | Scheda 6 Connettore K5 - Pin 5 |
19 | MOSI | 12 | 10 | SUPPLY_GPIO_1 | |
20 | 0V | ||||
21 | MISO | 13 | 9 | SUPPLY_GPIO_2 | |
22 | GPIO. 6 | 6 | 25 | RAIN_GPIO | |
23 | SCLK | 14 | 11 | ||
24 | CE0 | 10 | 8 | ||
25 | 0V | ||||
26 | CE1 | 11 | 7 |
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.