Az első, Cerberus projekttel párhuzamosan a másodikat is elkezdtem, ám bizonyos - előre nem látott - problémák miatt elhúzódott a végleges beüzemelése, illetve még mindig találok rajta javítanivalót.
A projekt kódneve - a méretére is utalva - GÓLIÁT.
Az USB hangkártya mellett egy speciális felhasználási területet is megcéloztam, egy meglévő TV Tuner kártya segítségével DVB-T adás vételére és WiFi-n keresztüli továbbítására. A TV tuner kártya és a szükséges USB elosztó alapvetően megadta a doboz minimális méreteit.
Eszköz | Bruttó ár |
Raspberry Pi Zero W (szállítási költséggel - pimoroni) | 4610 Ft |
GPIO Hammer Header - Male (pimoroni) | 678 Ft |
Lexar 8GB Class10 microSD memóriakártya (*) | 1808 Ft |
Cellect hálózati töltő fej, 1 USB, 2000mA | 2290 Ft |
3m USB-microUSB töltőkábel (*) | 403 Ft |
USB OTG kábel (*) | 260 Ft |
Acme HB-410 4 portos USB Hub | 2390 Ft |
USB DVB-T TV Tuner kártya (régi Pinnacle) | 2000 - 8000 Ft |
USB hangkártya (*) | 205 Ft |
Hangszóró 3,5mm jack 1W - óriási hanghatásra ne számítsunk (Mini Pillow Speaker) (*) | 250 Ft |
HC-SR501 (*) | 270 Ft |
RCWL-0516 (*) | 205 Ft |
DHT22 (*) | 780 Ft |
4.7K ellenállás | 3 Ft |
BH1750 (*) | 300 Ft |
Lángérzékelő (Flame detector infrared) (*) | 249 Ft |
MQ-2 füstérzékelő (*) | 305 Ft |
Szintillesztő (Logic Level Converter 5V 3.3V) (*) | 290 Ft |
ADS1015 analóg-digitális átalakító (*) | 516 Ft |
5V 0.08A, 20mm ventilátor (*) | 490 Ft |
S8050 NPN tranzisztor (*) | 6 Ft |
Snody univerzális infratartó konzol | 323 Ft |
400C1 Kerek kötődoboz gumibevezetővel 65x35mm | 180 Ft |
ELO-210/S1 Műanyag doboz 210x110x70mm sima oldalfalú | 1488 Ft |
*: a megjelölt tételek ebay-ről származnak, liciten, nagyobb mennyiség vásárlásakor akár jóval olcsóbban, Magyarországon pedig ennél jóval drágábban beszerezhetőek
Egyéb szükséges tételek: csavarok, anya, tipli, kötegelő, kábelek, ragasztópisztoly, forrasztópáka, fúró, kalapács.
Nagy csodák nincsenek, a szabvány szürke műanyag szerelődobozok ugyanúgy néznek ki, persze némi kézműves munkával ki lehet dekorálni őket. :)
A készülék jobb oldalán alul a DHT22 hőmérsékletmérő látható, arra gondoltam, hogy a meleg felfelé száll, így érdemes minél lejjebb helyezni. A fedlapján jobbra a kukucskáló fekete szem az infrás lángérzékelő, balra tőle egy lencsével takart nyíláson át a fényérzékelő les ki. (Ennek nyílása, mint a Cerberus projektnél már kiderült, kicsire lett méretezve, így durva beavatkozással nagyobbítottam rajta utólag) Fent jobbra a hangszóró került rögzítésre. Felül a Cerberus projektnél már alkalmazott Snody-ra rögzített kerek kötődobozba rejtett, forgatható kombinált mozgásérzékelő látható.
Az átellenes oldalán, - minél távolabb és feljebb a hőmérőtől - kapott helyet az MQ-2 füstérzékelő, mivel meglehetősen sok hőt termel.
Ismétlésképpen a fenti kombinált infra:
Itt pedig a kábeldzsungellel felturbózott belső látható:
A jobb oldalon látható kötegelővel összefogva az USB hangkártya és mögött az USB TV tunerkártya, ez utóbbi nem várt problémákat okozott, mivel iszonyúan melegszik működés közben. És pont a hőmérő oldalára sikerült tennem.. némileg megpróbáltam eltávolítani az oldalfaltól, hogy kevésbé melegítse a műanyag külső oldalára rögzített DHT22-t, további szellőzőnyílásokat fúrtam a dobozra, illetve a lenti kábelbevezetőre egy kisméretű ventilátort helyeztem a levegőutánpótlás biztosítása céljából. Ez a 20x20mm-es 5VDC ventilátor a listáról. Az egyébként is 3.3V 16mA GPIO lábakat nem ajánlott túlzottan terhelni, így egy Hackernoon-ról kölcsönzött ötlettel egy S8050 NPN tranzisztort használtam relének, ami a GND-t szakítja, és a Raspberry 5V-os tápja működteti a ventilátort, egy GPIO tűről vezérelve az S8050 segítségével, ezzel a Raspberryről programból bekapcsolható a ventilátor, ha érzékeli, hogy túl meleg lett. (Önmagában a Raspberry Zero nem igazán melegszik 36 fok Celsius fölé, így nem feltétlenül kell hűteni, - Cerberusban nincs is - ám a tunerkártya extrém hőjével valamit kezdeni kell) Hozzáértők szerint egy ellenállás még kellene a GPIO és a tranzisztor közé, de gyakorlatban e nélkül is működik - amíg egyszer el nem pukkan és utána majd hiszek a hozzáértőknek.
Lent jobbra ismét a lángérzékelő látható, amin potméterrel állítható az érzékenység, mellette balra egy műanyag "konzol"-ra helyezve a fényérzékelő, tőle balra hátul a ventilátor.
UPDATE: az S8050 használatára valamivel biztonságosabb megoldás látható az NVR projektnél.
Bal oldalon lent az analóg-digitál átalakító (ADC) látható, amire a lángérzékelő és a füstérzékelő analóg lábait kötöttem a pontos értékek beolvastatása céljából, mivel a Raspberrynek nincs saját analóg bemenete. És, mint kiderült jól tettem, mert a téves tűzjelzések visszaszorításához fontos a pontos értékek ismerete.
E felett látható a szintillesztő, ami a balra legfelül látható füstérzékelő 5V-os jeleit konvertálja le a Raspberry számára barátságos 3.3V-os szintre. Az analóg és digitális lábat is, mivel az MQ-2 5V-os Arduino rendszerhez készült eredetileg.
Középtájt a Raspberry Pi Zero W szerintem könnyen felismerhető, az alatta levő sorkapocsra az I2C, a felül levő sorkapcsokra a 3.3V és 5V tápellátásokat gyűjtöttem össze. Felül egy USB2 High-Speed (480Mbps) HUB kábel található.. és miért emelem ki a sebességét? Mert persze ezzel is megjártam, első körben ebayről vettem egy frankó OTG USB Hub-ot 300 Ft-ért, ami USB2.0-nak van reklámozva... igen ám, de sajnos csak FullSpeed vagyis 12Mbps sebességet támogat, ami a tunerkártyának kevés, el sem akart indulni vele. Úgyhogy további kísérletezés helyett egy magyar webshopból vettem kissé drágább, de garantáltan nagysebességű USB elosztót. Ami mellesleg ugyanúgy Kínában készült.
Elvi bekötési rajz:

Összeszerelés után a memóriakártyára jöhet:
2. TVHeadEnd telepítése majd beállítása a tunerkártyán fogott adás sugárzására a helyi LAN hálózatra
A Linux kernel gond nélkül felismerte a tunerkártyát, és meg is próbálta elindítani, miután rendes HighSpeed USB csatlakozót kapott. Kivéve, hogy a xc3028-v27.fw nevű firmware fájlt a /lib/firmware mappába kellett előbb tennem, ahogy a linuxtv.org oldal tanácsolta.
Később rájöttem, hogy az alábbi parancs megoldotta volna ezt helyettem:
sudo apt-get install linux-firmware-nonfree
Sebaj, több is veszett Mohácsnál. A következő lépés lehet a szkennelés, például a dvb-apps csomagba tartozó scan parancs segítségével. Városnál kinek-mi esik közelebb... Megjegyzem ez a keresés kihagyható, csak az antenna és tuner működőképességét teszteljük vele, mert a tvheadend-nek saját keresője van. Bár nem árt, ha a főbb frekvenciákat tudjuk, mert a TVHeadEnd-ben a frekvenciákat meg kell adnunk kézzel.
scan /usr/share/dvb/dvb-t/hu-Budapest -a 0
A TVHeadEnd telepítése többlépcsős, jelenleg nem volt a Raspbian Jessie tárolóban, így hozzá kellett adnom a /etc/apt/sources.list fájlba az alábbi sort:
deb http://dl.bintray.com/tvheadend/deb jessie release
update: új tároló:
deb https://dl.bintray.com/mpmc/deb raspbianjessie stable-4.2
Ezután jöhet a tárolók frissítése és telepítés:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 379CE192D401AB61
sudo apt-get update
sudo apt-get install tvheadend
Ha sikeresen feltelepült, akkor a 9981-es porton elérhető a tvheadend webes felülete. A beállítása nem túl bonyolult a webes felületen keresztül, ha lesz rá igény írhatok bővebben róla, lényeg az, hogy be kell állítani a Mux-okat a megfelelő DVB-T frekvenciákra, azon belül már meg tudja keresni a csatornákat, amit aztán kiajánl stream formájában. És hogy mire jó ez? Akár VLC-vel is tudjuk nézni bárhol a hálózatról a megfelelő streamet, de még ennél is jobb a nagyszerű KODI programmal történő tvheadend integráció, mivel a KODI-ban akár csatornát is tudunk váltani.
3. A működtető Python szkriptet átírtam, hogy újra tudjam hasznosítani, szétdobva több unit-ba a szükséges funkciókat.
https://github.com/enesbcs/multisensor-python-rpi
A ms_gol.py-be a lehetséges beállítások:
- mqttServer az MQTT szerver IP címe
- tempdelaysec hány másodpercenként kezdje küldeni az adatokat (30-240 másodperc ajánlott)
- PIN_TMP a fenti bekötés szerint a BCM22-es csatlakozó
- IDX_TMP ezt a Domoticz-ban felvett virtuális szenzor IDX címére kell állítani (hőmérséklet+páratartalom)
- IDX_LHT fényérzékelő Domoticz IDX
- PIN_MOTION1 az SR501 a BCM23-as csatlakozón
- PIN_MOTION2 az RCWL a BCM16-os csatlakozón
- IDX_MOTION_C Domoticz IDX a kombinált mozgásérzékeléshez, ha mindkét fenti érzékelő jelez
- IDX_PITMP Domoticz IDX a Raspberry saját hőmérsékletét adja vissza
- PIN_FLAME a lángérzékelő digitális lába
- IDX_FLAME_PIN Domoticz IDX tűzjelzés (kapcsoló)
- IDX_FLAME_VAL Domoticz IDX a lángérzékelő analóg értékének
- PIN_SMOKE a füstérzékelő digitális lába
- IDX_SMOKE_PIN Domoticz IDX tűzjelzés (kapcsoló)
- IDX_SMOKE_VAL Domoticz IDX a füstérzékelő analóg értékének
- IDX_SIREN Domoticz IDX Választó kapcsoló, hangjelzésre (10,20,30,40,50,60 értékekkel), hangfájlok a sound mappában vannak
- IDX_RADIO Domoticz IDX Választó kapcsoló, a rádióadók a "config_sound.py"-ben átírhatóak
- PIN_FAN a hűtőventillátort vezérlő csatlakzó BCM12
- IDX_FAN a ventillátor Domoticz IDX-e
A bejegyzés trackback címe:
Kommentek:
A hozzászólások a vonatkozó jogszabályok értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a Felhasználási feltételekben és az adatvédelmi tájékoztatóban.
Kommentezéshez lépj be, vagy regisztrálj! ‐ Belépés Facebookkal