Numato Lab GPIO Modul + DHT22 Sensor

Fórumok

Sziasztok! Vettem egy Numato Lab USB GPIO modult ( https://numato.com/product/32-channel-usb-gpio-module-with-analog-input… ), amit rádugtam egy debiánra. Látszik is, /dev/ttyACM0 néven figyel. Screen parancs megnyitja, le tudom kérdezni a firmware verziót, stb.

Rákötöttem erre a lapkára egy DHT22 sensort (külső 3.3V láppal, 10k-s ellenállással a DATA és a VCC között), de az istenért sem tudok adatot olvasni róla. Screen alatt 'gpio read 0' annyit mond, hogy '1'. 

Ha telepítem ezt a modult: https://pypi.org/project/numato-gpio/ és futtatom a példa scriptet megfelelően átírva a GPIO portot benne (# configure port 27 as input and print its logic level) akkor arra annyit ír ki hogy 993, ha rá van dugva a DHT22, ha nincs. 

Azt szeretném kérdezni, hogy linux alól egyszerűen, konzolról hogy tudom lekérdezni a pontos hőmérséklet és páratartalom értékeket, épp úgy mint Raspberry Pi-n? Később ezen kívül D18B20 és hasonló szenzorok tömkelegét szeretném használni ezzel a modullal, remélem sikerülni fog. 

Köszönöm!

Hozzászólások

Sub.

 

Miért ezt a boardot választottad?

Hivatásos pitiáner
neut @

Ha jol latom, ez a szenzor valami sajat soros protokollon, digitalisan es/vagy PWM formaban kuldi ki a mereseit[*] - mindezt adott periodussal. Szoval ha csak ugy figyeled az input pint, az onmagaban keves. 

*: a `DHT22 pdf` kereses eredmenyekent kidobott talalat tobb kinai karaktert tartalmaz mint amire en kalibralva vagyok; szoval hogy ez most digitalis vagy PWM az nem derul ki (legalabbis szamomra, par perc nezegetes utan sem). 

Mondjuk a sok haziko-farkinca-tyuklab-tyuklab kozott felsejlik hogy leginkabb 1-wire jellegu ez a szenzor. Abbol viszont az kovetkezik hogy a kerdezo kolleganak nem is I, nem is O konfiguracio kell a GPIO-n hanem open drain. Persze lehet hogy klasszik GPIO-konfiggal is megoldhato valahogy (vagy inputra allitod vagy pushpull + output=0-ra, es mindezt egyszerre), de erre is figyelni kell akkor kulon. Az open drain absztrakcio pedig mind MCU-knal, mind SoC-oknal, mind FPGA-knal egy kulon izgalom. Hol igy, hol ugy, hol amugy csinaljak... 

Köszönöm a hozzászólásokat srácok. Azért vettem ezt a boardot, hogy igazi pécére köthessek szenzorokat, reléket, amiben van RAID, komolyabb CPU, stb stb. Gyakorlatilag egy nagy Raspberry Pi legyen. Egyelőre nem találok python vagy akármi scriptet ami egyből kihányja az értékeket, ilyet keresek. 

Probald ki azt elsore hogy "mit tud" ez a board, azaz egy bitbang-szeru eljarassal milyen gyorsan tudsz villogtatni valamit vagy valami ismert fekvenciaju negyszogjelet beolvasni. Ha van ket ilyen board-od, akkor akarmeg az egyik kimenetet be tudod kotni a masik bemenetere, es akkor "ket legyet egy csapasra" modon is tudsz tesztelni.

Vannak olyan magasabb szintu protokollok amik 0Hz-ig is jol mukodnek (SPI, I2C), olyasmit ki tudsz ezzel probalni bitbang szinten. De gyanitom hogy egy soros portos rendszerrel nehany miilisec-nel pontosabb idozitest mar nem tudsz elerni, es ha ennek az 1-wire jellegu szenzornak ennel preiziebb idozitesei vannak (ld. fel-kinai doksi, ottan azert abbol kiderul hogy barmi is legyen az, akkoris 20-80 mikrosec-es idozites kell). Vsz ezt a Numato-modult is inkabb relek vezerlesere meg nyomogombok-(vegallas)kapcsolok-ilyesmik beolvasasara terveztek (arra vsz teljesen fasza), nem sok-sok kHz-ekvivalens bitbang-re. 

Ha I2C-s szenzorokkal szeretnel ismerkedni akkor inkabb valami ilyesmi modult ajanlanek elsore mint ez: i2c-tiny-usb. En is onnan tudok errol hogy valaki itten a HUP-on ajanlotta. Tenyleg nagyon fasza, "bedugod es mukodik" modon uzemeltetheto, ha olyan szenzort teszel ra amit a Linux kernel is tamogat (pl LM92) akkor mar kozvetlenul a `sensors` alrendszerben is lathatod! Van 3V3-as meg 5V-s kimenete is, raadasul egy buszon. 

Én DS18B20 + PL2303 használtam ehhez.
RX/TX ágakat fordítva kell összekötni értelemszerűen:
-DS18B20 (RX) --> PL2303 (TX)
-DS18B20 (TX) --> PL2303 (RX)
-DS18B20 (VCC) --> PL2303 (VCC) *** (Ebben nem vagyok biztos hogy kell, "parazita" árammal megy, elég lehet a TX/RX bekötni, már nem emlékszek )
így nem kell ellenállást forrasztgatni közé, elég ha bedugod az USB portba.

Mivel a DS18B20 egy SOC így nem kell semmit állítani, a PL2303 egy USB-TTL chip, ha lekérdezed a /dev/ttyUSB -t akkor egyből a hőmérsékletet kapod.
Erre írsz egy szkriptet mondjuk ami 1 percenként lekérdezi, akkor lehet szép grafikont rajzolni, vagy még olyan megoldás is lehet, hogy kirakod TCP-re ezt a soros portot pl..: Ser2Net vagy socat programmal, így távoli gépről is megoldható a lekérdezés.

Köszönöm, utána nézek ezeknek is