Innholdsfortegnelse:
- Trinn 1: Krav
- Trinn 2: Oppsett
- Trinn 3: Maskinvareoppsett
- Trinn 4: Fastvareoppsett
- Trinn 5: Ubidots applikasjonsutvikling
- Trinn 6: Dashboard -konfigurasjoner
Video: Hvordan bygge et bevegelsesdeteksjonssystem med Arduino: 7 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
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:
- Automatisering av dør og port
- Parkeringssensorer for å utpeke ledige plasser
- Ekstern tanknivåovervåking
- Smarte hjem og fasiliteter for belysning og sikkerhet
- Enhetsdeteksjon og -telling i transportbånd
- Merkeoppdagelse på trykt materiale
- Væskedeteksjon inne i papp, plast og papirhelling
- Avstandsdeteksjon
- 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
- Fjær HUZZAH med ESP8266MB7389-100
- Ultralydsensor
- Arduino IDE 1.8.2 eller høyere
- Ubidots -konto -eller -STEM -lisens
Trinn 2: Oppsett
- I Maskinvareoppsett
- II. Fastvareoppsett
- III. Ubidots Application Development (hendelser, variabler og dashbord)
Trinn 3: 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
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 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:
- 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.
- Gå til Enhetsbehandling -> Hendelser, og klikk på det blå plussikonet øverst til høyre på siden for å legge til en ny hendelse.
- 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
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:
Hvordan bygge en Battlebot med papp og Arduino: 7 trinn (med bilder)
Hvordan bygge en Battlebot med papp og Arduino: Jeg opprettet battlebots ved hjelp av Arduino UNO og papp ble brukt til å bygge kroppene. Jeg prøvde å bruke rimelige forsyninger og ga barna kreativ frihet til å designe kamprobotene sine. Battlebot mottar kommandoer fra den trådløse kontrolleren
Hvordan bygge en 8x8x8 LED -kube og kontrollere den med en Arduino: 7 trinn (med bilder)
Hvordan bygge en 8x8x8 LED -kube og kontrollere den med en Arduino: Jan 2020 -redigering: Jeg lar dette stå i tilfelle noen vil bruke det til å generere ideer, men det er ikke lenger noe poeng i å bygge en kube basert på disse instruksjonene. LED -driver -ICene er ikke lenger laget, og begge skissene ble skrevet i gammel versjon
Hvordan bygge et elektrisk longboard med telefonkontroll: 6 trinn (med bilder)
Hvordan bygge et elektrisk longboard med telefonkontroll: Elektriske longboards er kjempebra! TESTFOTO I VIDEOEN OVERFOR Å BYGGE EN ELEKTRISK LONGBOARD KONTROLLERT FRA EN TELEFON MED BLUETOOTHUpdate #1: Grip tape installert, noen tweaks til hastighetskontrolleren har betydd at jeg har fått mer fart ut av båten
Hvordan bygge en CubeSat med en Arduino med en Arducam: 9 trinn
Hvordan bygge en CubeSat med en Arduino med en Arducam: På det første bildet har vi en Arduino og den kalles "Arduino Uno." På det andre bildet har vi en Arducam, og den kalles "Arducam OV2640" 2MP mini. &Quot; Sammen med det andre bildet er det materialene du trenger for å
Hvordan bygge en gitarhøyttalerboks eller bygge to for stereoen din. 17 trinn (med bilder)
Hvordan bygge en gitarhøyttalerboks eller bygge to for stereoen din .: Jeg ønsket at en ny gitarhøyttaler skulle følge med rørforsterkeren jeg bygger. Høyttaleren vil forbli ute i butikken min, så det trenger ikke være noe for spesielt. Tolex -belegg kan bli for lett skadet, så jeg sprayet utsiden svart etter en lett sand