Circuits

Com construir un sistema de detecció de moviment amb Arduino: 7 passos

Montaje y Configuración central detección y alarma de incendios

Montaje y Configuración central detección y alarma de incendios

Taula de continguts:

Anonim

Construïu un comptador de producció de moviment i presència mitjançant un programa HUZZAH de plomes programat amb Arduino i impulsat per Ubidots.

El moviment físic eficaç i la detecció de presència en Smart Homes i Smart Manufacturing poden ser molt útils en aplicacions que van des de solucions de vida assistida per a persones grans (AAL) o un sistema de comptatge de producció que alimenta un MES més gran. Altres aplicacions per a la detecció de moviments i presències inclouen, entre d'altres:

  1. Automatització de portes i portes
  2. Sensors d'aparcament per designar punts lliures
  3. Supervisió del nivell del tanc remot
  4. Habitatges i instal·lacions intel·ligents per a la il·luminació i la seguretat
  5. Detecció i recompte d'unitats en línies de transport
  6. Detecció de marca en materials impresos
  7. Detecció de líquids inclinada dins de cartró, plàstic i paper
  8. Detecció de distància
  9. Persones que compten

Tot i que hi ha moltes aplicacions per a la presència i el moviment, hi ha igualment tants sensors per recopilar dades, com sensors capacitius, inductius, fotoelèctrics i ultrasònics. Segons els costos, les condicions ambientals i els requisits de precisió, cal seleccionar el maquinari més adequat per a un entorn i requisits d'aplicació.

Per a aquest tutorial, ens centrarem a construir un comptador de producció en temps real; l’aplicació comptarà totes les unitats que passen en una cinta transportadora. Utilitzarem l’IDE ​​Arduino per programar un Feather HUZZAH ESP8266, un sensor ultrasònic i Ubidots per desenvolupar la nostra aplicació i mostrar el nostre tauler de control IoT.

Subministraments:

Pas 1: Requisits

  1. Ploma HUZZAH amb ESP8266MB7389-100
  2. Sensor d'ultrasons
  3. Arduino IDE 1.8.2 o superior
  4. Compte Ubidots o llicència educativa

Pas 2: Configuració

  • I Configuració del maquinari
  • II. Configuració del microprogramari
  • III. Desenvolupament d'aplicacions Ubidots (esdeveniments, variables i taulers)

Pas 3: Configuració del maquinari

El sensor ultrasònic MB7389-100 és una opció de baix cost per a aplicacions industrials amb requeriments de gran abast i baix consum en condicions meteorològiques difícils gràcies a la seva qualificació IPv67.

Per començar, mireu el diagrama següent per connectar el sensor ultrasònic al Ploma HUZZAH ESP8266.

NOTA: La lectura del sensor pot estar prenent com a lectures analògiques o PWM; A continuació, explicarem la configuració de la lectura de PWM; per obtenir informació addicional, vegeu els exemples mostrats a dalt.

Opcionalment col·loqueu el micro-controlador i els sensors a l'interior de la carcassa IP67 per protegir-los de la pols, l'aigua i altres factors ambientals amenaçadors. El cas estàndard sembla similar al que es mostra a les fotos de dalt.

Pas 4: Configuració del microprogramari

En primer lloc, haureu d’instal·lar la ploma Huzzah a l’IDE ​​d’Arduino i compilar el codi. Recordeu que heu de verificar aquesta configuració fent una prova de parpelleig simple. Per obtenir més informació sobre la connexió del dispositiu Feather, consulteu aquesta guia útil de configuració del maquinari.

Per enviar dades de sensors a la Plataforma de Desenvolupament IoT d’Ubisd, copieu i enganxeu el codi següent a l’IDE ​​Arduino. Recordeu assignar el nom de la xarxa Wi-Fi, la contrasenya i el vostre compte Token d’Ubidots, si s’indica al codi.

/ ******************************** Biblioteques incloses *************** ****************/#incloure / ******************************** Constants i objectes ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; / / Poseu aquí el vostre identificador de nom de l'usuari SSID * SSID_PASS = "xxxxxxxx"; // Poseu aquí el vostre passwordconst char * TOKEN = "Assig_your_ubidots_token"; // Poseu aquí el vostre caràcter TOKENconst * DEVICE_LABEL = "motion-control"; // El vostre dispositiu labelconst char * VARIABLE_LABEL = "distància"; // La vostra variable labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Usuaris empresarials // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Usuaris educatiusint HTTPPORT = 80; / * Sensor d'ultrasons * / const int pwPin1 = 5; // El pin PWM on es connecta el sensorWiFiClient clientUbi; / ******************************** Funcions auxiliars *** **************************** // ** Obté la longitud del cos @arg variable el cos del tipus char @return dataLen the longitud de la variable * / int dataLen (variable * char) {uint8_t dataLen = 0; per (int i = 0; i <= 250; i ++) {si (variable i! = ' _') {dataLen ++; } else {break; }} retornar dataLen;} / ******************************** Funcions principals ********* ********************** / void setup () {Serial.begin (115200); / * Connecta amb AP * / WiFi.begin (SSID_NAME, SSID_PASS); while (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (cert); Serial.println (F ("WiFi connectat")); Serial.println (F ("adreça IP:")); Serial.println (WiFi.localIP ());} void loop () {/ * La lectura del sensor es retorna en mil·límetres, si voleu convertir-la en polzades només cal crear una variable apuntant a -> distance / 25,4 * / float distance = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distància); delay (1000);} void sendToUbidots (const char * device_label, const char * variable_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Espai per emmagatzemar valors per enviar * / char str_val 10; / * ---- Transforma els valors dels sensors a tipus char ----- * / / * 4 és d'amplada mínima, 2 és precisió; el valor flotant es copia a str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Construeix el cos a enviar a la petició * / sprintf (cos, "{"% s ":% s}", variable_label, str_val); / * Construeix la sol·licitud HTTP per ser POST * / sprintf (dades, "POST /api/v1.6/devices/%s", device_label); sprintf (dades, "% s HTTP / 1.1 r", dades); sprintf (dades, "% sHost: things.ubidots.com r)", dades); sprintf (dades, "% sAgent-agent:% s /% s r", dades, USER_AGENT, VERSIÓ); sprintf (dades, "% sX-Auth-Token:% s n", dades, TOKEN); sprintf (dades, "% sConnection: close r", dades); sprintf (dades, "% sContent-Type: application / json n", dades); sprintf (dades, "% sContent-Length:% d r n", dades, dataLen (body)); sprintf (dades, "% s% s r n", dades, cos); / * Connexió inicial * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verifiqueu la connexió del client * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Publicar les vostres variables:")); Serial.println (dades); / * Envia la sol·licitud HTTP * / clientUbi.print (dades); } / * Mentre el client estigui disponible, llegiu la resposta del servidor * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Memòria lliure * / lliure (dades); lliure (cos); / * Atureu el client * / clientUbi.stop ();}

ProTip: podeu comprovar si el vostre dispositiu està connectat correctament obrint el monitor sèrie a l’IDE ​​Arduino.

Podeu verificar que es crea un dispositiu al vostre motor d’Ubidots, visualitzant-lo al vostre compte Gestió de dispositius -> Dispositius.

En fer clic al dispositiu, trobareu una variable anomenada "distància" on s'emmagatzemen les lectures del sensor. Aquest nom s’ha assignat al codi que heu enganxat a l’IDE ​​Arduino. Si voleu ajustar les vostres variables automàtiques, feu-ho editant la targeta del dispositiu o fent un parell de codi actualitzat amb la nomenclatura de variables correcta per a la vostra sol·licitud.

Amb el Feather HUZZAH ESP8266 connectat i informant de dades a Ubidots, és hora de construir l’aplicació mitjançant la configuració d’aplicacions sense codis dissenyades per Ubidots.

Pas 5: Desenvolupament d'aplicacions Ubidots

Configuració d'esdeveniments d'Ubisids

Les lectures actuals que enviam a Ubidots són entrades a distància. Per traduir aquestes lectures a la sortida desitjada que desitgem –unitats comptables– hauríem de crear un esdeveniment seguint aquests passos:

  1. Dins del dispositiu actual "control de moviment" es crea una nova variable per defecte anomenada "caixes", que rebrà un 1 cada vegada que es compti una nova unitat.
  2. Anar a Gestió de dispositius -> Esdevenimentsi feu clic a la icona blava més a la cantonada superior dreta de la pàgina per afegir un esdeveniment nou.
  3. Configureu el vostre esdeveniment començant per "Si s'activa":

  • Seleccioneu una variable: "distància"
  • Valor: valor (per defecte)
  • És inferior o igual a la distància màxima esperada} entre el sensor i els quadres que passen per * la nostra aplicació demana 500 mm
  • Per 0 minuts
  • Desa

4. Un cop els desencadenants s'han configurat segons les especificacions de la vostra aplicació, feu clic a la icona taronja "més" de la cantonada superior dreta per afegir una acció condicional.

5. Seleccioneu "Establir variable" com a acció.

6. A continuació, trieu la variable predeterminada "caixes" predeterminada i el valor "1".

7. Deseu els canvis. Si l’esdeveniment s’ha configurat correctament, enviarà un "1" cada vegada que la distància entre el sensor i la unitat sigui més llarga que un llindar indicat, el que suggereix que no hi ha cap objecte a prop - i ha de comptar una nova unitat que acaba de passar .

A la targeta Dispositiu específic de plomes, trobareu que la variable "caixes" on s'envia un "1" quan es detecta la presència d’una unitat.

Especialment útil per a les cintes transportadores industrials i per al recompte d’unitats, es pot personalitzar aquest prototip per adaptar-se a diferents entorns o maquinari simplement en el vostre desenvolupament de codificació o aplicacions.

8. Visualitzeu el nombre d’unitats detectades (o vegades que s’ha detectat un objecte)
Ara, utilitzant la variable "caixes", crearem una nova variable de finestra giratòria per sumar la quantitat total de lectures rebudes de la variable "caixes" en un correu brossa definit (minuts, hores, dies, setmanes, etc.). Per executar aquest desenvolupament, seguiu aquests senzills passos:

Assigneu les següents credencials a la vostra nova finestra variable

Seleccioneu un dispositiu: control de moviment (o el nom del dispositiu que envieu les vostres dades)

Seleccioneu una variable: caixes

Calculeu el: suma

Cada: "1" hora (o segons les vostres sol·licituds d’aplicació)

Ara assigneu un nom a la nova variable que indica el nombre de caixes (o moviments) comptats en una hora, igual que "els quadres / hora" o "unitats / hores.

Pas 6: Configuracions del tauler

Finalment, creeu un tauler de control per mostrar el nombre d’unitats detectades.

Aneu a Gestió de dispositius -> Taulers i afegiu un giny nou. Aquest giny mostrarà la quantitat de caixes comptades avui per desglossament.

Assigneu les següents credencials al vostre giny nou per visualitzar el vostre compte.

Com voleu veure les vostres dades ?: Gràfic

Seleccioneu un tipus de giny: gràfic de línies

Afegeix un dispositiu: control de moviment

Afegiu una variable: caixes / hora

Finalitza. I amb aquest desenvolupament definitiu del tauler de control, la vostra aplicació està completa i ara teniu un sistema de detecció de presència i moviment eficaç i eficaç. Aquí teniu un aspecte final dels nostres resultats.

Pas 7: