INHOUDSOPGAWE:

Hoe om 'n bewegingsopsporingstelsel met Arduino te bou: 7 stappe
Hoe om 'n bewegingsopsporingstelsel met Arduino te bou: 7 stappe

Video: Hoe om 'n bewegingsopsporingstelsel met Arduino te bou: 7 stappe

Video: Hoe om 'n bewegingsopsporingstelsel met Arduino te bou: 7 stappe
Video: Hoe is het om als VROUW te dienen in AFGHANISTAN? 2024, November
Anonim
Hoe om 'n bewegingsopsporingstelsel met Arduino te bou
Hoe om 'n bewegingsopsporingstelsel met Arduino te bou

Bou 'n toonbank vir beweging en teenwoordigheid met 'n Feather HUZZAH geprogrammeer met Arduino en aangedryf deur Ubidots.

Doeltreffende fisiese beweging en teenwoordigheidsopsporing in slimhuise en slim vervaardiging kan baie nuttig wees in toepassings wat wissel van bejaardes Ambient Assisted Living (AAL) oplossings of 'n produksietelstelsel wat 'n groter MES voed. Ander aansoeke vir bewegings- en teenwoordigheidsopsporing sluit in, maar is nie beperk nie tot:

  1. Deur en hek outomatisering
  2. Parkeersensors om gratis plekke aan te wys
  3. Monitering van tenkvlak op afstand
  4. Slim huise en geriewe vir beligting en sekuriteit
  5. Eenhede opspoor en tel in vervoerbane
  6. Merk opsporing op gedrukte materiaal
  7. Vloeistofopsporing in karton-, plastiek- en papierkantels
  8. Afstand opsporing
  9. Mense toonbanke

Alhoewel daar baie toepassings vir teenwoordigheid en beweging is, is daar ewe veel sensors om data te versamel, soos kapasitiewe, induktiewe, foto -elektriese en ultrasoniese sensors. Afhangende van die koste, omgewingsomstandighede en akkuraatheidsvereistes, moet u die hardeware kies wat die beste by 'n omgewing en toepassingsvereistes pas.

Vir hierdie tutoriaal fokus ons op die bou van 'n intydse produksieteller; die toepassing tel elke eenheid wat op 'n vervoerband verbygaan. Ons sal die Arduino IDE gebruik om 'n Feather HUZZAH ESP8266, 'n ultrasoniese sensor en Ubidots te programmeer om ons toepassing te ontwikkel en ons IoT -dashboard te vertoon.

Stap 1: Vereistes

  1. Veer HUZZAH met ESP8266MB7389-100
  2. Ultrasoniese sensor
  3. Arduino IDE 1.8.2 of hoër
  4. Ubidots -rekening -of -STEM -lisensie

Stap 2: Opstel

  • I Hardware Setup
  • II. Opstelling van firmware
  • III. Ubidots -toepassingsontwikkeling (gebeurtenisse, veranderlikes en dashboards)

Stap 3: hardeware -opstelling

Hardeware -opstelling
Hardeware -opstelling
Hardeware -opstelling
Hardeware -opstelling

Die ultrasoniese sensor MB7389-100 is 'n goedkoop opsie vir industriële toepassings met 'n wye reeks en lae-verbruiksvereistes in uitdagende weersomstandighede danksy die IPv67-gradering.

Om te begin, weerspieël die diagram hieronder om die ultrasoniese sensor aan die Feather HUZZAH ESP8266 te heg.

OPMERKING: Die sensorlesing kan as analoogmetings of PWM geneem word; hieronder gaan ons die opstelling vir die PWM -lees verduidelik, sien die voorbeelde hierbo vir meer inligting.

[Opsioneel] plaas die mikrobeheerder en die sensors in die IP67-omhulsel om hulle te beskerm teen stof, water en ander bedreigende omgewingsfaktore. Die standaardkas lyk soortgelyk aan die op die foto's hierbo.

Stap 4: Opstelling van firmware

Opstelling van firmware
Opstelling van firmware
Opstelling van firmware
Opstelling van firmware

Eerstens moet u die Feather Huzzah in die Arduino IDE installeer en die kode saamstel. Onthou om hierdie opstelling te verifieer deur 'n eenvoudige knippertoets te doen. Raadpleeg hierdie nuttige hardeware -opstellingsgids vir meer inligting oor die koppeling van u Feather -toestel.

Om sensordata na die Ubidots IoT Development Platform te stuur, kopieer en plak die onderstaande kode in die Arduino IDE. Onthou om die Wi-Fi-netwerknaam, wagwoord en u Ubidots-rekeningtoken toe te ken, soos aangedui in die kode.

/******************************* Biblioteke ingesluit *************** ****************/#insluit /****************************** ** Konstante en voorwerpe ****************************** //*Ubidots*/const char*SSID_NAME = "xxxxxxxx"; // Plaas hier u SSID naamkonst char* SSID_PASS = "xxxxxxxx"; // Plaas hier u wagwoordconst char* TOKEN = "Assig_your_ubidots_token"; // Plaas hier u TOKENconst char* DEVICE_LABEL = "bewegingsbeheer"; // U etiket op u toestel, konst char* VARIABLE_LABEL = "afstand"; // U veranderlike labelconst char* USER_AGENT = "ESP8266"; const char* VERSION = "1.0"; const char* HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Sakegebruikers // const char* HTTPSERVER = " things.ubidots.com "; // Ubidots Opvoedkundige gebruikers in HTTPPORT = 80;/ * Ultrasoniese sensor */const int pwPin1 = 5; // Die PWM -pen waar die sensor gekoppel isWiFiClient -kliëntUbi;/******************************** Hulpfunksies *** ******************************* Kry die lengte van die body @arg -veranderlike die liggaam van die tipe char @return data lengte van die veranderlike*/int dataLen (char* veranderlike) {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); / * Ruimte om waardes te stoor om te stuur * / char str_val [10]; /*---- Transformeer die waardes van die sensors na tipe char -----* / /*4 is mininumwydte, 2 is presisie; vlotwaarde word na str_val* / dtostrf (sensor_value, 4, 2, str_val); /* Bou die liggaam wat na die versoek gestuur moet word* /sprintf (body, "{"%s / ":%s}", variable_label, str_val); /* Bou die HTTP versoek om POST */sprintf (data, "POST /api/v1.6/devices/%s", device_label) te wees; 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", data, TOKEN); sprint f (data, "%sConnection: close / r / n", data); sprintf (data, "%sContent-Type: application/json / r / n", data); sprintf (data, " %sContent-Length: %d / r / n / r / n", data, dataLen (body)); sprintf (data, "%s%s / r / n / r / n", data, liggaam); / * Aanvanklike verbinding */ clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verifieer die kliëntverbinding */ if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Plaas u veranderlikes:")); Serial.println (data); / * Stuur die HTTP -versoek */ clientUbi.print (data); } / * Terwyl die kliënt beskikbaar is, lees die antwoord van die bediener * / while (clientUbi.available ()) {char c = clientUbi.read (); Reeks.skryf (c); } / * Gratis geheue * / gratis (data); vry (liggaam); / * Stop die kliënt */ clientUbi.stop ();}

ProTip: u kan kyk of u toestel korrek gekoppel is deur die seriële monitor in die Arduino IDE oop te maak.

U kan verifieer dat 'n toestel in u Ubidots -agterkant geskep is deur dit in u rekening te sien Apparaatbestuur -> toestelle.

Deur op u toestel te klik, vind u 'n veranderlike met die naam 'afstand' waar die sensor se lesings gestoor word. Hierdie naam is toegeken in die kode wat u pas in die Arduino IDE geplak het. As u u outomatiese veranderlikes wil aanpas, doen dit dan deur die toestelkaart te wysig of 'n bygewerkte kode met die korrekte veranderlike nomenklatuur vir u toepassing te flits.

Met die Feather HUZZAH ESP8266 verbind en data aan Ubidots rapporteer, is dit nou tyd om die toepassing te bou met behulp van versigtig ontwerpte kodevrye programkonfigurasie van Ubidots.

Stap 5: Ontwikkeling van die toepassing van Ubidots

Ubidots -toepassingsontwikkeling
Ubidots -toepassingsontwikkeling
Ubidots -toepassingsontwikkeling
Ubidots -toepassingsontwikkeling
Ubidots -toepassingsontwikkeling
Ubidots -toepassingsontwikkeling

Ubidots -gebeurtenisopstelling

Die huidige lesings wat ons na Ubidots stuur, is afstandinsette. Om hierdie lesings te vertaal in die gewenste uitset wat ons wil hê - getelde eenhede - moet ons 'n gebeurtenis skep volgens die volgende stappe:

  1. Binne die huidige toestel "bewegingsbeheer", skep 'n nuwe standaard veranderlike genaamd "bokse", wat 'n 1 kry elke keer as 'n nuwe eenheid getel word.
  2. Gaan na Apparaatbestuur -> Gebeurtenisse en klik op die blou plus -ikoon in die regter boonste hoek van die bladsy om 'n nuwe gebeurtenis by te voeg.
  3. Stel u gebeurtenis op wat begin met 'As snellers':
  • Kies 'n veranderlike: "afstand"
  • Waarde: waarde (verstek)
  • Is kleiner as of gelyk aan [die maksimum verwagte afstand} tussen die sensor en die bokse wat verbygaan*ons aansoek vereis 500 mm
  • Vir 0 minute
  • Stoor

4. Sodra die snellers ingestel is volgens die spesifikasies van u toepassing, klik op die oranje "plus" -ikoon in die regter boonste hoek om 'n voorwaardelike aksie by te voeg.

5. Kies 'Stel veranderlike' as die aksie.

6. Kies dan die voorheen geskepte standaard veranderlike "bokse" en waarde "1".

7. Stoor veranderinge. As die gebeurtenis behoorlik ingestel is, stuur dit 'n "1" elke keer as die afstand tussen die sensor en die eenheid langer is as die aangeduide drempel, wat daarop dui dat daar geen voorwerp naby is nie - en moet 'n nuwe eenheid tel wat pas verby is.

Op die Feather -spesifieke toestelkaart vind u dat die veranderlike "bokse" waarheen 'n "1" gestuur word, elke keer as 'n eenheid se teenwoordigheid waargeneem word.

Hierdie prototipe is veral handig vir industriële vervoerbande en tellers, en kan aangepas word om in verskillende omgewings of hardeware te pas, net in u kodering of die ontwikkeling van u toepassings.

8. Visualiseer die aantal eenhede wat waargeneem is (of wanneer 'n voorwerp opgespoor is) Met die veranderlike "bokse" gaan ons 'n nuwe veranderlike in die venster verander om die totale hoeveelheid lesings wat uit die veranderlike "bokse" ontvang is, op te som. 'n gedefinieerde strooipos (minute, ure, dae, weke, ens.). Volg hierdie eenvoudige stappe om hierdie ontwikkeling uit te voer:

Ken die volgende geloofsbriewe toe aan u nuwe veranderlike in die venster

Kies 'n toestel: bewegingsbeheer (of die naam van die toestel wat u u data stuur)

Kies 'n veranderlike: bokse

Bereken die: som

Elke: "1" uur (of volgens u aansoekversoeke)

Gee nou 'n naam aan die nuwe veranderlike wat die aantal bokse (of bewegings) aandui wat in 'n uur getel word, net soos 'bokse/uur' of 'eenhede/uur'.

Stap 6: Dashboard -konfigurasies

Dashboard -konfigurasies
Dashboard -konfigurasies

Uiteindelik, skep 'n paneelbord om die aantal eenhede waargeneem te vertoon.

Gaan na Apparaatbestuur -> Dashboards en voeg 'n nuwe widget by. Hierdie widget sal die hoeveelheid bokse wat vandag getel is, per uur vertoon.

Ken die volgende geloofsbriewe toe aan u nuwe widget om u telling te visualiseer.

Hoe sou u u data wou sien ?: Grafiek

Kies 'n tipe widget: lyngrafiek

Voeg 'n toestel by: bewegingsbeheer

Voeg 'n veranderlike by: bokse/uur

Voltooi. En met hierdie laaste dashboardontwikkeling - u toepassing is voltooi en u het nou 'n doeltreffende en effektiewe bewegings- en teenwoordigheidsopsporingstelsel. Hier is 'n laaste blik op ons resultate.

Aanbeveel: