Inhoudsopgave:
- Stap 1: Vereisten
- Stap 2: Instellen
- Stap 3: Hardware-installatie
- Stap 4: Firmware-installatie
- Stap 5: Ubidots-toepassingsontwikkeling
- Stap 6: Dashboardconfiguraties
Video: Een bewegingsdetectiesysteem bouwen met Arduino - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Bouw een bewegings- en aanwezigheidsproductieteller met een Feather HUZZAH geprogrammeerd met Arduino en aangedreven door Ubidots.
Effectieve fysieke bewegings- en aanwezigheidsdetectie in Smart Homes en Smart Manufacturing kan zeer nuttig zijn in toepassingen variërend van Ambient Assisted Living (AAL)-oplossingen voor ouderen of een productietelsysteem dat een grotere MES voedt. Andere toepassingen voor bewegings- en aanwezigheidsdetectie omvatten, maar zijn niet beperkt tot:
- Deur- en poortautomatisering
- Parkeersensoren om vrije plekken aan te wijzen
- Tankniveaubewaking op afstand
- Slimme huizen en voorzieningen voor verlichting en beveiliging
- Eenheden detecteren en tellen in transportlijnen
- Markeringsdetectie op gedrukte materialen
- Vloeistofdetectie in kantelen van karton, plastic en papier
- Afstandsdetectie
- Tellers van mensen
Hoewel er veel toepassingen zijn voor aanwezigheid en beweging, zijn er evenveel sensoren om gegevens te verzamelen, zoals capacitieve, inductieve, foto-elektrische en ultrasone sensoren. Afhankelijk van de kosten, omgevingscondities en nauwkeurigheidseisen, moet men de best passende hardware selecteren voor een omgeving en applicatie-eisen.
Voor deze tutorial zullen we ons concentreren op het bouwen van een realtime productieteller; de applicatie telt elke unit die voorbij komt op een lopende band. We zullen de Arduino IDE gebruiken om een Feather HUZZAH ESP8266, een ultrasone sensor en Ubidots te programmeren om onze applicatie te ontwikkelen en ons IoT-dashboard weer te geven.
Stap 1: Vereisten
- Veer HUZZAH met ESP8266MB7389-100
- Ultrasoon sensor
- Arduino IDE 1.8.2 of hoger
- Ubidots-account -of-STEM-licentie
Stap 2: Instellen
- I Hardware-installatie
- II. Firmware-instellingen
- III. Ubidots Application Development (gebeurtenissen, variabelen en dashboards)
Stap 3: Hardware-installatie
De ultrasone sensor MB7389-100 is een goedkope optie voor industriële toepassingen met een breed bereik en een laag stroomverbruik in uitdagende weersomstandigheden dankzij de IPv67-classificatie.
Om te beginnen, spiegelt u het onderstaande diagram om de ultrasone sensor aan de Feather HUZZAH ESP8266 te bevestigen.
OPMERKING: De sensormeting kan analoog of PWM zijn; hieronder gaan we de setup voor de PWM-uitlezing uitleggen, voor meer informatie zie de bovenstaande voorbeelden.
[Optioneel] plaats de microcontroller en de sensoren in de IP67-behuizing om ze te beschermen tegen stof, water en andere bedreigende omgevingsfactoren. De standaardbehuizing lijkt op die op de bovenstaande foto's.
Stap 4: Firmware-installatie
Eerst moet je de Feather Huzzah in de Arduino IDE installeren en de code compileren. Vergeet niet om deze instelling te verifiëren door een eenvoudige knippertest uit te voeren. Raadpleeg deze handige installatiehandleiding voor hardware voor meer informatie over het aansluiten van uw Feather-apparaat.
Om sensorgegevens naar het Ubidots IoT Development Platform te sturen, kopieer en plak je de onderstaande code in de Arduino IDE. Vergeet niet om de Wi-Fi-netwerknaam, het wachtwoord en uw Ubidots-accounttoken toe te wijzen waar aangegeven in de code.
/*********************************** Bibliotheken inbegrepen *************** ****************/#erbij betrekken /****************************** ** Constanten en objecten ******************************//* Ubidots */const char* SSID_NAME = "xxxxxxxx"; // Zet hier uw SSID nameconst char* SSID_PASS = "xxxxxxxx"; // Zet hier uw wachtwoordconst char* TOKEN = "Assig_your_ubidots_token"; // Zet hier je TOKENconst char* DEVICE_LABEL = "motion-control"; // Uw apparaat labelconst char* VARIABLE_LABEL = "afstand"; // Uw variabele labelconst char* USER_AGENT = "ESP8266";const char* VERSION = "1.0";const char* HTTPSERVER = "industrial.api.ubidots.com";// Ubidots Zakelijke gebruikers//const char* HTTPSERVER = " dingen.ubidots.com"; // Ubidots Educatieve gebruikersint HTTPPORT = 80;/* Ultrasone sensor */const int pwPin1 = 5; // De PWM-pin waarop de sensor is aangeslotenWiFiClient clientUbi;/*********************************** Hulpfuncties *** **************************//** Haalt de lengte van de body op @arg variabele de body van het type char @return dataLen de lengte van de variabele*/int dataLen(char* variabele) { 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); /* Ruimte om waarden op te slaan om te verzenden * / char str_val[10]; /*---- Transformeert de waarden van de sensoren naar char type -----*/ /* 4 is minimale breedte, 2 is precisie; float-waarde wordt gekopieerd naar str_val*/ dtostrf(sensor_value, 4, 2, str_val); /* Bouwt de body die moet worden verzonden naar het verzoek*/ sprintf(body, "{"%s\":%s}", variable_label, str_val); /* Bouwt de HTTP verzoek om 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, "%sVerbinding: 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); /* Initiële verbinding */ clientUbi.connect (HTTPSERVER, HTTPPORT); /* Controleer de clientverbinding */ if (clientUbi.connect(HTTPSERVER, HTTPPORT)) { Serial.println(F ("Posting your variables: ")); Serial.println(gegevens); /* Stuur het HTTP-verzoek */ clientUbi.print(data); } /* Terwijl de client beschikbaar is, leest u het antwoord van de server */ while (clientUbi.available()) { char c = clientUbi.read(); Serieel.schrijven(c); } /* Vrij geheugen */ vrij(gegevens); gratis lichaam); /* Stop de client */ clientUbi.stop();}
ProTip: u kunt controleren of uw apparaat correct is aangesloten door de seriële monitor in de Arduino IDE te openen.
U kunt controleren of een apparaat is gemaakt in uw Ubidots-backend door het te bekijken in uw account Apparaatbeheer -> Apparaten.
Door op uw apparaat te klikken, vindt u een variabele genaamd "afstand" waar de meetwaarden van de sensor worden opgeslagen. Deze naam is toegewezen in de code die u zojuist in de Arduino IDE hebt geplakt. Als u uw automatische variabelen wilt aanpassen, kunt u dit doen door de apparaatkaart te bewerken of door een bijgewerkte code te laten knipperen met de juiste variabele nomenclatuur voor uw toepassing.
Nu de Feather HUZZAH ESP8266 is aangesloten en gegevens rapporteert aan Ubidots, is het nu tijd om de applicatie te bouwen met behulp van de zorgvuldig ontworpen codevrije applicatieconfiguratie van Ubidot.
Stap 5: Ubidots-toepassingsontwikkeling
Configuratie Ubidots-gebeurtenis
De huidige metingen die we naar Ubidots sturen, zijn afstandsinvoer. Om deze meetwaarden te vertalen naar de gewenste uitvoer die we willen - getelde eenheden - moeten we een gebeurtenis maken door deze stappen te volgen:
- Maak in het huidige apparaat "motion-control" een nieuwe standaardvariabele genaamd "boxen", die een 1 krijgt elke keer dat een nieuwe eenheid wordt geteld.
- Ga naar Apparaatbeheer -> Gebeurtenissen en klik op het blauwe pluspictogram in de rechterbovenhoek van de pagina om een nieuwe gebeurtenis toe te voegen.
- Configureer uw evenement beginnend met "Als triggers":
- Selecteer een variabele: "afstand"
- Waarde: waarde (standaard)
- Is kleiner dan of gelijk aan [de maximaal verwachte afstand} tussen de sensor en de passerende dozen* onze applicatie vraagt om 500 mm
- Voor 0 minuten
- Opslaan
4. Zodra de triggers zijn geconfigureerd volgens de specificaties van uw toepassing, klikt u op het oranje "plus"-pictogram in de rechterbovenhoek om een voorwaardelijke actie toe te voegen.
5. Selecteer "Variabele instellen" als actie.
6. Kies vervolgens de eerder gemaakte standaardvariabele "boxen" en waarde "1".
7. Sla wijzigingen op. Als de gebeurtenis correct is ingesteld, stuurt deze een "1" elke keer dat de afstand tussen de sensor en de eenheid langer is dan een aangegeven drempel, wat suggereert dat er geen object in de buurt is - en zou een nieuwe eenheid moeten tellen die net voorbij is gegaan.
Op de Feather-specifieke apparaatkaart vindt u de variabele "boxen" waar een "1" wordt verzonden wanneer de aanwezigheid van een eenheid wordt gedetecteerd.
Dit prototype is vooral handig voor industriële transportbanden en het tellen van eenheden. Dit prototype kan worden aangepast aan verschillende omgevingen of hardware, eenvoudig in uw codering of uw toepassingsontwikkeling.
8. Visualiseer het aantal gedetecteerde eenheden (of het aantal keren dat een object werd gedetecteerd) Nu gaan we met behulp van de variabele "boxes" een nieuwe variabele venster maken om het totale aantal metingen op te tellen dat is ontvangen van de variabele "boxes" in een gedefinieerde spam (minuten, uren, dagen, weken, enz.). Volg deze eenvoudige stappen om deze ontwikkeling uit te voeren:
Wijs de volgende inloggegevens toe aan uw nieuwe rolling window-variabele:
Selecteer een apparaat: motion-control (of de naam van het apparaat waarnaar je je gegevens verzendt)
Selecteer een variabele: dozen
Bereken de: som
Elk: "1" uur (of volgens uw aanvraagverzoeken)
Wijs nu een naam toe aan de nieuwe variabele die het aantal dozen (of bewegingen) aangeeft dat in een uur is geteld, net als "dozen/uur" of "eenheden/uren".
Stap 6: Dashboardconfiguraties
Maak ten slotte een dashboard om het aantal gedetecteerde eenheden weer te geven.
Ga naar Apparaatbeheer -> Dashboards en voeg een nieuwe widget toe. Deze widget toont het aantal dozen dat vandaag is geteld, uitgesplitst per uur.
Wijs de volgende gegevens toe aan uw nieuwe widget om uw telling te visualiseren.
Hoe zou u uw gegevens willen zien?: Grafiek
Selecteer een type widget: lijndiagram
Voeg een apparaat toe: motion-control
Voeg een variabele toe: vakjes/uur
Finish. En met deze laatste ontwikkeling van het dashboard - uw aanvraag is voltooid en u heeft nu een efficiënt en effectief bewegings- en aanwezigheidsdetectiesysteem. Hier is een laatste blik op onze resultaten.
Aanbevolen:
Een kluis bouwen met een Rpi: 12 stappen
Bouw een kluis met behulp van een Rpi: Wilt u leren hoe u uw Raspberry pi kunt omzetten in een volledig functionerende kluis? Volg dan deze 12 stap instructable om te leren hoe. De kluis heeft een volledig functionerend toetsenbord en een sluitsysteem, zodat je je spullen veilig kunt opbergen
Een Cubesat bouwen met een Arduino en accelerometer: 5 stappen
Hoe maak je een Cubesat bouwen met een Arduino en Accelerometer .: Onze namen zijn Brock, Eddie en Drew. Het belangrijkste doel van onze natuurkundeles is om van de aarde naar Mars te reizen terwijl we de baan rond Mars simuleren met behulp van een Cube Sat en het verzamelen van gegevens. Het doel van onze groep voor dit project is om gegevens te verzamelen met behulp van een accele
Een website bouwen op een Raspberry Pi, met Node.js, Express en MongoDB Deel 1: 6 stappen
Een website bouwen op een Raspberry Pi, met Node.js, Express en MongoDB… Deel 1: Welkom bij DEEL 1 van mijn node.js webapp-tutorial. Deel 1 gaat door de benodigde software die wordt gebruikt voor de ontwikkeling van node.js-apps, hoe je port forwarding gebruikt, hoe je een app bouwt met Express en hoe je je app uitvoert. Het tweede deel van dit
Een DIY Arduino bouwen op een PCB en enkele tips voor beginners: 17 stappen (met afbeeldingen)
Een DIY Arduino bouwen op een PCB en enkele tips voor beginners: Dit is bedoeld als een gids voor iedereen die zijn eigen Arduino soldeert uit een kit, die kan worden gekocht bij A2D Electronics. Het bevat veel tips en trucs om het succesvol te bouwen. Je leert ook wat alle verschillende componenten d
Een thuisstudio bouwen met een megabudget: 8 stappen (met afbeeldingen)
Een thuisstudio bouwen met een megabudget: nu het digitale tijdperk ons blijft laten zien hoe technologie de behoefte aan professionele diensten heeft verminderd, wordt het steeds gemakkelijker om goede resultaten te behalen met kunstvormen zoals audio-opname. Het is mijn doel om de meest kosteneffectieve manier van