
Gestire un orto richiede passione, dedizione e… tanta acqua al momento giusto. Se sei un amante del terminale, del fai-da-te e della filosofia KISS (Keep It Simple, Stupid), quale modo migliore di automatizzare l’irrigazione se non usando un Raspberry Pi con Arch Linux ARM64?
In questa guida vedremo come configurare il sistema operativo, pilotare un relè collegato a un’elettrovalvola o a una pompa dell’acqua tramite i pin GPIO e schedulare il tutto in modo affidabile.
1. Prerequisiti Hardware e Software
Prima di iniziare, assicurati di avere:
- Un Raspberry Pi (consigliato Raspberry Pi 4 o 5) con Arch Linux ARM64 installato e configurato (con accesso SSH attivo).
- Un modulo relè a 1 o più canali (compatibile a 5V o 3.3V).
- Una pompa dell’acqua a 12V/24V o un’elettrovalvola e un alimentatore esterno adeguato.
- I pacchetti base per la gestione dei GPIO e Python installati sul sistema.
2. Preparazione dell’Ambiente su Arch Linux ARM
Accedi al tuo Raspberry Pi via SSH e aggiorna il sistema:
Bash
sudo pacman -Syu
Installa Python e le librerie necessarie per interagire con i pin GPIO. Su Arch Linux possiamo utilizzare la libreria gpiod o pacchetti dedicati tramite pip:
Bash
sudo pacman -S python python-pip python-gpiod
3. Collegamenti Elettrici (Schema di Base)
ATTENZIONE: Fai sempre molta attenzione quando lavori con la corrente alternata (230V). Per la sicurezza dell’impianto dell’orto, è vivamente consigliato l’uso di pompe o elettrovalvole a basso voltaggio (12V o 24V).
Collega il modulo relè al Raspberry Pi rispettando questa mappatura di massima (puoi modificarla via software):
- VCC del relè -> Pin 5V o 3.3V del Raspberry Pi (secondo le specifiche del modulo)
- GND del relè -> Pin GND del Raspberry Pi
- IN (Segnale) -> Un pin GPIO a scelta (es. GPIO 17 / Pin 11)
4. Lo Script Python per l’Irrigazione
Creiamo uno script di controllo in Python, ad esempio /home/alarm/orto/irrigazione.py.
Questo script attiverà il relè per un numero definito di secondi:
Python
#!/usr/bin/env python3
import time
import gpiod
# Configurazione del pin GPIO (usando il chip standard, es. gpiochip4 per i nuovi kernel su Pi 4/5)
CHIP_NAME = "gpiochip4"
LINE_OFFSET = 17 # GPIO 17 (Pin 11)
DURATA_SECONDI = 30 # Durata dell'innaffiamento in secondi
def innaffia():
print(f"Avvio irrigazione: apertura valvola per {DURATA_SECONDI} secondi...")
# Inizializzazione della linea GPIO
chip = gpiod.Chip(CHIP_NAME)
line = chip.get_line(LINE_OFFSET)
line.request(consumer="irrigazione", type=gpiod.LINE_REQ_DIR_OUT)
try:
# Accende il relè (attivo basso o alto a seconda del modulo, qui assumiamo HIGH per accendere)
line.set_value(1)
time.sleep(DURATA_SECONDI)
finally:
# Spegne il relè e rilascia la risorsa
line.set_value(0)
line.release()
print("Irrigazione completata. Valvola chiusa.")
if __name__ == "__main__":
innaffia()
Rendi lo script eseguibile:
Bash
chmod +x /home/alarm/orto/irrigazione.py
5. Schedulazione con Systemd Timers (Il modo Arch Linux)
Invece del classico cron, su Arch Linux sfruttiamo i Systemd Timers, che offrono una gestione nativa, pulita e loggata dei task schedulati.
1. Crea il file di servizio (/etc/systemd/system/irrigazione.service)
Ini, TOML
[Unit]
Description=Script di irrigazione automatica dell'orto
After=network.target
[Service]
Type=oneshot
User=alarm
ExecStart=/usr/bin/python3 /home/alarm/orto/irrigazione.py
2. Crea il file Timer (/etc/systemd/system/irrigazione.timer)
Ad esempio, per programmare l’innaffiamento tutti i giorni alle ore 06:00 del mattino:
Ini, TOML
[Unit]
Description=Timer per l'irrigazione giornaliera dell'orto
[Timer]
OnCalendar=*-*-* 06:00:00
Persistent=true
[Install]
WantedBy=timers.target
3. Abilita e avvia il timer
Ricarica il daemon di systemd e attiva il timer:
Bash
sudo systemctl daemon-reload
sudo systemctl enable --now irrigazione.timer
Puoi verificare lo stato del timer e la prossima esecuzione in qualsiasi momento con:
Bash
systemctl list-timers --all
Conclusione
Con pochi passaggi e la stabilità di Arch Linux ARM64, abbiamo trasformato il nostro Raspberry Pi in un sistema di controllo per l’irrigazione totalmente autonomo, leggero e privo di bloatware.
Nel prossimo articolo vedremo come aggiungere un sensore di umidità del terreno (soil moisture sensor) via ADC per innaffiare solo quando la terra è effettivamente secca.