Taula de continguts:

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

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

Vídeo: Com construir un sistema de detecció de moviment amb Arduino: 7 passos
Vídeo: Самосбор CoreXY 3D Printer 💡ЭЛЕКТРИКА💡 Часть 6 DIY 2024, Juny
Anonim
Com construir un sistema de detecció de moviment amb Arduino
Com construir un sistema de detecció de moviment amb Arduino

Construeix un comptador de producció de moviment i presència mitjançant un Feather HUZZAH programat amb Arduino i alimentat per Ubidots.

La detecció eficaç del moviment físic i de la presència a les cases intel·ligents i la fabricació intel·ligent pot ser molt útil en aplicacions que van des de solucions per a gent gran amb assistència ambiental (AAL) o un sistema de recompte de producció que alimenta un MES més gran. Altres aplicacions per a la detecció de moviment i presència inclouen, entre d'altres,:

  1. Automatització de portes i portes
  2. Sensors d’estacionament per designar espais lliures
  3. Monitorització remota del nivell del tanc
  4. Llars i instal·lacions intel·ligents per a la il·luminació i la seguretat
  5. Detecció i recompte d'unitats en línies transportadores
  6. Detecció de marques en materials impresos
  7. Detecció de líquids a les inclinacions de cartró, plàstic i paper
  8. Detecció de distància
  9. Les persones compten

Tot i que hi ha moltes aplicacions de presència i moviment, hi ha igualment tants sensors per recopilar dades, com ara sensors capacitius, inductius, fotoelèctrics i ultrasons. Depenent dels costos, les condicions ambientals i els requisits de precisió, s’ha de 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 passin per una cinta transportadora. Utilitzarem l’Arduino IDE per programar un Feather HUZZAH ESP8266, un sensor d’ultrasons i Ubidots per desenvolupar la nostra aplicació i mostrar el nostre tauler de control d’IoT.

Pas 1: requisits

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

Pas 2: Configuració

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

Pas 3: Configuració del maquinari

Configuració del maquinari
Configuració del maquinari
Configuració del maquinari
Configuració del maquinari

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

Per començar, reflectiu el diagrama següent per connectar el sensor d’ultrasons al Feather HUZZAH ESP8266.

NOTA: la lectura del sensor es pot prendre com a lectures analògiques o PWM; a continuació explicarem la configuració de la lectura de PWM; per obtenir informació addicional, consulteu els exemples mostrats anteriorment.

[Opcionalment] col·loqueu el microcontrolador i els sensors dins de la caixa IP67 per protegir-los de la pols, l'aigua i altres factors ambientals amenaçadors. El cas estàndard té un aspecte similar al que es mostra a les fotos anteriors.

Pas 4: Configuració del microprogramari

Configuració del firmware
Configuració del firmware
Configuració del firmware
Configuració del firmware

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

Per enviar dades del sensor a la plataforma de desenvolupament IoT Ubidots, copieu i enganxeu el codi següent a l'IDE Arduino. Recordeu assignar el nom de la xarxa Wi-Fi, la contrasenya i el testimoni del vostre compte d’Ubidots allà on s’indica al codi.

/ ********************************* Biblioteques incloses *************** ****************/#incloure /****************************** ** Constants i objectes *********************************** * * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Poseu aquí el vostre nom SSID nomeconst char * SSID_PASS = "xxxxxxxx"; // Posa aquí el teu passwordconst char * TOKEN = "Assig_your_ubidots_token"; // Posa aquí el teu TOKENconst char * DEVICE_LABEL = "motion-control"; // El vostre dispositiu labelconst char * VARIABLE_LABEL = "distance"; // La vostra variable labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Usuaris d'Ubidots Business // const char * HTTPSERVER = " coses.ubidots.com "; // Ubidots Educational usersint HTTPPORT = 80; / * Sensor d'ultrasons * / const int pwPin1 = 5; // El pin PWM on està connectat el sensor Wi-Fi ClientUbi; / ******************************** Funcions auxiliars *** **************************** // ** Obté la longitud de la variable @arg el cos del tipus char @return data Obtingueu la longitud de la variable * / int dataLen (variable char *) {uint8_t dataLen = 0; for (int i = 0; i distance / 25,4 * / float distance = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distance); 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 de caràcter ----- * / / * 4 és ample mínim, 2 és precisió; el valor flotant es copia a str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Construeix el cos que s'enviarà a la sol·licitud * / sprintf (cos, "{"% s / ":% s}", variable_label, str_val); / * Construeix l'HTTP sol·licitud de POST * / sprintf (dades, "POST /api/v1.6/devices/%s", device_label); sprintf (dades, "% s HTTP / 1.1 / r / n", dades); sprintf (dades, "% sHost: things.ubidots.com / r / n", data); sprintf (dades, "% sUser-Agent:% s /% s / r / n", data, USER_AGENT, VERSION); sprintf (data, "% sX-Auth-Token:% s / r / n", data, TOKEN); sprint f (dades, "% sConnection: close / r / n", data); sprintf (dades, "% sContent-Type: application / json / r / n", data); sprintf (dades, "% sConting-Length:% d / r / n / r / n", data, dataLen (body)); sprintf (dades, "% s% s / r / n / r / n", dades, cos); / * Connexió inicial * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verifiqueu la connexió del client * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Publicació de les vostres variables:")); Serial.println (dades); / * Envia la sol·licitud HTTP * / clientUbi.print (dades); } / * Mentre el client està disponible, llegiu la resposta del servidor * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Memòria lliure * / lliure (dades); lliure (cos); / * Atura el client * / clientUbi.stop ();}

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

Podeu verificar que es crea un dispositiu al vostre fons d’Ubidots si el visualitzeu 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 acabeu d'enganxar a l'IDE Arduino. Si voleu ajustar les vostres variables automàtiques, feu-ho editant la targeta del dispositiu o intermitent un codi actualitzat amb la nomenclatura de variables correcta per a la vostra aplicació.

Amb el Feather HUZZAH ESP8266 connectat i informant de dades a Ubidots, ara ha arribat el moment de crear l’aplicació mitjançant la configuració d’aplicacions sense codi dissenyades amb cura per Ubidots.

Pas 5: desenvolupament d'aplicacions Ubidots

Desenvolupament d'aplicacions Ubidots
Desenvolupament d'aplicacions Ubidots
Desenvolupament d'aplicacions Ubidots
Desenvolupament d'aplicacions Ubidots
Desenvolupament d'aplicacions Ubidots
Desenvolupament d'aplicacions Ubidots

Configuració d'esdeveniments Ubidots

Les lectures actuals que estem enviant a Ubidots són entrades de distància. Per traduir aquestes lectures a la sortida desitjada que volem -unitats comptades- hauríem de crear un esdeveniment seguint aquests passos:

  1. Dins del dispositiu actual "motion-control" creeu una nova variable per defecte anomenada "caixes", que rebrà un 1 cada vegada que es compti una nova unitat.
  2. Aneu a Gestió de dispositius -> Esdeveniments i feu clic a la icona blava més a l'extrem superior dret de la pàgina per afegir un esdeveniment nou.
  3. Configureu l'esdeveniment començant per "Si s'activa":
  • Seleccioneu una variable: "distància"
  • Valor: valor (predeterminat)
  • És inferior o igual a [la distància màxima esperada} entre el sensor i les caixes que passen per * la nostra aplicació demana 500 mm
  • Durant 0 minuts
  • Desa

4. Un cop configurats els activadors segons les especificacions de l'aplicació, feu clic a la icona taronja "més" a l'extrem superior dret per afegir una acció condicional.

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

6. A continuació, trieu la variable predeterminada "quadres" creada anteriorment i el valor "1".

7. Deseu els canvis. Si l'esdeveniment està configurat correctament, enviarà un "1" cada vegada que la distància entre el sensor i la unitat sigui superior al llindar indicat, cosa que suggereix que no hi ha cap objecte a prop, i hauria de comptar una nova unitat que acabi de passar.

A la targeta de dispositiu específica de Feather, trobareu que la variable "caixes" on s'envia un "1" cada cop que es percep la presència d'una unitat.

Especialment útil per a cintes transportadores industrials i unitats que compten aquest prototip es poden personalitzar per adaptar-se a diferents entorns o maquinari simplement en la vostra codificació o desenvolupament de les vostres aplicacions.

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

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

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

Seleccioneu una variable: quadres

Calculeu la suma:

Cada: "1" hora (o segons les sol·licituds de sol·licitud)

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

Pas 6: configuracions del tauler

Configuracions del tauler
Configuracions del tauler

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

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

Assigneu les credencials següents al vostre widget nou per visualitzar el recompte.

Com voldríeu veure les vostres dades ?: gràfic

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

Afegiu un dispositiu: control de moviment

Afegiu una variable: quadres / hora

Acabar. I amb aquest desenvolupament final del tauler, la vostra aplicació és completa i ara teniu un sistema de detecció de moviment i presència eficient i eficaç. Aquí teniu un darrer repàs als nostres resultats.

Recomanat: