Indholdsfortegnelse:

Sådan bygger du et bevægelsesdetekteringssystem med Arduino: 7 trin
Sådan bygger du et bevægelsesdetekteringssystem med Arduino: 7 trin

Video: Sådan bygger du et bevægelsesdetekteringssystem med Arduino: 7 trin

Video: Sådan bygger du et bevægelsesdetekteringssystem med Arduino: 7 trin
Video: Reolink kameraopsætning - indstillinger på NVR | app | klient 2024, Juli
Anonim
Sådan bygger du et bevægelsesdetekteringssystem med Arduino
Sådan bygger du et bevægelsesdetekteringssystem med Arduino

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:

  1. Automatisering af døre og låger
  2. Parkeringssensorer til at udpege ledige pladser
  3. Fjernovervågning af tankniveau
  4. Smarte hjem og faciliteter til belysning og sikkerhed
  5. Enheder registrerer og tæller i transportbånd
  6. Mærkedetektion på trykte materialer
  7. Væskedetektion inde i pap, plast og papirhældninger
  8. Afstandsregistrering
  9. 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

  1. Fjer HUZZAH med ESP8266MB7389-100
  2. Ultralydssensor
  3. Arduino IDE 1.8.2 eller højere
  4. 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

Hardwareopsætning
Hardwareopsætning
Hardwareopsætning
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

Firmware -opsætning
Firmware -opsætning
Firmware -opsætning
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 applikationsudvikling
Ubidots applikationsudvikling
Ubidots applikationsudvikling
Ubidots applikationsudvikling
Ubidots applikationsudvikling
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:

  1. 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.
  2. 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.
  3. 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

Dashboard -konfigurationer
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: