Krugovi

Kako izgraditi sustav za otkrivanje pokreta s Arduino: 7 koraka

Видеоуроки по Arduino #1: Первые шаги

Видеоуроки по Arduino #1: Первые шаги

Sadržaj:

Anonim

Izradite brojač proizvodnje pokreta i prisutnosti pomoću Feather HUZZAH programiranog s Arduino i pokrećući Ubidots.

Djelotvorna fizička detekcija pokreta i prisutnosti u Smart Homes i Smart Manufacturing može biti vrlo korisna u aplikacijama u rasponu od starijih Ambient Assisted Living (AAL) rješenja ili sustava za brojanje proizvodnje koji hrani veći MES. Ostale aplikacije za otkrivanje pokreta i prisutnosti uključuju, ali nisu ograničene na:

  1. Automatizacija vrata i vrata
  2. Senzori za parkiranje za označavanje slobodnih mjesta
  3. Daljinski nadzor spremnika
  4. Pametne kuće i objekti za rasvjetu i sigurnost
  5. Uređaj za otkrivanje i brojanje u transportnim vodovima
  6. Označite otkrivanje na tiskanim materijalima
  7. Otkrivanje tekućine unutar nagiba kartona, plastike i papira
  8. Detekcija udaljenosti
  9. Brojači ljudi

Iako postoje mnoge aplikacije za prisutnost i kretanje, postoji isto toliko senzora za prikupljanje podataka, kao što su kapacitivni, induktivni, fotoelektrični i ultrazvučni senzori. Ovisno o troškovima, uvjetima okoline i zahtjevima u pogledu točnosti, treba odabrati najbolje opremanje za okoliš i zahtjeve primjene.

U ovom ćemo se vodiču usredotočiti na izgradnju brojača proizvodnje u stvarnom vremenu; aplikacija će brojati svaku jedinicu koja prolazi na pokretnoj traci. Koristit ćemo Arduino IDE kako bismo programirali Feather HUZZAH ESP8266, ultrazvučni senzor i Ubidots kako bismo razvili našu aplikaciju i prikazali našu kontrolnu ploču interneta stvari.

Pribor:

Korak 1: Zahtjevi

  1. Perje HUZZAH s ESP8266MB7389-100
  2. Ultrazvučni senzor
  3. Arduino IDE 1.8.2 ili noviji
  4. Ubidots račun -ili- obrazovna licenca

Korak 2: Postavljanje

  • I Postavljanje hardvera
  • II. Postavljanje firmvera
  • III. Razvoj aplikacija Ubidots (događaji, varijable i nadzorne ploče)

Korak 3: Postavljanje hardvera

Ultrazvučni senzor MB7389-100 je jeftina opcija za industrijske aplikacije sa zahtjevima široke i niske potrošnje energije u izazovnim vremenskim uvjetima zahvaljujući IPv67 ocjeni.

Da biste započeli, zrcali dijagram u nastavku kako biste priključili ultrazvučni senzor na Perje HUZZAH ESP8266.

BILJEŠKA: Očitanje senzora može biti analogno očitavanje ili PWM; u nastavku ćemo objasniti postavku za čitanje PWM-a, za dodatne informacije pogledajte gore prikazane primjere.

Opcionalno postavite mikro kontroler i senzore unutar kućišta de IP67 kako biste ih zaštitili od prašine, vode i drugih opasnih čimbenika okoliša. Standardni je slučaj sličan onome prikazanom na gornjim fotografijama.

Korak 4: Postavljanje upravljačkog programa

Prvo, trebate instalirati Feather Huzzah u Arduino IDE i prevesti kod. Ne zaboravite provjeriti ovu postavku tako da obavite jednostavan test koji treperi. Dodatne informacije o povezivanju uređaja Feather potražite u ovom korisnom vodiču za postavljanje hardvera.

Za slanje podataka senzora na Ubidots IoT razvojnu platformu, kopirajte i zalijepite donji kod u Arduino IDE. Ne zaboravite dodijeliti naziv Wi-Fi mreže, lozinku i svoj žeton za Ubidots račun gdje su naznačeni u kodu.

/ ******************************** Knjižnice su uključivale *************** **************** / # include / ******************************** Konstante i objekti ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Stavite ovdje vaš SSID nameconst char * SSID_PASS = "xxxxxxxx"; // Stavite ovdje vaš passwordconst char * TOKEN = "Assig_your_ubidots_token"; // Stavite ovdje svoj TOKENconst znak * DEVICE_LABEL = "kontrola kretanja"; // Vaš uređaj labelconst char * VARIABLE_LABEL = "udaljenost"; // Vaša varijabla 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 userint HTTPPORT = 80; / * Ultrazvučni senzor * / const int pwPin1 = 5; / / PWM pin gdje je spojen senzorWiFiClient klijentUbi; / ******************************** Auxiliar Functions *** **************************** // ** Dobiva duljinu tijela @ varg varijable tijelo tipa char @return dataLen duljina varijable * / int dataLen (char * varijabla) {uint8_t dataLen = 0; za (int i = 0; i <= 250; i ++) {if (varijabla i! = '0') {dataLen ++; } else {break; }} return dataLen;} / ******************************** Glavne funkcije ********* ********************** / void setup () {Serial.begin (115200); / * Povezivanje s AP * / WiFi.begin (SSID_NAME, SSID_PASS); while (WiFi.status ()! = WL_CONNECTED) {kašnjenje (500); Serial.print ( ""); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (pravi); Serial.println (F ("WiFi povezan")); Serial.println (F ("IP adresa:")); Serial.println (WiFi.localIP ());} void loop () {/ * Očitanje senzora vraća se u milimetrima, ako želite pretvoriti * u inče samo stvorite varijablu koja pokazuje na -> udaljenost / 25,4 * / udaljenost pluta = puls (pwPin1, HIGH); sendToUbidot (DEVICE_LABEL, VARIABLE_LABEL, udaljenost); 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 (sizeof (char) * 300); / * Prostor za pohranu vrijednosti za slanje * / char str_val 10; / * ---- Transformira vrijednosti senzora na tip char ----- * / / * 4 je minimalna širina, 2 je preciznost; vrijednost float kopira se na str_val * / dtostrf (senzorska vrijednost, 4, 2, str_val); / * Gradi tijelo koje se šalje u zahtjev * / sprintf (body, "{ _"% s _ ":% s}", variable_label, str_val); / * Izrađuje HTTP zahtjev za POST * / sprintf (podaci, "POST /api/v1.6/devices/%s", oznaka uređaja); sprintf (podaci, "% s HTTP / 1.1 r", podaci); sprintf (podaci, "% sHost: things.ubidots.com", podaci); sprintf (data, "% sUser-Agent:% s /% s", podaci, USER_AGENT, VERSION); sprintf (podaci, "% sX-Auth-Token:% s R", podaci, TOKEN); sprintf (podaci, "% sPovezivanje: zatvori r", podaci); sprintf (podaci, "% sContent-Type: application / json", podaci); sprintf (data, "% sContent-Length:% d _ r", data, dataLen (body)); sprintf (podaci, "% s% s" r, podaci, tijelo); / * Početna veza * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Provjerite vezu klijenta * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Posting your variables:")); Serial.println (podaci); / * Pošaljite HTTP zahtjev * / clientUbi.print (podaci); } / * Dok je klijent dostupan, pročitajte odgovor poslužitelja * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Slobodna memorija * / besplatno (podaci); slobodni (tijelo); / * Zaustavljanje klijenta * / clientUbi.stop ();}

ProTip: možete provjeriti je li uređaj ispravno povezan otvaranjem serijskog monitora u Arduino IDE-u.

Možete provjeriti je li uređaj izrađen u Ubidots backendu tako što ćete ga pregledati u svom računu Upravljanje uređajima -> Uređaji.

Klikom na vaš uređaj pronaći ćete varijablu pod nazivom "udaljenost" na kojoj su pohranjena očitanja senzora. Ovo ime je dodijeljeno u kodu koji ste upravo zalijepili u Arduino IDE. Ako želite podesiti automatske varijable, učinite to uređivanjem kartice uređaja ili treptanjem ažuriranog koda s ispravnom nomenklaturom varijable za vašu aplikaciju.

S Feather HUZZAH ESP8266 spojenim i prijavljivanjem podataka na Ubidots, sada je vrijeme da izgradite aplikaciju koristeći Ubidots pažljivo dizajniranu konfiguraciju aplikacije bez koda.

Korak 5: Ubidots razvoj aplikacija

Konfiguracija događaja za Ubidots

Trenutna očitanja koja šaljemo Ubidotsima su ulazi na daljinu. Za prevođenje tih očitanja u željeni izlaz koji želimo - brojane jedinice - trebali bismo napraviti događaj slijedeći ove korake:

  1. Unutar trenutnog uređaja "motion-control" stvara novu zadanu varijablu pod nazivom "box", koja će primiti 1 svaki put kada se broji nova jedinica.
  2. Ići Upravljanje uređajem -> Događaji, a zatim kliknite plavu ikonu plus u gornjem desnom kutu stranice da biste dodali novi događaj.
  3. Konfigurirajte svoj događaj koji počinje s "Ako su okidači":

  • Odaberite varijablu: „Udaljenost”
  • Vrijednost: vrijednost (zadano)
  • Je manja ili jednaka maksimalnoj očekivanoj udaljenosti između senzora i kutija koje prolaze * naša aplikacija poziva na 500mm
  • Za 0 minuta
  • Uštedjeti

4. Nakon što su okidači konfigurirani prema specifikacijama aplikacije, kliknite na narančastu ikonu "plus" u gornjem desnom kutu da biste dodali uvjetnu radnju.

5. Odaberite "Set Variable" kao radnju.

6. Zatim odaberite prethodno stvorenu zadanu varijablu "boxes" i vrijednost "1".

7. Spremite promjene. Ako je događaj ispravno postavljen, on će svaki put poslati "1" kada je udaljenost između senzora i jedinice dulja od naznačenog praga, što sugerira da u blizini nema objekta - i da treba računati novu jedinicu koja je upravo prošla ,

U kartici uređaja specifično za Feather, uočit ćete da je varijabla "kutije" gdje se šalje "1" u bilo kojem trenutku kada se prepozna prisutnost jedinice.

Posebno korisno za industrijske transportne trake i brojanje jedinica, ovaj se prototip može prilagoditi različitim okruženjima ili hardveru jednostavno u vašem kodiranju ili razvoju aplikacija.

8. Zamislite broj osjetljivih jedinica (ili vremena kada je objekt otkriven)
Sada, koristeći varijablu "kutije", kreirat ćemo novu varijablu valjanja prozora kako bismo zbrojili ukupnu količinu očitanja primljenih iz varijable "kutije" u definiranom spamu (minute, sate, dane, tjedne itd.). Da biste izvršili ovaj razvoj, slijedite ove jednostavne korake:

Dodijelite sljedeće vjerodajnice novoj varijabli valjanja prozora

Odaberite uređaj: kontrola kretanja (ili naziv uređaja koji šaljete podatke)

Odaberite varijablu: kutije

Izračunajte: iznos

Svaki: "1" sat (ili prema zahtjevima za prijavu)

Sada dodijelite ime novoj varijabli koja označava broj kutija (ili pokreta) koje se broje u satu, baš kao što su "kutije / sat" ili "jedinice / sati".

Korak 6: Konfiguracije nadzorne ploče

Naposljetku, stvorite nadzornu ploču za prikaz broja osjetljivih jedinica.

Idite na Upravljanje uređajima -> Nadzorne ploče i dodajte novi widget. Ovaj će widget prikazati količinu kutija koje se danas računaju po satima.

Dodajte sljedeće vjerodajnice novom widgetu da biste vizualizirali svoj broj.

Kako biste željeli vidjeti svoje podatke ?: Grafikon

Odaberite vrstu widgeta: linijski grafikon

Dodajte uređaj: kontrola pokreta

Dodajte varijablu: kutije / sat

Završi. Uz ovaj konačni razvoj nadzorne ploče - vi ste aplikacija potpuna i sada imate učinkovit i djelotvoran sustav za otkrivanje pokreta i prisutnosti. Evo konačnog pogleda na naše rezultate.

Korak 7: