Nagyon népszerű volt idén az ESP32 alapú kamera, ezért, bár a mintaképek alapján sejtettem mire számítsak, rendeltem belőle én is tesztre.
Igazság szerint már hónapok óta megérkezett, de az első tesztnél azért még én is hátrahőköltem attól amit láttam, és nem a gyönyörűségtől. Tudom, hogy 9 dollárért ne várjak csodát, de én láttam már egypár valódi 2MPixeles IP kamera képét és hát ez azért szíven ütött. Szóval a polc mélyére száműztem, csak most került elő, amikor valami egész mást kerestem. (Közben már olcsóbban is kínálják 6 dollár körül, ha jól láttam)
Hogy mi jellemző rá?
Életlen, homályos kép (bármilyen felbontáson) teljesen kiégett, fehérbe hajló színekkel. Ha kevés a fény, még csíkozódik is.
Van ugyan a demo alkalmazásában, amivel a legtöbben először kipróbálják - és amiről kismillió leírás található a neten - szép csúszkákkal ellátott beállítófelület, amitől úgy érezhetnénk, hogy kezünkben az irányítás és majd jól beállítjuk a kép minőségét.
A gyanútlan felhasználó úgy gondolná, hogy majd nagyobb felbontáson élesebb képet nyer.. hát nem, a "minőséget" megbízhatóan hozza. Az optika ugyanis ugyanaz a gagyi marad, mindegy hogy hány millió képpontra osztják szét. Nem véletlen, hogy a neten fellelhető mintaképek is csíkosak, vagy homályosak. A szomorú valóság az, már bocsánat a kifejezésért, hogy sz*rból nem lehet várat építeni. Fej-fej mellett vannak a 640x480 felbontású USB-s webkamerával.
Szóval aki IP kamerának akarja használni ezt a csodát és már be is rakta a netes bevásárlókosárba, inkább vegye ki. 22 dollárért az Aliexpressen lehet értékelhető minőségű IP kamerát találni, ami igaz csak HD/720p felbontású, de ennél ezerszer jobb-tisztább képet ad, van benne éjjellátó infra és ház is jár vele.
Persze ha csak arra vagyunk kíváncsiak, hogy a világosban arra járónak egy feje, két keze és két lába volt-e, akkor használjuk bátran ezt.
Látható az ESP32 felett jobbra az IPEX csatlakozó, ami a mellé helyezett ellenállás átforrasztásával vehető igénybe, alapesetben a rá integrált antennára van állítva. A hátulján (vagy tudja bárki melyik számít az elejének?) található SD kártya foglalat papíron 4GB FAT32-re formázott SD kártyával használható, az FPC csatlakozóba kell beügyeskedni - a fekete lezáróelem óvatos 90 fokos nyitását és nem kihúzását/törését követően - a kamera szalagkábelét, majd visszazárni. A mellette található LED-et vakunak szánták.
Rossz hír továbbá, hogy visszajelzések alapján hajlamos huzamos használat után túlmelegedni (megvan a Tökéletes Katona?) és megállni, ami csak az után hajlandó ismét működni, ha hűlt egy kicsikét. Talán egy hűtőborda segítene valamelyest.
A GPIO kiosztás tanulmányozása után látható, hogy nem sok szabad van kivezetve, a legtöbbet belsőleg használja. Ami kivezetésre került, azok nagy része is az SD kártya foglalathoz van kötve (2,4,12,13,14,15), tehát ha akarunk SD kártyát használni, ezeket nem igazán használhatjuk az SD kártya működésének vagy a fájlrendszer nyugalmának megzavarása nélkül. A GPIO1 és GPIO3 a soros port, ha esetleg nincs szükségünk a soros kommunikációra, annak letiltása után ezeket birtokba vehetjük, a GPIO-0ra esetleg tehetünk olyan eszközt, ami biztosan nem húzza GND-re (a mozgásérzékelő nem ilyen!), ha ugyanis ez megtörténik, akkor programozó módba lép az ESP. Ha jobban megnézzük, gyakorlatilag csak a GPIO16 marad szabadon, amire egy mozgásérzékelőt nyugodt szívvel köthetünk. Mondom a slusszpoént: a DeepSleep módból a GPIO16 láb nem tudja felébreszteni az eszközt, így az egyik legésszerűbbnek tűnő energiatakarékos megoldást nem igazán tudjuk használni.
És a legjobb: a GPIO4-re van kötve mellesleg a "vaku" LED is, amit ugyebár az SD kártyával együtt nem igazán tudunk szabályozni, ha van benne kártya, akkor az aktivált felhúzó-ellenállás miatt folyamatosan fog világítani. :) Kivéve ha leforrasztjuk. Persze arra is van lehetőség, hogy az SD_MMC kezelőt 1bites módban használjuk, így a sávszélesség (egyébként sem túl nagy) kárára felszabadul 3 csatlakozó (4,12,13) és az SD kártya is használható, bár érdekes módon egyik általam látott példaprogramban sem használták ezt a lehetőséget, a legtöbben csak állítgatják a kivezetett lábakat, tekintet nélkül a következményekre.
No végül, ha a képminőség láttán nem hányunk rögtön, mégis mire lehetne használni a kütyüt?
- Kreatív ötlet például QR olvasót készíteni belőle.
https://www.cnx-software.com/2018/09/30/esp32-cam-esp32-camera-board/https://robotzero.one/esp32-cam-arduino-ide/ - Akár kamerás drón készítésére is lehetne használni, de nem nagyon van szabad lába, amivel az egyéb funkciókat lehetne szabályozni. Meglévő kamera nélküli drónra persze ráerősíthetjük ettől függetlenül, vagy egyéb távirányítós játékra, viszont számolni kell azzal, hogy elég sokat fogyaszt.
- Korlátozottan el tudom képzelni fényképezőgépként, időzített, vagy mozgásra aktivált JPEG képek rögzítésére.
https://randomnerdtutorials.com/esp32-cam-pir-motion-detector-photo-capture/ - Arcfelismerés: Kisebb csoda, hogy az arcfelismerés ilyen paraméterekkel működik, de igen, a kínaiak megcsinálták. Legalábbis van egy példaprogram, ami meg tudja különböztetni a képen látott arcokat.
https://randomnerdtutorials.com/esp32-cam-video-streaming-face-recognition-arduino-ide/
Egy érdekes lehetőség lenne, ha a kamera a felismert arcok azonosítóit továbbítaná egy automatizáló szervernek, de ilyen - működő - megoldást nem láttam eddig. A legközelebbi működő dolog ez: https://github.com/ldab/ESP32-CAM-MQTT
Én egy ötödik lehetőséget fogok most bemutatni, felhasználva Kevin Hester "Micro-RTSP" projektjét, jobban mondva annak Bartłomiej Cieszkowski által módosított verzióját használva, mivel az eredeti egyidejűleg csak egy kapcsolatot tudott kezelni, a módosított változat már többet is tud: (nyilván gyorsabb nem lesz tőle, ha többen kapcsolódnak)
https://github.com/bartlomiejcieszkowski/Micro-RTSP/tree/bcieszko-multi-client-rtsp
Hogyan töltsük fel a programot?
- Töltsük le innen az Arduino IDE-t a gépünkre, csomagoljuk ki:
https://www.arduino.cc/en/Main/Software - Indítsuk el az Arduino IDE-t
- A Fájl->Beállítások->További Alaplap-kezelő URL-ek mezőbe szúrjuk be az alábbit:
https://dl.espressif.com/dl/package_esp32_index.json - Az Eszközök->Alaplap->Alaplap-kezelőben válasszuk ki és telepítsük az "esp32 by Espressif Systems" nevű alaplapot
- Ez után már ki tudjuk választani az Alaplapok között az "ESP32 Wrover Module" típust és a Huge APP (3MB) partíciót
- A Vázlat->Könyvtár tartalmazása->Könyvtárak kezelése alatt keressük meg és telepítsük a PageBuilder és az AutoConnect nevűeket
- töltsük le egy szimpatikus mappába a proof-of-concept projekt forrását:
git clone https://github.com/enesbcs/ESP32_RTSP_Cam - az abban levő lib/Micro-RTSP-Multi könyvtárat másoljuk át az Arduino library mappájába, ahol megtalálja fordításkor
- az ESP32_RTSP_Cam.ino fájl megnyitása után előbb a Vázlat->Ellenőriz/Fordít menüvel próbáljuk ki, hogy a telepítés rendben sikerült és le tudja-e fordítani a betöltött vázlatot, ha igen, akkor kössük be az alábbi bekötési rajz szerint az eszközt, majd a Feltöltésre kattintva töltsük fel a programot rá.
Bekötés: (amint látható nincs rajta mUSB, így kell egy USB-UART átalakító is hozzá, ajánlott a CP2102)
Egy nagyon fontos dolgot megemlítenék: relatív nagy áramfelvételű eszközről van szó, így USB-ről a program feltöltése működik ugyan, mert a kamera ilyenkor kikapcsolt állapotban van, de ha utána használni akarjuk, le kell kötnünk a programozóról és az 5V-GND lábain keresztül egy legalább 5V1A tápegységről kell meghajtanunk!
Ez nem vicc, nem fog elindulni egyébként. Ebből már talán sejthetőek az akkumulátoros használatának a lehetőségei is.
Hogy valami ésszerű sebességet tudjak kiimádkozni az eszközből, az UXGA helyett a kisebb XGA felbontásra állítottam. (a forrásban a #define RESOLUTION módosításával állítható fordítás előtt)
- FRAMESIZE_QVGA (320x240)
- FRAMESIZE_CIF (400x296)
- FRAMESIZE_VGA (640x480)
- FRAMESIZE_SVGA (800x600)
- FRAMESIZE_XGA (1024x768)
- FRAMESIZE_SXGA (1280x1024)
- FRAMESIZE_UXGA (1600x1200)
Tipp: A "#define PIN_FLASH_LED -1" érték beállításával lehet elérni, hogy ne villogtassa a vakut állókép készítésekor.
Tipp2: Ha az RTSP rész nem szükséges, de szeretnénk gyorsítani az állóképek készítését, tegyünk két perjelet a megfelelő sor elé, valahogy így:
//#define ENABLE_RTSPSERVER
Első indításkor az AutoConnect fog létrehozni egy új AP-t amennyiben nem sikerül csatlakoznia, ESP-xxx néven. A jelszó "configesp" lesz, ha beállítottuk, hogy mire csatlakozzon, az alábbi nem túl bonyolult kezdőoldalon lehet választani a lehetőségekből.
A Snapshot URL segítségével lehet pl Domoticz-ba integrálni (de ha ez a terv, érdemes a vakut lekapcsolni).
A HTTP MJPEG csak mérsékelten hasznos, böngészőből láthatjuk milyen sebességgel képes a megadott felbontáson mozgóképet adni.
Az RTSP URL-t VLC segítségével vagy MJPEG RTSP-t támogató hálózati videorögzítővel használhatjuk.
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.