Circuite

Cum se construiește un sistem de detectare a mișcării cu Arduino: 7 pași

Arduino și Robotică - SEMAFOR (tutorial în română # 01)

Arduino și Robotică - SEMAFOR (tutorial în română # 01)

Cuprins:

Anonim

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

Deplasarea eficientă a mișcărilor fizice și a prezenței în Smart Homes și Smart Manufacturing poate fi foarte utilă în aplicații variate de la soluții de vârstă asistată de viață (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 a prezenței includ, dar nu se limitează la:

  1. Usa si automatizarea portilor
  2. Senzori de parcare pentru a desemna locurile libere
  3. Monitorizarea nivelului rezervorului la distanță
  4. Case inteligente și facilități pentru iluminat și securitate
  5. Detectarea și numărarea unităților în liniile transportoarelor
  6. Marcați detectarea pe materiale tipărite
  7. Detectarea lichidului în interiorul cartonului, plasticului și a hârtiei înclinate
  8. Detectarea distanței
  9. Oamenii conteaza

Deși există numeroase 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 ultrasonori. În funcție de costuri, condiții de mediu și cerințe de precizie, trebuie selectat cel mai potrivit echipament hardware pentru cerințele de mediu și de 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 IDE-ul Arduino pentru a programa un senzor de ultrasunete Feather HUZZAH ESP8266 și Ubidots pentru a dezvolta aplicația noastră și a afișa tabloul de bord IoT.

Furnituri:

Pasul 1: Cerințe

  1. Pene HUZZAH cu ESP8266MB7389-100
  2. Senzor ultrasonic
  3. Arduino IDE 1.8.2 sau mai mare
  4. Contul Ubidots - sau - Licență educațională

Pasul 2: Configurare

  • I Setup Hardware
  • II. Configurarea firmware-ului
  • III. Dezvoltarea aplicațiilor Ubidots (evenimente, variabile și tablouri de bord)

Pasul 3: Configurarea hardware

Senzorul cu ultrasunete MB7389-100 este o opțiune low-cost pentru aplicații industriale cu consum redus de energie și consum redus de energie în condiții meteorologice dificile datorită ratingului IPv67.

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

NOTĂ: Citirea senzorului poate fi luată ca citire analogică sau PWM; de mai jos vom explica setarea citirii PWM, pentru informații suplimentare, consultați exemplele de mai sus.

Opțional așezați microcontrolerul și senzorii din interiorul carcasei IP67 pentru a le proteja de praf, apă și alți factori de mediu periculoși. Cazul standard arată similar cu cel prezentat în fotografiile de mai sus.

Pasul 4: Configurarea firmware-ului

În primul rând, ar trebui să instalați Feather Huzzah în IDE-ul Arduino și să compilați codul. Amintiți-vă să verificați acest set prin efectuarea unui test simplu clipind. Pentru informații suplimentare despre conectarea dispozitivului dvs. Feather, consultați acest ghid util pentru configurarea hardware.

Pentru a trimite datele senzorilor în platforma de dezvoltare Ubidots IoT, copiați și inserați codul de mai jos în ID-ul Arduino. Nu uitați să atribuiți numele rețelei Wi-Fi, parola și Tokenul contului dvs. Ubidots unde este indicat în cod.

/ ******************************** Bibliotecile incluse *************** ****************/#include / ******************************** Constante și obiecte ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; / / Introduceți aici numele SSID char * SSID_PASS = "xxxxxxxx"; / / Introduceți aici parola de constrângere * TOKEN = "Assig_your_ubidots_token"; / / Introduceți aici caracterul dvs. TOKENconst * DEVICE_LABEL = "controlul mișcării"; // Eticheta dvs. dispozitivconst char * VARIABLE_LABEL = "distanță"; // Caracteristica variabila a conectorului * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots utilizatori de afaceri // const char * HTTPSERVER = things.ubidots.com "; // Ubidots Users educativeint HTTPPORT = 80; / * Senzor ultrasonic * / const int pwPin1 = 5; // Pinul PWM în care este conectat senzorulWiFiClient clientUbi; / ************************************ Funcții auxiliare *** ****************************************************************************************************************** ** lungimea variabilei * / int dataLen (variabila char *) {uint8_t dataLen = 0; pentru (int i = 0; i <= 250; i ++) {dacă (variabila i! = ' 0') {dataLen ++; } altceva {break; }} return dataLen;} / ************************************ Funcții principale ********* ********************** / void setup () {Serial.begin (115200); / * Se conectează la AP * / WiFi.begin (SSID_NAME, SSID_PASS); în timp ce (WiFi.status ()! = WL_CONNECTED) {întârziere (500); Serial.print ( ""); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (true); Serial.println (F ("WiFi conectat")); Serial.println (F ("Adresa IP:")); Serial.println (void.localIP ());} void loop () {/ * Senzorul de lectură este returnat în milimetri, dacă doriți să îl convertiți * în centimetri creați doar o variabilă indicând la -> distanța / 25.4 * = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distanță); întârziere (1000);} void sendToUbidots (const char * dispozitiv_label, const char * variable_label, float sensor_value) {char * corp = (char *) malloc (sizeof (char) * 150); char * date = (char *) malloc (dimensiunea (char) * 300); / * Spațiu pentru a stoca valori pentru a trimite * / char str_val 10; / * ---- Transformă valorile senzorilor la tipul de caractere ----- * / / * 4 este lățime minus, 2 este precizie; valoarea float este copiată pe str_val * / dtostrf (senzor_value, 4, 2, str_val); / * Construiește corpul care trebuie trimis în cerere * / sprintf (corp, ""% s ":% s}", variable_label, str_val); / * Construieste cererea HTTP ca fiind 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", date, USER_AGENT, VERSION); sprintf (date, "% sX-Auth-Token:% s r n", date, TOKEN); sprintf (date, "% sConnection: close r n", date); sprintf (date, "% sContent-Type: application / json r n", date); sprintf (date, "% sContent-Length:% d r n r n", date, dateLen (corp)); sprintf (date, "% s% s r n r n", date, corp); / * Conexiune inițială * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verificați conexiunea client * / dacă (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Detașarea variabilelor:")); Serial.println (date); / * Trimite 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 liberă * / gratuită (date); liber (corp); / * Opriți clientul * / clientUbi.stop ();}

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

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

Făcând clic pe dispozitivul dvs., veți găsi o variabilă denumită "distanță" unde sunt stocate citirile senzorului. Acest nume a fost atribuit în codul pe care tocmai l-ați lipit în ID-ul Arduino. Dacă doriți să vă ajustați variabilele automate, faceți acest lucru prin modificarea cardului de dispozitiv sau prin intermiterea unui cod actualizat cu nomenclatura corectă a variabilei pentru aplicația dvs.

Cu ajutorul aplicației Featuring HUZZAH ESP8266 conectate și raportarea datelor către Ubidots, este timpul să construiți aplicația folosind Ubidots, cu o configurație a aplicațiilor fără cod, proiectată cu grijă.

Pasul 5: Dezvoltarea aplicațiilor Ubidots

Configurarea evenimentului Ubidots

Citirile actuale pe care le trimitem la Ubidots sunt intrări la distanță. Pentru a traduce aceste citiri în ieșirea dorită pe care o dorim - unități de calcul - ar trebui să creăm un eveniment urmând acești pași:

  1. În interiorul dispozitivului curent, "controlul mișcării" creează o nouă variabilă implicită numită "cutii", care va primi un număr de 1 de fiecare dată când se contorizează o nouă unitate.
  2. Mergi la Gestionarea dispozitivelor -> Evenimenteși faceți clic pe pictograma albastru plus din colțul din dreapta sus al paginii pentru a adăuga un nou eveniment.
  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 prin * cererea noastră solicită 500 mm
  • Pentru 0 minute
  • Salvați

4. Odată ce declanșatoarele au fost configurate conform specificațiilor aplicației, 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 variabilele implicite create "cutii" și valoarea "1".

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

În fișa dispozitivului Feather specific, veți observa că variabila "cutii" unde un "1" este trimis ori de câte ori este detectată prezența unei unități.

Foarte util pentru benzi transportoare industriale și unitatea de numărare acest prototip pot fi personalizate pentru a se potrivi diferite medii sau hardware pur și simplu în codificarea sau dezvoltarea de aplicații.

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ă de rulare pentru a însuma suma totală a citirilor primite din variabilele "cutii" într-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 la noua variabilă fereastră rulantă

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

Selectați o variabilă: cutii

Calculați: sumă

Fiecare: "1" oră (sau în funcție de cererile dvs. de cerere)

Acum atribuiți un nume variabilei noi 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: Configurațiile tabloului de bord

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

Accesați Device Management -> Tablouri de bord și adăugați un nou widget. Acest widget va afișa numărul de cutii numărate astăzi defalcate în funcție de oră.

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

Cum doriți să vă vedeți datele ?: Diagramă

Selectați un tip de widget: line diagramă

Adaugă un dispozitiv: controlul miscarii

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

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

Pasul 7: