Raspberry pi DS18B20 (saunan lämpötilamittari)

ketkentä piirros

Tarkoitus on tehdä raspberryllä saunan, pukuhuoneen ja kellarin lämpötilamittari.
Jota voi katsella selaimesta, vaikka kännykällä.
Johdotus tehdään klma 4×0,8+0,8.
Lämpösensorina käytetään ds18b20.

1)Vedetään johdot lämpötila sensoreille

Käytin johtona klma 4×0,8+0,8.
160308-DSC_0384

Välillä piti juotella kolvilla.
160308-DSC_0380

Lämpösensorit paikoillaan.
160308-DSC_0387

160308-DSC_0382

2) Tehdään kytkentä ja laitetaan raspberry paikkoilleen

Kytketään DS18B20 sensorit raspberryn 3.3v, Ground ja GPIO4 pinneihin.
4,7k ohm vastus 3.3v ja GPIO4 pinnien välille.

kytkentä

DS18B20 kytkentä

Raspberry pi 2 paikoillaan.
raspberry paikoillaan

3)Webserver ja ohjelma raspberryyn

Asennettaan apache ja php:

sudo apt-get install apache2 -y
sudo apt-get install php5 libapache2-mod-php5 -y

Editoi /boot/config.txt tiedostoa sudo nano /boot/config.txt komennolla. Lisää tiedoston loppuun alla oleva rivi.

dtoverlay=w1-gpio

Katsotaan lämpösensorien tunnukset ja otetaan muistiin.
esim. 28-000006b35f17

sudo modprobe w1-gpio
sudo modprobe w1-therm
ls /sys/bus/w1/devices

Mennään html hakemistoon.

cd /var/www/html/

Luodaan php tiedostot, jotka hakevat lämpötilat ja luodaan index.php, joka nayttää ne näyttää selaimessa.

touch sauna.php pukuhuone.php kellari.php index.php

Kirjoitetaan sisältö sauna.php tiedostolle. Vaihda oman lämpösensorin tunnus 28-000006b1d427 tilalle.

sudo nano sauna.php
<?php
//Asetetaan fontin koko ja muoto
header('Content-type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
echo '<font size="18"'." face='Arial'>";

//Asetetaan tiedosto
$file = '/sys/bus/w1/devices/28-000006b1d427/w1_slave';
//Luetaan tedosto rivi rivilta
$lines= file($file);
//Otetaan lampotila ensimmaiselta rivilta
$temp = explode('=', $lines[1]);
//Asetetaan sopivaan muotoon (esim. 21,3)
$temp = number_format($temp[1] / 1000, 1, ',', '');

echo "Sauna: " . $temp . "°C";
?>

Kirjoitetaan sisältö pukuhuone.php tiedostolle. Vaihda oman lämpösensorin tunnus 28-000006b2918f tilalle.

sudo nano pukuhuone.php
<?php
//Asetetaan fontin koko ja muoto
header('Content-type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
echo '<font size="18"'." face='Arial'>";

//Asetetaan tiedosto
$file = '/sys/bus/w1/devices/28-000006b2918f/w1_slave';
//Luetaan tedosto rivi rivilta
$lines = file($file);
//Otetaan lampotila ensimmaiselta rivilta
$temp = explode('=', $lines[1]);
//Asetetaan sopivaan muotoon (esim. 21,3)
$temp = number_format($temp[1] / 1000, 1, ',', '');

echo "Pukuhuone: " . $temp . "°C";
?>

Kirjoitetaan sisältö kellari.php tiedostolle. Vaihda oman lämpösensorin tunnus 28-000006b35f17 tilalle.

sudo nano kellari.php
<?php
//Asetetaan fontin koko ja muoto
header('Content-type: text/html; charset=utf-8');
mb_internal_encoding('UTF-8');
echo '<font size="18"'." face='Arial'>";

//Asetetaan tiedosto
$file = '/sys/bus/w1/devices/28-000006b35f17/w1_slave';
//Luetaan tedosto rivi rivilta
$lines = file($file);
//Otetaan lampotila ensimmaiselta rivilta
$temp = explode('=', $lines[1]);
//Setup some nice formatting (i.e. 21,3)
$temp = number_format($temp[1] / 1000, 1, ',', '');

echo "Kellari: " . $temp . "°C";
?>

Kirjoitetaan index.php joka päivittää lämpötiloja ja näyttää ne selaimessa.

sudo nano index.php
<!DOCTYPE html>
<html>
<body>
<script  src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"> </s$

 <script>
function autoRefresh_div()
{
  $("#sauna").load("sauna.php");// functio lataa datan joka x sekuntti
  $("#pukuhuone").load("pukuhuone.php");// functio lataa datan joka x sekuntti
  $("#kellari").load("kellari.php");// functio lataa datan joka x sekuntti
}

setInterval('autoRefresh_div()', 1000); // paivita div joka 1 sekuntti
</script>

4)Testaus

Katsotaan raspberryn ip osoite.

ifconfig

Kirjoitetaan raspberryn ip osoite selaimeen ja nyt lämpötilojen pitäisi näkyä jos kaikki meni hyvin. 😀
Raspberryn ip osoite kannattaa asettaa kiinteäksi.