DIY RTSP megjelenítő OrangePi-vel

Egy ideje nem esett már szó nagyobb DIY projektről, íme hát egy újabb.
Morfondíroztam egy ideje, mi lenne a megfelelő felhasználási célja a 4 magos Orange Pi One lapkának, és nemrég adta magát a lehetőség egy videokép-megjelenítési feladatra. A kedvenc RPI Zerom egymagos processzora ehhez sajnos kevés, be kellett látnom, előkaptam hát az Orange lapkát!
Szerencsére normál méretű HDMI kimenet van rajta, az kapott egy HDMI-VGA átalakítót is hirtelen, mert bár VGA monitorokkal Dunát lehet rekeszteni, a HDMI monitorokat viszont még nem hajítják az ember után.

ophone_out.jpg

Alkatrészlista:

Eszköz Bruttó ár
Orange Pi One (*) 4951 Ft
USB Wifi stick, külső antennával (*) 929 Ft
HDMI->VGA átalakító (*) 733 Ft
AC-DC 12V1.25A táp (*) 1190 Ft
DC-DC 12V->5V 15W step down átalakító (*) 883 Ft
Nyomógomb (*) 644 Ft
Billenőkapcsoló (*) 374 Ft
Buzzer 3V (*) 383 Ft
3.3V relémodul (*) 600 Ft
MOSFET kapcsoló 15A trigger (*) 252 Ft
410C5 Kötődoboz IP56 150x110x70mm (*) 1186 Ft
Ventilátor 60x60x15 DC4.5-13.8V (*) 2198 Ft
Védőrács 60x60 (*) 255 Ft
Kétoldalas protolap 3x7cm (*)  312 Ft
PWM Trigger Mosfet kapcsoló 15A (*) 300 Ft
Karos Wago 3-as (*) 3 x 140 Ft
Ellenállás 100ohm 20 Ft
Ellenállás 4.7Kohm 20 Ft
C14 beépíthető aljzat (*) 298 Ft
C13 beépíthető aljzat (*) 298 Ft
Összesen: 16246 Ft


Talán az árakon is látszik, hogy egyes alkatrészek Kínából rendelve ugyan olcsóbbak szoktak lenni, viszont a szállítási idők kiszámíthatatlansága miatt mostanában előtérbe helyeztem a helyi forrásokat. Főleg a ventilátor aránytalanul drága (bár a Sunon márka és a vapo csapágy hosszú élettartamot ígér), de méretben nem találtam szimpatikusat olcsóbban. Nagyobb dobozba téve persze egy régi PC tápventillátort is használhattam volna...

A tápegység résznél a 12V->5V átalakító kiváltható akár olcsóbb, cirka 300Ft-os lappal is, de nekem ez volt kéznél... másrészt az ACDC 12V tápegység és a step down átalakító együtt kompletten kiváltható lenne egy cirka 3200Ft-os Meanwell RS-15-5 tápegységgel.

Ventilátor nélkül a konstrukciót nem javaslom kivitelezni, egyrészt a Orange is termeli a hőt, másrészt ez a fajta rácsos táp hajlamos 100 fok fölé melegedni huzamos használatnál, ha a teljesítmény csúcson van járatva. (Bár az Orange Pi One tesztjéből tudható, hogy kb 5W-ot eszik átlagosan, így a 15W-os tápegységnek bőven elegendőnek kell lennie, extrém melegedés nélkül)

Felmerülhet, hogy mi lenne, ha vennénk ebben az árban egy Androidos TV-re köthető médialejátszót, és azzal végeznénk el a feladatot? Igen, valóban, ezt az utat is végigjártam már egy Hikvision kamera kapcsán, amit a gyári iVMS-4500 alkalmazásával egy androidos médiaboxon tettem ki TV-re. Némi küzdelem után sikerült automatizálni a program indulását és leállását, viszont a TV-t, no azt kézzel kellett ki-be kapcsolni hozzá. Másrészt, ha az alkalmazás lefagyott, és nem egyszer volt ilyen, random időközönként, jöhetett a táp le-táp fel. Mivel az Android platformon a távmenedzselés sem egyszerű, legalábbis én nem találtam rá olyan működő alternatívákat, mint linuxon az SSH és szükség szerint VNC. (az android vnc alkalmazás meg egy vicc) Az iVMS alkalmazás ráadásul kisfelbontású telefonokra van optimalizálva, ami kifejezetten amorfnak hat egy FullHD-s felbontású TV-n. Mostanában ráadásul androidos tableten azt figyeltem meg, hogy néhány naponta elveszi a fókuszt az előtérben futó alkalmazástól, valószínűleg valami frissítés, vagy értesítés kapcsán, ez is elég zavaró. Ezen okokból állandó megjelenítés céljára nem igazán tartom alkalmasnak ezt az Android vonalat.
Az XMEye kameráknál nem lehet automatizálni az Androidos alkalmazás belépését, az azért nem alkalmas ilyesmire.. mással még nem próbálkoztam.

 Node, vissza a tárgyra! Van egy rakat alkatrészünk, nézzük hogy férnek a dobozba:

ophone_inside.jpg

A képen látható, hogy bár az Opi One LAN-os, én egy Wifi-sticket toltam bele, ezzel vezeték nélküli RTSP megjelenítővé előléptetve. Ha akad LAN kábel a közelben, nyilván stabilabb és gyorsabb a kapcsolat. :)

Bekötés:

wiring2.jpg

Ahogy talán a képből is látható, de a bekötési rajzból már bizonyosan, egy kapcsoló szabályozza, hogy eljut-e a fázis a 12V tápegységig, illetve a Dc reléig, ami a monitor felé menő tápellátást biztosítja. A 12V-os tápot eléggé elítélhető, ám fantasztikusan működő módon következő lépésben 5V-ra alakítom, majd ráengedem az Orange PI megfelelő GPIO-ira, ezzel megtáplálva, valamint továbbkötöm a MOSFET kapcsolóra, ami a ventillátort tudja majd üzemeltetni. (12V-os a ventilátor, így éppen 12V-ról is mehetne, de 5V-ról járatva halkabb)

Maga a relé 3VDC tekercsfeszültségű, mert mint azt már tudjuk, a Raspberry és az Orange Pi is 3.3V GPIO vezérlésekkel dolgozik, amire az álmoskönyv szerint nem elegáns ráengedni az 5V-ot, és természetesen kimenetként sem lenne biztosított a rendes működés, ha 5V-os eszközt akarunk 3.75V alatti jelszinttel vezérelni...

A GPIO16/PC4 vezérli a relé állapotát, a GPIO26/PA21 pedig bemenetként sasolja a rá kötött nyomógombot, hátha kérjük a relé állapotának módosítását kézzel. Felhívnám a figyelmet a gomb mellett levő 4.7KOhm felhúzó+ellenállásra (OrangePi-ben nincs beépített, ezért külső ellenállást kell használni), ami HIGH szinten tartja a nyomógombot alapállapotban, amíg meg nem nyomják, akkor lesz LOW.
A csipogó a GPIO32/PG8-ra van kötve egy 100 Ohm-os áramkorlátozó ellenálláson keresztül, a MOSFET relé vezérlése pedig a GPIO36/PG9 lábra van kötve, ez indítja és állítja le a ventillátort szükség esetén. (ezt úgy állítottam be egyébként, hogy 65 fok felett bekapcsol, majd 60 fok alatt lekapcsol)

Ez a hardver összeépítés után a működés elméleti része, nézzük a szoftvert, ami egy Armbian Linux és egy RPIEasy lett, amit felkészítettem immár az Orange PI GPIO-k kezelésére is.

Íme a hardver lábkiosztás beállítása RPIEasy-ben:

screenshot_20200623_192504.png

Továbbá ezek az egyszerű eszközök kerültek felvételre benne:

opidisp2.jpg

A "System Info" eszköz ahhoz kell, hogy tudjam hány fokos az Orange, a többi GPIO-ról írtam feljebb.. amiről nem szóltam eddig, az a megjelenítés, ez a 6. eszköz a listában. Pontosabban a 6. sorban levő eszköz futtatja szükség esetén, mivel meglehetősen célspecifikus, ezért nem integráltam a kép megjelenítését végző kódot az RPIEasy-be.

opidisp3.jpg

A 6-os eszköz 0 vagyis OFF állapotában kilövi a runuser paranccsal indított feladatokat, ami elég általános feltétel, de jelen projektnél tökéletesen működik. Az 1-es vagyis ON állapotban a runuser a pi felhasználó nevében - ennek ugyanannak a felhasználónak kell lennie, amiben a grafikus felület, pl az XFCE automatikusan bejelentkezett! - futtatja a camdisplay.py megjelenítőt. (az XFCE telepítéséről Armbianra külön nem szeretnék írni, én parancssorból tettem meg, de az armbian-config segítségével is megoldható)
A camdisplay.py -be kézzel be kell ütnünk azt az RTSP útvonalat, amin a kamerán mozgóképe, vagy azt a HTTP útvonalat, amin az állóképe elérhető. (mindkettő megadható, ekkor először az RTPS-t próbálja, majd a HTTP-re tér át vészmegoldásként) A két állapot között a Toggle gombra kattintva, vagy a taskvalueset paranccsal tudunk váltani. Mivel OpenCV szükséges az RTSP dekódoláshoz, ezért először azt is telepítsük fel a 'sudo apt install python3-opencv' parancs segítségével.

A szükséges camdisplay.py az alábbi címen érhető el:

https://github.com/enesbcs/camdisplay

Ebben az rtspurl és snapurl változókban adhatjuk meg IP kameránk, vagy az IP rögzítő RTSP elérési útját, a snapurl-ben pedig az állókép elérési útját, utóbbi nem kötelező, de ha az RTSP valamiért nem megy, vészmegoldásnak jó.

Dahua rögzítő esetén az RTPS útvonal ilyesmi a 3. csatornára:
rtsp://RÖGZÍTŐ_IP_CÍM:554/cam/realmonitor?channel=3&subtype=0
Az állókép pedig így érhető el a 3. csatornáról:
http://RÖGZÍTŐ_IP_CÍM/cgi-bin/snapshot.cgi?channel=2

Gyártónként ezek természetesen mind mások, a VLC segítségével tudjuk tesztelni, hogy az RTSP valóban megfelelően működik. Ha nem tudjuk hogyan lehet ezt elérni, érdemes az iSpy adatbázisában szétnézni.

Felmerülhet a kérdés, hogy nem lehetne-e kiváltani a camdisplay.py-t magával a VLC-vel? De igen, kicsit finomhangolni kell a beállításait és ugyanúgy el lehetne indítani a 6-os taszk segítségével. :)

Az eszköz működését az alábbi RPIEasy Rules kód vezérli:

on System#Boot do
  rtttl,32:d=4,o=5,b=125:e,b,a,b,d6,2b.
  taskvalueset,3,1,1
  taskvalueset,6,1,1
endon

on startdisp do
   taskvalueset,3,1,1
   taskvalueset,6,1,1
   rtttl,32:d=4,o=5,b=140:8e,8c,8e,8c
endon

on stopdisp do
   taskvalueset,6,1,0
   taskvalueset,3,1,0
   rtttl,32:d=4,o=5,b=140:8e,8c
endon

on pwrbtn#State do
  if [relay#State]<1
   event,startdisp
   breakon
  endif
  if [relay#State]>0
   event,stopdisp
   breakon
  endif
endon

on sa#temp do
  if [sa#temp]>65 and [fan#State]<1
   taskvalueset,5,1,1
   breakon
  endif
  if [sa#temp]<60 and [fan#State]>0
   taskvalueset,5,1,0
   breakon
  endif
endon

on Clock#Time=Mon,07:45 do
   event,startdisp
endon
on Clock#Time=Tue,07:45 do
   event,startdisp
endon
on Clock#Time=Wed,07:45 do
   event,startdisp
endon
on Clock#Time=Thu,07:45 do
   event,startdisp
endon
on Clock#Time=Fri,07:45 do
   event,startdisp
endon

on Clock#Time=Mon,17:30 do
   event,stopdisp
endon
on Clock#Time=Tue,17:30 do
   event,stopdisp
endon
on Clock#Time=Wed,17:30 do
   event,stopdisp
endon
on Clock#Time=Thu,17:30 do
   event,stopdisp
endon
on Clock#Time=Fri,17:30 do
   event,stopdisp
endon 

Előre szólok: az rtttl implementálva van az RPIEasy-ben (Nokia csengőhang) és reagál is Orange Pi alatt, viszont az Orange Pi-ben nincs hardveres PWM támogatás, így a hanghatás inkább egy rozsdás fűnyírót idéz. :) Raspberry Pi-vel rendesen működik.

Végezetül egy jó tanács: Mivel mégiscsak Orange-ről van szó, a watchdog alkalmazást ne felejtsük el feltenni, hogy alkalomadtán újraindítsa magát, amikor megfagy. ;) Raspberry alatt a watchdog pár pillanat alatt beállítható és remekül működik, Orange Pi alatt ez még nem igazán úgy működik, ahogy kellene.
Illetve aki szeret kényelmesen szerelni, egy mérettel nagyobb dobozt válasszon, ez éppen passzos.

A bejegyzés trackback címe:

https://bitekmindenhol.blog.hu/api/trackback/id/tr2915970280

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.

Nincsenek hozzászólások.

Támogatók:
okosotthon.jpg
allterco.jpg

Utolsó kommentek

  • szenorb: Hello. Bekötöttem 12V-ra , a bemetére egy mozgás érzékelőt kötöttem. Szépen kapcsol a relé a késle... (2023.06.14. 06:48) Shelly okosrelé (Shelly1)
  • Melanoheliophobia: Üdv! Kb. 2 éve vásároltam két ugyanilyen okos izzót. Sajnos az egyik még garancia idő alatt eltávo... (2023.05.03. 16:50) Shelly Vintage okosizzó
  • eNeS: Lehetséges, bár az ESP8266-ot lassan ideje elfelejteni, ha nem helyi hálózatra akarsz vele forgalm... (2023.04.02. 08:43) Tasmota szkriptek
  • eNeS: @tomih: Thonnyban rebootot nyomva nekem se megy az NTP. De mikor lekapcsoltam a Thonnyt és rebooto... (2023.04.02. 08:40) Raspberry Pico és a LAN (W5100S-EVB-Pico)
  • krump_lee: Kedves eNeS! ESP8266 tasmota-val szenvedek, hiemq kapcsolat sehogy nem jön össze, sehol nem talál... (2023.04.02. 08:31) Tasmota szkriptek
  • Utolsó 20

Címkék

433mhz (12) alkatrész (22) alternatív kapcsoló (2) amg8833 (1) analóg (2) android (1) arduinoeasy (5) audio (1) automatizálás (3) bemenet (3) bk7231n (1) ble (1) blitzwolf (4) bluetooth (9) bridge (2) camhi (2) csináld magad (22) dimmer (1) diy (28) do-it-yourself (27) domoticz (11) ds18b20 (1) ebay (3) érintő (2) érintőkapcsoló (7) érzékelő (11) esp-01 (2) esp32 (11) esp8266 (21) espeasy (2) espurna (1) esp projekt (18) Eview7 (1) ewelink (1) feldolgozó (1) felhő (1) fényérzékelő (1) firmware (7) flame detector (1) fogyasztásmérő (5) ftdi (1) füstérzékelő (1) gázérzékelő (1) gpio (1) hang (4) hangjelző (1) hőmérséklet (22) https (1) ikea (1) impulzus relé (1) izzó (2) javascript (1) jelenlétérzékelő (3) kamera (18) keresztkapcsoló (1) kézmozdulat (1) kijelző (3) kimenet (21) konnektor (8) lan (9) lángérzékelő (2) led (3) linux (4) logic level converter (1) lua (1) lux (1) maple mini (2) mcu (3) micropython (1) mikrovezérlő (2) milkv (1) mobil (1) mosfet (1) mozgás (5) mpyeasy (4) mq-2 (2) mqtt (3) működtető rendszer (5) multiroom (1) nedvesség (1) neo (1) neopixel (1) Node-RED (1) nvr (4) nyitás (7) okosház (4) okosizzó (3) okosotthon (8) oled (1) onvif (8) openbeken (1) opencv (1) openwrt (4) orange pi (4) páratartalom (6) php (1) pico (1) pi pico (2) poe (1) programozás (9) projekt (25) proximity olvasó (1) python (2) raspberry (14) raspberry projekt (6) raspbian (1) reed (1) relé (27) rf (2) rgb (6) rock pi (1) rögzítő (2) rp2 (1) rpieasy (1) rtc (1) shelly (24) smartwise (1) solid state relay (1) sonoff (20) SonOTA (1) soros (1) ssl (1) ssr (1) stm32 (4) szenzor (11) szilárdtest relé (1) szintillesztő (2) sziréna (1) szkript (3) szünetmentesítés (4) t1 (1) tasmota (8) távirányító (3) Telegram (1) termékteszt (85) termosztát (2) touch (2) ups (5) usb (7) usb hub (1) valós idejű óra (1) vezérlések (20) vezérlő (5) világítás (5) villanykapcsoló (12) webkamera (1) wiegand (1) wifi (32) ws2812 (1) xiaomi (5) xm (4) xmeye (4) yoosee (1) zigbee (16) zwave (3) Címkefelhő
süti beállítások módosítása