Další možností jak využít Raspberry Pi v domácnosti je monitorování vlhkosti půdy v květináčích. Sledování poté může být zobrazeno přímo v konzoli (které je popsáno níže) nebo posláním mailu (když některé čidlo zjistí, že je hodnota pod určitou hodnotu, tak pošle email, kde bude upozornění, který konkrétní květináč je potřeba zalít), popřípadě v android zařízením, webu,… Abychom mohli toto uskutečnit, tak je zapotřebí koupit alespoň jedno vlhkostní čidlo a jeden integrovaný obvod MCP3008, který převádí analogový signál(lze napojit až 8 zařízení) z vlhkostního čidla na digitální do RPi. (čidlo které je použito má i digitální výstup, ale pro oddělení je použit právě integrovaný obvod)
1. Součástky a zapojení
součástky
- vlhkostní senzor
- integrovaný obvod MCP3008 (dokumentace zde ke stažení)
- kabely
- nepájivé pole
zapojení
foto
2. Nainstalování a nastavení Pi
po nainstalovaní rasbianu udělat update a ugrade
[notice]
sudo apt-get update
sudo apt-get upgrade
[/notice]
nainstalovat git, python pip a python dev
[notice]
sudo apt-get install git (uz bylo nainstalovano v zakladu)
sudo apt-get install python-pip (uz bylo nainstalovano v zakladu)
sudo apt-get install -y python-dev
[/notice]
stáhnout a nainstalovat py-spidev
[notice]
cd ~
git clone git://github.com/doceme/py-spidev
cd py-spidev/
sudo python setup.py install
[/notice]
vytvořit složku pro python skripty napřiklad py
[notice]
cd ..
cd ~
mkdir py
cd py
[/notice]
povolit SPI v základním nastavení systému
[notice]sudo raspi-config [/notice]
a restart
kontrola, zda je nastaveno v pořadku
[notice]sudo ls /dev/spidev*[/notice]
3. Základní test + testovací skript(zobrazení v konzoli)
vytvořit si pomocnou knihovnu pro integrovaný obvod MCP3008
[notice]sudo nano mcp3008.py[/notice]
[notice]import spidev spi = spidev.SpiDev() spi.open(0,1) def readadc(adcnum): if ((adcnum > 7) or (adcnum < 0)): return -1 r = spi.xfer2([1,(8+adcnum)<<4,0]) adcout = ((r[1]&3) << 8) + r[2] return adcout def read_pct(adcnum): r = readadc(adcnum) return int(round((r/1023.0)*100)) def read_3v3(adcnum): r = readadc(adcnum) v = (r/1023.0)*3.3 return v def readadc_avg(adcnum): r = [] for i in range (0,10): r.append(readadc(adcnum)) return sum(r)/10.0 def read_2Y0A02_sensor(adcnum): r = [] for i in range (0,10): r.append(readadc(adcnum)) a = sum(r)/10.0 v = (a/1023.0)*3.3 d = 16.2537 * v**4 - 129.893 * v**3 + 382.268 * v**2 - 512.611 * v + 306.439 cm = int(round(d)) return cm[/notice]
uzavřít a uložit soubor (CTRL+x a pak “y” a enter)
základní test v pythonu (načtení hodnoty s čidla)
[notice]sudo python[/notice]
[notice]>>> import mcp3008
>>> mcp3008.readadc(5)[/notice]
428
vytvoření skriptu, který zobrazuje aktuální hodnotu
[notice]sudo nano test_senzor_vlhkosti.py[/notice]
[notice]
from time import sleep
import mcp3008
PREVIOUS_LINE=„\x1b[1F“
RED_BACK=„\x1b[41;37m“
GREEN_BACK=„\x1b[42;30m“
YELLOW_BACK=„\x1b[43;30m“
RESET=„\x1b[0m“
print ‚\x1b[2J\x1b[H‘
print ‚Vlhkostni senzor‘
print ‚===============\n‚
while True:
m = mcp3008.readadc(5)
if m < 150:
background = RED_BACK
elif m < 500:
background = YELLOW_BACK
else:
background = GREEN_BACK
print PREVIOUS_LINE + background + „Uroven vlhkosti: {:>5} „.format(m) + RESET
sleep(.5)
[/notice]
spuštění skriptu pro zjištění vlhkosti
[notice]sudo python test_senzor_vlhkosti.py[/notice]
1 ping