Innholdsfortegnelse:

Hvordan bygge et bevegelsesdeteksjonssystem med Arduino: 7 trinn
Hvordan bygge et bevegelsesdeteksjonssystem med Arduino: 7 trinn

Video: Hvordan bygge et bevegelsesdeteksjonssystem med Arduino: 7 trinn

Video: Hvordan bygge et bevegelsesdeteksjonssystem med Arduino: 7 trinn
Video: 10 САМЫХ ИННОВАЦИОННЫХ КРОШЕЧНЫХ ДОМОВ И ПЕРЕНОСНОЙ КАБИНЫ 2024, Juli
Anonim
Hvordan bygge et bevegelsesdeteksjonssystem med Arduino
Hvordan bygge et bevegelsesdeteksjonssystem med Arduino

Bygg en produksjonsskriver for bevegelse og tilstedeværelse ved hjelp av en Feather HUZZAH programmert med Arduino og drevet av Ubidots.

Effektiv fysisk bevegelse og tilstedeværelsesdeteksjon i smarte hjem og smart produksjon kan være svært nyttig i applikasjoner som spenner fra eldre Ambient Assisted Living (AAL) -løsninger eller et produksjonsregningssystem som mater et større MES. Andre applikasjoner for bevegelses- og tilstedeværelsesdeteksjon inkluderer, men er ikke begrenset til:

  1. Automatisering av dør og port
  2. Parkeringssensorer for å utpeke ledige plasser
  3. Ekstern tanknivåovervåking
  4. Smarte hjem og fasiliteter for belysning og sikkerhet
  5. Enhetsdeteksjon og -telling i transportbånd
  6. Merkeoppdagelse på trykt materiale
  7. Væskedeteksjon inne i papp, plast og papirhelling
  8. Avstandsdeteksjon
  9. Folk teller

Selv om det er mange applikasjoner for tilstedeværelse og bevegelse, er det like mange sensorer for å samle inn data, for eksempel kapasitive, induktive, fotoelektriske og ultralydsensorer. Avhengig av kostnadene, miljøforholdene og kravene til nøyaktighet, bør man velge den maskinvaren som passer best for miljø og applikasjonskrav.

I denne opplæringen vil vi fokusere på å bygge en sanntids produksjonsdisk; applikasjonen vil telle hver enhet som går forbi på et transportbånd. Vi skal bruke Arduino IDE til å programmere en Feather HUZZAH ESP8266, en ultralydsensor og Ubidots for å utvikle applikasjonen vår og vise vårt IoT -dashbord.

Trinn 1: Krav

  1. Fjær HUZZAH med ESP8266MB7389-100
  2. Ultralydsensor
  3. Arduino IDE 1.8.2 eller høyere
  4. Ubidots -konto -eller -STEM -lisens

Trinn 2: Oppsett

  • I Maskinvareoppsett
  • II. Fastvareoppsett
  • III. Ubidots Application Development (hendelser, variabler og dashbord)

Trinn 3: Maskinvareoppsett

Maskinvareoppsett
Maskinvareoppsett
Maskinvareoppsett
Maskinvareoppsett

Ultralydssensoren MB7389-100 er et rimelig alternativ for industrielle applikasjoner med et bredt spekter og lavt strømforbruk under utfordrende værforhold takket være IPv67-klassifiseringen.

For å komme i gang, speil diagrammet nedenfor for å feste ultralydssensoren til Feather HUZZAH ESP8266.

MERK: Sensoravlesningen kan tas som analoge avlesninger eller PWM; nedenfor skal vi forklare oppsettet for PWM -lesingen, for ytterligere informasjon, se eksemplene vist ovenfor.

[Valgfritt] plasser mikrokontrolleren og sensorene inne i IP67-etuiet for å beskytte dem mot støv, vann og andre truende miljøfaktorer. Standardhuset ser ut som det som er vist på bildene ovenfor.

Trinn 4: Fastvareoppsett

Fastvareoppsett
Fastvareoppsett
Fastvareoppsett
Fastvareoppsett

Først bør du installere Feather Huzzah i Arduino IDE og kompilere koden. Husk å bekrefte dette oppsettet ved å gjøre en enkel blinkende test. For mer informasjon om tilkobling av Feather -enheten din, sjekk denne nyttige maskinvareoppsettguiden.

For å sende sensordata til Ubidots IoT Development Platform, kopier og lim inn koden nedenfor i Arduino IDE. Husk å tilordne Wi-Fi-nettverksnavn, passord og Ubidots-kontotoken der det er angitt i koden.

/******************************* Biblioteker inkludert **************** ***************** /#include /******************************* ** Konstanter og objekter ****************************** //*Ubidots*/const char*SSID_NAME = "xxxxxxxx"; // Legg her ditt SSID -navnekonst char* SSID_PASS = "xxxxxxxx"; // Legg inn passordet ditt her* TOKEN = "Assig_your_ubidots_token"; // Legg her din TOKENconst char* DEVICE_LABEL = "motion-control"; // Enhetens labelconst char* VARIABLE_LABEL = "avstand"; // Variabelen labelconst char* USER_AGENT = "ESP8266"; const char* VERSION = "1.0"; const char* HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Business -brukere // const char* HTTPSERVER = " things.ubidots.com "; // Ubidots Educational usersint HTTPPORT = 80;/ * Ultrasonic Sensor */const int pwPin1 = 5; // PWM -pinnen der sensoren er tilkobletWiFiClient -klientUbi;/********************************* Hjelpefunksjoner *** **************************** // ** Får lengden på body @arg -variabelen kroppen av typen char @return dataLen lengden på variabelen*/int dataLen (char* variabel) {uint8_t dataLen = 0; for (int i = 0; i distanse / 25,4* / flytavstand = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distanse); forsinkelse (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); / * Plass til å lagre verdier som skal sendes * / char str_val [10]; /*---- Transformerer verdiene til sensorene til rørtypen -----* / /*4 er mininum bredde, 2 er presisjon; flyteverdi kopieres til str_val* / dtostrf (sensor_value, 4, 2, str_val); /* Bygger kroppen som skal sendes inn i forespørselen* /sprintf (body, "{"%s / ":%s}", variable_label, str_val); /* Bygger HTTP forespørsel om å være POST */sprintf (data, "POST /api/v1.6/devices/%s", device_label); 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, brødtekst); / * Første tilkobling */ clientUbi.connect (HTTPSERVER, HTTPPORT); / * Bekreft klientforbindelsen */ if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Posting your variables:")); Serial.println (data); / * Send HTTP -forespørsel */ clientUbi.print (data); } / * Mens klienten er tilgjengelig, les svaret fra serveren * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Ledig minne * / ledig (data); fri (kropp); / * Stopp klienten */ clientUbi.stop ();}

ProTip: du kan kontrollere om enheten er riktig tilkoblet ved å åpne den serielle skjermen i Arduino IDE.

Du kan bekrefte at en enhet er opprettet i Ubidots -backend ved å se den i kontoen din Enhetsbehandling -> Enheter.

Ved å klikke på enheten din, finner du en variabel som kalles "avstand" der sensorens avlesninger er lagret. Dette navnet ble tildelt i koden du nettopp har limt inn i Arduino IDE. Hvis du ønsker å justere de automatiske variablene, gjør du det ved å redigere enhetskortet eller ved å blinke en oppdatert kode med riktig variabelnomenklatur for applikasjonen din.

Med Feather HUZZAH ESP8266 koblet til og rapporterer data til Ubidots, er det nå på tide å bygge programmet ved hjelp av Ubidots nøye designet kodefri applikasjonskonfigurasjon.

Trinn 5: Ubidots applikasjonsutvikling

Ubidots applikasjonsutvikling
Ubidots applikasjonsutvikling
Ubidots applikasjonsutvikling
Ubidots applikasjonsutvikling
Ubidots applikasjonsutvikling
Ubidots applikasjonsutvikling

Ubidots hendelseskonfigurasjon

De nåværende avlesningene vi sender til Ubidots er avstandsinnganger. For å oversette disse avlesningene til ønsket utgang som vi ønsker - tellede enheter - bør vi opprette en hendelse som følger disse trinnene:

  1. Inne i den nåværende enheten "motion-control" opprett en ny standardvariabel kalt "bokser", som vil motta en 1 hver gang en ny enhet telles.
  2. Gå til Enhetsbehandling -> Hendelser, og klikk på det blå plussikonet øverst til høyre på siden for å legge til en ny hendelse.
  3. Konfigurer arrangementet ditt med "If triggers":
  • Velg en variabel: "avstand"
  • Verdi: verdi (standard)
  • Er mindre enn eller lik [maksimal forventet avstand} mellom sensoren og boksene som går forbi*applikasjonen vår krever 500 mm
  • I 0 minutter
  • Lagre

4. Når utløserne er konfigurert til applikasjonens spesifikasjoner, klikker du på det oransje "pluss" -ikonet i øvre høyre hjørne for å legge til en betinget handling.

5. Velg "Angi variabel" som handlingen.

6. Deretter velger du den tidligere opprettede standardvariabelen "bokser" og verdien "1".

7. Lagre endringer. Hvis hendelsen er riktig konfigurert, sender den en "1" hver gang avstanden mellom sensoren og enheten er lengre enn en angitt terskel, noe som tyder på at det ikke er noe objekt i nærheten - og bør telle en ny enhet som nettopp passerte.

I Feather -spesifikke enhetskortet vil du finne at variabelen "bokser" hvor en "1" sendes når en enhets tilstedeværelse registreres.

Spesielt nyttig for industrielle transportbånd og enheter som teller denne prototypen kan tilpasses for å passe forskjellige miljøer eller maskinvare bare i kodingen eller applikasjonsutviklingen din.

8. Visualiser antall enheter som oppdages (eller ganger et objekt ble oppdaget) Nå, ved hjelp av "bokser" -variabelen, skal vi opprette en ny rullende vinduvariabel for å summere den totale mengden lesinger mottatt fra variabelen "bokser" i en definert spam (minutter, timer, dager, uker, osv.). Følg disse enkle trinnene for å utføre denne utviklingen:

Tilordne følgende legitimasjon til den nye rullende vinduvariabelen

Velg en enhet: bevegelseskontroll (eller navnet på enheten du sender dataene dine)

Velg en variabel: bokser

Beregn: summen

Hver: "1" time (eller i henhold til søknadsforespørslene dine)

Tildel nå et navn til den nye variabelen som angir antall bokser (eller bevegelser) som telles i en time, akkurat som "bokser/time" eller "enheter/timer.

Trinn 6: Dashboard -konfigurasjoner

Dashboard -konfigurasjoner
Dashboard -konfigurasjoner

Til slutt lager du et dashbord for å vise antall enheter som registreres.

Gå til Enhetsbehandling -> Dashbord og legg til en ny widget. Denne widgeten viser antall bokser som telles i dag fordelt på timer.

Tilordne følgende legitimasjon til den nye widgeten for å visualisere tellingen din.

Hvordan vil du se dataene dine ?: Diagram

Velg en type widget: linjediagram

Legg til en enhet: bevegelseskontroll

Legg til en variabel: bokser/time

Bli ferdig. Og med denne siste dashbordutviklingen - applikasjonen din er fullført, og du har nå et effektivt og effektivt bevegelses- og tilstedeværelsesdeteksjonssystem. Her er en siste titt på resultatene våre.

Anbefalt: