15. diel - Raspberry Pi - Vodné čerpadlo
V predchádzajúcej lekcii, Raspberry Pi - Dotykový displej , sme si k Raspberry Pi pripojili dotykový displej.
Dnes k nášmu Raspberry Pi pripojíme vodné čerpadlo. Napíšeme si k tomu jednoduchý kód, ktorý bude čerpadlo ovládať a povieme si ako funguje. Ako už mnohokrát predtým tu ukážem vlastné zapojenie a schému zapojenia vytvorené pomocou Fritzing.
Potrebné súčiastky
Na úspešné zapojenie budeme potrebovať:
- Raspberry Pi
- vodné čerpadlo ( je možné kúpiť tu
- relé ( možno kúpiť tu
- napájací zdroj pre čerpadlo
- prinajlepšom nepájivé pole a niekoľko drôtikov, prípadne iba drôtiky
Pokiaľ sa vám rovnako ako mne rozbilo relé, nezúfajte. Je možné namiesto neho použiť aj h-bridge. Viac o tom ako zapojiť h-bridge nájdete v predchádzajúcej lekcii.
Ako funguje čerpadlo
Mini ponorné vodné čerpadlo je odstredivé vodné čerpadlo, čo znamená, že používa motor na pohon obežného kolesa, ktoré je navrhnuté tak, aby rotovalo a vytláčalo vodu smerom von. Motor je umiestnený vo vodotesnom tesnení a spojený s telom vodného čerpadla, ktoré poháňa. Elektronickou časťou čerpadla je teda motor. Z toho dôvodu môžeme pripojiť (rovnako ako motor) čerpadlo na zdroj napájania, a bude fungovať. V takom prípade ho ale nemôžeme ovládať.
Ako funguje relé
Relé je elektromagnetický spínač ovládaný nízkym elektrickým prúdom, ktorý môže zapnúť alebo vypnúť oveľa vyšší elektrický prúd. Srdcom relé je elektromagnet (cievka drôtu, ktorá sa stáva dočasným magnetom, keď ním prechádza elektrina).
Relé si môžeme predstaviť ako „elektrickú páku“. Zapneme ho malým prúdom a ono zopne iný spotrebič s oveľa väčším prúdom. Samotné relé zahŕňa dva obvody: napájací obvod a kontaktný obvod. Cievka je na strane napájania, a kontakty na kontaktnej strane.
Keď je cievka relé pod napätím, tok prúdu cievkou vytvára magnetické pole. Magnetická cievka priťahuje železnú dosku, ktorá je súčasťou kotvy. Jeden koniec kotvy je pripevnený ku kovovému rámu, ktorý je vytvorený tak, aby sa kotva mohla otáčať, zatiaľ čo druhý koniec otvára a zatvára kontakty. Kontakty sa dodávajú v rade rôznych konfigurácií v závislosti od počtu prerušení, pólov a hodov, ktoré tvoria relé.
Zapojenie čerpadla
Zapojenie čerpadla bude trochu zložitejšie. Samotné čerpadlo rovnako ako mnoho motorov potrebuje vlastné napájanie. Na jeho ovládanie je namiesto h-mostíka potrebné relé. Naše čerpadlo má iba plus a mínus. Relé má na jednej strane tri piny a na druhej strane tri skrutkovacie zdierky.
Mínus čerpadla zapojíme do mínusu externého napájania a do jednej zo zdierok na relé. Plus externého napájania zapojíme taktiež do jednej zo zdierok relé. Zdroj napájania a čerpadlo máme teda zapojené.
Zostáva nám ešte zapojiť relé. Z druhej strany relé oproti zdierkam máme tri piny. Jeden je označený "+/vcc". Tento pin spojíme s "5v" pinom na Raspberry Pi. Druhý pin má označenie "-/gnd". Ten spojíme s GND na našom Raspberry Pi. Nakoniec posledný pin je ten, cez ktorý budeme relé a čerpadlo ovládať. Ten zapojíme do GPIO18 (možno zapojiť do akéhokoľvek GPIO portu).
Programová časť
Poďme si skúsiť čerpadlo ovládať. Napíšeme si jednoduchý program, ktorému nastavíme, aby v určitý čas čerpadlo zapol a hneď zase vypol.
Import knižníc
Prvé musíme importovať knižnice. Dnes budeme potrebovať tri knižnice:
GPIO
knižnicutime
knižnicu- a
datetime
knižnicu.
GPIO
nám
umožňuje pracovať s GPIO portami. time
nám potom umožňuje
napríklad pozastaviť program v bode, v ktorom práve je, na určitý čas.
Tretiu knižnicu budeme používať na zistenie aktuálneho času:
import RPi.GPIO as GPIO import time from datetime import datetime
Knižnica datetime
(ako názov napovedá) poskytuje všetky
informácie týkajúce sa dátumu a času. Pomocou tejto knižnice môžeme
napríklad zisťovať aktuálny čas v rôznych pásmach alebo iba zistiť
aktuálny dátum.
Nekonečná slučka
Vytvoríme si nekonečnú slučku while
. Do tejto zložky
vložíme prvú premennú cas
, v ktorej sa bude ukladať aktuálny
čas.
while True:
Podmienka
V slučke while
si urobíme podmienku if
, ktorá
bude porovnávať aktuálny čas s nami nastaveným časom.
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()
Vysvetlime si, čo hovorí kód vyššie. Pokiaľ bude zadaná podmienka splnená, stane sa, že:
- Funkcia
GPIO.setmomode()
bude nastavená naBCM
. - Funkcia
GPIO.setup()
sa nastaví na náš port a naOUT
. NastavenieOUT
znamená, že my budeme posielať dáta do senzora, a nie prijímať dáta od neho. - Potom nastavíme prvý
GPIO.output
naLOW
. V čerpadle sa spustí motor a voda pôjde von. - Použijeme funkciu
time.sleep()
, aby sa motor pozastavil v staveLOW
na 1 sekundu. - Potom funkciu
GPIO.output()
prenastavíme naHIGH
. - Nakoniec použijeme funkciu
GPIO.clenup()
, aby sme uvoľniliGPIO port
a mohli ho znova používať.
Slučka musí končiť ďalšou funkciou time.sleep()
. Tentoraz
ale na celú minútu (60
sekúnd) aby sme zamedzili tomu, aby sa
podmienka vykonávala stále dookola:
time.sleep(60)
Vysvetlenie
Program bude dookola porovnávať aktuálny čas s časom, ktorý sme nastavili. Keď tento čas nastane, program spustí čerpadlo. Po spustení bude čerpadlo chvíľu prepúšťať vodu. Po stanovenom čase sa vypne a potom sa program uspí na zvyšok minúty, aby sa do konca minúty už čerpadlo nemohlo spustiť. Po skončení spánku začne opäť porovnávať aktuálny čas s časom ktorý sme 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)
Verím, že sa vám pripojenie a nakódovanie čerpadla podarilo. Svoje dojmy a prípadné otázky môžete zanechať v diskusii pod článkom 🙂
V ďalšej lekcii, Raspberry Pi - Pripojenie kamery , si k Raspberry Pi pripojíme kameru.