Lekce 15 - Raspberry Pi - Vodní čerpadlo
V předchozí lekci, Raspberry Pi - Dotykový displej, jsme si k Raspberry Pi připojili dotykový displej.
Dnes k našemu Raspberry Pi připojíme vodní čerpadlo. Napíšeme si k tomu jednoduchý kód, který bude čerpadlo ovládat a řekneme si, jak funguje. Jako už mnohokrát předtím zde ukáži vlastní zapojení a schéma zapojení vytvořené pomocí Fritzing.
Potřebné součástky
K úspěšnému zapojení budeme potřebovat:
- Raspberry Pi
- vodní čerpadlo (lze koupit zde)
- relé (lze koupit zde)
- napájecí zdroj pro čerpadlo
- přinejlepším nepájivé pole a několik drátků, případně pouze drátky
Pokud se vám stejně jako mně rozbilo relé, nezoufejte. Lze místo něj použít i h-bridge. Více o tom jak zapojit h-bridge naleznete v předchozí lekci.
Jak funguje čerpadlo
Mini ponorné vodní čerpadlo je odstředivé vodní čerpadlo, což znamená, že používá motor k pohonu oběžného kola, které je navrženo tak, aby rotovalo a vytlačovalo vodu směrem ven. Motor je umístěn ve vodotěsném těsnění a je spojen s tělem vodního čerpadla, které pohání. Elektronickou částí čerpadla je tedy motor. Z toho důvodu můžeme připojit (stejně jako motor) čerpadlo na zdroj napájení a bude fungovat. V takovém případě ho ale nemůžeme ovládat.
Jak funguje relé
Relé je elektromagnetický spínač ovládaný nízkým elektrickým proudem, který může zapnout nebo vypnout mnohem vyšší elektrický proud. Srdcem relé je elektromagnet (cívka drátu, která se stává dočasným magnetem, když jím prochází elektřina).
Relé si můžeme představit jako "elektrickou páku". Zapneme jej malým proudem a ono sepne jiný spotřebič s mnohem větším proudem. Samotné relé zahrnuje dva obvody: napájecí obvod a kontaktní obvod. Cívka je na straně napájení a kontakty na kontaktní straně.
Když je cívka relé pod napětím, tok proudu cívkou vytváří magnetické pole. Magnetická cívka přitahuje železnou desku, která je součástí kotvy. Jeden konec kotvy je připevněn ke kovovému rámu, který je vytvořen tak, aby se kotva mohla otáčet, zatímco druhý konec otevírá a zavírá kontakty. Kontakty se dodávají v řadě různých konfigurací v závislosti na počtu přerušení, pólů a hodů, které tvoří relé.
Zapojení čerpadla
Zapojení čerpadla bude trochu složitější. Samotné čerpadlo stejně jako mnoho motorů potřebuje vlastní napájení. K jeho ovládání je místo h-můstku potřeba relé. Naše čerpadlo má pouze plus a minus. Relé má na jedné straně tři piny a na druhé straně tři šroubovací zdířky.
Minus čerpadla zapojíme do minusu externího napájení a do jedné ze zdířek na relé. Plus externího napájení zapojíme taktéž do jedné ze zdířek relé. Zdroj napájení a čerpadlo máme tedy zapojené.
Zbývá nám ještě zapojit relé. Z druhé strany relé naproti zdířkám máme tři piny. Jeden je označen "+/vcc". Tento pin spojíme s "5v" pinem na Raspberry Pi. Druhý pin má označení "-/gnd". Ten spojíme s GND na našem Raspberry Pi. Nakonec poslední pin je ten, přes který budeme relé a čerpadlo ovládat. Ten zapojíme do GPIO18 (lze zapojit do jakéhokoliv GPIO portu).
Programová část
Pojďme si zkusit čerpadlo ovládat. Napíšeme si jednoduchý program, kterému nastavíme, aby v určitý čas čerpadlo zapnul a hned zase vypnul.
Import knihoven
První musíme importovat knihovny. Dnes budeme potřebovat tři knihovny:
GPIO
knihovnutime
knihovnu- a
datetime
knihovnu.
První dvě knihovny už docela dobře známe. Knihovna GPIO
nám umožňuje pracovat s GPIO porty. time
nám pak umožňuje
například pozastavit program v bodě, ve kterém zrovna je, na určitý čas.
Třetí knihovnu budeme používat na zjištění aktuálního času:
import RPi.GPIO as GPIO import time from datetime import datetime
Knihovna datetime
(jak název napovídá) poskytuje všechny
informace týkající se data a času. Pomocí této knihovny můžeme
například zjišťovat aktuální čas v různých pásmech nebo pouze zjistit
aktuální datum.
Nekonečná smyčka
Vytvoříme si nekonečnou smyčku while
. Do této složky
vložíme první proměnnou cas
, ve které se bude ukládat
aktuální čas.
while True:
Podmínka
Ve smyčce while
si uděláme podmínku if
, která
bude porovnávat aktuální čas s námi nastaveným časem.
cas = datetime.now() if cas.hour == 15 and cas.minute == 15: GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) GPIO.output(18, GPIO.LOW) time.sleep(1) GPIO.output(18, GPIO.HIGH) GPIO.cleanup()
Vysvětleme si, co říká kód výše. Pokud bude zadaná podmínka splněna, stane se, že:
- Funkce
GPIO.setmomode()
bude nastavena naBCM
. - Funkce
GPIO.setup()
se nastaví na náš port a naOUT
. NastaveníOUT
znamená, že my budeme posílat data do senzoru a ne přijímat data od něj. - Poté nastavíme první
GPIO.output
naLOW
. V čerpadle se spustí motor a voda půjde ven. - Použijeme funkci
time.sleep()
, aby se motor pozastavil ve stavuLOW
na 1 sekundu. - Poté funkci
GPIO.output()
přenastavíme naHIGH
. - Nakonec použijeme funkci
GPIO.clenup()
, abychom uvolniliGPIO port
a mohli ho znovu používat.
Sleep
Smyčka musí končit další funkcí time.sleep()
. Tentokrát
ale na celou minutu (60
sekund), abychom zamezili tomu, aby se
podmínka prováděla stále dokola:
time.sleep(60)
Vysvětlení
Program bude dokola porovnávat aktuální čas s časem, který jsme nastavili. Když tento čas nastane, program spustí čerpadlo. Po spuštění bude čerpadlo chvíli propouštět vodu. Po stanoveném čase se vypne a pak se program uspí na zbytek minuty, aby se do konce minuty už čerpadlo nemohlo spustit. Po skončení spánku začne opět porovnávat aktuální čas s časem, který jsme nastavili:
Celý kód :
import RPi.GPIO as GPIO import time from datetime import datetime while True: cas = datetime.now() if cas.hour == 15 and cas.minute == 15: GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT) GPIO.output(18, GPIO.LOW) time.sleep(1) GPIO.output(18, GPIO.HIGH) GPIO.cleanup() time.sleep(60)
Věřím, že se vám připojení a nakódování čerpadla podařilo. Své dojmy a případné dotazy můžete zanechat v diskusi pod článkem 🙂
V další lekci, Raspberry Pi - Připojení kamery, si k Raspberry Pi připojíme kameru.