«

»

Ú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
[/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]

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*[/notice]

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]


[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]

VlhkostniSenzor_9

 

1 ping

Napsat komentář