Nota
Ciao, benvenuto nella SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasts Community su Facebook! Approfondisci Raspberry Pi, Arduino ed ESP32 insieme ad altri appassionati.
Perché unirti a noi?
Supporto esperto: Risolvi problemi post-vendita e sfide tecniche con l’aiuto della nostra comunità e del nostro team.
Impara e condividi: Scambia suggerimenti e tutorial per migliorare le tue abilità.
Anteprime esclusive: Ottieni accesso anticipato a nuovi annunci di prodotti e anteprime.
Sconti esclusivi: Goditi sconti esclusivi sui nostri nuovi prodotti.
Promozioni festive e giveaway: Partecipa a promozioni e concorsi durante le festività.
👉 Sei pronto a esplorare e creare con noi? Clicca su [Qui] e unisciti oggi!
7. Cancello con limitazione corrente¶
Alcune situazioni, come nei parcheggi, richiedono una gestione quantitativa.
Qui creiamo un cancello intelligente: un servomotore funge da cancello, e un rilevatore di ostacoli a infrarossi è posizionato di fronte; se viene rilevato un oggetto (come un’auto), il cancello si aprirà e il numero sarà incrementato di 1. Il conteggio viene visualizzato su un display a 7 segmenti e viene anche caricato sul Cloud di Blynk per essere visualizzato da remoto. Infine, Blynk ha un widget Switch per abilitare o disabilitare questo sistema di cancello intelligente.
Componenti necessari
In questo progetto, abbiamo bisogno dei seguenti componenti.
È decisamente comodo acquistare un kit completo, ecco il link:
Nome |
COMPONENTI NEL KIT |
LINK |
|---|---|---|
Kit 3 in 1 Starter |
380+ |
Puoi anche acquistarli separatamente dai link seguenti.
INTRODUZIONE COMPONENTI |
LINK DI ACQUISTO |
|---|---|
1. Costruisci il circuito
Nota
Il modulo ESP8266 richiede un’elevata corrente per garantire un ambiente di funzionamento stabile, quindi assicurati che la batteria da 9V sia collegata.
2. Modifica il Dashboard
Per registrare il numero, crea un Datastream di tipo Virtual Pin sulla pagina Datastream. Imposta il DATA TYPE su
Integere MIN e MAX su0e10.
Ora vai alla pagina Wed Dashboard, trascina un widget Switch per impostare il suo datastream su V0 e un widget Label per impostare il suo datastream su V8.
3. Esegui il codice
Apri il file
7.current_limiting_gate.inonel percorso3in1-kit\iot_project\7.current_limiting_gate, o copia questo codice in Arduino IDE.Sostituisci il
Template ID,Device Name, eAuth Tokencon i tuoi. Devi anche inserire ilsside lapassworddel WiFi che stai utilizzando. Per tutorial dettagliati, fai riferimento a 1.3 Collegare la scheda R3 a Blynk.Dopo aver selezionato la scheda e la porta corrette, clicca sul pulsante Upload.
Apri il Monitor seriale (imposta il baudrate su 115200) e attendi che appaia un messaggio che confermi la connessione avvenuta con successo.
Nota
Se appare il messaggio
ESP non rispondequando ti connetti, segui questi passaggi.Assicurati che la batteria da 9V sia collegata.
Resetta il modulo ESP8266 collegando il pin RST a GND per 1 secondo, quindi scollegalo.
Premi il pulsante di reset sulla scheda R3.
A volte potrebbe essere necessario ripetere l’operazione sopra 3-5 volte, sii paziente.
Ora clicca sul widget di controllo Button su Blynk per abilitare il sistema di cancello intelligente. Se il modulo di rilevamento ostacoli a infrarossi rileva un ostacolo, il cancello si aprirà e il display a 7 segmenti e il widget Count su Blynk aggiungeranno 1.
Se desideri utilizzare Blynk sui dispositivi mobili, fai riferimento a Come usare Blynk su dispositivi mobili?.
Come funziona?
La funzione BLYNK_WRITE(V0) ottiene lo stato del widget Switch e lo assegna alla variabile doorFlag, che verrà utilizzata per determinare se il sistema di cancello intelligente è abilitato o meno.
BLYNK_WRITE(V0)
{
doorFlag = param.asInt(); // Abilita Cancello
}
Nel Blynk Timer, doorFlag viene valutato ogni secondo e, se è abilitato, viene eseguita la funzione principale del cancello.
void myTimerEvent()
{
if (doorFlag)
{
channelEntrance();
}
}
La funzione principale del cancello è channelEntrance().
Quando un oggetto si avvicina al cancello (il sensore rileva un ostacolo), il count viene incrementato di 1.
Il valore di count viene inviato al datastream V8 del Blynk Cloud e al display a 7 segmenti sul circuito, e il cancello si apre.
Se l’oggetto passa da presente a assente, il che significa che l’oggetto è entrato, il cancello si chiude.
void channelEntrance()
{
int currentState = digitalRead(irPin); // 0:obstacle 1:no-obstacle
if (currentState == 0 && lastState == 1) {
count=(count+1)%10;
Blynk.virtualWrite(V8, count);
showNumber(count);
operateGate(true);
} else if ((currentState == 1 && lastState == 0)) {
operateGate(false);
}
lastState = currentState;
}
La funzione showNumber(int num) viene utilizzata per mostrare il valore sul display a 7 segmenti.
void showNumber(int num)
{
digitalWrite(STcp, LOW); //ground ST_CP and hold low for as long as you are transmitting
shiftOut(DS, SHcp, MSBFIRST, datArray[num]);
digitalWrite(STcp, HIGH); //pull the ST_CPST_CP to save the data
}
La funzione operateGate(bool openGate) apre lentamente il cancello quando il riferimento è True, e lo chiude lentamente quando il riferimento è False.
void operateGate(bool openGate) {
if (openGate == true)
{
// open gate
while (angle <= 90) {
angle++;
myservo.write(angle);
delay(5);
}
} else {
// close gate
while (angle >= 0){
angle--;
myservo.write(angle);
delay(5);
}
}
}