Innehållsförteckning:
- Steg 1: Krav
- Steg 2: Inställning
- Steg 3: Hårdvaruinstallation
- Steg 4: Firmware Setup
- Steg 5: Ubidots applikationsutveckling
- Steg 6: Dashboard -konfigurationer
Video: Hur man bygger ett rörelsedetekteringssystem med Arduino: 7 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:41
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:
- Automatisering av dörrar och portar
- Parkeringssensorer för att utse lediga platser
- Fjärrövervakning av tanknivå
- Smarta hem och faciliteter för belysning och säkerhet
- Enhetsdetektering och -räkning i transportband
- Märkdetektering på tryckt material
- Vätskedetektering inuti kartong-, plast- och papperslutningar
- Avståndsdetektering
- 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
- Fjäder HUZZAH med ESP8266MB7389-100
- Ultraljudssensor
- Arduino IDE 1.8.2 eller högre
- 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
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
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 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:
- 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.
- 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.
- 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
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:
Hur man bygger ett växtbevattningssystem med Arduino: 7 steg
Hur man bygger ett växtbevattningssystem med Arduino: I denna handledning lär vi oss hur man gör ett växtvattensystem med hjälp av en fuktsensor, vattenpump och blinkar en grön lysdiod om allt är ok och OLED Display och Visuino.Titta på videon
Hur man bygger ett DIY automatiskt växtvattensystem med WiFi -varningar: 15 steg
Hur man bygger ett DIY automatiskt växtvattensystem med WiFi -varningar: Detta är det färdiga projektet, ett DIY automatiskt växtbevattningssystem som styrs via #WiFi. För detta projekt använde vi det självvattnande automatiska trädgårdssystemets undermonteringssats från Adosia. Denna installation använder magnetventiler och en analog jordfuktighet
Hur man bygger ett stativhuvud för $ 10 som är panoramautsikt: 5 steg (med bilder)
Hur man bygger ett stativhuvud för $ 10 som är panoramautsikt: Syning av mjukvara och digitalkameror gör panoramafoton mycket enklare än någonsin tidigare. För att få bästa resultat behöver du dock ett speciellt stativhuvud. Dessa kan kosta hundratals dollar, men att göra egna är inte så svårt. Ännu bättre, det är
Hur man bygger ett uttag för ESP03 WiFi8266: 9 steg (med bilder)
Hur man bygger ett uttag för ESP03 WiFi8266: Som alla vet har ESP WiFi8266 -familjen, exklusive ESP 01, en 2 mm tonhöjd istället för 2,54 som alla vanliga integrerade kretsar. Detta gör det svårt att använda dem, särskilt om du vill göra dem rörliga när de byts ut eller om du behöver repr
Hur man bygger ett LED -planetarium: 7 steg (med bilder)
Hur man bygger ett LED -planetarium: Alla älskar att titta på stjärnorna. Tyvärr hindrar stadsljus, moln och föroreningar ofta från att det är en frekvent paus. Detta instruerbara hjälper till att fånga lite av skönheten och det mesta av romantiken i samband med himlen och sätta