Tartalomjegyzék:

Intelligens falinaptár: 5 lépés
Intelligens falinaptár: 5 lépés

Videó: Intelligens falinaptár: 5 lépés

Videó: Intelligens falinaptár: 5 lépés
Videó: 5 lépés, hogy bármilyen félelemmel szembenézz | C.S. Lazzar Podcast 2024, November
Anonim
Intelligens falinaptár
Intelligens falinaptár

Feleségemmel és nekem klasszikus papírnaptárunk volt, amelyen fontos dátumokat jelöltünk. Okostelefonjainkon a Google naptárát is használjuk az események megjelölésére, így ez kettős munkát jelentett. Ezért úgy döntöttem, hogy felépítek valamilyen intelligens falinaptárat, amely megjeleníti emlékeztetőinket, eseményeinket és néhány egyéb adatunkat. Mivel különböző régi elektronikai alkatrészek hevernek körülöttem, az volt a célom, hogy minél többet felhasználhassam őket, és a lehető legkisebb költséggel készítsem el a naptárat.

Ebben az oktatóanyagban megmutatom, hogyan lehet intelligens falinaptárat készíteni, több Google -fiók eseményeit megjelenítve. Ezenkívül megjeleníti az időt, a dátumot, az időjárást, a hőmérsékletet és néhány további információt. A készüléket egy Raspberry Pi számítógép fogja táplálni, amelyhez passzív infravörös érzékelő (PIR) mozgásérzékelő van csatlakoztatva, így a kijelző bekapcsol, amikor mozgást észlel a szobában, de néhány perc tétlenség után kikapcsol. Ez az oktatóanyag számos más oktatóanyagon alapul, amelyeket az interneten találtam, és megadom a linkeket a jobb megértés érdekében. Szükséges néhány alapvető programozási ismeret (HTML, Python,…).

1. lépés: A hardver

Amint azt korábban említettük, megpróbáltam újra felhasználni annyi régi elektronikai alkatrészt, hogy a költségeket alacsonyan tartsák. Néhány elemet azonban meg kellett vásárolnom, ezért felsorolok mindent, ami az építkezéshez szükséges.

- Raspberry Pi készlet. Kezdetben a régi 2 -es modellemet használtam egy másik projektből. Működött, de a weboldal szerkesztése és újratöltése sok időt vett igénybe, így végül a 3 -as modellre váltottam, amely gördülékenyebben működik https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313 & _nkw = málna+pi+készlet & _sacat = 0

- LCD képernyő. A képernyőt a régi laptopomról használtam, ezért csak LVDS illesztőprogramot kellett vásárolnom hozzá és a tápegységet https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ illesztőprogram+LVDS+tábla & _sacat = 0

-Műanyag tároló doboz az elektronikához

- Passzív infravörös mozgásérzékelő

- AM2302 hőmérséklet/páratartalom érzékelő

- Fekete műanyag felcsatolható kötőanyag LCD kerethez

- Különféle kábelek (HDMI, 5,5 mm DC tápellátáshoz, forrasztás nélküli lemezes jumper kábelek, …)

2. lépés: Az LCD kijelző létrehozása

Az LCD kijelző létrehozása
Az LCD kijelző létrehozása
Az LCD kijelző létrehozása
Az LCD kijelző létrehozása
Az LCD kijelző létrehozása
Az LCD kijelző létrehozása

A régi elavult laptopom LCD képernyőjét használtam. Számos oktatóanyag létezik erre vonatkozóan, ezt követtem:

www.instructables.com/id/How-to-reuse-the-old-LCD-Screen-of-your-broken-Lap/

Szétszedtem régi laptopom fedelét, kivettem az LCD kijelzőt, majd megrendeltem a megfelelő LVDS illesztőprogramot. Megadtam az eladónak a termékkódot, amely az LCD hátoldalán található, az én esetemben ez az LP171WE3 (TL) (A2) - lásd az alsó kép jobb alsó címkéjét, majd elküldte a megfelelő LVDS -t. Kérjük, vegye figyelembe, hogy szüksége lesz a kijelző tápegységére is, ezért kérje meg az eladót, hogy küldje el azt is. Vettem egy szép 14,5 × 7,5 × 2 cm -es műanyag dobozt is, hogy szépen illeszkedjen a vezetőfülkéhez, és rögzítse az LCD hátoldalához.

Most az LCD kijelző fémes kerettel rendelkezik, ami nem tűnik szépnek. Kezdetben feketére festettem, de elkezdett leválni a festék. Vettem tehát négy fekete műanyag felcsatolható kötőanyagot, amelyeket jellemzően papírlapok kötésére használnak, ennek megfelelően vágtam le, és rögzítettem a keret lefedésére. Ez jól nézett ki, ezért csatlakoztattam az összes kábelt, csatlakoztatva a HDMI -t a régi Raspberry Pi -hez és a Voila -hoz - működött! Egy kép látható volt a kijelzőn, így készen álltam a következő lépésre - milyen információkat jelenítsek meg a kijelzőn és hogyan jelenítsem meg.

3. lépés: A szoftver beállítása

Amikor az interneten kerestem néhány nyomot, hogyan készítsünk naptárat, inspirált ez az oldal: https://dakboard.com/site. Ők biztosítják a készterméket (a kijelzőt, a számítógépet és a működő szoftvert), de kiváló oktatóanyaggal rendelkeznek a DIY megoldáshoz (https://blog.dakboard.com/diy-wall-display/). Javaslom, hogy kövesse ezt az oktatóanyagot, legalábbis az első részben a rendszer Raspberry rendszerre való előkészítésével és beállításával kapcsolatos utasításokat, hogy a böngésző automatikusan betöltse a kívánt weboldalt a rendszerindításkor.

Ez szépen működött, azonban kerestem valami megoldást, amelyet jobban testre szabhattam kívánságaim szerint. Úgy döntöttem, létrehozok egy saját webszervert, és létrehozok egy weboldalt, amely a naptár mellett további információkat is tartalmaz. A Wordpress.org -ot választottam, mivel jól dokumentált, jó támogatással és nagy közösséggel segít Önnek. Itt található a Wordpress Raspberry Pi-re történő telepítésének bemutatója: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. A Wordpress telepítésével ideje volt megtervezni a honlapomat. Használhatja a számos téma egyikét, vagy tervezheti a semmiből. Ehhez mindenesetre némi HTML programozói tudásra van szükség.

Úgy terveztem az oldalamat, hogy a bal oldalon a naptár látható (https://sl.wordpress.org/plugins/google-calendar-events/), míg a jobb oldalon az idő és a dátum (https://www.timeanddate.com/clocks/free.html és https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Az időjárás-előrejelzés erről az oldalról származik (https://www.1a-vreme.si/vremensko-okno/), amely előrejelző widgetet biztosít a szlovén városok számára, de azt hiszem, más országok kütyüi is megtalálhatók az interneten. A hőmérsékletet az AM2302 érzékelővel gyűjtik (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), a jelen fejezet végén leírtak szerint. Alul egy egyszerű napi visszaszámláló található, amely megmutatja, hogy hány nap van hátra valamilyen eseményhez (a gyermekeim számára érdekes tudni, hány napot kell várniuk valamire). A jobb felső sarokban a MetaSlider plugin (https://wordpress.org/plugins/ml-slider/) található, amely véletlenszerűen csúszik a családom kiválasztott képeire. Ezenkívül a Background Slider beépülő modult (https://sl.wordpress.org/plugins/background-slider-master/) használtam, hogy véletlenszerű képet mutassak a szebb háttér érdekében.

Amint azt korábban említettük, a beltéri hőmérsékletet AM2302 érzékelővel gyűjtik. Sok oktatóanyag létezik a hőmérséklet mérésére vonatkozóan, ezt követtem: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Később áthelyeztem ezt az érzékelőt egy másik Raspberry Pi-re, amelyen a Home Assistant fut, mert könnyebb az értékek olvasása és közzététele a DHT-érzékelő összetevőjével (https://www.home-assistant.io/components/sensor.dht/). A Home Assistant a külső hőmérsékletet is gyűjti különböző időjárási összetevők használatával, én az YR.no komponenst használtam (https://www.home-assistant.io/components/sensor.yr/). Ezzel írtam egy automatizálási szkriptet, amely összegyűjti a beltéri/külső hőmérsékletet ezekből az összetevőkből, és beírja őket egy szövegfájlba, amely aztán megjelenik a falinaptáromban. Ha többet szeretne megtudni a Home Assistant szolgáltatásról, tekintse meg a honlapot (https://www.home-assistant.io/).

4. lépés: Opcionális - A kijelző kikapcsolása

Most beállítottuk és elindítottuk a naptárunkat, ahogy nekünk tetszik. De nem akarjuk, hogy a kijelző a nap 24 órájában be legyen kapcsolva. Csak akkor szeretnénk, ha valaki otthon lenne. Továbbá nem akarjuk, hogy az éjszaka közepén bekapcsolják, amikor WC -re megyünk, túl világos! Tehát egy infravörös érzékelőt rögzítünk, hogy észrevegyük, ha valaki előtte áll, és adjunk hozzá bizonyos időkorlátokat, amikor be kell kapcsolnia.

Kérjük, vegye figyelembe, hogy programozási ismereteim meglehetősen korlátozottak, így az alábbiak nem lehetnek optimálisak, mivel különböző online fórumokból és oktatóanyagokból válogattam, de lényegében működik. Ennek ellenére minden ajánlást továbbra is szívesen fogadnak. Először a teszttel kezdjük a monitor manuális be- és kikapcsolását. Ehhez két fájlt hozunk létre (például monitor_on.sh és monitor_off.sh), és írunk bele egy kódot. Ennek legegyszerűbb módja, ha SSH -val és gépeléssel jelentkezik be a Raspberry -be

sudo nano monitor_on.sh

és írja be a következő kódot

tvszolgáltatás -előnyben részesített;

startx/usr/bin/graphical_launcher `fgconsole`

A mentéshez és kilépéshez nyomja meg a CTRL+X billentyűkombinációt, majd hozza létre a második fájlt

sudo nano monitor_off.sh

és írja be a következő kódot

tvszolgáltatás -ki;

Ismét nyomja meg a CTRL+X billentyűkombinációt a mentéshez és a kilépéshez. Tegye futtathatóvá ezeket az újonnan létrehozott fájlokat:

sudo chmod +x monitor_on.sh

sudo chmod +x monitor_off.sh

Most próbálja ki, hogy ezek a parancsok működnek -e, írja be

sudo./monitor_off.sh

sudo./monitor_on.sh

A monitornak ennek megfelelően ki- és be kell kapcsolnia. Észrevettem, hogy a Raspberry Pi 2 -n csaknem 10 másodpercbe telt, mire a monitor bekapcsol. A Raspberry Pi 3-on 1-2 másodpercig tart. Ezután csatlakoztatunk egy infravörös érzékelőt, amely elindítja ezeket a szkripteket. Ismét sok oktatóanyag létezik a Raspberry Pi és a PIR beállításához, ezt követtem: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Alapvetően hozzon létre egy fájlt a nano editor használatával (például motion_sensor.py), és írja be a megfelelő Python -kódot. Az alábbi példa a fájlom:

RPi. GPIO importálása GPIO -kéntimport időimport sysimport alfeldolgozásimport dátum importálása dtimport osGPIO.setwarnings (False) # GPIO.setmode (GPIO. BOARD) GPIO.setmode (GPIO. BCM) GPIO.setup (17, GPIO. IN) #PIRturned_off = False time.time () SHUTOFF_DELAY = 180 # secondswhile Igaz: i = GPIO.input (17), ha i == 0: # Amikor a mozgásérzékelő kimenete LOW, kapcsolja ki a monitort, ha nincs kikapcsolva és az idő.idő ()> (last_motion_time + SHUTOFF_DELAY): print "No intruders", iturned_off = Truetime.sleep (1) alprocess.call (['/home/pi/monitor_off.sh'], shell = True) elif i == 1: #Amikor a mozgásérzékelő kimenete MAGAS, kapcsolja be a monitort ONprint "Betolakodó észlelve", itime.sleep (1) last_motion_time = time.time () sys.stdout.flush (), ha turn_off és dt.datetime.now (). óra> 5 és dt.datetime. most (). óra <23: Turn_off = Falsesubprocess.call (['/home/pi/monitor_on.sh'], shell = True), ha _name_ == '_main _': try: main () kivéve KeyboardInterrupt: GPIO.cleanup ()

Ne feledje, hogy a „GPIO.setup (17, GPIO. IN)” azt jelzi, hogy a PIR kimeneti csapja a Raspberry Pi 17. tűjéhez van csatlakoztatva. Ez melyik tű, attól függ, hogy a GPIO.setmode (GPIO. BOARD) vagy a GPIO.setmode (GPIO. BCM) definíciót határozza meg. A különbség itt magyarázható: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. # Van a GPIO. BOARD előtt, ezért figyelmen kívül hagyja, és a GPIO. BCM -et használja.

Figyeld meg a sort

SHUTOFF_DELAY = 180 #másodperc

Itt van megadva, hogy a monitor mennyi ideig van bekapcsolva az utolsó mozgás észlelése óta, mielőtt kikapcsolja. Ez azért hasznos, mert nem azt akarom, hogy a monitor folyamatosan ki-/bekapcsoljon, amikor elmegyek mellette, hanem azt szeretném, hogy egy ideig bekapcsolva maradjon, mielőtt kikapcsol. A 180 másodperces intervallumot választottam, így a monitor körülbelül 3 perccel az utolsó mozgás észlelése után kikapcsol.

Végül ez a sor

ha kikapcsolva_ és dt.datetime.now (). óra> 6 és dt.datetime.now (). óra <23:

kijelenti, hogy a monitor csak 6:00 és 23:00 között kapcsol be, tehát éjszaka nem zavar. A vonalak

nyomtatás "Nincs betolakodó", i

és

print "Behatoló észlelve", i

csak a szkript tesztelésére szolgál, később törölheti őket, amikor működni fog. Most tesztelje a szkriptet:

sudo python motion_sensor.py

Ha az érzékelő fölött integet, látnia kell a „Betolakodó észlelve” üzeneteket, különben „Nincs betolakodó”. Amikor ezt a szkriptet tesztelték és működik, állítsa be, hogy indításkor induljon:

sudo nano ~/.config/lxsession/LXDE-pi/autostart

és adja hozzá a következő sort

@sudo/usr/bin/python /home/pi/motion_sensor.py

Természetesen meg kell adnia a létrehozott Python -szkript helyes fájlnevét.

5. lépés: Akassza fel a naptárat

Ha minden készen áll, ideje felfüggeszteni a naptárat a falra!

Kezdetben arra gondoltam, hogy elrejtem a Raspberry Pi -t az LCD kijelző mögé, hogy csak egy kábelre (egyenáramú tápellátás) legyen szükség. De mivel a Málna 5V -ról és az LCD -kijelző 12V -ról működik, további transzformátorra lenne szükségem. Ezenkívül a Málna tok meglehetősen vastag, ami azt jelenti, hogy az LCD körülbelül 3 centiméter távolságra van a faltól. Így felhagytam ezzel, és csak az LCD elektronikát hagytam az LCD mögött, úgy, hogy az kevesebb, mint 1 centiméterre van a faltól. Két 5 méter hosszú kábelt, egy HDMI -t és egy 5, 5 mm -es kábelt szereztem be egyenáramú tápegységhez. Mindkét kábel fehér, mint a fal, ami azt jelenti, hogy nem különböznek. Felhelyeztem az LCD -t a falra, és a málnát a hűtőszekrény tetejére tettem a szemközti falra, így alapvetően rejtve van, mégis könnyen hozzáférhető.

Ajánlott: