Raspberry Pi - 1 wire - hőmérő

 ( igiboy | 2017. február 16., csütörtök - 10:30 )

Még tavaly megkeresett az egyik ismerős, hogy több ponton is szeretne nőmérsékletet rögzíteni. Későbbiekben lekérdezhetően és riasztást is tudjon.
Az adatfeldolgozó és rögzítő részhez Raspberry Pi lett választva, LAMP környezettel. Az olvasást háttérben futó script végzi, Cron-al időzítve.
Egy pilot-projekt keretében gyorsan kipróbáltuk a 1-wire hálózaton lévő hőmérőket DS18B20 és kiépítettünk hozzá egy kábelezést UTP kábellel és RJ12-es (telefon) csatlakozókkal.
Első verzióban egy USB 1-wire illesztőt használtam. Ami eléggé jól működött mind addig amíg nem lett sok elem a hálózaton. Próbáltam mindenféle wooodooot és varázslatot (extra felhúzó ellenállás, extra tápvonal kondenzátor, stb...) de nem jártak teljes sikerrel.
Közben a hálózat kezdett "kesze-kusza" topológiát felvenni, amit talán a normál párhuzamos hálózat és a csillagpontos hálózat keverékeként írhatnék le. Ez még egy kegyelemdöfést adott az USB 1-wire illesztőnek, ami amúgy belülről egy PL2303, amit nem normál soros illesztőként használ egy speciális driver.
Ha a csillagpontból 1-1 volt csak bekötve akkor még épp műsödgetett is a dolog. De így sem szerette azt a vonalat, amin sok eszköz volt és a leghosszabb volt.
Kellett valami értelmes vonalmeghajtást találni. A közvetlen GPIO-s megoldás egyenlő a viccel, így az azonnal el lett vetve.
A választás a DS2482+100-re esett. Egy I2C jelszínt illesztővel, mivel 5V-on akartam használni.
Az eredmény nagyon jó lett. 1-1 vonalat a csillagpontból kivéve mindig 100%-osan olvasott. Viszont a csillagpont megkavarta a lelki világát. Több leírást olvasgatva kipróbáltam a vonalak illesztését 1 pontra, vonalanként 1-1 db (emlékeim szerint) 100 ohm körüli ellenállással. Így sokkal jobban működött a 1-wire BUS, de nem volt 100%-os.
Főleg akkor jöttek a gondok amikor a projekt módosult egy kicsit, két még hosszabb, a vonalanként 1-1 hőmérővel.
A DS2482+100-nak van egy 8 csatornás verziója is, a DS2482+800. Mivel vonalanként teljesen jól működik az 1 csatornás verzióval így a 8 csatornás megoldásnak tűnt.
Ezt a fejlesztést már nem akartam lebegő panelekre és spagetti kábelekkel összerakni, hanem már a véglegesre törekedtem. Kapott az illesztő egy RTC-t is, ami megoldja az esetleges indulás internet nélküli pontos óra problémáját.
A Raspberry Pi kapott egy kényelmes dobozt, amiben az illesztő is elférhet kényelmesen.
Teljesen egyedi tervezés, és nyomtatás.
https://drive.google.com/open?id=0B6i3nSLLiNz-Rk9QZnhUQTJjeG8
https://drive.google.com/open?id=0B6i3nSLLiNz-by14R3lPNENWODg
Majd megkapta a szerelt 1-wire 8 csatornás illesztőt, RTC-vel. Egyszerűen szerelhető csatlakozót akartam, amit egy csavarhúzóval meg lehet szerelni. Mindegyik csatlakozóban található az adat (akár felhúzóval) és GND lábakon kívül 5V is található, minden vonal külön polimer biztosítékkal.
https://drive.google.com/open?id=0B6i3nSLLiNz-c252S1F2bW4tQ1U
https://drive.google.com/open?id=0B6i3nSLLiNz-b2h5ZDFSQnl0UVU
A végeredmény egy zárt kis doboz lett, 8 db 3 pólusú oldható sorkapocs, kényelmesen szerelhető eszköz.
Ez már rögzítette az adatokat, minden vonalon (5 különálló vonal). Lekérdezhető az adat egy egyszerű php-ben írt webappból. Csak egy PC kell hozzá, vagy bármi amin van böngésző.
Igény keletkezett egy állandó kijelzőre is, ami a nap 24 órájában mutatja az értékeket.
Itt is Raspberry Pi tűnt kézenfekvő megoldásnak, egy kis LCD panellal. Amit az előző doboz kicsit átszerkesztett változatába tettem.
https://drive.google.com/open?id=0B6i3nSLLiNz-emd3YUZGcHVrTTQ
A rendszer minibian alapú, mint a szerver résznél is. Csak itt, a grafikus felület is beizzításra került. Egy kis böngészővel ami fullscreenben fut, automatikusan indul. Mivel nyomogatni nem kell, így a felhasználói beavatkozások megelőzése érdekében a touch funkció le lett tiltva.
A szerveren egy /lcd elérhetőségen ki lett alakítva egy kifejezetten erre a kijelzőre méretezett "kijelző" felület. Ami meghatározott időnénként frissíti a megjelenített adatokat.
A fejlesztés vége-felé kiderült, hogy a két távoli vonalon elhelyezett PLC szerű eszközből visszajelzést kellene bevinni és megjeleníteni. Ezek egyszerű 24V-os logikai jelzések (1/0).
Ezen jelzések feldolgozására 1-wire, 2 csatornás digitális I/O-t válaszottam DS2406, bemeneti illesztésre pedig természetesen optocsatolót.
Ez is kapott kis egyedi dobozkát.
https://drive.google.com/open?id=0B6i3nSLLiNz-VTQyMS1aQzRlQUk
Tesztelés és fejlesztéshez demo.
https://drive.google.com/open?id=0B6i3nSLLiNz-R3FMUWNsb25EeXM
Majd pedig a teljes dobozolás
https://drive.google.com/open?id=0B6i3nSLLiNz-dENyN0hkTl9PZkU
Ebből 4db-ot kapott a hálózat, így összesen 8db logikai bemenete lett a "kütyünek".

Az eszközt már ideje használják megelégedéssel, de lényegében a teljes átadásra pár hete került sor.
12 hőmérőjük van jelenleg az eszközön.
Mindegyik 1-wire eszköz tökéletesen olvasható. Nincs probléma a 1-wire bus-al.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

grat és kalapelemés a sok szívás kitartó debugjához!

Ez igen, szép munka! Gratulálok hozzá!

<= Powered By Ubuntu & Gentoo Linux =>

'Software is like sex: It's better when it's free!'
By Linus Torvalds

+1

+1

végre valami normális dolog.
------------------------
Jézus reset téged