Sommario:

Come costruire un sistema di rilevamento del movimento con Arduino: 7 passaggi
Come costruire un sistema di rilevamento del movimento con Arduino: 7 passaggi

Video: Come costruire un sistema di rilevamento del movimento con Arduino: 7 passaggi

Video: Come costruire un sistema di rilevamento del movimento con Arduino: 7 passaggi
Video: Sensore di livello acqua (Sensori con Arduino) 2024, Luglio
Anonim
Come costruire un sistema di rilevamento del movimento con Arduino
Come costruire un sistema di rilevamento del movimento con Arduino

Costruisci un contatore di produzione di movimento e presenza utilizzando un Feather HUZZAH programmato con Arduino e alimentato da Ubidots.

Il rilevamento efficace del movimento fisico e della presenza nelle Smart Home e nella Smart Manufacturing può essere molto utile in applicazioni che vanno dalle soluzioni Ambient Assisted Living (AAL) per anziani o un sistema di conteggio della produzione che alimenta un MES più ampio. Altre applicazioni per il rilevamento del movimento e della presenza includono ma non sono limitate a:

  1. Automazioni per porte e cancelli
  2. Sensori di parcheggio per designare posti liberi
  3. Monitoraggio remoto del livello del serbatoio
  4. Case e strutture intelligenti per l'illuminazione e la sicurezza
  5. Rilevamento e conteggio delle unità nelle linee di trasporto
  6. Rilevamento segni su materiali stampati
  7. Rilevamento di liquidi all'interno di inclinazioni di cartone, plastica e carta
  8. Rilevamento della distanza
  9. Contapersone

Mentre ci sono molte applicazioni per la presenza e il movimento, ci sono altrettanti sensori per raccogliere dati, come sensori capacitivi, induttivi, fotoelettrici e ultrasonici. A seconda dei costi, delle condizioni ambientali e dei requisiti di precisione, è necessario selezionare l'hardware più adatto a un ambiente e ai requisiti dell'applicazione.

Per questo tutorial, ci concentreremo sulla costruzione di un contatore di produzione in tempo reale; l'applicazione conterà ogni unità che passa su un nastro trasportatore. Useremo l'IDE Arduino per programmare un Feather HUZZAH ESP8266, un sensore a ultrasuoni e Ubidots per sviluppare la nostra applicazione e visualizzare il nostro dashboard IoT.

Passaggio 1: requisiti

  1. Piuma HUZZAH con ESP8266MB7389-100
  2. Sensore ultrasonico
  3. Arduino IDE 1.8.2 o successivo
  4. Account Ubidots -o-Licenza STEM

Passaggio 2: configurazione

  • I Configurazione hardware
  • II. Configurazione del firmware
  • III. Sviluppo di applicazioni Ubidots (eventi, variabili e dashboard)

Passaggio 3: configurazione hardware

Configurazione hardware
Configurazione hardware
Configurazione hardware
Configurazione hardware

Il sensore a ultrasuoni MB7389-100 è un'opzione a basso costo per applicazioni industriali con requisiti di ampio raggio e basso consumo energetico in condizioni meteorologiche difficili grazie alla sua classificazione IPv67.

Per iniziare, rispecchia lo schema qui sotto per collegare il sensore a ultrasuoni al Feather HUZZAH ESP8266.

NOTA: la lettura del sensore può essere presa come letture analogiche o PWM; di seguito spiegheremo la configurazione per la lettura PWM, per ulteriori informazioni vedere gli esempi mostrati sopra.

[Facoltativamente] posizionare il microcontrollore e i sensori all'interno della custodia IP67 per proteggerli da polvere, acqua e altri fattori ambientali minacciosi. La custodia standard è simile a quella mostrata nelle foto sopra.

Passaggio 4: configurazione del firmware

Configurazione del firmware
Configurazione del firmware
Configurazione del firmware
Configurazione del firmware

Innanzitutto, dovresti installare Feather Huzzah nell'IDE di Arduino e compilare il codice. Ricordati di verificare questa configurazione eseguendo un semplice test di lampeggio. Per ulteriori informazioni sulla connessione del dispositivo Feather, consulta questa utile guida alla configurazione dell'hardware.

Per inviare i dati del sensore alla piattaforma di sviluppo IoT Ubidots, copia e incolla il codice seguente nell'IDE Arduino. Ricordati di assegnare il nome della rete Wi-Fi, la password e il token del tuo account Ubidots dove indicato nel codice.

/****************************** Biblioteche incluse ************* ****************/#includere /****************************** ** Costanti e oggetti *******************************//* Ubidots */const char* SSID_NAME = "xxxxxxxx"; // Metti qui il tuo SSID nameconst char* SSID_PASS = "xxxxxxxx"; // Inserisci qui la tua passwordconst char* TOKEN = "Assig_your_ubidots_token"; // Metti qui il tuo TOKENconst char* DEVICE_LABEL = "motion-control"; // Il tuo dispositivo labelconst char* VARIABLE_LABEL = "distanza"; // La tua variabile labelconst char* USER_AGENT = "ESP8266";const char* VERSION = "1.0";const char* HTTPSERVER = "industrial.api.ubidots.com";// Ubidots Business users//const char* HTTPSERVER = " cose.ubidots.com"; // Ubidots Educational usersint HTTPPORT = 80;/* Sensore a ultrasuoni */const int pwPin1 = 5; // Il pin PWM a cui è collegato il sensoreWiFiClient clientUbi;/******************************** Funzioni ausiliarie *** *************************//** Ottiene la lunghezza del corpo @arg variabile il corpo di tipo char @return dataLen il lunghezza della variabile*/int dataLen(char* variabile) { uint8_t dataLen = 0; for (int i = 0; i distanza / 25.4 */ float distanza = pulseIn(pwPin1, HIGH); sendToUbidots(DEVICE_LABEL, VARIABLE_LABEL, distanza); delay(1000);}void sendToUbidots(const char* device_label, const char* variabile_label, float valore_sensore) { char* body = (char *) malloc(sizeof(char) * 150); char* data = (char *) malloc(sizeof(char) * 300); /* Spazio per memorizzare i valori da inviare * / char str_val[10]; /*---- Trasforma i valori dei sensori in tipo char -----*/ /* 4 è la larghezza minima, 2 è la precisione; il valore float viene copiato su str_val*/ dtostrf(sensor_value, 4, 2, str_val); /* Costruisce il corpo da inviare nella richiesta*/ sprintf(body, "{"%s\":%s}", variable_label, str_val); /* Costruisce l'HTTP richiesta di essere POST */ sprintf(data, "POST /api/v1.6/devices/%s", device_label); sprintf(data, "%s HTTP/1.1\r\n", data); sprintf(data, "%sHost: things.ubidots.com\r\n", data); sprintf(data, "%sUser-Agent: %s/%s\r\n", data, USER_AGENT, VERSION); sprintf(data, "%sX-Auth-Token: %s\r\n", dati, TOKEN); sprint f(dati, "%sConnessione: chiudi\r\n", dati); sprintf(data, "%sContent-Type: application/json\r\n", data); sprintf(data, "%sContent-Length: %d\r\n\r\n", data, dataLen(body)); sprintf(dati, "%s%s\r\n\r\n", dati, corpo); /* Connessione iniziale */ clientUbi.connect(HTTPSERVER, HTTPPORT); /* Verifica la connessione del client */ if (clientUbi.connect(HTTPSERVER, HTTPPORT)) { Serial.println(F("Invio delle variabili: ")); Serial.println(dati); /* Invia la richiesta HTTP */ clientUbi.print(data); } /* Mentre il client è disponibile legge la risposta del server */ while (clientUbi.available()) { char c = clientUbi.read(); Serial.write(c); } /* Memoria libera */ free(data); libero (corpo); /* Ferma il client */ clientUbi.stop();}

ProTip: puoi verificare se il tuo dispositivo è collegato correttamente aprendo il monitor seriale nell'IDE di Arduino.

Puoi verificare che un dispositivo sia stato creato nel tuo backend Ubidots visualizzandolo nel tuo account Gestione dispositivi -> Dispositivi.

Cliccando sul tuo dispositivo, troverai una variabile chiamata "distanza" dove sono memorizzate le letture del sensore. Questo nome è stato assegnato nel codice che hai appena incollato nell'IDE di Arduino. Se desideri regolare le tue variabili automatiche, fallo modificando la scheda del dispositivo o lampeggiando un codice aggiornato con la nomenclatura delle variabili corretta per la tua applicazione.

Con Feather HUZZAH ESP8266 connesso e che riporta i dati a Ubidots, è ora il momento di creare l'applicazione utilizzando la configurazione dell'applicazione senza codice accuratamente progettata da Ubidots.

Passaggio 5: sviluppo dell'applicazione Ubidots

Sviluppo di applicazioni Ubidots
Sviluppo di applicazioni Ubidots
Sviluppo di applicazioni Ubidots
Sviluppo di applicazioni Ubidots
Sviluppo di applicazioni Ubidots
Sviluppo di applicazioni Ubidots

Configurazione dell'evento Ubidots

Le letture attuali che stiamo inviando a Ubidots sono input di distanza. Per tradurre queste letture nell'output desiderato che vogliamo -unità contate- dovremmo creare un evento seguendo questi passaggi:

  1. All'interno dell'attuale dispositivo "motion-control" crea una nuova variabile predefinita chiamata "boxes", che riceverà un 1 ogni volta che viene contata una nuova unità.
  2. Vai a Gestione dispositivo -> Eventi e fai clic sull'icona blu più nell'angolo in alto a destra della pagina per aggiungere un nuovo evento.
  3. Configura il tuo evento iniziando con "If triggers":
  • Seleziona una variabile: "distanza"
  • Valore: valore (predefinito)
  • È minore o uguale alla [distanza massima prevista} tra il sensore e le scatole che passano * la nostra applicazione richiede 500 mm
  • Per 0 minuti
  • Salva

4. Una volta che i trigger sono stati configurati secondo le specifiche dell'applicazione, fare clic sull'icona arancione "più" nell'angolo in alto a destra per aggiungere un'azione condizionale.

5. Selezionare "Imposta variabile" come azione.

6. Quindi, scegli la variabile predefinita "caselle" creata in precedenza e il valore "1".

7. Salva le modifiche. Se l'evento è impostato correttamente, invierà un "1" ogni volta che la distanza tra il sensore e l'unità è maggiore di una soglia indicata, il che suggerisce che non c'è nessun oggetto vicino - e dovrebbe contare una nuova unità che è appena passata.

Nella scheda Dispositivo specifico Feather, troverai che la variabile "scatole" in cui viene inviato un "1" ogni volta che viene rilevata la presenza di un'unità.

Particolarmente utile per i nastri trasportatori industriali e il conteggio delle unità, questo prototipo può essere personalizzato per adattarsi a diversi ambienti o hardware semplicemente nella codifica o nello sviluppo delle applicazioni.

8. Visualizza il numero di unità rilevate (o le volte in cui è stato rilevato un oggetto) Ora, utilizzando la variabile "scatole", creeremo una nuova variabile finestra mobile per sommare la quantità totale di letture ricevute dalla variabile "scatole" in uno spam definito (minuti, ore, giorni, settimane, ecc.). Per eseguire questo sviluppo, segui questi semplici passaggi:

Assegna le seguenti credenziali alla tua nuova variabile della finestra mobile

Seleziona un dispositivo: motion-control (o il nome del dispositivo a cui stai inviando i tuoi dati)

Seleziona una variabile: box

Calcola: somma

Ogni: "1" ora (o in base alle richieste dell'applicazione)

Assegna ora un nome alla nuova variabile che indichi il numero di scatole (o movimenti) conteggiate in un'ora, proprio come "scatole/ora" o "unità/ore".

Passaggio 6: configurazioni del dashboard

Configurazioni del cruscotto
Configurazioni del cruscotto

Infine, crea un dashboard per visualizzare il numero di unità rilevate.

Vai su Gestione dispositivi -> Dashboard e aggiungi un nuovo widget. Questo widget mostrerà la quantità di scatole contate oggi suddivise per ora.

Assegna le seguenti credenziali al tuo nuovo widget per visualizzare il tuo conteggio.

Come vorresti vedere i tuoi dati?: Grafico

Seleziona un tipo di widget: grafico a linee

Aggiungi un dispositivo: controllo del movimento

Aggiungi una variabile: box/ora

Fine. E con questo sviluppo finale della dashboard, la tua applicazione è completa e ora disponi di un sistema di rilevamento di presenza e movimento efficiente ed efficace. Ecco un ultimo sguardo ai nostri risultati.

Consigliato: