Innehållsförteckning:

Hur man bygger ett rörelsedetekteringssystem med Arduino: 7 steg
Hur man bygger ett rörelsedetekteringssystem med Arduino: 7 steg

Video: Hur man bygger ett rörelsedetekteringssystem med Arduino: 7 steg

Video: Hur man bygger ett rörelsedetekteringssystem med Arduino: 7 steg
Video: Bygg ut ditt smart hem - Julklappstips 2024, November
Anonim
Hur man bygger ett rörelsedetekteringssystem med Arduino
Hur man bygger ett rörelsedetekteringssystem med Arduino

Bygg en rörelse- och närvaroproduktionsräknare med en Feather HUZZAH programmerad med Arduino och drivs av Ubidots.

Effektiv fysisk rörelse- och närvarodetektering i smarta hem och smart tillverkning kan vara mycket användbar i applikationer som sträcker sig från äldre Ambient Assisted Living (AAL) -lösningar eller ett produktionsräkningssystem som matar ett större MES. Andra applikationer för rörelse- och närvarodetektering inkluderar men är inte begränsade till:

  1. Automatisering av dörrar och portar
  2. Parkeringssensorer för att utse lediga platser
  3. Fjärrövervakning av tanknivå
  4. Smarta hem och faciliteter för belysning och säkerhet
  5. Enhetsdetektering och -räkning i transportband
  6. Märkdetektering på tryckt material
  7. Vätskedetektering inuti kartong-, plast- och papperslutningar
  8. Avståndsdetektering
  9. Människor kontrar

Även om det finns många applikationer för närvaro och rörelse, finns det lika många sensorer för att samla in data, till exempel kapacitiva, induktiva, fotoelektriska och ultraljudssensorer. Beroende på kostnader, miljöförhållanden och krav på noggrannhet bör man välja den hårdvaran som passar bäst för en miljö och applikationskrav.

För denna handledning kommer vi att fokusera på att bygga en produktionsdisk i realtid; applikationen kommer att räkna varje enhet som passerar på ett transportband. Vi kommer att använda Arduino IDE för att programmera en Feather HUZZAH ESP8266, en ultraljudssensor och Ubidots för att utveckla vår applikation och visa vår IoT -instrumentpanel.

Steg 1: Krav

  1. Fjäder HUZZAH med ESP8266MB7389-100
  2. Ultraljudssensor
  3. Arduino IDE 1.8.2 eller högre
  4. Ubidots -konto -eller -STEM -licens

Steg 2: Inställning

  • I Hardware Setup
  • II. Firmware Setup
  • III. Ubidots applikationsutveckling (händelser, variabler och instrumentpaneler)

Steg 3: Hårdvaruinstallation

Hardware Setup
Hardware Setup
Hardware Setup
Hardware Setup

Ultraljudssensorn MB7389-100 är ett billigt alternativ för industriella applikationer med krav på brett räckvidd och låg strömförbrukning i utmanande väderförhållanden tack vare dess IPv67-klassificering.

För att komma igång, spegla diagrammet nedan för att fästa ultraljudssensorn på Feather HUZZAH ESP8266.

OBS: Sensoravläsningen kan tas som analoga avläsningar eller PWM; nedan kommer vi att förklara inställningen för PWM -läsningen, för ytterligare information, se exemplen som visas ovan.

[Alternativt] placera mikrokontrollen och sensorerna inuti IP67-fodralet för att skydda dem från damm, vatten och andra hotfulla miljöfaktorer. Standardfodralet liknar det som visas på bilderna ovan.

Steg 4: Firmware Setup

Firmware Setup
Firmware Setup
Firmware Setup
Firmware Setup

Först bör du installera Feather Huzzah i Arduino IDE och sammanställa koden. Kom ihåg att verifiera denna inställning genom att göra ett enkelt blinkande test. För mer information om hur du ansluter din Feather -enhet, kolla in den här hjälpsamma installationsguiden för hårdvara.

För att skicka sensordata till Ubidots IoT Development Platform, kopiera och klistra in koden nedan i Arduino IDE. Kom ihåg att tilldela Wi-Fi-nätverksnamn, lösenord och din Ubidots-kontotoken där det anges i koden.

/******************************* Bibliotek ingår **************** ***************** /#include /******************************* ** Konstanter och objekt ****************************** //*Ubidots*/const char*SSID_NAME = "xxxxxxxx"; // Lägg här ditt SSID -namnkonstant char* SSID_PASS = "xxxxxxxx"; // Lägg här ditt lösenordconst char* TOKEN = "Assig_your_ubidots_token"; // Lägg här din TOKENconst char* DEVICE_LABEL = "motion-control"; // Din enhet labelconst char* VARIABLE_LABEL = "avstånd"; // Din variabel labelconst char* USER_AGENT = "ESP8266"; const char* VERSION = "1.0"; const char* HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Business -användare // const char* HTTPSERVER = " things.ubidots.com "; // Ubidots Educational usersint HTTPPORT = 80;/ * Ultrasonic Sensor */const int pwPin1 = 5; // PWM -stiftet där sensorn är anslutenWiFiClient -klientUbi;/********************************* Extra funktioner *** **************************** // ** Hämtar längden på variabeln body @arg kroppen av typen char @return dataLen variabelns längd*/int dataLen (char* variabel) {uint8_t dataLen = 0; för (int i = 0; i distans / 25,4* / flottöravstånd = 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); / * Utrymme för att lagra värden som ska skickas * / char str_val [10]; /*---- Transformerar värdena på sensorerna till typ typ -----* / /*4 är mininummbredd, 2 är precision; flottörvärde kopieras till str_val* / dtostrf (sensor_value, 4, 2, str_val); /* Bygger kroppen som ska skickas till begäran* /sprintf (body, "{"%s / ":%s}", variable_label, str_val); /* bygger HTTP begäran om att vara 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, body); / * Initial anslutning */ clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verifiera klientanslutningen */ if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Posta dina variabler:")); Serial.println (data); / * Skicka HTTP -förfrågan */ clientUbi.print (data); } / * Medan klienten är tillgänglig läs servern * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Ledigt minne * / ledigt (data); fri (kropp); / * Stoppa klienten */ clientUbi.stop ();}

ProTip: du kan kontrollera om din enhet är korrekt ansluten genom att öppna den seriella bildskärmen i Arduino IDE.

Du kan verifiera att en enhet skapas i din Ubidots backend genom att visa den i ditt konto Enhetshantering -> Enheter.

Genom att klicka på din enhet hittar du en variabel som kallas "avstånd" där sensorns avläsningar lagras. Detta namn tilldelades i koden du just klistrat in i Arduino IDE. Om du vill justera dina automatiska variabler, gör det genom att redigera enhetskortet eller genom att blinka en uppdaterad kod med rätt variabelnomenklatur för din applikation.

Med Feather HUZZAH ESP8266 ansluten och rapporterad data till Ubidots är det nu dags att bygga programmet med hjälp av Ubidots noggrant utformade kodfria applikationskonfiguration.

Steg 5: Ubidots applikationsutveckling

Ubidots applikationsutveckling
Ubidots applikationsutveckling
Ubidots applikationsutveckling
Ubidots applikationsutveckling
Ubidots applikationsutveckling
Ubidots applikationsutveckling

Ubidots händelsekonfiguration

De aktuella avläsningarna vi skickar till Ubidots är avståndsinmatningar. För att översätta dessa avläsningar till önskad utmatning som vi vill ha - räknade enheter - bör vi skapa en händelse enligt dessa steg:

  1. Inne i den aktuella enheten skapar "motion-control" en ny standardvariabel som kallas "lådor", som får en 1 varje gång en ny enhet räknas.
  2. Gå till Enhetshantering -> Händelser och klicka på den blå plusikonen i det övre högra hörnet på sidan för att lägga till en ny händelse.
  3. Konfigurera ditt event som börjar med "If triggers":
  • Välj en variabel: "avstånd"
  • Värde: värde (standard)
  • Är mindre än eller lika med [det maximala förväntade avståndet] mellan sensorn och rutorna som passerar*vår applikation kräver 500 mm
  • I 0 minuter
  • Spara

4. När utlösarna har konfigurerats för din applikations specifikationer klickar du på den orange "plus" -ikonen i det övre högra hörnet för att lägga till en villkorlig åtgärd.

5. Välj”Ange variabel” som åtgärd.

6. Välj sedan den tidigare skapade standardvariabeln "rutor" och värdet "1".

7. Spara ändringar. Om händelsen är korrekt inställd kommer den att skicka ett "1" varje gång avståndet mellan sensorn och enheten är längre än ett angivet tröskelvärde, vilket tyder på att det inte finns något objekt i närheten - och bör räkna en ny enhet som just passerade.

På kortet Feather -specifikt enhet hittar du att variabeln "rutor" dit ett "1" skickas varje gång en enhets närvaro känns av.

Speciellt användbar för industriella transportband och enheter som räknar denna prototyp kan anpassas för att passa olika miljöer eller hårdvara helt enkelt i din kodning eller din applikationsutveckling.

8. Visualisera antalet avkända enheter (eller gånger ett objekt detekterades) Nu, med hjälp av variabeln "boxar", kommer vi att skapa en ny rullande fönstervariabel för att summera den totala mängden avläsningar som mottagits från variabeln "rutor" i en definierad skräppost (minuter, timmar, dagar, veckor, etc). Följ dessa enkla steg för att utföra denna utveckling:

Tilldela följande referenser till din nya rullande fönstervariabel

Välj en enhet: motion-control (eller namnet på enheten du skickar dina data)

Välj en variabel: rutor

Beräkna: summan

Var: "1" timme (eller enligt dina ansökningsförfrågningar)

Tilldela nu ett namn till den nya variabeln som anger antalet lådor (eller rörelser) som räknas på en timme, precis som "rutor/timme" eller "enheter/timmar.

Steg 6: Dashboard -konfigurationer

Dashboard -konfigurationer
Dashboard -konfigurationer

Slutligen, skapa en instrumentpanel för att visa antalet avkända enheter.

Gå till Enhetshantering -> Instrumentpaneler och lägg till en ny widget. Denna widget kommer att visa antalet lådor som räknas idag uppdelade per timme.

Tilldela följande referenser till din nya widget för att visualisera ditt antal.

Hur skulle du vilja se dina data ?: Diagram

Välj en typ av widget: linjediagram

Lägg till en enhet: motion-control

Lägg till en variabel: rutor/timme

Avsluta. Och med denna sista instrumentpanelutveckling - din applikation är klar och du har nu ett effektivt rörelse- och närvarodetekteringssystem. Här är en sista titt på våra resultat.

Rekommenderad: