Tartalomjegyzék:

Postino: Szállított -e valamit a postás?: 6 lépés (képekkel)
Postino: Szállított -e valamit a postás?: 6 lépés (képekkel)

Videó: Postino: Szállított -e valamit a postás?: 6 lépés (képekkel)

Videó: Postino: Szállított -e valamit a postás?: 6 lépés (képekkel)
Videó: Я работал в UberEats в Беверли-Хиллз, и чаевые были слишком скупыми. 2024, November
Anonim
Postino: Szállított -e valamit a postás?
Postino: Szállított -e valamit a postás?

Nem ötletem: egy nap egy barátom kért tőlem módot, hogy távolról ellenőrizhessem, nincs-e postafiók a postaládájában. A postafiók nincs az ajtajához vezető sétányon, ezért mivel lusta fiú, azon tűnődött, vajon egy technikai eszköz képes -e figyelmeztetni őt a postaládába helyezett levelekre. Megnéztem a piacot, és nem találtam az ő igényeinek megfelelő kész eszközt, ezért kihívást tettem fel magamnak: miért nem tervezem meg és építem meg?

A korlátozások a következők voltak:

  • elemmel működő, ésszerű élettartammal az elemcserék között;
  • WiFi kommunikáció;
  • naponta egyszer ellenőrizze, hogy volt -e levél vagy sem;

A fő kérdés az volt: melyik érzékelő felel meg az igényeimnek? A közelségérzékelő nem tudott működni, mivel az ellenőrzést naponta csak egyszer kellett elvégezni, és nem valós időben; súlyérzékelő sem, mivel ez bonyolultabb és érzékenységi problémákat okozott volna (egy papírlap nagyon könnyű lehet). Választásom egy repülési idő (mikrolézer) érzékelőre esett. Miután kalibrálták a postaláda méretére, bármi, ami középen fekszik, aktiválta volna az érzékelőt! Figyelembe véve a 3 megkötést, úgy döntöttem, hogy egy ESP8266-ot használok (a szoftvert futtatva és a WiFi-hez kapcsolódva), egy VL6180-as repülési időérzékelőt a méréshez, és egy DS3231 valós idejű órát, hogy naponta egyszer elindítsam az összes áramkört: így Megszületett Postino!

1. lépés: Alkatrészek és alkatrészek

  • ESP8266-01 (vagy ESP-12E NodeMCU)
  • VL6108 Repülési idő érzékelő
  • DS3231 Valós idejű óra
  • IRLZ44 N-csatornás MosFET
  • BC547 tranzisztor
  • Ellenállások
  • CR123 akkumulátor

2. lépés: Az érzékelő

Az érzékelő
Az érzékelő

A rendszer szíve a VL6180 érzékelő. Ez egy úttörő technológia, amely lehetővé teszi az abszolút távolság mérését a célreflexiótól függetlenül. Ahelyett, hogy a távolságot a tárgyról visszavert fény mennyiségének mérésével becsülné meg (amelyet a szín és a felület jelentősen befolyásol), a VL6180X pontosan méri azt az időt, amíg a fény eljut a legközelebbi objektumhoz, és visszaverődik az érzékelőhöz (Idő -repülés). Az infravörös sugárzót, a tartományérzékelőt és a környezeti fényérzékelőt ötvözi a három az egyben használatra kész, újratölthető csomagban, a VL6180X könnyen integrálható, és hosszú és költséges optikai és mechanikai tervezésoptimalizálást takarít meg a végtermék gyártója számára.

A modul kis teljesítményű működésre lett tervezve. A Pololu megszakítótáblát használtam, amelynek feszültségszabályzói vannak a fedélzeten, amelyek lehetővé teszik a 2,7 V és 5,5 V közötti bemeneti feszültségtartomány működését.

Az érzékelő 3 érvényes skálázási tényezőt tesz lehetővé, amelyek a mérés maximális tartományát 20 és 60 cm között állítják be, különböző érzékenységgel. A tartomány skálázási tényezőjének beállításával az érzékelő potenciális maximális hatótávja növelhető alacsonyabb felbontás árán. Ha a skálázási tényezőt 2 -re állítja, akkor akár 40 cm -es tartományt biztosít 2 mm -es felbontással, míg a 3 -as skálázási tényezővel akár 60 cm -es tartományt is biztosít 3 mm -es felbontással. A 3 skálát tesztelnie kell a postafiók méreteivel. Mivel az enyém 25 cm (H) volt, 1 -es skálatényezőt használtam.

3. lépés: Valós idejű óra testreszabása

Az RTC -hez egy DS3231 törőlapot használtam, amely tartalmaz egy EEPROM -ot (haszontalan a célomhoz) és egy érme méretű akkumulátort. Amikor úgy döntöttem, hogy az RTC -t a fő eszköz akkumulátorán (3 V -os CR123) keresztül táplálom, eltávolítottam az érmét; az energiatakarékosság érdekében eltávolítottam az EEPROM -ot (a csapok óvatos vágásával) és a fedélzeti ledet is.

Az érmeakkumulátor nem volt hasznos számomra, mert nem kellett a valós idejű dátumot/órát/percet/másodpercet tartani, de az RTC -nek csak 24 órán keresztül kellett számolnia, majd be kellett kapcsolnia a riasztást a készülék bekapcsolásához.

4. lépés: Egyéb egyéb a fedélzeten

Egyéb Vegyes a fedélzeten
Egyéb Vegyes a fedélzeten
Egyéb Vegyes a fedélzeten
Egyéb Vegyes a fedélzeten

A készülék bekapcsolását tranzisztor és MosFET áramkör végzi, amelyet az RTC riasztás vált ki. A riasztás törlése után az áramkör megszakítja a készülék áramellátását további 24 órás ciklusra. A riasztás elérésekor a DS3231 magasról alacsonyra kapcsolja a tűt: normál körülmények között a tranzisztor telített, és rövidre zárja a MosFET kapuját. Miután a riasztó a tranzisztor bázisát a földre hozza, kinyílik, és lehetővé teszi a MosFET számára, hogy lezárja az áramkört, és áramot adjon a többi alkatrésznek.

Ezenkívül hozzáadtam egy „teszt-1M” jumpert. Ennek a kapcsolónak az a célja - ha aktiválva van -, hogy a ciklust napi egyszerről percenként egyszer változtassa meg a telepítési tesztek futtatása érdekében. Annak érdekében, hogy az intervallumot egy napról egy percre változtassa, először be kell zárnia a „Test-C” jumpert körülbelül 15 másodpercre, hogy megkerülje az órajelzés aktiválási időszakát, és bekapcsolja a készüléket. A tesztek befejezése után nyissa ki az áthidalókat, és állítsa alaphelyzetbe a készüléket (ciklus teljesítmény).

5. lépés: Vázlatos

Vázlatos
Vázlatos

6. lépés: Szoftver és logika

A tesztek során (gyakorlati okokból) egy NodeMCU vezérlőt használtam, ezért a szoftver gondoskodik erről úgy, hogy a CHIP változót „NodeMCU” vagy „esp8266” értékre állítja.

A vázlat megvalósítja a WiFiManager könyvtárat, hogy lehetővé tegye az eszköz számára, hogy csatlakozzon egy érvényes WiFi hozzáférési ponthoz az első futtatás során. Ilyen esetben az eszköz AP módba lép, lehetővé téve a csatlakozást és a megfelelő WiFi hálózat kiválasztását a csatlakozáshoz. Ezt követően a hálózati konfigurációt az EPROM menti a következő ciklusokhoz.

A REST_MSG változó tartalmazza a http üzenetet, amelyet el kell küldeni, ha az érzékelő objektumot talál a postafiókban. Esetemben üzenetet küld egy dominikus REST szervernek, de tetszés szerint módosíthatja: Telegram BOT üzenet, IFTTT WebHook esemény stb.

A vázlat többi része a setup () függvényben található, mivel a ciklus soha nem érhető el. A több könyvtárhoz szükséges konfigurációk után a szoftver 00:00:01 órára állítja az órát, és az ébresztést naponta egyszer (vagy percenként egyszer, ha a „teszt-1M” jumper aktiválva van). Ezután elvégzi az intézkedést, elküldi az értesítést (ha bármilyen tárgy található a postaládában), és visszaállítja a riasztótüskét, leállítva a készüléket. A ciklus végén csak az RTC kapcsol be, 24 órán keresztül. A Test-1M jumper az ESP8266 RX tűjéhez van csatlakoztatva, amelyet GPIO-3-ként használunk a következő beállítással: setMode (PIN, FUNCTION_3). Emiatt nem használhatja a soros monitort az ESP8266 futtatása közben: a „#define DEBUG” sor (amely lehetővé teszi a vázlat összes soros nyomtatását) csak akkor használható, ha az ESP8266 helyett NodeMCU van telepítve.

Az ESP8266 kezeli az I2C kommunikációt az RTC-vel és az érzékelővel a vezetékek könyvtárában inicializált GPIO-0 és GPIO-2 érintkezőin keresztül.

A teljes kód letölthető erről a linkről.

Segítő technikai verseny
Segítő technikai verseny
Segítő technikai verseny
Segítő technikai verseny

Második hely a segítő technikai versenyen

Ajánlott: