Indholdsfortegnelse:
- Trin 1: Krav
- Trin 2: Opsætning
- Trin 3: Hardwareopsætning
- Trin 4: Firmware -opsætning
- Trin 5: Ubidots applikationsudvikling
- Trin 6: Dashboard -konfigurationer
Video: Sådan bygger du et bevægelsesdetekteringssystem med Arduino: 7 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Byg en motions- og tilstedeværelsesproduktionstæller ved hjælp af en Feather HUZZAH programmeret med Arduino og drevet af Ubidots.
Effektiv fysisk bevægelse og tilstedeværelsesdetektering i Smart Homes og Smart Manufacturing kan være meget nyttig i applikationer lige fra ældre Ambient Assisted Living (AAL) -løsninger eller et Production Counting System, der fodrer et større MES. Andre applikationer til bevægelses- og nærværsregistrering omfatter, men er ikke begrænset til:
- Automatisering af døre og låger
- Parkeringssensorer til at udpege ledige pladser
- Fjernovervågning af tankniveau
- Smarte hjem og faciliteter til belysning og sikkerhed
- Enheder registrerer og tæller i transportbånd
- Mærkedetektion på trykte materialer
- Væskedetektion inde i pap, plast og papirhældninger
- Afstandsregistrering
- Folk tæller
Selvom der er mange applikationer til nærvær og bevægelse, er der lige så mange sensorer til at indsamle data, såsom kapacitive, induktive, fotoelektriske og ultralydssensorer. Afhængigt af omkostninger, miljøforhold og krav til nøjagtighed bør man vælge den bedst passende hardware til et miljø og krav til applikationer.
I denne vejledning fokuserer vi på at bygge en realtids produktionstæller; applikationen tæller hver enhed, der passerer på et transportbånd. Vi vil bruge Arduino IDE til at programmere et Feather HUZZAH ESP8266, en ultralydssensor og Ubidots til at udvikle vores applikation og vise vores IoT dashboard.
Trin 1: Krav
- Fjer HUZZAH med ESP8266MB7389-100
- Ultralydssensor
- Arduino IDE 1.8.2 eller højere
- Ubidots -konto -eller -STEM -licens
Trin 2: Opsætning
- I Hardwareopsætning
- II. Firmware -opsætning
- III. Ubidots Application Development (begivenheder, variabler og dashboards)
Trin 3: Hardwareopsætning
Ultralydssensoren MB7389-100 er en billig løsning til industrielle applikationer med store krav til lavt strømforbrug under udfordrende vejrforhold takket være dens IPv67-rating.
For at komme i gang skal du spejle diagrammet herunder for at fastgøre ultralydssensoren til Feather HUZZAH ESP8266.
BEMÆRK: Sensoraflæsning kan tages som analoge aflæsninger eller PWM; nedenfor vil vi forklare opsætningen til PWM -læsning, for yderligere information se eksemplerne vist ovenfor.
[Valgfrit] placer mikrokontrolleren og sensorerne inde i IP67-etuiet for at beskytte dem mod støv, vand og andre truende miljøfaktorer. Standardkassen ligner den, der er vist på billederne ovenfor.
Trin 4: Firmware -opsætning
Først skal du installere Feather Huzzah i Arduino IDE og kompilere koden. Husk at bekræfte denne opsætning ved at lave en simpel blinkende test. For yderligere oplysninger om tilslutning af din Feather -enhed, tjek denne nyttige hardware -installationsvejledning.
For at sende sensordata til Ubidots IoT Development Platform skal du kopiere og indsætte nedenstående kode i Arduino IDE. Husk at tildele Wi-Fi-netværksnavn, adgangskode og dit Ubidots-kontotoken, hvor det er angivet i koden.
/******************************* Biblioteker inkluderet **************** ***************** /#include /******************************* ** Konstanter og objekter ****************************** //*Ubidots*/const char*SSID_NAME = "xxxxxxxx"; // Sæt her dit SSID -navneconst char* SSID_PASS = "xxxxxxxx"; // Sæt her dit passwordconst char* TOKEN = "Assig_your_ubidots_token"; // Sæt her din TOKENconst char* DEVICE_LABEL = "motion-control"; // Din enheds labelconst char* VARIABLE_LABEL = "distance"; // Din variabel labelconst char* USER_AGENT = "ESP8266"; const char* VERSION = "1.0"; const char* HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Forretningsbrugere // const char* HTTPSERVER = " things.ubidots.com "; // Ubidots Uddannelsesbrugere i HTTPPORT = 80;/ * Ultrasonic Sensor */const int pwPin1 = 5; // PWM -stiften, hvor sensoren er tilsluttetWiFiClient -klientUbi;/******************************** Hjælpefunktioner *** **************************** // ** Henter længden af body @arg -variablen brødteksten af typen char @return dataLen længden af variablen*/int dataLen (char* variabel) {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); / * Plads til at gemme værdier, der skal sendes * / char str_val [10]; /*---- Transformerer sensorernes værdier til char type -----* / /*4 er mininum bredde, 2 er præcision; float værdi kopieres til str_val* / dtostrf (sensor_value, 4, 2, str_val); /* Bygger den krop, der skal sendes til anmodningen* /sprintf (body, "{"%s / ":%s}", variable_label, str_val); /* Bygger HTTP anmodning om at 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); / * Indledende forbindelse */ clientUbi.connect (HTTPSERVER, HTTPPORT); / * Bekræft klientforbindelsen */ if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Udstationering af dine variabler:")); Serial.println (data); / * Send HTTP -anmodningen */ clientUbi.print (data); } / * Mens klienten er tilgængelig, kan du læse serverens svar * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Ledig hukommelse * / ledig (data); fri (krop); / * Stop klienten */ clientUbi.stop ();}
ProTip: du kan kontrollere, om din enhed er korrekt tilsluttet ved at åbne den serielle skærm i Arduino IDE.
Du kan kontrollere, at en enhed er oprettet i din Ubidots -backend ved at se den på din konto Enhedshåndtering -> Enheder.
Ved at klikke på din enhed finder du en variabel kaldet "afstand", hvor sensorens aflæsninger gemmes. Dette navn blev tildelt i den kode, du lige har indsat i Arduino IDE. Hvis du ønsker at justere dine automatiske variabler, skal du gøre det ved at redigere enhedskortet eller ved at blinke en opdateret kode med den korrekte variabelnomenklatur til din applikation.
Med Feather HUZZAH ESP8266 tilsluttet og rapporteringsdata til Ubidots, er det nu tid til at bygge applikationen ved hjælp af Ubidots omhyggeligt designet kodefri applikationskonfiguration.
Trin 5: Ubidots applikationsudvikling
Ubidots hændelseskonfiguration
De aktuelle aflæsninger, vi sender til Ubidots, er afstandsinput. For at oversætte disse aflæsninger til det ønskede output, som vi ønsker -regnede enheder, bør vi oprette en begivenhed ved at følge disse trin:
- Inde i den aktuelle enhed "motion-control" opretter du en ny standardvariabel kaldet "bokse", som modtager en 1 hver gang en ny enhed tælles.
- Gå til Enhedshåndtering -> Begivenheder, og klik på det blå plusikon i øverste højre hjørne af siden for at tilføje en ny begivenhed.
- Konfigurer din begivenhed, der begynder med "Hvis udløser":
- Vælg en variabel: "afstand"
- Værdi: værdi (standard)
- Er mindre end eller lig med [den maksimale forventede afstand} mellem sensoren og boksene, der passerer*vores applikation kræver 500 mm
- I 0 minutter
- Gemme
4. Når udløserne er konfigureret til din applikations specifikationer, skal du klikke på det orange "plus" -ikon i øverste højre hjørne for at tilføje en betinget handling.
5. Vælg "Angiv variabel" som handlingen.
6. Vælg derefter den tidligere oprettede standardvariabel "bokse" og værdien "1".
7. Gem ændringer. Hvis hændelsen er korrekt konfigureret, sender den et "1" hver gang afstanden mellem sensoren og enheden er længere end en angivet tærskel, hvilket tyder på, at der ikke er noget objekt i nærheden - og bør tælle en ny enhed, der lige er gået forbi.
På kortet Feather -specifik enhed finder du, at variablen "kasser", hvor der sendes et "1", når en enheds tilstedeværelse registreres.
Denne prototype er især nyttig til industrielle transportbånd og enhedstællinger og kan tilpasses til at passe til forskellige miljøer eller hardware blot i din kodning eller din applikationsudvikling.
8. Visualiser antallet af registrerede enheder (eller gange et objekt blev registreret) Nu, ved hjælp af varianten "bokse", skal vi oprette en ny rullende vinduesvariabel for at summe den samlede mængde aflæsninger modtaget fra variablen "bokse" i en defineret spam (minutter, timer, dage, uger osv.). Følg disse enkle trin for at udføre denne udvikling:
Tildel følgende legitimationsoplysninger til din nye rullende vinduesvariabel
Vælg en enhed: motion-control (eller navnet på den enhed, du sender dine data)
Vælg en variabel: bokse
Beregn: summen
Hver: "1" time (eller i henhold til dine ansøgningsanmodninger)
Tildel nu et navn til den nye variabel, der angiver antallet af kasser (eller bevægelser) talt i en time, ligesom "kasser/time" eller "enheder/timer.
Trin 6: Dashboard -konfigurationer
Til sidst skal du oprette et dashboard for at vise antallet af registrerede enheder.
Gå til Enhedshåndtering -> Dashboards og tilføj en ny widget. Denne widget viser mængden af kasser, der tælles i dag, fordelt på timer.
Tildel følgende legitimationsoplysninger til din nye widget for at visualisere din optælling.
Hvordan vil du gerne se dine data ?: Diagram
Vælg en type widget: linjediagram
Tilføj en enhed: motion-control
Tilføj en variabel: bokse/time
Afslut. Og med denne sidste dashboardudvikling - din applikation er fuldført, og du har nu et effektivt og effektivt bevægelses- og nærværsdetekteringssystem. Her er et sidste kig på vores resultater.
Anbefalede:
Sådan bygger du en planteovervågning med Arduino: 7 trin
Sådan opbygges en planteovervågning med Arduino: I denne vejledning lærer vi, hvordan man registrerer en jordfugtighed ved hjælp af en fugtighedsføler og blinker en grøn LED, hvis alt er ok, og OLED Display og Visuino. Se videoen
Sådan bygger du en 8x8x8 LED -terning og styrer den med en Arduino: 7 trin (med billeder)
Sådan bygger du en 8x8x8 LED -terning og styrer den med en Arduino: januar 2020 -redigering: Jeg lader dette være i tilfælde af, at nogen vil bruge det til at generere ideer, men der er ikke længere noget formål at bygge en terning baseret på disse instruktioner. LED -driver -IC'erne laves ikke længere, og begge skitser blev skrevet i gammel version
Sådan bygger du et elektrisk longboard med telefonstyring: 6 trin (med billeder)
Sådan opbygger du et elektrisk longboard med telefonstyring: Elektriske longboards er forrygende! TESTFOTO I VIDEOEN OVERFØRENDE AT BYGGE EN ELEKTRISK LONGBOARD KONTROLLERET FRA EN TELEFON MED BLUETOOTHUpdate #1: Grip tape installeret, nogle tweaks til hastighedsregulatoren har betydet, at jeg har fået mere fart ud af bo
Sådan bygger du CubeSat med Arduino og Geiger tællersensor: 11 trin
Sådan bygger du CubeSat med Arduino og Geiger tællersensor: Har du nogensinde spekuleret over, om Mars er radioaktivt eller ej? Og hvis det er radioaktivt, er strålingsniveauerne høje nok til at blive betragtet som skadelige for mennesker? Dette er alle spørgsmål, som vi håber kan besvares af vores CubeSat med Arduino Geiger Counte
Sådan bygger du en CubeSat med en Arduino med en Arducam: 9 trin
Sådan bygger du en CubeSat med en Arduino med en Arducam: På det første billede har vi en Arduino, og den kaldes " Arduino Uno. &Quot; På det andet billede har vi en Arducam, og den kaldes " Arducam OV2640 2MP mini. &Quot; Sammen med det andet billede er der de materialer, du skal bruge til