Kézmozdulat-érzékelő

Néha jó lenne, ha gombok, illetve érintőképernyő nyomogatása nélkül tudnánk parancsokat kiadni. Az egyik megoldás erre a hangvezérlés, ami praktikusnak tűnik, de egyelőre nem kívánom bemikrofonozni a saját lakásomat, nem beszélve arról, hogy elég erőforrásigényes.. e helyett találtam egy praktikus érzékelőt az APDS-9960-at, ami meg tudja mondani milyen irányba mozog előtte a kezem. Egy helyen találóan Jedi-szenzornak nevezik ("Nem ezek a droidok, amiket keresnek!"), máshol a Különvélemény c. filmben látott 3D vezérlőkesztyűhöz hasonlítják.
No azért ennyire nem profi az eszköz, de az 500Ft-os szabadpiaci beszerzési árához képest nem rossz.

Felismeri a négy alapirányt: balról-jobbra, jobbról-balra, fentről-le, lentről-fel, illetve a kéz közelítését, valamint távolítását, ez lenne az 5 és 6. vezérlési lehetőség. Ebből a közelítésen kívül mindent ki tudtam próbálni, de azért azt is tudni kell, hogy nem 100% a felismerési aránya, és 10-15 cm távolságra lát el.
Maga a modul ilyenforma, legalábbis az olcsóbb kínai klón, az eredeti piros. Viszont nem összetévesztendő a 9930-al, az ahhoz általam talált függvénykönyvtárból hiányzik a kézmozdulat-érzékelés és nem is mindenhol tüntetik fel, hogy tudna ilyet a hardver, így inkább maradtam a 9960 típusnál.
adps.jpg

A 9960 alapvetően három különféle funkcióra használható, 1. kézmozdulat-érzékelés (gesture), 2. RGB fényérzékelő, 3. közelítés érzékelő
Ám azt is jó tudni, hogy nem egyidőben, hanem a három közül egyszerre egy funkciót tud ellátni. Tehát vagy a fényt tudom mérni, vagy azt érzékelni, hogy mozog-e egy kéz előtte... További érdekesség azok számára, akik be szeretnék építeni, hogy nem elég egy kis lyuk az érzékelő előtt, nem találtam rá semmi leírást milyen szögben lát, de a mozgásirányt csak úgy tudta megbecsülni, ha majd a modul szélességével megegyező nyílás van előtte.

Bekötése:

  1. VL = külön táp az IR megvilágító LED számára (3-4.5V, opcionális, nem használom)
  2. GND = Raspberry GND
  3. VCC = Raspberry 3V3 (2.4-3.6V)
  4. SDA = Raspberry SDA
  5. SCL = Raspberry SCL
  6. INT = Raspberry GPIO (ennek státusza változik, ha mozgást észlel, amire eseményfigyelőt lehet ültetni)

Mivel I2C eszköz, a Raspberryn engedélyeznünk kell az I2C-t:

sudo nano /boot/config.txt

És a következő sort kell a config.txt-be illeszteni:

dtparam=i2c_arm=on,i2c_baudrate=400000

Újraindítás után parancssorból ezt beírva látnunk kell a 39-es címen az eszközt, ebből láthatjuk, hogy sikeres volt a forrasztás és a bekötés:

i2cdetect -y 1

Használati példa:

1. python-apds9960 letöltése

git clone https://github.com/liske/python-apds9960.git

2. belépünk a python-apds9960 mappába és kipróbáljuk a tesztkódokat

python test-ambient.py
A fény mennyiségéről ad egy viszonyszámot, ha letakarva a szenzort csökken az érték, a szenzor működik.

python test-prox.py
A szenzor előtt álló objektum távolságát mutatja, a számot normalizálni kell használat előtt :) Ha a szám változik a kéz közelítésére és távolítására, akkor az eszköz működik

python-gesture.py
Az előtte mozgó objektum haladási irányát adja vissza.

Ha az INTERRUPT-ok nem jönnek, vagy állandóan jönnek, jó tudni, hogy a példakódban 7-es lábra vannak állítva BOARD számozás szerint (ez BCM4), amit vagy átállítunk arra, amire az INT csatlakozót kötöttük a Raspberryn, vagy átkötjük a BCM4-re az INT-et.

 

Fontos!
Ha a fényérzékelés és a közelítés érzékelés működik, de a kézmozdulatokat egyáltalán nem akarja érzékelni, az apds mappa device.py fájljában szövegszerkesztővel át kell írni a következő sort erről:
self.setLEDBoost(APDS9960_LED_BOOST_300)

erre:

self.setLEDBoost(APDS9960_LED_BOOST_100)

Nekem bejött, működik. Elképzelhető, hogy a kínai klón nem tudja a LED fényerejét emelni 100%-ról, vagy csak kellene az a külön VL tápforrás, amihez még egy ellenállást is le kellene forrasztani.. de én az átírást egyszerűbb megoldásnak találtam.

További használati lehetőség: Az ESPEasy DEV 2.x változatában is szerepel pluginként.

Adatlap: https://cdn.sparkfun.com/assets/learn_tutorials/3/2/1/Avago-APDS-9960-datasheet.pdf

Egyszerű használata pedig az alábbi.

RPIEasy mintabeállítás:

Először a Hardware->Plugins&controller dependencies menüpont alatt győződjünk meg róla, hogy az APDS9960 minden függősége rendben van, ha nincs, akkor azt egy piros X jelzi, amire kattintva települ a hiányzó rész. (kivéve ha nincs root joga az RPIEasy-nek)

rpi_apds_2.png

Majd átlépve a Hardware/Pinout&Ports menübe, engedélyezzük az I2C-t, ez után a Submit gomb és újraindítás következik. (nem keverendő össze az I2S-el, amire nem sok szükség van, így azt letiltjuk)

rpi_lht0.jpg

Ez után a Devices menüben valamelyik EDIT gombra kattintva felvehetünk egy APDS9960 típusú eszközt.

rpi_apds_1.jpg

A Name-Név beállítás kötelező elem, az Enabled bepipálásával engedélyezzük az eszköz működését, I2C címet nem lehet választani, mivel ez a típusú eszköz csak egyetlen címen érhető el - ha jól kötöttük be és elérhető.
Ha felvettük a Controllers menüben már a Domoticz HTTP/MQTT közül valamelyiket, akkor a Send to Controller engedélyezése után, ha Submit-ot nyomunk, beírható a Domoticz-ban szereplő virtuális IDX azonosító szám.

Amennyiben az ADPS "INT" lábát bekötöttük a Raspberry valamely GPIO-jára azt adjuk meg az Interrupt pin beállításnál. (javasolt Input-Pullup típusra állítani a pint, mivel a láb LOW-ra húzásával jelzi az eszköz, hogy mozgást észlelt)

A Gesture mezőben egy számot fogunk kapni, amit pl a Domoticz oldalon egy Selector Switch többállású kapcsolóval fogadhatunk.

Ezen számok jelentése:

  • 0 = semmi esemény/nem értelmezhető mozdulat
  • 10=Bal
  • 20=Jobb
  • 30=Fel
  • 40=Le
  • 50=Közeledés
  • 60=Távolodás

Van egy másik üzemmód is, amikor visszaadja az érzékelt objektum távolságát, és a megvilágítás mértékét, ezt egy dupla értékben tudja továbbítani, de ezzel együtt nem megy a mozgásérzékelés funkció, és 70-200mm érzékelési távolsága nem túl sok mindenre jó.

A bejegyzés trackback címe:

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

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