Raspberry PI jako IP teploměr
Malý jednodeskový počítač vyvíjený nadací Raspberry Pi Foundantion lze skvěle využívat pro jednoduché síťové aplikace. Počítač běží na operačním systému Raspbian (Debian pro Raspberry Pi), jako webový server slouží Light HTTPd s PHP a databází MySQL. Raspbian podporuje připojení 1-Wire zařízení, ve výchozím nastavení se počítá s připojením na port GPIO4. Jako teplotní čidlo jsem použil oblíbené DS18B20. Zapojení je standardní a mimo pull-up odporu 4K7 nejsou potřeba žádné další součástky.
Zapojení hardware máme, nyní se vrátím k softwaru. Jako operační systém je použit Raspbian, jak ho nainstalovat a zprovoznit je popsáno na stránkách nadace. Pro zobrazování naměřených hodnot je využívána skvělá aplikace TMEP od MultiTrickera. Ta potřebuje ke své činnosti webový server s podporou PHP a MySQL databázi.
Instalujeme Light HTTPd, MySQL a PHP:
sudo apt-get install lighttpd sudo apt-get install mysql-server sudo apt-get install php5-common php5-cgi php5 php5-mysql sudo lighty-enable-mod fastcgi-php sudo service lighttpd force-reload
Následuje stažení a rozbalení aplikace TMEP:
cd ~ wget https://github.com/MultiTricker/TMEP/archive/v8.01.tar.gz tar -xaf v8.01.tar.gz cd TMEP-8.01
Vytvoření databáze tmep, uživatele a hesla:
echo "
create database tmep;"
> mysql-db-create.sql
echo "grant all on tmep.* to tmep@localhost identified by 'pdRHmk#8zmfo';" >> mysql-db-create.sql
mysql -u root -p < mysql-db-create.sql
rm mysql-db-create.sql
Import struktury databáze:
mysql -u root -p tmep < mysql-db-full.sql
Zkopírování aplikace do adresáře webserveru:
cd app sudo cp -avr * /var/www
Úprava konfiguračního souboru:
sudo echo '$dbUzivatel = "tmep";' >> /var/www/config.php
sudo echo '$dbHeslo = "pdRHmk#8zmfo";' >> /var/www/config.php
sudo echo '$dbDb = "tmep";' >> /var/www/config.php
sudo echo '$vlhkomer = 0;' >> /var/www/config.php
sudo echo '$ip = "127.0.0.1";' >> /var/www/config.php
sudo echo '$umisteni = "Test";' >> /var/www/config.php
Smazání dočasných instalačních souborů a adresářů:
cd ~ rm v8.01.tar.gz rm -r TMEP-8.01
Nyní by již měla být webová aplikace plně funkční, ale bez naměřených hodnot. V následujících krocích vyzkoušíme komunikaci s připojeným teplotním čidlem. Nejprve nahrajeme potřebné moduly:
sudo modprobe w1-gpio sudo modprobe w1-therm
Uložíme je do konfiguračního souboru, pro zavádění při startu systému:
sudo echo 'w1-gpio' >> /etc/modules sudo echo 'w1-therm' >> /etc/modules
Aktualizace: V nových verzích Raspbianu je nutné přidat do souboru /boot/config.txt následující řádek:
dtoverlay=w1-gpio
Editaci souboru /boot/config.txt můžeme provést prostřednictvím editoru Nano:
sudo nano /boot/config.txt
Restartujeme systém:
sudo reboot
Vypíšeme zařízení na 1-Wire sběrnici:
ls /sys/bus/w1/devices/
Výpis může vypadat například následujícím způsobem:
Každé 1-Wire zařízení má unikátní adresu, která se skládá z prefixu a vlastní adresy. Teplotní čidla DS18B20 mají prefix 28. Číslo 28-000005bd23d4 značí unikátní adresu připojeného teplotního čidla. Tím máme kontrolu připojeného čidla za sebou a můžeme přejít k vlastnímu skriptu, který bude ukládat hodnoty do programu TMEP.
Skript je k dispozici zde: tmep.zip
Můžeme ho stáhnout do Raspberry PI pomocí následujících příkazů:
mkdir /home/pi/tmep cd /home/pi/tmep wget /data/uploads/rpi-ip-temp/tmep.zip unzip tmep.zip rm tmep.zip chmod +x tmep.sh
Přidáme spouštění skriptu každou minutu do plánovače úloh:
(sudo crontab -l; echo "* * * * * /home/pi/tmep/tmep.sh > /dev/null 2>&1") | sudo crontab
Po minutě by se měla v aplikaci TMEP zobrazit první odečtená hodnota teploty.