wiki:Measurements/Temperature
Last modified 5 years ago Last modified on 08/03/2012 12:17:54 PM

Merjenje temperature

Ta navodila so napisana za tiste, ki se želijo bolje seznaniti z delom z opremo. Za sodelovanje v omrežju to znanje ni potrebno, ampak se je dovolj le javiti, recimo v okviru akcije odpri okno? in za tehnične podrobnosti poskrbimo skupaj.

Linksys routerji? imajo v svoji notranjosti dva serijska porta?, ki ju je mogoče uporabiti za komunikacijo z 1-wire napravami proizvajalca Maxim/Dallas. Za nas je zanimiv DS18B20 – natančneje digitalni termometer, do katerega lahko dostopamo s paketom digitemp, ki ga lahko izberemo v konfiguraciji točke v bazi točk in ga image generator? doda v firmware za točko.

Vezje za merjenje temperature

SMD plug&play izvedba je na voljo tukaj?, navodila za vezavo pa so na voljo tukaj.

Uporaba paketa digitemp

V naslednjih ukazih se uporablja enak način zapisa ukazov, kot je opisan v navodilih za SSH dostop?, predvsem da znak $ le označuje ukaz, ki ga je potrebno izvesti v konzoli? in ni del samega ukaza.

Najprej moramo inicializirati komunikacijo in prepoznati senzorje:

$ digitemp_DS9097 -s /dev/tts/1 -i

Če gre vse prav, se izpiše nekaj podobnega:

DigiTemp v3.5.0 Copyright 1996-2007 by Brian C. Lane
GNU Public License v2.0 - http://www.digitemp.com
Turning off all DS2409 Couplers
.
Searching the 1-Wire LAN
2854F50A01000028 : DS18B20 Temperature Sensor
ROM #0 : 2854F50A01000028
Wrote .digitemprc

Nato zaženemo izpis temperature senzorjev:

$ digitemp_DS9097 -a -q

Kar izpiše nekaj meritev:

Sep 07 21:24:07 Sensor 0 C: 11.94 F: 53.49

Temperaturo lahko izpisujemo neprekinjeno. <sekunde> predstavljajo zakasnitev med meritvami, <število ponovitev> kolikokrat želimo, da se meritev ponovi, vrednost 0 pomeni neskončno ponovitev:

$ digitemp_DS9097 -a -q -d <sekunde> -n <število ponovotev>

Temperaturo lahko logiramo v datoteko. Naslednji ukaz bo naredil 1440 meritev s 60 sekundno zakasnitvijo med meritvami in jih shranil v datoteko <log file>, recimo /tmp/temperature.log. Znak na koncu, &, pove ukazni vrstici, da naj ukaz požene v ozadju in ni del argumentov programu samemu.

$ digitemp_DS9097 -a -q -d 60 -n 1440 -l <log file> &

V živo lahko spremljamo zapisovanje v log file s tem ukazom:

$ tail -f /tmp/temperature.log

Skonfiguriramo .digitemprc (v trenutnem direktoriju) in recimo zmanjšamo porabo spomina s spremembo LOG_FORMAT:

TTY /dev/tts/1
READ_TIME 1000
LOG_TYPE 1
LOG_FORMAT "%b %d %H:%M %.2C"
CNT_FORMAT "%b %d %H:%M:%S Sensor %s #%n %C"
HUM_FORMAT "%b %d %H:%M:%S Sensor %s C: %.2C F: %.2F H: %h%%"
SENSORS 1
ROM 0 0x28 0x54 0x6B 0x51 0x00 0x00 0x00 0xDA

Troubleshooting UART serial port

Initial testing should be done without any 1-wire device connected. Open one telnet console and enter port capture command like this:

cat < /dev/ttyS0

On the second telnet console enter the following command:

echo 0123456789 > /dev/ttyS0

You should see the same echo on first console. If this is not the case then you are doing something wrong! If you see garbage like ðððþàà then try lower baud rate with the command

opkg install coreutils-stty
stty -F /dev/ttyS0 9600

And if you want to do a continuous test then you can use this one-liner ash script:

while [ 1 ]; do echo "0123456789" > ttyS0; done

Attachments