Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 12 - Raspberry Pi - Senzor vlhkosti půdy

V předchozí lekci, Raspberry Pi - Membránová klávesnice 4x4 , jsme si k Raspberry Pi připojili membránovou klávesnici 4x4.

Dnes se podíváme na připojení senzoru vlhkosti půdy k našemu Raspberry Pi, koukneme se na různé způsoby zapojení a jak naprogramovat aplikaci, která nás bude upozorňovat na potřebu zvlhčení půdy.

Schéma zapojení bylo vytvořené pomocí Fritzing.

Potřebné součástky

K úspěšnému zapojení budeme potřebovat:

  • Raspberry Pi
  • senzor vlhkosti půdy (např. tento senzor)
  • při nejlepším nepájivé pole a několik drátků, případně pouze drátky

bonus :

Raspberry Pi

Jak funguje senzor vlhkosti půdy?

Senzor měří vlhkost půdy na základě elektrické vodivosti země. Odpor půdy se zvyšuje spolu se vzduchem. Když je v půdě velké množství vody, půda má větší elektrickou vodivost a odpor je menší. Na senzoru se nacházejí dvě elektrody. Elektrický odpor se měří právě mezi těmito elektrodami. Komparátor aktivuje digitální výstup, když je překročena nastavitelná prahová hodnota. Komparátor je většinou k senzoru připojen pomocí dvou kabelů. Z něj pak vycházejí 3 nebo 4. Komparátor je malá destička (většinou dodávaná spolu se senzorem), která umožňuje dostávat ze senzoru data buď analogově nebo digitálně.

Zapojení senzoru vlhkosti půdy

Při zapojení je důležitý typ komparátoru. Náš komparátor má 4 piny, a to AO, DO, VCC a GND. Tento typ lze zapojit jak analogově tak digitálně.

AO – analogový (Analog Output) DO – digitální (Digital Output)

Analogový pin můžeme připojit pouze na analogový pin, avšak pin digitální můžeme připojit na jakýkoliv pin. Raspberry Pi nemá analogové piny, proto pro použití senzoru s AO bude potřeba ADC. Použití analogového portu u analogového senzoru má tu výhodu, že z něj lze dostávat více přesná data. Z digitálního portu budeme dostávat čistě 1 nebo 0.

Tentokrát budeme mít dva nákresy. Jeden s použitím analogového portu s převodníkem, druhý s použitím digitálního portu bez převodníku.

ADC

Na chvíli se ještě pozastavíme u ADC (Analog-to-Digital Converter), v češtině AD převodník. Jak z názvu vyplývá, převádí signál analogový na signál digitální. U Arduino UNO desky máme zabudovaných 5 analogových portů, na desce Raspberry Pi však není ani jeden. Proto jedinou možností kterou máme, kdybychom chtěli překládat AD signál, je tento převodník.

AD převodník však sám o sobě nefunguje. Je k němu potřeba speciální knihovna a překladač analogového signálu na volty. AD převodník nám totiž nevyhodí hodnotu ve voltech ale pouze čísla v rozmezí zhruba 0-25000. My si dnes ukážeme jak vypisovat pouze výstup AD, protože je z mého pohledu mnohem lépe využitelný než výstup přeložený.

Raspberry Pi

Zapojení DO

Digitální zapojení je jednoduché stačí pouze zapojit GND do GND na Raspberry Pi,VCC do 3,3V a DO do jednoho z portů GPIO.

Zapojení AO

Analogové zapojení bude trochu složitější. Musíme si připravit náš AD převodník. Vezmeme si např. převodník ADS1115. Převodník má klasicky VDD, GND které zapojíte do 3,3V a GND na Raspberry Pi. Dále SDA připojíme k GPIO portu 2(SDA port) a SCL připojíme k GPIO portu 3 (SCL port). Nakonec u senzoru vlhkosti zapojíme VCC do 3,3V a GND do GND na Raspberry Pi. Změna pak nastane po zapojení AO. To zapojíme do jednoho z analogových portů převodníku (např. A0):

Raspberry Pi

Jak vidíte na schématu, senzor vlhkosti půdy má možnost zapojení jak AO tak DO.

Programová část

Zapojení i programy budou dnes dva. Zapojení i program pro každé zapojení výše.

DO program

DO program je velmi jednoduchý jediné co bude sbírat tak true nebo false, a podle toho vyhodnocovat, zda je v půdě dost vody nebo ne:

import RPi.GPIO as GPIO
import time
port = 4
GPIO.setmode(GPIO.BCM)
GPIO.setup(port, GPIO.IN)

def vyhodnoceni(port):
        if GPIO.input(port):
                print "potřebuji vodu"
        else:
                print "mám dost vody"

První dva řádky už známe z předchozích lekcí, je to import důležitých knihoven. Jako vždy to budou GPIO a time. Dále si pak vytvoříme proměnnou port a nastavíme jí hodnotu 4 (číslo GPIO portu BCM). GPIO mode si nastavíme na BCM. Do GPIO setup si dáme na první místo port a na druhé GPIO.IN, aby port přijímal vstup (input) zvenčí (abychom od senzoru dostávali vstup právě 1 nebo 0).

Nakonec si vytvoříme funkci vyhodnoceni() s proměnnou port uvnitř. Ve funkci vyhodnoceni() máme podmínku if která čeká na vstup z portu GPIO. Když senzor bude mít málo vody, vypíše 1 (true). Podmínka se vyhodnotí jako vstup a vypíše potřebuji vodu. V opačném případě se provede else kde je výpis mám dost vody.

AO program

AO program vyžaduje pár speciálních kroků. V základu se ale jedná o podobný kód. Nyní však vyhodnocujeme, zda senzor překročil nebo nepřekročil určitou hodnotu.

Prvně si musíme nainstalovat knihovnu požadovanou naším převodníkem. To uděláme pomocí příkazu:

sudo pip3 install adafruit_ads1x15

Když máme knihovnu nainstalovanou, můžeme začít psát kód. Kód bude vypadat následovně :

import Adafruit_ADS1x15
adc = Adafruit_ADS1x15.ADS1115()
nastaveni= 1
hodnota = adc.read_adc(0, gain=nastaveni)
if hodnota<15000:
    print("mám dost vody")
else:
    print("potřebuji vodu")

V první části si importujeme nainstalovanou knihovnu adafruit. Dále si jí uložíme do proměnné adc. Vytvoříme si proměnnou nastaveni která nám bude nastavovat citlivost převodníku. Do proměnné hodnota pak zapíšeme hodnotu pomocí funkce adc.read_adc(). Příkaz řekne knihovně adc aby četla na portu 0 s gain nastaveném pomocí proměnné nastaveni.

Právě gain určuje rozsah citlivosti senzoru ve Voltech (Např.: 1 = rozsah od 4V do -4V):

Amplifier Gain Sensing Voltage Frame
2/3 +/-6.144 V
1 +/-4.096 V
2 +/-2.048 V
4 +/-1.024 V
8 +/-0.512 V
16 +/-0.256 V

Nakonec si pomocí podmínek určíme výpis programu. Když proměnná hodnota je menší než 15000, program vypíše text pod if (mám dost vody), jinak else vypíše text potřebuji vodu.

Věřím, že se vám připojení a nakódování senzoru vlhkosti půdy podařilo. Své dojmy a případné dotazy můžete zanechat v diskusi pod článkem 🙂

V další lekci, Pestrý šatník Raspberry Pi - Přehled HAT modulů, si trochu neobvykle budeme povídat o všech zajímavých kloboucích (HAT) pro naše Raspberry Pi.


 

Předchozí článek
Raspberry Pi - Membránová klávesnice 4x4
Všechny články v sekci
Raspberry Pi
Přeskočit článek
(nedoporučujeme)
Pestrý šatník Raspberry Pi - Přehled HAT modulů
Článek pro vás napsal Aleš Hlavín
Avatar
Uživatelské hodnocení:
5 hlasů
Raspberry
Aktivity