### 4.6 Progetto: Sistema di Alimentazione Intelligente In questo progetto, il modulo a ultrasuoni rileva se gli animali si trovano nell'area di alimentazione, e il Servo apre automaticamente la mangiatoia per il pollame. Inoltre, l'integrazione dell'IOT consente il monitoraggio remoto di tali sistemi di alimentazione, il che offre molta comodità. Nel complesso, l'automazione e il funzionamento remoto stanno ottimizzando il processo di alimentazione per questo sistema. ![img](../media/cout6.png) --- #### 4.6.1 Diagramma di Flusso ![image-20230607085516167](../media/image-20230607085516167.png) --- #### 4.6.2 Servo **Descrizione:** Il **Servo**, chiamato anche **Dispositivo Servo RC**, è un motore con feedback. Comunemente, il Servo esegue un controllo preciso della posizione e produce una coppia elevata, che si trova spesso in progetti di robotica, auto RC, aeroplani e aeromobili. ![img](../media/cou64.png) --- **Struttura Interna:** ![img](../media/cou61.png) - ① Segnale (S): Riceve il segnale di controllo dal microcontrollore. - ② Potenziometro: la parte di feedback del Servo. Misura la posizione dell'albero di uscita. - ③ Scheda incorporata (Controller interno): il cuore del Servo. Elabora il segnale di controllo esterno e il segnale di feedback della posizione e aziona il Servo. - ④ Motore DC: la parte esecutiva. Produce velocità, coppia e posizione. - ⑤ Sistema di ingranaggi: Scala le uscite dal motore all'angolo di uscita finale secondo un certo rapporto di trasmissione. --- **Azionare il Servo:** Il segnale (S) riceve il PWM per controllare l'uscita del Servo, e **la posizione dell'albero di uscita dipende direttamente dal duty cycle del PWM**. Ad esempio: - Se inviamo un segnale con larghezza di impulso di 1,5 ms al Servo, il suo albero (corno) ruoterà nella posizione centrale (90°); - Se la larghezza dell'impulso = `0,5 ms`, l'albero ruota al suo minimo (0°); - Se la larghezza dell'impulso = `2,5 ms`, l'albero ruota al suo massimo (180°). **NOTA: L'angolo massimo varia a seconda del tipo di Servo. Alcuni sono a 170° mentre altri sono solo a 90°. Nonostante ciò, i Servo di solito si muovono di metà (del massimo) se ricevono un segnale con larghezza di impulso di 1,5 ms.** ![img](../media/cou62.png) Il periodo di un Servo dura solitamente 20 ms e produce impulsi a una frequenza di `50 Hz`. La maggior parte dei servi funziona normalmente a 40~200 Hz. --- **Schema di Collegamento:** **Collegare il Servo a io26.** **Attenzione: Collegare il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!** ![img](../media/couj61.png) --- **Codice di Test:** - Inizializzare la porta seriale e definire una variabile **item** con un'assegnazione di 80. ![img](../media/st78.png) - Impostare **item** all'angolo del Servo da 80° a 180°, ruotando di 1° ogni 15 ms. ![img](../media/st79.png) - Il Servo ruota di 1° ogni 15 ms, da 180° a 80°. ![img](../media/st80.png) Codice completo: ![img](../media/st81.png) **Risultato del Test:** La mangiatoia si apre lentamente e poi si chiude, il che è controllabile. **NOTA: Il servo SG90 può ruotare di 180°. Poiché la mangiatoia è piccola, 100° di rotazione sono sufficienti per chiudere completamente la scatola.** - 80°: completamente aperto - 120°: semiaperto - 180°: chiuso ![img](../media/cou63.gif) --- **ATTENZIONE** **Non mettere le dita nella scatola per evitare di pizzicarsi!** **Non bloccare la porta con qualcosa per evitare di danneggiare il servo!** --- #### 4.6.3 Sensore Ultrasonico **Descrizione:** ![img](../media/cou65.png) **Schema Elettrico:** ![img](../media/couy61.png) --- La frequenza delle onde sonore che l'uomo può udire è 20Hz ~ 20KHz, mentre le onde ultrasoniche sono al di fuori di questo intervallo. **Ultrasuoni:** ![img](../media/cou66.png) Il modulo a ultrasuoni converte l'elettricità e le onde ultrasoniche l'una nell'altra tramite l'effetto piezoelettrico, e trasmette e riceve anche onde ultrasoniche. Questo tipo di onda presenta direttività, forte penetrazione e facile concentrazione dell'energia sonora. ![img](../media/cou67.png) In questo sistema di rilevamento a ultrasuoni, per prima cosa programmiamo sulla MCU (scheda di sviluppo ESP32) per generare un'onda quadra originale a 40KHz e azionare il modulo a ultrasuoni per emetterla. Immediatamente, il modulo calcola la distanza dall'oggetto dopo aver ricevuto l'onda riflessa (Echo) amplificata e modellata dal circuito. Qui, registra la durata dell'emissione e della riflessione e calcola la distanza in base alla differenza di tempo. In parole semplici, la MCU controlla il modulo per emettere onde ultrasoniche che vengono rimbalzate dopo aver incontrato ostacoli e vengono ricevute dal modulo. La differenza di tempo tra di esse è un fattore importante nel calcolo della distanza (la velocità di propagazione del suono nell'aria è di 340 m/s). --- **Schema di Collegamento:** **Collegare l'Echo del modulo ultrasonico a io13 e Trig a io12.** **Attenzione: Collegare il giallo a S (Segnale) e il rosso a V (Alimentazione). Non invertirli!** ![img](../media/couj62.png) --- **Codice di Test:** Impostare il pin corretto: Trig al pin io12; Echo al pin io13. ![img](../media/st83.png) **Risultato del Test:** In questo kit, il raggio di rilevamento è compreso tra 3 e 8 cm. Aprire il monitor seriale e osservare. ![img](../media/st82.png) --- #### 4.6.4 Sistema di Alimentazione Intelligente **Descrizione:** Il sistema di alimentazione intelligente alimenta in modo intelligente il pollame domestico tramite un modulo a ultrasuoni e un servo. Il primo rileva la distanza dagli animali mentre il secondo controlla l'apertura o la chiusura della mangiatoia. Quando un animale domestico viene rilevato vicino alla scatola, il servo la apre per alimentarlo. --- **Schema di Collegamento:** **Collegare l'Echo del modulo ultrasonico a io13 e Trig a io12; collegare il servo a io26.** **Attenzione: Collegare il giallo a S (Segnale), il rosso a V (Alimentazione) e il nero a GND. Non invertirli!** ![img](../media/couj63.png) --- **Codice di Test:** Flusso del codice: ![img](../media/flo6.png) Codice: - Inizializzare la porta seriale. Definire una variabile e assegnarle 180. ![img](../media/st84.png) - Impostare correttamente il pin e stampare il valore ricevuto. ![img](../media/st85.png) - Determinare il valore della distanza rilevata. Se è compreso tra 2 cm e 7 cm, la mangiatoia si aprirà. ![img](../media/st86.png) Codice completo: ![img](../media/st87.png) **Risultato del Test:** Quando viene rilevato un animale, aprire la mangiatoia.