Áramkörök

Mozgásérzékelő rendszer építése Arduino-val: 7 lépés

Demjén Ferenc - Hogyan tudnék élni nélküled (HQ)

Demjén Ferenc - Hogyan tudnék élni nélküled (HQ)

Tartalomjegyzék:

Anonim

Építsen egy mozgás- és jelenlét-gyártási számlálót egy Arduino-val programozott és Ubidots által működtetett HUZZAH tollal.

A hatékony fizikai mozgás és a jelenlét észlelése az intelligens otthonokban és az intelligens gyártásban nagyon hasznos lehet az idős Ambient Assisted Living (AAL) megoldásoktól vagy a nagyobb MES-et tápláló termelési számláló rendszerektől. A mozgás és jelenlét-észlelés egyéb alkalmazásai többek között a következők:

  1. Ajtó és kapu automatizálás
  2. Parkoló érzékelők szabad helyek kijelöléséhez
  3. Távoli tartályszint-ellenőrzés
  4. Intelligens otthonok és létesítmények világításhoz és biztonsághoz
  5. Egységek kimutatása és számlálása szállítószalagokban
  6. Jelölje ki a nyomtatott anyagok felismerését
  7. Folyadékérzékelés karton, műanyag és papírdarabok között
  8. Távolság észlelése
  9. Emberek számlálók

A jelenlét és a mozgás számos alkalmazására van szükség, ugyanakkor ugyanolyan sok érzékelő van adatgyűjtésre, mint a kapacitív, induktív, fotoelektromos és ultrahangos érzékelők. A költségek, a környezeti feltételek és a pontossági követelmények függvényében a környezet és az alkalmazás követelményeinek legmegfelelőbb hardvert kell kiválasztani.

Ez a bemutató a valós idejű gyártási számláló kiépítésére összpontosít; az alkalmazás minden egységet számít a szállítószalagon. Az Arduino IDE-t használjuk, hogy programozzunk egy ultrahangos érzékelőt, a HUZZAH ESP8266 tollat ​​és az Ubidots alkalmazást, és fejlesztjük az IoT műszerfalát.

kellékek:

1. lépés: Követelmények

  1. HUZZAH toll, ESP8266MB7389-100
  2. Ultrahangos érzékelő
  3. Arduino IDE 1.8.2 vagy újabb
  4. Ubidots fiók - vagy Oktatási licenc

2. lépés: Beállítás

  • I Hardverbeállítás
  • II. Firmware telepítés
  • III. Ubidots alkalmazásfejlesztés (események, változók és műszerfalak)

3. lépés: Hardverbeállítás

Az MB7389-100 ultrahangos szenzor az IPv67 minősítésnek köszönhetően alacsony költségű, széles körű és alacsony energiafogyasztású igényeket kielégítő, ipari alkalmazásokhoz használható lehetőség.

Az ultrahangos szenzor csatlakoztatásához az alábbi ábrát tükrözze az alábbi ábrán HUZZAH ESP826 toll6.

JEGYZET: Az érzékelő olvasása analóg olvasatként vagy PWM-ként vehető igénybe; az alábbiakban ismertetjük a PWM olvasásának beállítását, további információkért lásd a fenti példákat.

Adott esetben helyezze a mikrovezérlőt és az érzékelőket az IP67 burkolatba, hogy megvédje őket a portól, a víztől és más veszélyes környezeti tényezőktől. A standard eset hasonló a fenti képeken láthatóhoz.

4. lépés: Firmware beállítása

Először is telepítenie kell a Feather Huzzah-t az Arduino IDE-be, és össze kell állítania a kódot. Ne feledje, hogy ezt a beállítást egyszerű villogó teszt segítségével ellenőrizze. A tollkészülék csatlakoztatásával kapcsolatos további információkért olvassa el ezt a hasznos hardverbeállítási útmutatót.

Érzékelői adatok küldése az Ubidots IoT Development Platform-ba, másolja és illessze be az alábbi kódot az Arduino IDE-be. Ne felejtse el hozzárendelni a Wi-Fi hálózat nevét, jelszavát és az Ubidots fiókjelzőjét, ahol a kód szerepel.

/ ******************************** Könyvtárak *************** **************** / # include / ******************************** Konstanzok és objektumok ************** ***************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Tedd ide az SSID névnevedet char * SSID_PASS = "xxxxxxxx"; // Tegye ide a jelszavát char * TOKEN = "Assig_your_ubidots_token"; // Tedd ide a TOKENconst char * DEVICE_LABEL = "mozgásvezérlés"; // Az eszköz labelconst char * VARIABLE_LABEL = "távolság"; // A változó labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Ubidots Üzleti felhasználók // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Educational usersint HTTPPORT = 80; / * Ultrahangos érzékelő * / const int pwPin1 = 5; // A PWM pin, ahol az érzékelő csatlakozikWiFiClient clientUbi; / ******************************** A kiegészítő segédfunkciók *** **************************** // ** A test @ @ változójának hosszát adja meg a char @return dataLen the a * / int dataLen változó hossza (char * változó) {uint8_t dataLen = 0; (int i = 0; i <= 250; i ++) {if (változó i! = '0') {dataLen ++; } other {break; }} return dataLen;} / ******************************** Főfunkciók ********* ********************** / void setup () {Serial.begin (115200); / * Csatlakozik AP * / WiFi.begin (SSID_NAME, SSID_PASS); míg (WiFi.status ()! = WL_CONNECTED) {késleltetés (500); Serial.print ( ""); } pinMode (pwPin1, INPUT); WiFi.setAutoReconnect (true); Serial.println (F ("WiFi csatlakozik")); Serial.println (F ("IP-cím:")); Serial.println (WiFi.localIP ());} void loop () {/ * Az érzékelő mérése milliméterben kerül visszajuttatásra, ha a * -t hüvelykre szeretné konvertálni, csak hozzon létre egy változót -> távolság / 25,4 * / úszó távolságra = pulzus (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, távolság); késleltetés (1000);} void sendToUbidots (const char * device_label, const char * változó_címke, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (mérete (char) * 300); / * Tér az értékek tárolásához * / char str_val 10; / * ---- Átalakítja az érzékelők értékét a következő típusba: ----- * / / * 4 mininum szélesség, 2 a pontosság; az úszóérték a str_val * / dtostrf-re kerül át (érzékelőérték, 4, 2, str_val); / * Építi a küldendő testet a * / sprintf (test, {{%% s ":% s}", változó_címke, str_val) kérésre; / * A HTTP-kérelmet POST * / sprintf-re építi (adat, "POST /api/v1.6/devices/%s", device_label); sprintf (adat, "% s HTTP / 1.1 r", adat); sprintf (adatok, "% sHost: things.ubidots.com r", adatok); sprintf (adat, "% sUser-Agent:% s /% s r n", adat, USER_AGENT, VERSION); sprintf (adat, "% sX-Auth-Token:% s r", adat, TOKEN); sprintf (adat, "% sConnection: bezárás r", adatok); sprintf (adatok, "% sContent-Type: application / json r n", adatok); sprintf (adat, "% sContent-Length:% d r n" n ", adat, dataLen (body)); sprintf (adat, "% s% s r n n" n ", adat, test); / * Kezdeti kapcsolat * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Ellenőrizze az ügyfélcsatlakozást * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("A változók közzététele:")); Serial.println (adatok); / * HTTP kérés * / clientUbi.print (adat) küldése; } / * Amíg az ügyfél elérhető, olvassa el a * * szerver válaszát (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Szabad memória * / ingyenes (adat); szabad (test); / * Állítsa le az ügyfél * / clientUbi.stop ();}

Profi tipp: ellenőrizheti, hogy az eszköz megfelelően csatlakozik-e az Arduino IDE soros monitorjának megnyitásával.

Ellenőrizheti, hogy az eszközt létrehozta-e az Ubidots hátterében az Eszközkezelés -> Eszközök fiókjában.

A készülékre kattintva talál egy "távolság" változót, ahol az érzékelő leolvasásait tárolja. Ezt a nevet az Arduino IDE-be éppen beillesztett kódhoz rendelték. Ha módosítani szeretné az automatikus változókat, kérjük, tegye meg az Eszközkártya szerkesztésével vagy a frissített kód villogásával a megfelelő változó nómenklatúrával az alkalmazáshoz.

A Feather HUZZAH ESP8266 csatlakoztatásával és az adatok Ubidot-hoz történő jelentésével itt az ideje, hogy az Ubidots gondosan megtervezett kódmentes alkalmazáskonfigurációját alkalmazzuk.

5. lépés: Ubidots alkalmazásfejlesztés

Ubidots eseménykonfiguráció

Az Ubidot-hoz küldött aktuális értékek távolsági bemenetek. Ezeknek a leolvasásoknak a kívánt kimenetre történő lefordításához, amit "számlázott egységeknek" akarunk, létre kell hoznunk egy eseményt az alábbi lépések szerint:

  1. Az aktuális eszköz belsejében a "mozgásvezérlés" új alapértelmezett változót hoz létre, amelyet "doboz" -nak nevezünk, amely 1-et fog kapni minden alkalommal, amikor egy új egységet számítunk.
  2. Menj Eszközkezelés -> Eseményekés kattintson az oldal jobb felső sarkában lévő kék plusz ikonra egy új esemény hozzáadásához.
  3. Konfigurálja az eseményt a "Ha a triggereket":

  • Válasszon ki egy változót: "távolság"
  • Érték: érték (alapértelmezett)
  • Kisebb vagy egyenlő a várható legnagyobb távolság} az érzékelő és a * -on áthaladó dobozok között
  • mert 0 perc
  • Mentés

4. Miután a triggereket konfigurálták az alkalmazás specifikációira, kattintson a jobb felső sarokban lévő narancssárga "plusz" ikonra feltételes művelet hozzáadásához.

5. A műveletként válassza a „Változó beállítása” lehetőséget.

6. Ezután válassza ki a korábban létrehozott "dobozok" és "1" értéket.

7. Mentse el a változtatásokat. Ha az esemény helyesen van beállítva, akkor az "1" -et minden alkalommal elküldi, amikor az érzékelő és az egység közötti távolság hosszabb, mint a jelzett küszöbérték, ami azt sugallja, hogy nincs olyan objektum, amely közel van - és számítania kell egy új egységet, amely éppen elhaladt .

A Feather-specifikus eszközkártyán azt találja, hogy a "box" változó, ahol az "1" -et küldjük, amikor az egység jelenléte érzékelhető.

Különösen hasznos az ipari szállítószalagoknál és az egységszámításnál ez a prototípus testreszabható a különböző környezetekhez vagy hardverekhez, egyszerűen a kódolásban vagy az alkalmazások fejlesztésében.

8. Ismertesse az érzékelt egységek számát (vagy az objektumok észlelésének idejét)
Most, a "dobozok" változó használatával egy új gördülő ablak változót fogunk létrehozni, hogy összegezzük a változó "dobozok" által meghatározott spamek számát egy meghatározott spamben (perc, óra, nap, hét, stb.). A fejlesztés végrehajtásához kövesse az alábbi egyszerű lépéseket:

A következő hitelesítő adatok hozzárendelése az új gördülő ablak változóhoz

Válasszon egy eszközt: mozgásvezérlés (vagy annak az eszköznek a neve, amelyre az adatokat küldi)

Válasszon ki egy változót: dobozok

Számolja ki: összeg

Minden: "1" óra (vagy az alkalmazás kéréseinek megfelelően)

Most hozzárendel egy nevet az új változóhoz, amely azt jelzi, hogy egy órában számolt dobozok száma (vagy mozgások), mint a "dobozok / óra" vagy "egységek / óra / óra.

6. lépés: Műszerfal-konfigurációk

Végül hozzon létre egy műszerfalat az érzékelt egységek számának megjelenítéséhez.

Ugrás az Eszközkezelés -> Műszerfalak és új widget hozzáadásához. Ez a widget megjeleníti a ma számított dobozok számát órák szerint lebontva.

A következő hitelesítő adatok hozzárendelése az új widgethez, hogy megjelenítse a számlákat.

Hogyan szeretné látni az adatait ?: Diagram

Válassza ki a widget típusát: vonal diagram

Eszköz hozzáadása: motion-ellenőrzés

Változó hozzáadása: doboz / óra

Befejez. Ezzel a végső műszerfal-fejlesztéssel az alkalmazás teljes és hatékony és hatékony mozgás- és jelenlét-érzékelő rendszerrel rendelkezik. Itt van egy végső pillantás eredményeinkre.

7. lépés: