Cuprins:

Cum să construiți un sistem de detectare a mișcării cu Arduino: 7 pași
Cum să construiți un sistem de detectare a mișcării cu Arduino: 7 pași

Video: Cum să construiți un sistem de detectare a mișcării cu Arduino: 7 pași

Video: Cum să construiți un sistem de detectare a mișcării cu Arduino: 7 pași
Video: Protecție inteligentă pentru boxe si controller pentru ventilatoare 2024, Iulie
Anonim
Cum să construiți un sistem de detectare a mișcării cu Arduino
Cum să construiți un sistem de detectare a mișcării cu Arduino

Construiți un contor de producție de mișcare și prezență utilizând un Feather HUZZAH programat cu Arduino și alimentat de Ubidots.

Detectarea efectivă a mișcării fizice și a prezenței în casele inteligente și în fabricarea inteligentă poate fi foarte utilă în aplicații care variază de la soluții pentru persoanele în vârstă pentru viața asistată în mediu (AAL) sau un sistem de numărare a producției care alimentează un MES mai mare. Alte aplicații pentru detectarea mișcării și prezenței includ, dar nu se limitează la:

  1. Automatizarea ușilor și a porților
  2. Senzori de parcare pentru a desemna locuri libere
  3. Monitorizarea la distanță a rezervorului
  4. Case inteligente și facilități pentru iluminat și securitate
  5. Detectarea și numărarea unităților în liniile transportoare
  6. Detectarea marcajelor pe materialele tipărite
  7. Detectarea lichidului în carton, plastic și hârtie se înclină
  8. Detectarea distanței
  9. Oamenii contează

Deși există multe aplicații pentru prezență și mișcare, există la fel de mulți senzori pentru a colecta date, cum ar fi senzori capacitivi, inductivi, fotoelectrici și ultrasonici. În funcție de costuri, condiții de mediu și cerințe de precizie, ar trebui să se selecteze cel mai potrivit hardware pentru cerințele de mediu și aplicație.

Pentru acest tutorial, ne vom concentra pe construirea unui contor de producție în timp real; aplicația va conta fiecare unitate care trece pe o bandă transportoare. Vom folosi Arduino IDE pentru a programa un Feather HUZZAH ESP8266, un senzor cu ultrasunete și Ubidots pentru a ne dezvolta aplicația și a afișa tabloul de bord IoT.

Pasul 1: Cerințe

  1. Feather HUZZAH cu ESP8266MB7389-100
  2. Senzor cu ultrasunete
  3. Arduino IDE 1.8.2 sau o versiune ulterioară
  4. Cont Ubidots - sau licență STEM

Pasul 2: Configurare

  • I Configurare hardware
  • II. Configurare firmware
  • III. Dezvoltarea aplicației Ubidots (evenimente, variabile și tablouri de bord)

Pasul 3: Configurare hardware

Configurare hardware
Configurare hardware
Configurare hardware
Configurare hardware

Senzorul cu ultrasunete MB7389-100 este o opțiune low-cost pentru aplicații industriale cu cerințe de consum larg și de gamă largă în condiții meteorologice dificile datorită ratingului său IPv67.

Pentru a începe, reflectați diagrama de mai jos pentru a atașa senzorul cu ultrasunete la Feather HUZZAH ESP8266.

NOTĂ: Citirea senzorului poate fi luată ca citiri analogice sau PWM; mai jos vom explica setarea pentru citirea PWM, pentru informații suplimentare vă rugăm să consultați exemplele prezentate mai sus.

[Opțional] așezați microcontrolerul și senzorii în carcasa de IP67 pentru a le proteja de praf, apă și alți factori de mediu amenințăători. Carcasa standard arată similar cu cea afișată în fotografiile de mai sus.

Pasul 4: Configurarea firmware-ului

Configurare firmware
Configurare firmware
Configurare firmware
Configurare firmware

Mai întâi, ar trebui să instalați Feather Huzzah în Arduino IDE și să compilați codul. Nu uitați să verificați această configurație făcând un simplu test intermitent. Pentru informații suplimentare despre conectarea dispozitivului Feather, consultați acest ghid util de configurare hardware.

Pentru a trimite datele senzorului către Ubidots IoT Development Platform, copiați și lipiți codul de mai jos în IDE-ul Arduino. Nu uitați să atribuiți numele rețelei Wi-Fi, parola și indicativul contului Ubidots acolo unde este indicat în cod.

/ ********************************* Bibliotecile incluse *************** ****************/#include /****************************** ** Constante și obiecte ********************************* * * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Puneți aici numele SSID al tău caracter * SSID_PASS = "xxxxxxxx"; // Puneți aici passwordconst char * TOKEN = "Assig_your_ubidots_token"; // Puneți aici TOKENconst char * DEVICE_LABEL = "motion-control"; // Dispozitivul dvs. labelconst char * VARIABLE_LABEL = "distance"; // Variabila dvs. labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Business users // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Educational usersint HTTPPORT = 80; / * Ultrasonic Sensor * / const int pwPin1 = 5; // Pinul PWM la care este conectat senzorul WiClient clientUbi; / ******************************** Funcții auxiliare *** **************************** // ** Obține lungimea variabilei body @arg corpul de tip char @return data lungimea variabilei * / int dataLen (char * variabilă) {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); / * Spațiu pentru stocarea valorilor de trimis * / char str_val [10]; / * ---- Transformă valorile senzorilor în tipul de caracter ----- * / / * 4 este lățime minină, 2 este precizie; valoarea float este copiată pe str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Construiește corpul care urmează să fie trimis în cerere * / sprintf (corp, "{"% s / ":% s}", variable_label, str_val); / * Construiește HTTP solicitați să fiți POST * / sprintf (date, "POST /api/v1.6/devices/%s", device_label); sprintf (date, "% s HTTP / 1.1 / r / n", date); sprintf (date, "% sHost: things.ubidots.com / r / n", date); sprintf (date, "% sUser-Agent:% s /% s / r / n", data, USER_AGENT, VERSION); sprintf (date, "% sX-Auth-Token:% s / r / n", date, TOKEN); sprint f (date, "% sConexiune: închidere / r / n", date); sprintf (date, "% sContent-Type: application / json / r / n", data); sprintf (date, "% sContent-Length:% d / r / n / r / n", data, dataLen (corp)); sprintf (date, "% s% s / r / n / r / n", date, corp); / * Conexiune inițială * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verificați conexiunea clientului * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Postarea variabilelor:")); Serial.println (date); / * Trimiteți cererea HTTP * / clientUbi.print (date); } / * În timp ce clientul este disponibil citiți răspunsul serverului * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Memorie gratuită * / liberă (date); liber (corp); / * Opriți clientul * / clientUbi.stop ();}

ProTip: puteți verifica dacă dispozitivul dvs. este conectat corect deschizând monitorul serial în Arduino IDE.

Puteți verifica dacă un dispozitiv este creat în backend-ul dvs. Ubidots, vizualizându-l în contul dvs. Device Management -> Devices.

Făcând clic pe dispozitivul dvs., veți găsi o variabilă numită „distanță” unde sunt stocate citirile senzorului. Acest nume a fost atribuit în codul pe care tocmai l-ați lipit în IDE-ul Arduino. Dacă doriți să vă ajustați variabilele automate, vă rugăm să faceți acest lucru editând cardul dispozitivului sau intermitând un cod actualizat cu nomenclatura corectă a variabilelor pentru aplicația dvs.

Cu Feather HUZZAH ESP8266 conectat și raportarea datelor către Ubidots, acum este timpul să construiți aplicația utilizând configurația aplicației fără cod proiectată cu atenție de Ubidots.

Pasul 5: Dezvoltarea aplicației Ubidots

Dezvoltarea aplicației Ubidots
Dezvoltarea aplicației Ubidots
Dezvoltarea aplicației Ubidots
Dezvoltarea aplicației Ubidots
Dezvoltarea aplicației Ubidots
Dezvoltarea aplicației Ubidots

Configurarea evenimentului Ubidots

Citirile curente pe care le trimitem către Ubidots sunt intrări la distanță. Pentru a traduce aceste citiri în rezultatul dorit - unități numărate - ar trebui să creăm un eveniment urmând acești pași:

  1. În interiorul dispozitivului curent „controlul mișcării” creați o nouă variabilă implicită numită „cutii”, care va primi un 1 de fiecare dată când o unitate nouă este numărată.
  2. Accesați Gestionarea dispozitivelor -> Evenimente și faceți clic pe pictograma albastră plus din colțul din dreapta sus al paginii pentru a adăuga un eveniment nou.
  3. Configurați-vă evenimentul începând cu „Dacă se declanșează”:
  • Selectați o variabilă: „distanță”
  • Valoare: valoare (implicit)
  • Este mai mică sau egală cu [distanța maximă așteptată} între senzor și casetele care trec pe lângă * aplicația noastră solicită 500 mm
  • Timp de 0 minute
  • Salvați

4. După ce declanșatoarele au fost configurate conform specificațiilor aplicației dvs., faceți clic pe pictograma portocalie „plus” din colțul din dreapta sus pentru a adăuga o acțiune condiționată.

5. Selectați „Set Variable” ca acțiune.

6. Apoi alegeți variabila implicită creată anterior „casete” și valoarea „1”.

7. Salvați modificările. Dacă evenimentul este configurat corect, va trimite un „1” de fiecare dată când distanța dintre senzor și unitate este mai mare decât pragul indicat, ceea ce sugerează că nu există niciun obiect aproape - și ar trebui să numere o unitate nouă care tocmai a trecut pe lângă.

În cardul dispozitivului Feather specific, veți găsi că variabila „casete” unde este trimis un „1” de fiecare dată când este sesizată prezența unei unități.

Util în special pentru benzile transportoare industriale și pentru numărarea unităților, acest prototip poate fi personalizat pentru a se potrivi diferitelor medii sau hardware pur și simplu în codificarea dvs. sau în dezvoltarea aplicațiilor dvs.

8. Vizualizați numărul de unități detectate (sau de câte ori a fost detectat un obiect) Acum, folosind variabila „cutii”, vom crea o nouă variabilă fereastră rulantă pentru a însuma cantitatea totală de citiri primite de la variabila „cutii” în un spam definit (minute, ore, zile, săptămâni etc.). Pentru a executa această dezvoltare, urmați acești pași simpli:

Atribuiți următoarele acreditări noii variabile de fereastră rulantă

Selectați un dispozitiv: controlul mișcării (sau numele dispozitivului pe care îl trimiteți datele dvs.)

Selectați o variabilă: casete

Calculați: suma

La fiecare: „1” oră (sau în funcție de cererile dvs. de cerere)

Acum atribuiți un nume noii variabile care indică numărul de cutii (sau mișcări) numărate într-o oră, la fel ca „cutii / oră” sau „unități / ore.

Pasul 6: Configurări tablou de bord

Configurări tablou de bord
Configurări tablou de bord

În cele din urmă, creați un tablou de bord pentru a afișa numărul de unități detectate.

Accesați Gestionarea dispozitivelor -> Tablouri de bord și adăugați un widget nou. Acest widget va afișa cantitatea de cutii numărate astăzi defalcate pe ore.

Atribuiți următoarele acreditări noului dvs. widget pentru a vă vizualiza numărul.

Cum ați dori să vă vedeți datele ?: Grafic

Selectați un tip de widget: diagramă liniară

Adăugați un dispozitiv: controlul mișcării

Adăugați o variabilă: cutii / oră

Finalizarea. Și cu această dezvoltare finală a tabloului de bord - aplicația dvs. este completă și aveți acum un sistem eficient și eficient de detectare a mișcării și prezenței. Iată o ultimă privire asupra rezultatelor noastre.

Recomandat: