«

»

Úno 07 2016

4. Monitorování vlhkosti půdy pomocí Raspberry Pi v domácnosti

VlhkostniSenzor_0Další 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í

VlhkostniSenzor_10

 

foto

DSCN6180DSCN6181DSCN6182DSCN6183DSCN6184DSCN6185DSCN6189DSCN6188


DSCN6186

 

 

 

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

Notice

sudo raspi-config 

VlhkostniSenzor_1 VlhkostniSenzor_2

VlhkostniSenzor_3 VlhkostniSenzor_4

VlhkostniSenzor_5 VlhkostniSenzor_6

VlhkostniSenzor_7

a restart

 

kontrola, zda je nastaveno v pořadku

Notice

sudo ls /dev/spidev*

VlhkostniSenzor_8

 

 

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

sudo python

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

VlhkostniSenzor_9

 

1 comment

  1. Fish

    super, diky za clanek

Napsat komentář