Kredsløb

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

OTECKOVIA - Nehanebná Stella. S Alexom ich takmer pristihli

OTECKOVIA - Nehanebná Stella. S Alexom ich takmer pristihli

Indholdsfortegnelse:

Anonim

Bygg en bevægelses- og tilstedeværelsesproduktionstæller ved hjælp af en Feather HUZZAH programmeret med Arduino og drevet af Ubidots.

Effektiv fysisk bevægelse og tilstedeværelsesdetektion i Smart Homes og Smart Manufacturing kan være meget nyttigt i applikationer lige fra ældre Ambient Assisted Living (AAL) løsninger eller et Production Counting System, der feeds en større MES. Andre applikationer til bevægelses- og nærværsdetektion omfatter, men er ikke begrænset til:

  1. Dør- og portautomatisering
  2. Parkeringssensorer til at betegne frie pletter
  3. Fjernstyring af tankniveau
  4. Smarte boliger og faciliteter til belysning og sikkerhed
  5. Enheder registrerer og tæller i transportbånd
  6. Markedetektion på trykte materialer
  7. Væsketektering inden for pap, plast og papirfliser
  8. Afstandsdetektion
  9. Mennesker tæller

Selvom der er mange applikationer til tilstedeværelse og bevægelse, er der lige så mange sensorer at indsamle data, såsom kapacitive, induktive, fotoelektriske og ultralydssensorer. Afhængigt af omkostningerne, miljøforholdene og nøjagtighedskravene skal man vælge den bedste passende hardware til et miljø- og applikationskrav.

Til denne øvelse vil vi fokusere på at opbygge en realtids produktionstæller; applikationen tæller hver enhed, der passerer på et transportbånd. Vi vil bruge Arduino IDE til at programmere en Feather HUZZAH ESP8266, en ultralydssensor og Ubidots til at udvikle vores applikation og vise vores IoT dashboard.

forsyninger:

Trin 1: Krav

  1. Feather HUZZAH med ESP8266MB7389-100
  2. Ultralydssensor
  3. Arduino IDE 1.8.2 eller højere
  4. Ubidots konto - eller - Uddannelseslicens

Trin 2: Opsætning

  • Jeg Hardwareopsætning
  • II. Firmware Setup
  • III. Ubidots Application Development (begivenheder, variabler og dashboards)

Trin 3: Hardwareopsætning

Ultrasonic Sensor MB7389-100 er en billig løsning til industrielle applikationer med bredspændings- og lavt strømforbrugskrav under udfordrende vejrforhold takket være IPv67-klassificeringen.

For at komme i gang skal du spejle nedenstående diagram for at fastgøre ultralydssensoren til Feather HUZZAH ESP8266.

BEMÆRK: Sensoraflæsningen kan tages som analoge aflæsninger eller PWM; nedenfor skal vi forklare opsætningen til PWM-læsningen, for yderligere information, se venligst eksemplerne ovenfor.

Eventuelt Placer mikrokontrolenheden og sensorerne inde i IP67-sagen for at beskytte dem mod støv, vand og andre truende miljøfaktorer. Standard sagen ligner den som vist i billederne ovenfor.

Trin 4: Firmware Setup

Først skal du installere Feather Huzzah i Arduino IDE og kompilere koden. Husk at kontrollere denne opsætning ved at lave en simpel blinkende test. For yderligere oplysninger om tilslutning af din fjer-enhed, se denne nyttige hardwareopsætningsguide.

For at sende sensordata til Ubidots IoT Development Platform skal du kopiere og indsætte koden nedenfor i Arduino IDE. Husk at tildele Wi-Fi-netværksnavnet, adgangskoden og din Ubidots-konto-Token, hvis det er angivet i koden.

/ ******************************** Biblioteker inkluderet *************** ****************/#omfatte / ******************************** Konstanter og genstande ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Sæt her din SSID navnekunst char * SSID_PASS = "xxxxxxxx"; // Sæt her din passwordconst char * TOKEN = "Assig_your_ubidots_token"; // Sæt her din TOKENconst char * DEVICE_LABEL = "motion-control"; // Din enhed labelconst char * VARIABLE_LABEL = "distance"; // Din variable 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 Educational usersint HTTPPORT = 80; / * Ultralydssensor * / const int pwPin1 = 5; // PWM-stiften, hvor sensoren er tilsluttetWiFiClient clientUbi; / ******************************* Auxiliarfunktioner *** **************************** // ** Går længden af ​​kroppen @arg variabel kroppen af ​​typen char @return dataLen længden af ​​variablen * / int dataLen (char * variabel) {uint8_t dataLen = 0; for (int i = 0; i <= 250; i ++) {if (variabel i! = ' 0') {dataLen ++; } ellers {break; }} returner dataLen;} / ******************************** Hovedfunktioner ********* ********************** / void setup () {Serial.begin (115200); / * Forbindes til AP * / WiFi.begin (SSID_NAME, SSID_PASS); mens (WiFi.status ()! = WL_CONNECTED) {forsinkelse (500); Serial.print ( ""); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (sand); Serial.println (F ("WiFi-tilsluttet")); Serial.println (F ("IP-adresse:")); Serial.println (WiFi.localIP ());} void loop () {/ * Sensoraflæsningen returneres i millimeter, hvis du ønsker at konvertere * til tommer, skal du bare oprette en variabel, der peger på -> afstand / 25,4 * / flydeafstand = pulsIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, afstand); forsinkelse (1000);} void sendToUbidots (const char * device_label, const char * variabel_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Rum til at gemme værdier for at sende * / char str_val 10; / * ---- Transformerer sensorernes værdier til karetype ----- * / / * 4 er mininumbredde, 2 er præcision; float værdi kopieres på str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Bygger kroppen, der skal sendes til anmodningen * / sprintf (krop, "{"% s ":% s}", variable_label, str_val); / * Bygger HTTP-anmodningen til 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); sprintf (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 (krop)); sprintf (data, "% s% s r n r n", data, krop); / * Indledende forbindelse * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Bekræft klientforbindelsen * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Posting your variables:")); Serial.println (data); / * Send HTTP Request * / clientUbi.print (data); } / * Mens klienten er tilgængelig, læs svaret fra serveren * / mens (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Gratis hukommelse * / gratis (data); fri (kroppen); / * Stop klienten * / clientUbi.stop ();}

protip: Du kan kontrollere, om din enhed er korrekt forbundet ved at åbne serielt skærmen i Arduino IDE.

Du kan kontrollere, at en enhed er oprettet i din Ubidots-backend ved at se den i din konto Enhedshåndtering -> Enheder.

Ved at klikke på din enhed finder du en variabel kaldet "afstand", hvor sensorens aflæsninger er gemt. Dette navn blev tildelt i den kode, du lige har indsat i Arduino IDE. Hvis du ønsker at justere dine automatiske variabler, gør du det ved at redigere enhedskortet eller ved at blinke en opdateret kode med den korrekte variabelnomenklatur for din ansøgning.

Med Feather HUZZAH ESP8266 tilsluttet og rapporterende data til Ubidots, er det nu tid til at bygge programmet ved hjælp af Ubidots omhyggeligt designet kodefri applikationskonfiguration.

Trin 5: Ubidots Application Development

Ubidots begivenhedskonfiguration

De aktuelle aflæsninger, vi sender til Ubidots, er afstandsindgange. For at oversætte disse aflæsninger til det ønskede output, som vi ønsker - antal enheder - skal vi oprette en begivenhed som følger disse trin:

  1. Inden for den nuværende enhed "motion-control" oprettes en ny standardvariabel kaldet "bokse", som vil modtage 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øsere":

  • 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 går forbi * vores ansøgning kræver 500mm
  • Til 0 minutter
  • Gemme

4. Når udløserne er konfigureret til dine ansøgnings 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 "Set Variable" som handling.

6. Vælg derefter den tidligere oprettede standardvariabel "bokse" og værdi "1".

7. Gem ændringer. Hvis arrangementet er korrekt oprettet, sender det en "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 skal tælle en ny enhed, der netop er gået forbi .

I Feather Specific Device-kortet finder du, at variablen "bokse", hvor en "1" sendes, når en enhed er til stede, registreres.

Specielt anvendelig til industrielle transportbånd og enhedstælling af denne prototype kan tilpasses til forskellige miljøer eller hardware, simpelthen i din kodning eller din applikationsudvikling.

8. Visualiser antallet af registrerede enheder (eller gange et objekt blev registreret)
Nu skal vi ved hjælp af variablen "bokse" oprette en ny rullende variabel for at summere den samlede mængde af læsninger, der modtages 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: bevægelsesstyring (eller navnet på den enhed, du sender dine data)

Vælg en variabel: kasser

Beregn: sum

Hver: "1" time (eller i henhold til dine ansøgningsanmodninger)

Nu tildele 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

Endelig opretter du 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 efter time.

Tildel følgende legitimationsoplysninger til din nye widget for at visualisere dit antal.

Hvordan vil du se dine data ?: Diagram

Vælg en type widget: linjediagram

Tilføj en enhed: motion-kontrol

Tilføj en variabel: kasser / time

Afslut. Og med denne endelige dashboardudvikling - du er ansøgningen færdig, og du har nu et effektivt og effektivt bevægelses- og tilstedeværelsesdetekteringssystem. Her er et sidste kig på vores resultater.

Trin 7: