Vezja

Kako zgraditi sistem zaznavanja gibanja z Arduino: 7 korakov

Kako Zaraditi na Internetu Dodatnih 100$ - 200$ Mjesečno?

Kako Zaraditi na Internetu Dodatnih 100$ - 200$ Mjesečno?

Kazalo:

Anonim

Izdelajte števec proizvodnje gibanja in prisotnosti s pomočjo Feather HUZZAH, programiranega z Arduino in ki ga poganja Ubidots.

Učinkovito fizično zaznavanje gibanja in prisotnosti v pametnih domovih in pametni proizvodnji je lahko zelo uporabno pri aplikacijah, od starejših rešitev za pomoč pri samostojnem življenju (AAL) ali sistema za štetje proizvodnje, ki hrani večji MES. Druge aplikacije za zaznavanje gibanja in prisotnosti vključujejo, vendar niso omejene na:

  1. Avtomatizacija vrat in vrat
  2. Parkirni senzorji za označevanje prostih mest
  3. Nadzor oddaljene posode
  4. Pametni domovi in ​​objekti za razsvetljavo in varnost
  5. Odkrivanje in štetje enot v tekočih trakovih
  6. Označi odkrivanje na tiskanih materialih
  7. Odkrivanje tekočin znotraj kartona, plastike in nagibov papirja
  8. Odkrivanje razdalje
  9. Števci ljudi

Čeprav obstaja veliko aplikacij za prisotnost in gibanje, je enako toliko senzorjev za zbiranje podatkov, kot so kapacitivni, induktivni, fotoelektrični in ultrazvočni senzorji. Glede na stroške, okoljske pogoje in zahteve glede točnosti je treba izbrati najboljšo strojno opremo za okolje in zahteve uporabe.

V tej vadnici se bomo osredotočili na izgradnjo števca proizvodnje v realnem času; vloga bo štela vsako enoto, ki je mimo, na tekočem traku. Uporabili bomo Arduino IDE za programiranje Feather HUZZAH ESP8266, ultrazvočnega senzorja, in Ubidots za razvoj naše aplikacije in prikaz naše IoT nadzorne plošče.

Dobave:

1. korak: Zahteve

  1. Perje HUZZAH z ESP8266MB7389-100
  2. Ultrazvočni senzor
  3. Arduino IDE 1.8.2 ali novejši
  4. Ubidots račun - ali - izobraževalna licenca

2. korak: Namestitev

  • I Namestitev strojne opreme
  • II. Nastavitev vdelane programske opreme
  • III. Razvoj aplikacij Ubidots (dogodki, spremenljivke in nadzorne plošče)

3. korak: Namestitev strojne opreme

Ultrazvočni senzor MB7389-100 je cenovno ugodna možnost za industrijske aplikacije s široko paleto zahtev in nizko porabo energije v zahtevnih vremenskih razmerah, zahvaljujoč oceni IPv67.

Za začetek zrcali spodnji diagram, da priključite ultrazvočni senzor na Perje HUZZAH ESP8266.

OPOMBA: Branje senzorja je lahko analogno odčitavanje ali PWM; spodaj bomo razložili nastavitev za branje PWM, za dodatne informacije pa si oglejte zgoraj prikazane primere.

Opcijsko Postavite mikro-krmilnik in senzorje v ohišje de IP67, da jih zaščitite pred prahom, vodo in drugimi nevarnimi okoljskimi dejavniki. Standardna torbica je podobna tisti, prikazani na zgornjih fotografijah.

4. korak: Nastavitev vdelane programske opreme

Najprej namestite Feather Huzzah v Arduino IDE in prevedite kodo. Ne pozabite preveriti te nastavitve tako, da naredite preprost utripajoči test. Za dodatne informacije o povezovanju naprave Feather si oglejte ta priročni vodnik za nastavitev strojne opreme.

Za pošiljanje podatkov senzorja na Ubidots IoT razvojno platformo kopirajte in prilepite spodnjo kodo v Arduino IDE. Ne pozabite dodeliti imena omrežja Wi-Fi, gesla in žetona računa Ubidots, kjer je to navedeno v kodi.

/ ******************************** Knjižnice so vključene *************** **************** / # vključujejo / ******************************** Konstante in objekti ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Tukaj je vaš SSID nameconst char * SSID_PASS = "xxxxxxxx"; // Tukaj je vaš passwordconst char * TOKEN = "Assig_your_ubidots_token"; // Tukaj je vaš TOKENconst znak * DEVICE_LABEL = "nadzor gibanja"; // Vaša oznaka naprave labelconst * VARIABLE_LABEL = "razdalja"; // Vaša spremenljivka labelconst * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Poslovni uporabniki // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Izobraževalni uporabnik HTTPPORT = 80; / * Ultrazvočni senzor * / const int pwPin1 = 5; // Priključek PWM, kjer je priključen senzorWiFiClient odjemalecUbi; / ******************************** Auxiliar Functions *** **************************** // ** Pridobi dolžino spremenljivke body @arg telo tipa char @return dataLen dolžina spremenljivke * / int dataLen (spremenljivka char *) {uint8_t dataLen = 0; za (int i = 0; i <= 250; i ++) {if (spremenljivka i! = '0') {dataLen ++; } else {break; }} return dataLen;} / ******************************** Glavne funkcije ********* ********************** / void setup () {Serial.begin (115200); / * Povezava z AP * / WiFi.begin (SSID_NAME, SSID_PASS); while (WiFi.status ()! = WL_CONNECTED) {zakasnitev (500); Serial.print ("."); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (true); Serial.println (F ("WiFi je povezan")); Serial.println (F ("IP naslov:")); Serial.println (WiFi.localIP ());} void loop () {/ * Odčitek senzorja se vrne v milimetrih, če ga želite pretvoriti * v palce, ustvarite spremenljivko, ki kaže na -> razdaljo / 25,4 * / razdaljo plovbe = impulz (pwPin1, HIGH); sendToUbidot (DEVICE_LABEL, VARIABLE_LABEL, razdalja); delay (1000);} prazne sendToUbidots (const char * device_label, const char * variable_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (velikost (char) * 300); / * Prostor za shranjevanje vrednosti za pošiljanje * / char str_val 10; / * ---- Spremeni vrednosti senzorjev v tip char ----- * / / * 4 je minimalna širina, 2 je natančnost; vrednost float se kopira v str_val * / dtostrf (senzor_value, 4, 2, str_val); / * Zgradi telo, ki naj se pošlje v zahtevo * / sprintf (telo, "{ _"% s:% s} ", spremenljivka_label, str_val); / * Gradi zahtevo HTTP, da je POST * / sprintf (podatki, "POST /api/v1.6/devices/%s", oznaka naprave_label); sprintf (podatki, "% s HTTP / 1.1 r", podatki); sprintf (podatki, "% sHost: things.ubidots.com", podatki); sprintf (data, "% sUser-Agent:% s /% s", podatki, USER_AGENT, VERSION); sprintf (data, "% sX-Auth-Token:% s", podatki, TOKEN); sprintf (podatki, "% sPovezava: zapri r", podatki); sprintf (podatki, "% sContent-Type: application / json r", podatki); sprintf (data, "% s-vsebina-dolžina:% d r", podatki, dataLen (body)); sprintf (podatki, "% s% s" r, podatki, telo); / * Začetna povezava * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Preverite povezavo odjemalca * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Objavljanje spremenljivk:")); Serial.println (podatki); / * Pošlji HTTP zahtevo * / clientUbi.print (podatki); } / * Medtem ko je odjemalec na voljo, preberite odziv strežnika * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Prosti pomnilnik * / brezplačno (podatki); prosto (telo); / * Zaustavite odjemalca * / clientUbi.stop ();}

ProTip: Preverite, ali je vaša naprava pravilno povezana, tako da odprete serijski monitor v Arduino IDE.

Preverite lahko, ali je naprava ustvarjena v Ubidotsu, tako da jo pregledate v svojem računu Upravljanje naprav -> Naprave.

S klikom na vašo napravo boste našli spremenljivko, imenovano "razdalja", kjer so shranjeni odčitki senzorja. To ime je bilo dodeljeno v kodi, ki ste jo pravkar prilepili v Arduino IDE. Če želite prilagoditi samodejne spremenljivke, to storite tako, da uredite kartico naprave ali pa utripate posodobljeno kodo z ustrezno spremenljivko za vašo aplikacijo.

S povezavo HUZZAH ESP8266 in poročanjem podatkov Ubidotom, je zdaj čas za izgradnjo aplikacije s pomočjo skrbno zasnovane Ubidots konfiguracije aplikacije brez kode.

Korak 5: Ubidots razvoj aplikacij

Konfiguracija dogodkov za Ubidots

Trenutni odčitki, ki jih pošiljamo Ubidotom, so vhodi na daljavo. Za prevajanje teh odčitkov v želeni rezultat, ki ga želimo - izmerjene enote - moramo ustvariti dogodek, ki sledi tem korakom:

  1. Znotraj trenutne naprave "motion-control" ustvarite novo privzeto spremenljivko, imenovano "škatle", ki bo prejele 1 vsakič, ko se šteje nova enota.
  2. Pojdi do Upravljanje naprav -> Dogodkiin kliknite ikono modrega plusa v zgornjem desnem kotu strani, da dodate nov dogodek.
  3. Konfigurirajte svoj dogodek, začenši z »Če so sprožilci«:

  • Izberite spremenljivko: "razdalja"
  • Vrednost: vrednost (privzeto)
  • Je manjša ali enaka največji pričakovani razdalji med senzorjem in polji, ki potekajo pod * naša aplikacija zahteva 500 mm
  • Za 0 minut
  • Shrani

4. Ko so prožilci konfigurirani za specifikacije aplikacije, kliknite ikono »plus« v zgornjem desnem kotu, da dodate pogojno dejanje.

5. Kot dejanje izberite »Nastavi spremenljivko«.

6. Nato izberite prej ustvarjene privzete spremenljivke "polja" in vrednost "1".

7. Shranite spremembe. Če je dogodek pravilno nastavljen, bo vsakič, ko bo razdalja med senzorjem in enoto daljša od označenega praga, poslana "1", kar nakazuje, da v bližini ni nobenega predmeta - in mora računati novo enoto, ki je pravkar prešla .

V posebni kartici Device Feather boste ugotovili, da je spremenljivka "polja", kjer je "1" poslana vsakič, ko se zazna prisotnost enote.

Še posebej uporaben za industrijske transportne trakove in štetje enot, lahko ta prototip prilagodite različnim okoljem ali strojni opremi preprosto v vašem kodiranju ali razvoju aplikacij.

8. Vizualizirajte število zaznanih enot (ali čas, ko je bil objekt zaznan)
Zdaj, z uporabo spremenljivke "škatle", bomo ustvarili novo spremenljivko okenskega okna, da seštejemo skupno količino odčitkov, prejetih iz spremenljivke "škatle" v določeni neželeni elektronski pošti (minute, ure, dneve, tedne itd.). Za izvedbo tega razvoja sledite naslednjim preprostim korakom:

Dodajte naslednje poverilnice novi spremenljivki okenskega okna

Izberite napravo: nadzor gibanja (ali ime naprave, ki jo pošiljate podatke)

Izberite spremenljivko: škatle

Izračunajte: vsota

Vsak: "1" ura (ali glede na vaše zahtevke)

Zdaj dodelite ime novi spremenljivki, ki označuje število polj (ali premikov), ki so šteti v eni uri, tako kot "škatle / ura" ali "enote / ure".

6. korak: Konfiguracije nadzorne plošče

Končno ustvarite nadzorno ploščo za prikaz števila zaznanih enot.

Pojdite v Upravljanje naprav -> Nadzorne plošče in dodajte nov pripomoček. Ta pripomoček bo prikazal količino škatel, ki smo jih danes prešteli in razčlenjeni po urah.

Dodajte naslednje poverilnice svojemu novemu pripomočku za vizualizacijo števila.

Kako želite videti svoje podatke ?: Graf

Izberite vrsto gradnika: linijski diagram

Dodaj napravo: nadzor gibanja

Dodaj spremenljivko: škatle / uro

Dokončaj. In s tem končnim razvojem nadzorne plošče - ste aplikacija popolna in zdaj imate učinkovit in učinkovit sistem za zaznavanje gibanja in prisotnosti. Tukaj je končni pogled na naše rezultate.

7. korak: