Dispenser Automatico per Cani e Gatti con Arduino
Descrizione del Progetto
Questo progetto realizza un dispenser automatico di cibo per cani e gatti basato su Arduino Uno. Il sistema consente di programmare più erogazioni giornaliere, stabilendo per ciascun evento l’orario di attivazione e la durata di apertura dell’elettrovalvola.
L’orario viene gestito da un modulo RTC DS3231 che garantisce precisione e continuità anche in caso di spegnimento dell’alimentazione grazie alla batteria tampone integrata.
La programmazione viene effettuata tramite una tastiera matriciale 4×4 e tutte le impostazioni vengono memorizzate nella memoria EEPROM di Arduino, mantenendo i dati anche dopo lo spegnimento del dispositivo.
Un display LCD I2C 16×2 permette di visualizzare l’orario corrente, i menu di programmazione e lo stato del sistema.
Caratteristiche Principali
- Programmazione fino a 10 eventi giornalieri.
- Impostazione di:
- Ora di erogazione.
- Minuti di erogazione.
- Durata apertura elettrovalvola.
- Memorizzazione permanente in EEPROM.
- Visualizzazione eventi memorizzati.
- Cancellazione completa degli eventi.
- Reset rapido del sistema.
- Orologio RTC DS3231 ad alta precisione.
- Display LCD I2C 16×2.
- Tastiera 4×4 per configurazione.
- Relè per pilotaggio elettrovalvola.
- LED di stato sistema.
- LED di segnalazione erogazione in corso.
Componenti Utilizzati
| Quantità | Componente |
|---|---|
| 1 | Arduino Uno |
| 1 | RTC DS3231 |
| 1 | Display LCD 16×2 I2C |
| 1 | Keypad 4×4 |
| 1 | Modulo Relè 5V |
| 1 | Elettrovalvola |
| 1 | LED Verde (Sistema Attivo) |
| 1 | LED Rosso (Erogazione) |
| 2 | Resistenze 220Ω |
| 1 | Alimentatore adeguato |
Collegamenti
LCD I2C
| LCD | Arduino Uno |
|---|---|
| SDA | A4 |
| SCL | A5 |
| VCC | 5V |
| GND | GND |
RTC DS3231
| RTC | Arduino Uno |
|---|---|
| SDA | A4 |
| SCL | A5 |
| VCC | 5V |
| GND | GND |
LCD e RTC condividono lo stesso bus I2C.
Keypad 4×4
Righe
| Riga | Pin Arduino |
|---|---|
| R1 | 2 |
| R2 | 3 |
| R3 | 4 |
| R4 | 5 |
Colonne
| Colonna | Pin Arduino |
|---|---|
| C1 | 6 |
| C2 | 7 |
| C3 | 8 |
| C4 | 9 |
Relè
| Relè | Arduino |
|---|---|
| IN | 10 |
| VCC | 5V |
| GND | GND |
LED Stato Sistema
| LED Verde | Arduino |
|---|---|
| Anodo | Pin 11 |
| Catodo | Resistenza 220Ω → GND |
Sempre acceso quando il sistema è operativo.
LED Erogazione
| LED Rosso | Arduino |
|---|---|
| Anodo | Pin 12 |
| Catodo | Resistenza 220Ω → GND |
Si accende durante l’apertura dell’elettrovalvola.
Utilizzo
Schermata Principale
Il display mostra continuamente:
HH:MM:SS
ad esempio:
14:35:27
Programmazione Eventi
Premere il tasto:
A
per entrare nel menu Programmazione.
Procedura
- Inserire il numero di eventi giornalieri.
- Premere # per confermare.
- Inserire l’ora del primo evento.
- Premere #.
- Inserire i minuti.
- Premere #.
- Inserire la durata dell’elettrovalvola in minuti.
- Premere #.
La procedura verrà ripetuta automaticamente per tutti gli eventi programmati.
Al termine:
- gli eventi vengono salvati in EEPROM;
- il sistema torna automaticamente alla schermata principale.
Visualizzazione Eventi
Premere:
B
per entrare nel menu Configurazione.
Successivamente:
1 = Visualizza eventi
Il primo evento verrà mostrato sul display.
Premendo:
si passa all’evento successivo.
Il display mostrerà:
Evento 1
08:30 D=2
dove:
- 08:30 = orario evento
- D=2 = durata 2 minuti
Cancellazione Eventi
Dal menu Configurazione premere:
2
Tutti gli eventi memorizzati verranno cancellati dalla EEPROM.
Reset Completo
Dal menu Configurazione premere:
C
Il sistema:
- cancella la EEPROM;
- riavvia Arduino;
- ritorna alle impostazioni iniziali.
Funzionamento Automatico
Quando l’orologio RTC raggiunge l’orario programmato:
- Si accende il LED rosso.
- Il relè attiva l’elettrovalvola.
- Sul display compare:
EROGAZIONE
- Trascorso il tempo programmato:
- il relè si disattiva;
- il LED rosso si spegne;
- il display visualizza:
FINE EROG.
- Dopo pochi secondi il display torna automaticamente a mostrare:
HH:MM:SS
Stato dei LED
LED Verde (Pin 11)
Indica che il sistema è acceso e funzionante.
Stato:
- Sempre acceso.
LED Rosso (Pin 12)
Indica che è in corso un’erogazione.
Stato:
- Acceso durante l’apertura dell’elettrovalvola.
- Spento a fine erogazione.
Applicazioni
Il progetto può essere utilizzato per:
- distributori automatici di crocchette;
- distributori di mangime per allevamenti;
- sistemi di irrigazione temporizzati;
- dosatori automatici di liquidi;
- distributori di alimenti per animali domestici.
Sorgente
Firmware sviluppato per:
- Arduino Uno
- RTC DS3231
- LCD I2C 16×2
- Keypad 4×4
- Relè per elettrovalvola
L’intero sistema è completamente autonomo e non richiede collegamento a PC durante il funzionamento.

