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
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
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
stáhnout a nainstalovat py-spidev
Notice
cd ~
git clone git://github.com/doceme/py-spidev
cd py-spidev/
sudo python setup.py install
vytvořit složku pro python skripty napřiklad py
Notice
cd ..
cd ~
mkdir py
cd py
povolit SPI v základním nastavení systému




a restart
kontrola, zda je nastaveno v pořadku
Notice
sudo ls /dev/spidev*

3. Základní test + testovací skript(zobrazení v konzoli)
vytvořit si pomocnou knihovnu pro integrovaný obvod MCP3008
Notice
sudo nano mcp3008.py
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
uzavřít a uložit soubor (CTRL+x a pak “y” a enter)
základní test v pythonu (načtení hodnoty s čidla)
Notice
>>> import mcp3008
>>> mcp3008.readadc(5)
428
vytvoření skriptu, který zobrazuje aktuální hodnotu
Notice
sudo nano test_senzor_vlhkosti.py
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)
spuštění skriptu pro zjištění vlhkosti
Notice
sudo python test_senzor_vlhkosti.py

1 comment
Fish
19.2.2016 na 14.44 (UTC 2) Link to this comment
super, diky za clanek