Teploměr

Rád bych doplnil implementaci teploměru, o kterém si přečtěte povedený návod na stránce astromik.org pod položkou „15) Teploměr DS18B20“.

Pozor: GPIO4 je nyní špatně, teploměr funguje na GPIO18, alespoň u mě, pro ověření použijte dmesg | grep w1

Vytvořil jsem dva skripty, jeden pro záznam teploty a jeden pro vizualizaci dat. První je klasický bash skript čtoucí v cyklu data z teploměru, dokud se kontrolní součet neshoduje. Občas se totiž vyskytují v měření velké chyby, které se takto minimalizují. Skript zapisuje do souboru temps.log datum do prvního sloupce, čas do druhého sloupce a teplotu do třetího. Při zpracování je třeba teplotu vydělit tisícem. Skript lze volat cronem, já zvolil desetiminutový interval, vše je na libovůli. Nezapomeňte však použít ID vašeho teploměru, řetězec znaků mezi devices/ a /w1_slave je pro každé zařízení jedinečný.

#!/bin/bash

if [ -e /sys/bus/w1/devices/28-000001b44be4/w1_slave ]; then 

 txt=`cat /sys/bus/w1/devices/28-000001b44be4/w1_slave`

 while  [ "$(echo $txt | grep 'NO')" != "" ]; do
  txt=`cat /sys/bus/w1/devices/28-000001b44be4/w1_slave`
 done
 temp=`echo $txt | grep t= | cut -d '=' -f3`
 echo `date +%F%t%T%t`$temp >> ~pi/temps.log
fi

Druhý je skript pro gnuplot, který musíte předem nainstalovat. Části jsem sehnal na různých místech v nápovědách a jiných článcích, protože je to poprvé, kdy s gnuplot pracuji přímo:

#!/usr/bin/gnuplot

set terminal png size 1280,960
set output 'temperature.png'
set title "Inside temperature"
set xlabel "Time"
set ylabel "Temperature [C]"

set style line 11 lt 1 lw 0.5 lc rgb "#AAAAAA"
set style line 12 lt 0 lw 0.1 lc rgb "#DDDDDD"
set mxtics 2
set mytics 4
set grid xtics ytics, ls 11
set grid mxtics mytics, ls 12

set xdata time
set xtics rotate by -12
set timefmt "%Y-%m-%d %H:%M:%S"
set format x "%d.%m. %H h"
plot "temps.log" using 1:($3)/1000 title "Temperature" with lines

Mám tak hotovou první část své budoucí meteostanice.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *