Turinys:

Kaip sukurti judesio aptikimo sistemą naudojant „Arduino“: 7 žingsniai
Kaip sukurti judesio aptikimo sistemą naudojant „Arduino“: 7 žingsniai

Video: Kaip sukurti judesio aptikimo sistemą naudojant „Arduino“: 7 žingsniai

Video: Kaip sukurti judesio aptikimo sistemą naudojant „Arduino“: 7 žingsniai
Video: Leap Motion SDK 2024, Lapkritis
Anonim
Kaip sukurti judesio aptikimo sistemą naudojant „Arduino“
Kaip sukurti judesio aptikimo sistemą naudojant „Arduino“

Sukurkite judesio ir buvimo gamybos skaitiklį naudodami „Feather HUZZAH“, suprogramuotą su „Arduino“ir maitinamą „Ubidots“.

Veiksmingas fizinio judesio ir buvimo aptikimas išmaniuosiuose namuose ir išmaniojoje gamyboje gali būti labai naudingas įvairiose srityse, pradedant senyvo amžiaus aplinka, padedančia gyventi (AAL), arba gamybos skaičiavimo sistema, kuri maitina didesnį MES. Kitos judesio ir buvimo aptikimo programos apima, bet neapsiriboja:

  1. Durų ir vartų automatika
  2. Parkavimo jutikliai, skirti laisvoms vietoms pažymėti
  3. Nuotolinis bako lygio stebėjimas
  4. Protingi namai ir apšvietimo bei saugumo priemonės
  5. Vienetų aptikimas ir skaičiavimas konvejerio linijose
  6. Pažymėkite aptikimą spausdintose medžiagose
  7. Skysčio aptikimas kartono, plastiko ir popieriaus viduje
  8. Atstumo aptikimas
  9. Žmonės skaito

Nors yra daug buvimo ir judesio programų, yra tiek pat daug duomenų rinkimo jutiklių, tokių kaip talpiniai, indukciniai, fotoelektriniai ir ultragarsiniai jutikliai. Atsižvelgiant į išlaidas, aplinkos sąlygas ir tikslumo reikalavimus, reikia pasirinkti tinkamiausią techninę įrangą, atitinkančią aplinkos ir taikymo reikalavimus.

Šioje pamokoje mes sutelksime dėmesį į realaus laiko gamybos skaitiklio kūrimą; programa suskaičiuos kiekvieną konvejeriu pravažiuojantį įrenginį. Mes naudosime „Arduino IDE“, norėdami užprogramuoti „Feather HUZZAH ESP8266“, ultragarsinį jutiklį ir „Ubidots“, kad sukurtume savo programą ir parodytume „IoT“prietaisų skydelį.

1 žingsnis: Reikalavimai

  1. Plunksna HUZZAH su ESP8266MB7389-100
  2. Ultragarsinis jutiklis
  3. „Arduino IDE 1.8.2“arba naujesnė versija
  4. „Ubidots“paskyra arba STEM licencija

2 veiksmas: sąranka

  • I Aparatūros sąranka
  • II. Firmware sąranka
  • III. „Ubidots“programų kūrimas (įvykiai, kintamieji ir informacijos suvestinės)

3 žingsnis: Aparatūros sąranka

Techninės įrangos sąranka
Techninės įrangos sąranka
Techninės įrangos sąranka
Techninės įrangos sąranka

Dėl IPv67 įvertinimo ultragarsinis jutiklis MB7389-100 yra nebrangus pasirinkimas pramoniniam naudojimui, turintis platų diapazoną ir mažos energijos sąnaudos sudėtingomis oro sąlygomis.

Norėdami pradėti, atspindėkite žemiau pateiktą schemą, kad ultragarso jutiklį pritvirtintumėte prie plunksnos HUZZAH ESP8266.

PASTABA: jutiklio rodmenys gali būti imami kaip analoginiai arba PWM; toliau paaiškinsime PWM skaitymo sąranką, papildomos informacijos ieškokite aukščiau pateiktuose pavyzdžiuose.

[Pasirinktinai] įdėkite mikrovaldiklį ir jutiklius į de IP67 dėklą, kad apsaugotumėte juos nuo dulkių, vandens ir kitų grėsmingų aplinkos veiksnių. Standartinis dėklas atrodo panašus į tą, kuris pavaizduotas aukščiau esančiose nuotraukose.

4 veiksmas: programinės įrangos sąranka

Firmware sąranka
Firmware sąranka
Firmware sąranka
Firmware sąranka

Pirmiausia turite įdiegti „Feather Huzzah“į „Arduino IDE“ir surinkti kodą. Nepamirškite patikrinti šios sąrankos atlikdami paprastą mirksėjimo testą. Norėdami gauti daugiau informacijos apie „Feather“įrenginio prijungimą, peržiūrėkite šį naudingą aparatūros sąrankos vadovą.

Norėdami siųsti jutiklių duomenis į „Ubidots IoT Development Platform“, nukopijuokite ir įklijuokite žemiau esantį kodą į „Arduino IDE“. Nepamirškite priskirti „Wi-Fi“tinklo pavadinimo, slaptažodžio ir „Ubidots“paskyros prieigos rakto, kur nurodyta kode.

/******************************** Bibliotekos įtrauktos *************** **************** /#include /***************************** ** Konstantos ir objektai ******************************* //*„Ubidots“*/const char*SSID_NAME = "xxxxxxxx"; // Įdėkite čia savo SSID vardo įrašą char* SSID_PASS = "xxxxxxxx"; // Įdėkite čia savo slaptažodžio įrašymo simbolį* TOKEN = "Assig_your_ubidots_token"; // Įdėkite čia savo TOKENconst char* DEVICE_LABEL = "motion-control"; // Jūsų įrenginio labelconst char* VARIABLE_LABEL = "atstumas"; // Jūsų kintamasis labelconst char* USER_AGENT = "ESP8266"; const char* VERSION = "1.0"; const char* HTTPSERVER = "industrial.api.ubidots.com"; // "Ubidots" verslo vartotojai // const char* HTTPSERVER = " things.ubidots.com “; // „Ubidots Educational usersintint HTTPPORT = 80;/ * Ultragarsinis jutiklis */const int pwPin1 = 5; // PWM kaištis, prie kurio prijungtas jutiklis „WiFiClient“klientas „Ubi“;/******************************* Pagalbinės funkcijos *** **************************** kintamojo*/int dataLen ilgis (char* kintamasis) {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); / * Erdvė vertėms saugoti siųsti * / char str_val [10]; /*---- paverčia jutiklių reikšmes į char tipą -----* / /*4 yra mažiausias plotis, 2 yra tikslumas; plūdės vertė nukopijuojama į str_val* / dtostrf (sensor_value, 4, 2, str_val); /* Sukuria turinį, kuris turi būti išsiųstas į užklausą* /sprintf (body, "{"%s / ":%s}", variable_label, str_val); /* Sukuria HTTP prašymas būti POST */sprintf (duomenys, „POST /api/v1.6/devices/%s“, device_label); sprintf (duomenys, „%s HTTP/1.1 / r / n“, duomenys); sprintf (duomenys, "%sHost: things.ubidots.com / r / n", duomenys); sprintf (duomenys, "%sUser-Agent:%s/%s / r / n", duomenys, USER_AGENT, VERSION); sprintf (duomenys, " %sX-Auth-Token: %s / r / n", duomenys, TOKEN); sprintas f (duomenys, "%sConnection: uždaryti / r / n", duomenys); sprintf (duomenys, "%sContent-Type: application/json / r / n", duomenys); sprintf (duomenys, " %sContent-Length: %d / r / n / r / n", data, dataLen (body)); sprintf (duomenys, "%s%s / r / n / r / n", duomenys, tekstas); / * Pradinis ryšys */ clientUbi.connect (HTTPSERVER, HTTPPORT); / * Patikrinkite kliento ryšį */ if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Jūsų kintamųjų skelbimas:")); Serial.println (duomenys); / * Siųsti HTTP užklausą */ clientUbi.print (duomenys); } / * Kol klientas pasiekiamas, perskaitykite serverio atsakymą * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Laisva atmintis * / laisva (duomenys); laisvas (kūnas); / * Sustabdykite klientą */ clientUbi.stop ();}

„ProTip“: atidarydami „Arduino IDE“serijinį monitorių, galite patikrinti, ar jūsų įrenginys prijungtas teisingai.

Galite patikrinti, ar įrenginys sukurtas jūsų „Ubidots“vidinėje sistemoje, peržiūrėję jį savo paskyroje Įrenginių tvarkymas -> Įrenginiai.

Spustelėję savo įrenginį, rasite kintamąjį, vadinamą „atstumu“, kuriame saugomi jutiklio rodmenys. Šis vardas buvo priskirtas kodui, kurį ką tik įklijavote į „Arduino IDE“. Jei norite pakoreguoti automatinius kintamuosius, redaguokite įrenginio kortelę arba mirksėkite atnaujintu kodu, atitinkančiu jūsų programos kintamųjų nomenklatūrą.

Kai „Feather HUZZAH ESP8266“prijungtas ir teikia duomenis „Ubidots“, dabar laikas kurti programą naudojant „Ubidots“kruopščiai sukurtą programos be kodo konfigūraciją.

5 veiksmas: „Ubidots“programų kūrimas

„Ubidots“programų kūrimas
„Ubidots“programų kūrimas
„Ubidots“programų kūrimas
„Ubidots“programų kūrimas
„Ubidots“programų kūrimas
„Ubidots“programų kūrimas

„Ubidots“įvykių konfigūracija

Dabartiniai rodmenys, kuriuos siunčiame „Ubidots“, yra atstumo įvestys. Norėdami išversti šiuos rodmenis į norimą išvestį, kurią norime - suskaičiuotus vienetus - turėtume sukurti įvykį atlikdami šiuos veiksmus:

  1. Dabartinio prietaiso „judesio valdymas“viduje sukurkite naują numatytąjį kintamąjį, pavadintą „dėžutės“, kuris kiekvieną kartą skaičiuojant naują vienetą gaus 1.
  2. Eikite į Įrenginių valdymas -> Įvykiai ir spustelėkite mėlyną pliuso piktogramą viršutiniame dešiniajame puslapio kampe, kad pridėtumėte naują įvykį.
  3. Konfigūruokite savo įvykį, pradedant nuo „Jei suaktyvina“:
  • Pasirinkite kintamąjį: „atstumas“
  • Reikšmė: vertė (numatytoji)
  • Mažesnis arba lygus [didžiausias numatomas atstumas} tarp jutiklio ir pro jį einančių dėžių*mūsų programa reikalauja 500 mm
  • 0 minučių
  • Sutaupyti

4. Kai aktyvikliai bus sukonfigūruoti pagal jūsų programos specifikacijas, spustelėkite oranžinę „pliuso“piktogramą viršutiniame dešiniajame kampe, kad pridėtumėte sąlyginį veiksmą.

5. Kaip veiksmą pasirinkite „Nustatyti kintamąjį“.

6. Tada pasirinkite anksčiau sukurtą numatytąjį kintamąjį „dėžutės“ir reikšmę „1“.

7. Išsaugokite pakeitimus. Jei įvykis tinkamai nustatytas, jis kaskart atsiųs „1“, kai atstumas tarp jutiklio ir įrenginio yra ilgesnis už nurodytą slenkstį, o tai rodo, kad šalia nėra objekto - ir turėtų būti skaičiuojamas naujas ką tik praėjęs įrenginys.

Kortelėje „Plunksninis įrenginys“pamatysite, kad kintamasis „langeliai“, kur „1“siunčiamas bet kuriuo metu, kai aptinkamas vieneto buvimas.

Šis prototipas, ypač naudingas pramoniniams konvejeriams ir vienetų skaičiavimui, gali būti pritaikytas, kad tiktų įvairioms aplinkoms ar techninei įrangai, tiesiog jūsų kodavimo ar programų kūrimo metu.

8. Vizualizuokite aptiktų vienetų skaičių (arba tai, kiek kartų objektas buvo aptiktas) Dabar, naudodamiesi kintamuoju „dėžutės“, mes sukursime naują besikeičiančio lango kintamąjį, kuris apibendrins bendrą rodmenų, gautų iš kintamojo „dėžutės“, skaičių apibrėžtas šlamštas (minutės, valandos, dienos, savaitės ir kt.). Norėdami atlikti šį kūrimą, atlikite šiuos paprastus veiksmus:

Priskirkite šiuos kredencialus naujam besisukančio lango kintamajam

Pasirinkite įrenginį: judesio valdymas (arba įrenginio, iš kurio siunčiate duomenis, pavadinimas)

Pasirinkite kintamąjį: langelius

Apskaičiuokite: sumą

Kas 1 valandą (arba pagal jūsų prašymus)

Dabar priskirkite pavadinimą naujam kintamajam, kuris nurodo langelių (ar judesių), suskaičiuotų per valandą, skaičių, kaip „dėžutės per valandą“arba „vienetai/valandos“.

6 veiksmas: prietaisų skydelio konfigūracijos

Prietaisų skydelio konfigūracijos
Prietaisų skydelio konfigūracijos

Galiausiai sukurkite prietaisų skydelį, kuriame būtų rodomas aptiktų vienetų skaičius.

Eikite į Įrenginių valdymas -> Informacijos suvestinės ir pridėkite naują valdiklį. Šiame valdiklyje bus rodomas šiandien suskaičiuotų dėžių kiekis, suskirstytas pagal valandas.

Priskirkite šiuos kredencialus naujam valdikliui, kad vizualizuotumėte savo skaičių.

Kaip norėtumėte matyti savo duomenis?: Diagrama

Pasirinkite valdiklio tipą: linijinė diagrama

Pridėkite įrenginį: judesio valdymas

Pridėkite kintamąjį: dėžutės per valandą

Baigti. Su šiuo galutiniu prietaisų skydelio kūrimu - programa baigta ir dabar turite veiksmingą ir efektyvią judesio ir buvimo aptikimo sistemą. Štai paskutinis mūsų rezultatų žvilgsnis.

Rekomenduojamas: