Jak si vyrobit jednoduchý výstražný systém Arduino

  • William Charles
  • 0
  • 3103
  • 198
reklama

Zjistit pohyb, pak vyděsit sakra z vetřelce s vysoko postavenými zvuky alarmu a blikajícími světly. Zní to zábavně? Samozřejmě, že ano. To je cíl dnešního projektu Arduino, vhodný pro začátečníky. Budeme psát úplně od nuly a testování, jak jdeme, takže můžete snad získat představu o tom, jak se to všechno dělá, spíše než jednoduše instalovat něco, co už jsem udělal.

Zřeknutí se odpovědnosti: Tím se váš dům vlastně nebude chránit. To mohl když se vkradne do tvého pokoje, udělej sestře nepříjemný šok.

Budeš potřebovat:

  • Arduino
  • Ultrazvuk “ping” senzoru, používám HC-SR04 PIR by bylo lepší, ale ty jsou drahé. Senzor ping může být tajně umístěn ve dveřích a stále obsluhovat stejnou základní práci, a je pouze 5 $
  • Pískový bzučák
  • LED pásové světlo, se stejným zapojením, jaké jsme použili v tomto projektu Sestavte si vlastní dynamické osvětlení prostředí pro Media Center Sestavte si své vlastní dynamické osvětlení prostředí pro Media Center Pokud sledujete hodně filmů na vašem PC nebo mediálním centru, Určitě jste čelili dilematu osvětlení; úplně zhasnete všechna světla? Máte je na plném výbuchu? Nebo… .

Když zapojujete tento projekt, neodstraňujte pokaždé vše - jen stavte na posledním bloku. Než se dostanete “Kódování poplachového systému” V této sekci byste měli mít všechny kousky a kousky zapojeny a vypadat asi takto:

Záblesky

Použijte schéma zapojení z tohoto projektu Sestavte si vlastní dynamické okolní osvětlení pro mediální centrum Vytvořte si vlastní dynamické okolní osvětlení pro mediální centrum Pokud sledujete hodně filmů v počítači nebo v mediálním centru, určitě jste čelili dilema osvětlení; úplně zhasnete všechna světla? Máte je na plném výbuchu? Nebo… připojte LED pásek; neměňte kolíky, protože potřebujeme výstup PWM. Pomocí tohoto kódu můžete rychle otestovat zapojení. Pokud vše půjde dobře, měli byste mít toto:

Senzor vzdálenosti

V modulu SR04 najdete 4 piny. VCC a GND přejděte na + 5 V kolejnici a zem; TRIG je pin používaný k vyslání sonarového signálu, nasaďte jej na pin 6; ECHO se používá pro čtení signálu zpět (a proto vypočítat vzdálenost) - dát to na 7.

Aby věci byly neuvěřitelně jednoduché, existuje knihovna, kterou můžeme použít s názvem NewPing. Stáhněte si a umístěte do svých Arduino Knihovna složku a restartujte IDE před pokračováním. Test pomocí tohoto kódu; otevřete sériový monitor a ujistěte se, že je rychlost nastavena na 115200 baudů. S trochou štěstí byste měli vidět, jak se vám nějaká měření vzdálenosti posílají zpět docela vysokou rychlostí. Můžete najít rozptyl 1 nebo 2 centimetry, ale je to v pořádku. Zkuste spustit ruku před senzorem, pohybovat nahoru a dolů a sledovat měnící se hodnoty.

Kód by měl být docela srozumitelný. Na začátku je několik deklarací příslušných pinů, včetně maximální vzdálenosti - to se může lišit v závislosti na přesném senzoru, který máte, ale pokud dokážete přesně odečíst méně než 1 metr, měli byste být v pořádku.

Ve smyčce této testovací aplikace používáme ping () funkce vyslat sonar ping, získat zpět hodnotu v milisekundách, jak dlouho trvalo, než se hodnota vrátí. Abychom to pochopili, používáme knihovny NewPing postavené na konstantě US_ROUNDTRIP_CM, což definuje, kolik mikrosekund potřebuje jeden centimetr. Mezi pingy je také zpoždění 50 ms, aby se zabránilo přetížení senzoru.

Piezo Alarm

Piezo krystalový senzor je jednoduchý a levný bzučák a my můžeme použít PWM pin 3 k vytvoření různých tónů. Připojte jeden vodič ke kolíku 3, jeden k uzemňovací kolejnici - na tom nezáleží.

Pomocí tohoto kódu otestujte.

Jediným způsobem, jak zabít poněkud nepříjemný a hlasitý poplach, je vytáhnout zástrčky. Tento kód je trochu složitý na vysvětlení, ale zahrnuje použití sinusových vln k vytvoření výrazného zvuku. Vylepšete čísla tak, aby se daly hrát různými tóny.

Kódování poplachového systému

Nyní, když máme všechny kousky této hádanky, spojme je dohromady.

Jděte do toho a vytvořte nový náčrt Poplach. Začněte tím, že zkombinujete všechny proměnné a definice pinů, které jsme dosud použili v příkladech testů.

#include // Vyberte, které piny s podporou PWM se mají použít. #define RED_PIN 10 #define GREEN_PIN 11 #define BLUE_PIN 9 #define TRIGGER_PIN 6 // Arduino pin je připojen ke spouštěcímu kolíku na ultrazvukovém senzoru. #define ECHO_PIN 7 // Arduino pin svázaný s echo pinem na ultrazvukovém senzoru. #define MAX_DISTANCE 100 // Maximální vzdálenost, za kterou chceme ping (v centimetrech). #define ALARM 3 float sinVal; int toneVal; 

Začněte psáním základní založit() funkce - prozatím se budeme zabývat pouze světly. Přidal jsem 5sekundové zpoždění, než se hlavní smyčka začala, aby nám poskytla nějaký čas, abychom se v případě potřeby dostali z cesty.

void setup () // set pinModes pro RGB strip pinMode (RED_PIN, OUTPUT); pinMode (BLUE_PIN, OUTPUT); pinMode (GREEN_PIN, OUTPUT); // reset světel analogWrite (RED_PIN, 0); analogWrite (BLUE_PIN, 0); analogWrite (RED_PIN, 0); zpoždění (5000); 

Pojďme použít pomocnou funkci, která nám umožní rychle zapsat jednu hodnotu RGB na světla.

// pomocná funkce, která nám umožňuje poslat barvu jedním příkazem prázdná barva (nepodepsaná znaková červená, nepodepsaná znaková zelená, nepodepsaná znaková modrá) // funkce generující barvu analogWrite (RED_PIN, červená); analogWrite (BLUE_PIN, modrý); analogWrite (GREEN_PIN, zelená); 

Nakonec se naše smyčka prozatím bude skládat z jednoduchého barevného záblesku mezi červenou a žlutou (nebo, ať už chcete mít jakýkoli alarm - stačí změnit hodnoty RGB).

void loop () color (255,0,0); // červené zpoždění (100); barva (255 255,0); // žluté zpoždění (100); 

Nahrajte a otestujte, abyste se ujistili, že jste na správné cestě.

Nyní integrujme dálkový senzor, který spouští tato světla, pouze když něco přijde dovnitř, řekněme 50 cm (jen menší než šířka zárubně). Definovali jsme správné kolíky a knihovnu jsme importovali, takže před vámi založit() funkce přidejte následující řádek k vytvoření instance:

Sonar NewPing (TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing nastavení pinů a maximální vzdálenosti. 

Pod tím přidejte proměnnou pro uložení stavu spuštěného nebo neprovedeného alarmu, samozřejmě výchozí na false.

boolean triggered = false; 

Přidejte řádek do založit() funkce, abychom mohli sledovat výstup na sériovém a ladícím.

Serial.begin (115200); // Otevřete sériový monitor s rychlostí 115200 baud, abyste viděli výsledky pingu. 

Dále přejmenujme aktuální smyčku poplach() - to je to, co se bude volat, pokud byl spuštěn alarm.

void alarm () color (255,0,0); // červené zpoždění (100); barva (255 255,0); // yelow delay (100); 

Nyní vytvořte nový smyčka() funkce, ve které načteme nový ping, přečteme výsledky a spustíme alarm, pokud je něco detekováno v dosahu měřiče.

void loop () if (triggered == true) alarm ();  else delay (50); // Počkejte 50ms mezi pingy (asi 20 ping / sec). 29 ms by mělo být nejkratším zpožděním mezi pingy. unsigned int uS = sonar.ping (); // Odeslat ping, získejte čas ping v mikrosekundách (uS). unsigned int distance = uS / US_ROUNDTRIP_CM; Serial.println (vzdálenost); if (vzdálenost < 100) triggered = true;    

Dovolte mi krátce vysvětlit kód:

  • Začněte tím, že zkontrolujete, zda byl spuštěn alarm, a pokud ano, vypněte funkci alarmu (v tuto chvíli pouze blikají světla).
  • Pokud ještě není spuštěna, získejte aktuální hodnotu ze senzoru.
  • Pokud snímač čte <100 cm, something has padded the beam (adjust this value if it's triggering too early for you, obviously).

Vyzkoušejte to hned, než přidáme nepříjemný piezový bzučák.

Pracovní? Skvělý. Nyní přidáme ten bzučák zpět. Přidat pinMode do založit() rutina.

pinMode (ALARM, OUTPUT); 

Poté přidejte smyčku piezo bzučáku do funkce alarm ():

pro (int x = 0; x<180; x++)  // convert degrees to radians then obtain sin value sinVal = (sin(x*(3.1412/180))); // generate a frequency from the sin value toneVal = 2000+(int(sinVal*1000)); tone(ALARM, toneVal);  

Pokud se pokusíte kompilovat v tomto okamžiku, narazíte na chybu - nechal jsem to úmyslně, abyste viděli některé běžné problémy. V tomto případě NewPing i standardní tónová knihovna používají stejná přerušení - v zásadě se střetávají a není co dělat, abyste je opravili. Ach drahá.

Žádné obavy. Je to běžný problém a někdo již má řešení - stáhněte si a přidejte tento nový tón do své složky Arduino Libraries. Upravte začátek programu tak, aby obsahoval toto:

#zahrnout  

A upravte řádek:

 tón (ALARM, toneVal); 

na

 NewTone (ALARM, toneVal); 

místo toho.

A je to. Nastavte si budík ve dveřích své ložnice pro další nešťastný potenciální lupič.

Nebo pes nahoře, který se zdál být alarmem úplně nevázaný.

Máte potíže s kódem? Zde je kompletní aplikace. Pokud máte náhodné chyby, zkuste je vložit níže a uvidím, jestli vám mohu pomoci.

Obrazový kredit: Požární poplach přes Flickr




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.