Jak na Arduino - 3. díl: První praktický Arduino projekt (LED dioda a PIR senzor)

TIPA

Seznam komponent

Pro sestavení tohoto projektu budeme potřebovat následující komponenty (většinu z nich naleznete v sortimentu TIPA.eu jako jednotlivé položky nebo v rámci výhodných sad):

Arduino UNO R3 – vývojová deska s mikrokontrolérem. Doporučujeme např. základní výukový kit Arduino UNO R3 Basic Kit, který kromě samotné desky obsahuje i kontaktní pole, propojovací vodiče, LED diody a rezistory. (TIP: Kód produktu 09830052)

PIR senzor (pohybové čidlo) – pasivní infračervený senzor pohybu, který při detekci pohybu vyšle na výstupu impuls (logickou 1). Typickým zástupcem je modul HC-SR501 (součást Arduino senzorových sad). PIR čidlo reaguje na změny tepelného záření v okolí – zkratka PIR vychází z anglického Passive InfraRed, tedy pasivní infračervené čidlo. Funguje na principu pyroelektrického jevu, kdy speciální materiál uvnitř senzoru generuje elektrický náboj při změně teploty. (TIP: samostatný PIR senzor najdete např. v sadě Arduino Sensor Kit 37ks nebo jako pohybové čidlo pro 12/24 V)

LED dioda – jednoduchá červená LED o průměru 5 mm pro vizuální indikaci. LED má dva vývody: delší nožička je anoda (připojuje se na kladný pól/arduino pin) a kratší nožička je katoda (připojuje se k zemi GND). Můžete použít např. LED 5mm červená difuzní (běžně k dostání za pár korun).

Rezistor ~220 Ω – rezistor pro omezení proudu LED diodou, aby nedošlo k jejímu poškození. Pro napájení 5 V postačí rezistor kolem 180–220 Ω. Rezistor zapojíme v sérii s LED diodou. (TIP: pokud nemáte přesnou hodnotu, běžná hodnota 220 Ω je ideální; v sadách Arduino již rezistory obvykle jsou, např. 10× 220 Ω v Basic Kitu.)

Nepájivé kontaktní pole – destička pro snadné propojení obvodu bez pájení. Použijeme nepájivé kontaktní pole 400-630 bodů, na které zapojíme senzor i LED. (TIP: Např. „Zkušební nepájivé kontaktní pole TIPA 630T“)

Propojovací vodiče (jumpery) – sady vodičů s konektory pro propojení pinů Arduina s komponentami na kontaktním poli. Budeme potřebovat několik kusů samice-samice, případně samice-samec podle typu kontaktního pole a senzoru.

Kromě toho nezapomeňte na USB kabel pro připojení Arduina k počítači (pro napájení a nahrání programu). Pokud používáte Arduino UNO Basic Kit, všechny nezbytné součástky (kromě PIR čidla) již v balení najdete.



Schéma zapojení komponent

Níže si popíšeme zapojení obvodu krok za krokem. Budeme vycházet ze schematického obrázku (Arduino UNO + PIR senzor + LED na kontaktním poli):

1. Napájení PIR senzoru: Připojte PIR senzor na nepájivém kontaktním poli. Vyhledejte na modulu piny označené VCC, OUT (někdy DO – digital output) a GND. Propojte pin VCC PIR senzoru s pinem 5V na Arduino desce. Pin GND PIR senzoru spojte s jedním z GND pinů na Arduinu (společná zem). Tím zajistíme napájení čidla z Arduina (5 V). U některých PIR modulů může být místo 5V použito i 3,3 V – náš modul HC-SR501 však pracuje spolehlivě na 5 V. (Poznámka: Po připojení napájení může PIR čidlo potřebovat ~30–60 sekund na kalibraci a adaptaci na okolní podmínky – během této doby může dávat náhodné impulsy.)

2. Výstup PIR senzoru do Arduina: Propojte výstupní pin OUT PIR senzoru s jedním z digitálních vstupů Arduina. V našem projektu použijeme digitální pin 2 na Arduino UNO. Tento pin budeme v programu číst jako vstup, který bude HIGH (logická 1), když PIR detekuje pohyb, a LOW (0), když je klid. Propojovací vodič zapojte z pinu OUT PIR do pinu číslo 2 na Arduino.

3. Zapojení LED diody s rezistorem: LED diodu zapojíme do obvodu tak, aby se rozsvítila, když Arduino pošle signál (napětí) na výstup. Zapojíme ji následovně: katodu LED (kratší nožičku) připojíme na zem (GND sběrnici) na kontaktním poli. Anodu LED (delší nožičku) připojíme na jeden konec rezistoru 220 Ω. Druhý konec rezistoru pak vodičem spojíme s vybraným digitálním výstupem Arduina. My využijeme digitální pin 13 na Arduino UNO. Pin 13 má tu výhodu, že na něm je i vestavěná LED na desce – při správném zapojení tak bude svítit jak externí LED na kontaktním poli, tak malá LED „L“ přímo na Arduinu. (Alternativa: můžete zvolit i jiný digitální pin, např. 7, a v programu tomu přizpůsobit kód. Pin 13 volíme pro jednoduchost.) Rezistor je v tomto obvodu zásadní – omezuje proud tekoucí LED diodou, aby nedošlo k jejímu spálení.

4. Kontrola propojení: Zkontrolujte, že všechny spoje jsou pevné a správně umístěné. Schéma by mělo vypadat tak, že PIR modul je připojen k 5V a GND, jeho výstup jde do pinu 2 Arduina. LED dioda je jednou stranou (katodou) na GND a druhou přes rezistor na pin 13 Arduina. Arduino UNO bude napájeno z USB portu počítače, což zároveň poskytuje 5 V pro senzor i LED.

Po správném zapojení by měl obvod v klidu (bez pohybu před čidlem) nechávat LED zhasnutou. Jakmile PIR senzor zaznamená pohyb, na jeho výstupu se objeví napětí (HIGH) a to se přivede do digitálního pinu Arduina – následně Arduino rozsvítí LED diodu. Následuje část, kde naprogramujeme Arduino tak, aby toto chování realizovalo.

Kód pro Arduino (blikání LED při pohybu)

Nyní přichází čas naprogramovat Arduino. Použijeme jednoduchý program v jazyce C/C++ (Arduino IDE), který neustále kontroluje stav PIR senzoru a podle toho vypíná nebo zapíná LED diodu. Kód nahrajte do desky Arduino UNO přes USB. (Pokud s nahráváním kódu začínáte, podívejte se na předchozí díly seriálu nebo na oficiální návod, jak v Arduino IDE kód zkompilovat a nahrát do desky.)

Zde je ukázka kódu:

Vysvětlení kódu:

●Nejprve v části setup() nastavíme pin PIR senzoru jako vstupní a pin LED diody jako výstupní. Tím dáme Arduinu vědět, odkud má číst signál a kam bude posílat výstup. Pro jistotu na začátku zhasneme LED (digitalWrite(LED_PIN, LOW)), aby po resetu nebyla náhodně rozsvícená.

●V nekonečné smyčce loop() pak neustále čteme stav PIR senzoru pomocí digitalRead(PIR_PIN). Funkce vrací hodnotu HIGH (1), pokud na pinu momentálně registruje napětí 5 V (tj. PIR detekoval pohyb a vypl output do HIGH), nebo LOW (0), pokud je na pinu 0 V (tj. žádný pohyb). Výsledek čtení uložíme do proměnné stav. Následně podmínkou if zjistíme, zda je stav == HIGH. Pokud ano, znamená to, že byl detekován pohyb – provedeme tedy digitalWrite(LED_PIN, HIGH) a přivedeme napětí na výstupní pin LED, čímž LED rozsvítíme. Pokud je stav LOW (else větev), na PIR senzoru není pohyb, a my pro jistotu LED zhasínáme (digitalWrite(LED_PIN, LOW)). Tato logika zajistí, že LED svítí právě v době, kdy čidlo detekuje pohyb, a zhasne krátce poté, co pohyb ustane.

Poznámka: PIR senzor má obvykle interní časovač, který udržuje výstup HIGH po dobu zhruba 2–3 sekund (dle modelu a nastavení) i po jediném pohybovém impulsu. To znamená, že LED zůstane svítit krátce po zachycení pohybu a poté automaticky zhasne, pokud se žádný další pohyb neobjeví. Náš kód tedy nemusí řešit žádné zpoždění zhasnutí – to obstarává samotný PIR modul. Pokud byste však chtěli ovlivnit dobu svícení sami, můžete to udělat – viz tipy níže. Nyní máte hotový funkční projekt: po připojení Arduina k napájení a nahrání kódu se LED dioda rozsvítí vždy, když PIR senzor zaznamená ve svém okolí pohyb (např. mávnutí rukou před čidlem), a opět zhasne, jakmile pohyb ustane.

Gratulujeme k sestavení prvního praktického Arduino projektu!


Tipy na rozšíření projektu

Tento jednoduchý projekt lze dále vylepšovat a rozšiřovat o další funkce a komponenty. Zde je několik námětů pro zvídavé kutily:

Časové řízení: V základní verzi LED svítí po celou dobu, co PIR detekuje pohyb, a zhasne ihned po jeho ukončení. Můžete ale zařídit, aby LED svítila jen po určitou dobu po detekci pohybu. Například přidejte do kódu zpoždění zhasnutí – jakmile PIR sepne, nechat LED svítit ještě třeba 5 sekund a teprve pak ji zhasnout, i když už je PIR mezitím v LOW. Toho docílíte buď jednoduchým použitím funkce delay() po rozsvícení LED, nebo lepší metodou využití funkce millis() a měření času od poslední detekce. Tím vytvoříte efekt časového spínače (praktické třeba pro automatické osvětlení místnosti, které nezhasne okamžitě, ale až po chvíli). Zapojení hardwaru není třeba měnit. Pro pokročilejší řešení lze využít i modul reálného času RTC (Real Time Clock) k pokročilému časování událostí.

Více LED diod nebo jiný výstup: K jednomu PIR senzoru můžete připojit více LED diod najednou – například umístit několik LED do různých koutů místnosti nebo použít LED různých barev. Každou LED zapojte s vlastním rezistorem na samostatný digitální výstup Arduina. V programu pak můžete například při detekci pohybu rozsvítit více LED zároveň, případně je rozblikat či rozsvěcet postupně (sekvenční efekt). Další možností je místo LED spínat jiný akční člen, třeba bzučák (alarm) nebo relé ovládající lampičku či sirénu.

Integrace s dalšími senzory: PIR čidlo detekuje pohyb bez ohledu na světlo. Pokud chcete, aby LED svítila jen v noci nebo ve tmě, můžete přidat fotoodpor (světelný senzor). Ten změří úroveň okolního osvětlení. Arduino pak vyhodnotí nejen pohyb, ale i zda je tma, a LED rozsvítí jen pokud jsou splněny obě podmínky (pohyb + tma). Typickým řešením je použití odporového fotorezistoru v kombinaci s analogovým vstupem Arduina. Podobně by šlo doplnit i jiné senzory – např. teplotní senzor, aby LED signalizovala pohyb jen při určitých teplotních podmínkách apod. Tím si vytvoříte sofistikovanější systém pro chytrou domácnost.

Bezdrátové ovládání a komunikace: Rozšiřte projekt o možnosti vzdáleného ovládání nebo notifikace. Například přidejte komunikační modul Bluetooth (např. oblíbený modul HC-06) pro propojení s mobilním telefonem. V reakci na pohyb může Arduino přes Bluetooth poslat zprávu do telefonu nebo naopak umožní, abyste LED diodu zapnuli/vypnuli vzdáleně z aplikace. Další variantou je Wi-Fi modul (např. ESP8266 nebo modernější vývojová deska ESP32 s Wi-Fi/Bluetooth) a posílání dat do domácí sítě či na internet – můžete tak logovat detekce do cloudu nebo ovládat světlo přes webovou aplikaci. Bezdrátové rozšíření vás posune od jednoduchého projektu k prvkům Internetu věcí (IoT) a skutečné chytré domácnosti. (TIP: TIPA nabízí např. samostatný Bluetooth modul HC-06 TTL či kombinovanou desku Arduino UNO + WiFi s integrovaným ESP8266 pro Wi-Fi připojení.)

Záznam pohybů (datalogging): Pokud vás zajímá analytika, můžete Arduino naučit ukládat údaje o detekovaném pohybu pro pozdější vyhodnocení. Stačí doplnit například modul reálného času RTC pro získání časových údajů a SD kartu k ukládání dat. Při každé detekci pohybu by Arduino zapsalo na paměťovou kartu záznam s časem události. Později zjistíte, kdy a jak často docházelo k pohybu (užitečné třeba pro sledování návštěvnosti prostoru, zabezpečení apod.). Pro tento účel existuje i hotové řešení: například Arduino Ethernet Shield W5100, který kromě připojení Arduina k síti Ethernet obsahuje i slot pro microSD kartu – můžete tak data nejen ukládat, ale i rovnou posílat po síti. Možností je spousta a od jednoduchého LED+PIR se můžete postupně propracovat k plnohodnotnému bezpečnostnímu systému.

Závěrem

V tomto článku jsme si prakticky předvedli jednoduchý Arduino projekt s PIR senzorem a LED – mini alarm, který rozsvítí diodu při zachycení pohybu. Projekt názorně ukazuje práci s digitálním vstupem (čidlo) a výstupem (LED) na Arduinu a je skvělým odrazovým můstkem pro další bastlení v oblasti chytré domácnosti a bezpečnostních vychytávek. Věříme, že vás první Arduino projekt pro začátečníky nadchl a pomohl vám pochopit základní principy elektroniky pro začátečníky v praxi. Experimentujte s rozšířeními – přidejte další senzory, moduly komunikace či akční členy. Arduino svět nabízí nekonečné možnosti a s komponenty z nabídky TIPA.eu (Arduino desky, senzory, moduly...) můžete své projekty neustále vylepšovat.

Hodně zdaru při bastlení!


Veškeré potřebné vybavení – od vývojových desek přes senzory až po drobné součástky najdete na našem e-shopu.


Líbí se vám svět Arduina?

Podívejte se také na náš první díl seriálu o Arduinu, kde vysvětlujeme, co je Arduino a jak s ním začít: Najdete ho >> TADY <<

A také druhý díl, kde jsme představili hotové moduly pro snadné použití. Najdete ho >> TADY <<


<< ZPĚT