Obsah:

Home Alert: Arduino + Cloud Messaging na velkém displeji: 14 kroků (s obrázky)
Home Alert: Arduino + Cloud Messaging na velkém displeji: 14 kroků (s obrázky)

Video: Home Alert: Arduino + Cloud Messaging na velkém displeji: 14 kroků (s obrázky)

Video: Home Alert: Arduino + Cloud Messaging na velkém displeji: 14 kroků (s obrázky)
Video: Jetson Nano Custom Object Detection - how to train your own AI 2024, Listopad
Anonim
Home Alert: Arduino + Cloud Messaging na velkém displeji
Home Alert: Arduino + Cloud Messaging na velkém displeji
Home Alert: Arduino + Cloud Messaging na velkém displeji
Home Alert: Arduino + Cloud Messaging na velkém displeji
Home Alert: Arduino + Cloud Messaging na velkém displeji
Home Alert: Arduino + Cloud Messaging na velkém displeji

V době mobilních telefonů byste očekávali, že lidé budou reagovat na váš hovor 24/7.

Nebo ne. Jakmile se moje žena vrátí domů, telefon zůstane zakopaný v kabelce nebo je vybitá baterie. Nemáme pevnou linku. Zavolat nebo poslat SMS a požádat o odvoz domů z vlakového nádraží za deštivé noci nebo zavolat a zeptat se, jestli mám klíče stále na stole, je doslova zbožné přání.

Tento problém mám dost často na to, abych zaručil řešení. Trochu šťourat v Arduinu a Freetronics Dot Matrix Display (DMD) vyústilo ve velmi otravný (pro moji manželku) gadget, ale pro mě úžasné komunikační zařízení a informační centrum. Miluji to a je to pouze verze 1!

Home Alert je vyroben z těchto částí:

  • Bodový maticový displej Freetronics, což je řada LED diod 16x32. Přicházejí v různých barvách, ale já používám červenou, abych zdůraznil, že tento gadget je pro „kritická“oznámení.
  • Arduino Uno s ethernetovým štítem.
  • Únik hodin v reálném čase, takový nebo takový.
  • Piezo bzučák
  • Čidlo teploty a vlhkosti DHT22.

Home Alert je ovládán prostřednictvím webové stránky, která je hostována na Heroku, hostiteli cloudové aplikace. Webová stránka je kódována v Ruby pomocí rámce webové aplikace Sinatra a úložiště klíčů a hodnot Redis.

Podívejte se na domovskou stránku (v tomto kroku zobrazte na prvním připojeném obrázku), kde formulář čeká na novou zprávu od uživatele.

První pole přijímá numerický hardwarový kód. Je to kód, který vám umožňuje cílit na konkrétní systém Home Alert, protože každému může být přidělen jedinečný kód. Nebo můžete mít více Home Alerts sdílejících stejný kód, aby se stejná zpráva zobrazovala na více místech.

Zpráva, kterou chcete zobrazit, přejde do druhého pole. Jakýkoli text, který tam zadáte, se zobrazí v DMD.

Pokud chcete dělat hluk, zaškrtněte Ano! zaškrtávací políčko a bzučák si určitě získá pozornost kohokoli v okolí.

V tomto článku vám ukážu, jak vytvořit vlastní systém Home Alert, hardwarový i softwarový Arduino, a také webovou aplikaci Sinatra mini.

Začněme!

Krok 1: Hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

DMD je ústředním bodem gadgetu. Mohl jsem jít s malým LCD displejem, ale hlavní myšlenkou tohoto projektu bylo vyrobit něco, co lze vidět a slyšet na dálku. Pro vizuální část jsem potřeboval něco velkého a jasného a tento displej Freetronics je přesně to, co jsem potřeboval. Každý panel obsahuje řadu LED diod 16x32 a několik z nich můžete spojit dohromady, abyste vytvořili mnohem větší displeje. To je něco, co bych chtěl v blízké budoucnosti udělat.

DMD je dodáván se snadno použitelnou knihovnou Arduino. komunikuje s Arduino prostřednictvím vysokorychlostního SPI. Podařilo se mi získat knihovnu ze stránky Freetronics Github, poté spustit demo skicu a začít fungovat do několika minut po otevření krabice. Překvapilo mě, že jsem viděl tak jasný displej využívající pouze energii z Arduina. Pokud chcete dočasně oslepit své diváky, můžete k tomuto DMD připojit vyhrazený napájecí zdroj. Pokud si tím nezískají jejich pozornost, nic se nestane!

Fyzicky tento displej měří 320 mm (Š), 160 mm (V) a 14 mm (D).

Zadní panel obsahuje konektory pro externí napájení, 5V s kapacitou alespoň 4Amps, konektor Arduino s označením HUB1 a konektor pro řetězení dalších displejů na opačné straně. Podle dokumentace můžete řetězit až čtyři DMD.

DMD je řízen Arduino Uno. Freetronics poskytuje velmi pohodlný konektor „DMDCON“, který se jednoduše přichytí na správné SPI a datové piny.

Kromě DMD jsem použil Arduino Uno, ethernetový štít, odpočinek hodin v reálném čase, bzučák a DHT22. Pro všechny tyto komponenty jsem vytvořil přednášky popisující jejich fungování v mém kurzu Udemy. (Nestydatá vlastní propagace: zaregistrujte se do mého seznamu e-mailů na arduinosbs.com a získejte kupón, který vám poskytne zlevněný přístup ke všem 55 přednáškám).

Hodiny v reálném čase, založené na hodinovém IC DS18072, jsou zařízení I2C, takže jsou připojeny k analogovým pinům Uno 1 a 2, které implementují sběrnici I2C.

Bzučák je připojen k digitálnímu pinu 3, odkud jej ovládám pomocí funkce tone ().

Senzor DHT22 je připojen k digitálnímu pinu 2. Dávejte pozor, abyste zapojili pull-up rezistor 10KΩ mezi 5V linku a datovou linku.

Krok 2: Skica Arduino

Skica není velká, pokud jde o počet řádků, ale téměř vyčerpává dostupnou flash paměť Uno díky všem zahrnutým knihovnám. Existuje mnoho prostoru pro optimalizaci paměti, ale protože jsem ve fázi prototypování, je to projekt na další den. Tento kód je k dispozici na Githubu.

Zde je skica s vloženými komentáři (viz příloha PDF).

Hlavní zodpovědností této skici je udělat z Arduina spotřebitele webové služby. Webová služba je jednoduchá webová stránka se dvěma koncovými body, jedním pro lidský uživatel přístup prostřednictvím webového prohlížeče a odesláním textového řetězce, který si přeje zobrazit na DMD, a druhým webem, ke kterému bude mít přístup Arduino, aby načíst tento textový řetězec.

Stáhněte si a přečtěte si přiložený soubor PDF, obsahuje vložené komentáře, které popisují jeho fungování.

Krok 3: Sinatra se ujímá fáze

Sinatra bere na scénu!
Sinatra bere na scénu!

Existuje mnoho způsobů, jak vytvářet webové stránky a webové služby. Od programovacích jazyků s knihovnami podporujícími web až po plně vybavené rámce může být matoucí a těžké vybrat si pro tuto práci jeden.

Použil jsem a hrál jsem si s řadou technologií webových aplikací a zjistil jsem, že Sinatra je ideální pro vytváření webových služeb a malých webových stránek. Zejména když stavím webovou službu na podporu gadgetu Arduino, Sinatra je opravdu dobrá volba.

Co je Sinatra a proč je to tak dobrá volba? Jsem rád, že ses zeptal!

Sinatra je jazyk pro rychlý vývoj webových aplikací. Je postaven na Ruby, velmi populárním a expresivním skriptovacím jazyce pro obecné účely. Můžete slyšet, že Sinatra je označována jako „DSL“, což je jazyk specifický pro doménu. Doménou je zde web. Klíčová slova (slova) a syntaxe vytvořená pro Sinatru jsou taková, že lidem usnadňují a urychlují vytváření webových aplikací.

V době, kdy jsou takzvané „názorové“rámce pro vývoj webových aplikací, jako jsou Ruby on Rails a Django, velmi populární, Sinatra zachycuje opačný konec spektra. Zatímco Ruby on Rails a Django vyžadují, aby programátor dodržoval konkrétní konvence a způsob, jak věci dělat (což zase znamená strmou a dlouhou křivku učení), Sinatra takové požadavky neklade.

Sinatra je koncepčně mnohem jednodušší než Rails a Djangos světa. Můžete začít pracovat s webovou aplikací, která může komunikovat s vaším Arduino během několika minut.

Předvedu na příkladu. Takto vypadá minimální webová aplikace Sinatra (prozatím si jen přečtěte následující, ve skutečnosti to na počítači nedělejte, protože k tomu pravděpodobně ještě nemáte nastavení předpokladů):

V jednom souboru, říkejme tomu my_app.rb, přidejte tento text:

požadovat 'sinatra'get'/'do "Hello, world!" end

Na příkazovém řádku spusťte aplikaci takto:

ruby my_app.rb

Vaše aplikace se spustí a v konzole se vám zobrazí tento text:

peter@ubuntu-dev: ~/arduino/sinatra_demo $ ruby my_app.rbPuma 2.8.1 začíná …* Minimální vlákna: 0, maximální vlákna: 16* Prostředí: vývoj* Poslech na tcp: // localhost: 4567 == Sinatra/1.4.4 zahájil vývoj na 4567 pro vývoj se zálohou od Pumy

Aplikace je nyní připravena přijímat žádosti klienta. Otevřete prohlížeč, přejděte na https:// localhost: 4567 a uvidíte to (viz přiložený snímek obrazovky).

To jsou čtyři jednoduché řádky kódu v jednom souboru. Naproti tomu Rails by vyžadoval více než sto souborů generovaných jednoduše tak, aby splňovaly požadavky rámce. Nechápejte mě špatně, miluji Rails, ale opravdu?…

Sinatra je tedy jednoduchá a rychle spustitelná. Budu předpokládat, že nevíte nic o nasazení Ruby, Sinatra a aplikací do cloudu, takže vás v další části krok za krokem provedu od nuly k nasazení vaší webové služby Arduino do cloudu.

Krok 4: Nastavení vývojového stroje

Sinatra je založena na programovacím jazyce Ruby. Než tedy nainstalujete Sinatru, musíte si nainstalovat Ruby.

Budete také muset nainstalovat server úložiště klíč – hodnota s názvem Redis. Představte si Redis jako databázi, která ukládá data proti klíči. Klíč používáte k načítání dat a je optimalizován spíše pro rychlost než pro flexibilitu datových struktur, pro které je tradiční relační databáze navržena. Home Alert ukládá své zprávy do Redisu.

Krok 5: Ruby na počítačích Mac nebo Linux

Pokud používáte počítač Mac nebo Linux, doporučuji k instalaci a správě instalace Ruby použít RVM (RVM: Ruby Version Manager). Pokyny k instalaci Ruby s RVM jsou na této stránce, nebo stačí zkopírovat a vložit tento příkaz do vašeho shellu:

curl -sSL https://get.rvm.io | bash -s stabilní --ruby

Posaďte se, sedněte si, relaxujte a počkejte na dokončení stahování, kompilace a instalace RVM a Ruby.

Krok 6: Ruby ve Windows

Pokud používáte Windows, doporučuji postupovat podle této příručky na webu Ruby Installer pro Windows a použít instalační aplikaci.

Krok 7: Zkontrolujte a nastavte rubín

V době psaní článku je nejnovější stabilní verze Ruby 2.1.1.p76. Verzi, která byla nainstalována s RVM, můžete zkontrolovat zadáním tohoto:

rvm informace

Objeví se spousta informací o RVM a Ruby. V mém případě je to rubínová sekce:

ruby: interpret: "rubínová" verze: "2.1.1p76" datum: "2014-02-24" platforma: "x86_64-linux" patchlevel: "2014-02-24 revize 45161" full_version: "ruby 2.1.1p76 (2014 -02-24 revize 45161) [x86_64-linux]"

Doporučuji také použít Ruby 2.1.1, takže pokud vidíte něco staršího, upgradujte takto:

rvm install 2.1.1

Tím se nainstaluje Ruby 2.1.1. Web projektu RVM obsahuje mnoho informací o RVM a o tom, jak spravovat instalaci Ruby.

Krok 8: Nainstalujte Sinatru (všechny platformy)

V Ruby je kód sdílen jako balíčky s názvem „drahokamy“. Kód, který tvoří Sinatru, lze do vašeho počítače nainstalovat jako drahokam takto:

drahokam nainstalovat sinatra

Tento řádek načte veškerý kód a dokumentaci a nainstaluje jej do počítače.

Krok 9: Redis na počítačích Mac nebo Linux

Nastavení Redisu na Mac nebo Linux je snadné. Proces je vysvětlen na webových stránkách Redis. Otevřete shell terminál a zadejte tyto příkazy:

$ wget https://download.redis.io/releases/redis-2.8.7.tar…$ tar xzf redis-2.8.7.tar.gz $ cd redis-2.8.7 $ make

Spusťte Redis zadáním:

$ src/redis-server

… a máte hotovo!

Krok 10: Redis v systému Windows

Redis pro Windows se doporučuje pouze pro vývoj a budete jej muset zkompilovat pomocí bezplatného vývojového prostředí Visual Studio Express. K uvedení do provozu to vyžaduje trochu času, ale funguje to dobře a stojí to za to. Postupujte podle pokynů na stránce projektu Github. Tam také najdete odkaz na stránku Visual Studio Express.

Krok 11: Vytvořte aplikaci webové služby

Vytvořte aplikaci webové služby
Vytvořte aplikaci webové služby

Pojďme vytvořit aplikaci a spustit ji na vašem vývojovém počítači. Během testování upravíme skicu Arduina tak, aby se připojila k této instanci aplikace. Jakmile budeme přesvědčeni, že vše funguje dobře, nasadíme do cloudu a aktualizujeme skicu, abychom mohli používat instanci cloudu.

Zde je kód Ruby, vše v jednom souboru s názvem „web.rb“(tento kód je k dispozici na Githubu).

Důležité: Stáhněte si a přečtěte si přiložený soubor PDF, který obsahuje podrobné vložené komentáře (proveďte to, než budete pokračovat!).

Nyní si můžete vyzkoušet svůj systém Home Alert. V náčrtu změňte konstanty WEBSITE a WEBPAGE tak, aby ukazovaly na váš vývojový stroj a číslo portu pro váš vývojový server Sinatra. V mém případě mám vývojový stroj na IP 172.16.115.136 a vývojový server Sinatra naslouchá portu 5000, takže moje nastavení skici je:

#define HW_ID "123" #define WEBSITE „172.16.115.136:5000[#define WEBPAGE“/get_message/"

Tato IP adresa je přístupná pouze pro zařízení v mé domácí síti.

Nastavení HW_ID představuje „hardwarové ID“, tj. ID, ke kterému se Arduino ovládající DMD identifikuje aplikaci Sinatra. Je to velmi základní druh autentizace. Webová aplikace předá zprávu Arduinu, která o ni požádá na základě zadaného HW_ID. Můžete mít více zařízení se stejným HW_ID, v takovém případě se na všech zařízeních zobrazí stejná zpráva. Pokud chcete „soukromí“, zvolte ID se spoustou náhodných znaků, které ostatní lidé nebudou schopni uhodnout. Pozor také, žádná komunikace není šifrovaná.

Nyní pokračujte a spusťte aplikaci Sinatra, zadejte toto (za předpokladu, že jste ve složce projektu Sinatra):

rubínový web.rb

… a uvidíte něco takového (některé detaily se mohou lišit, pokud to nespadne, jste v pořádku):

10:42:18 web.1 | začalo s pid 4911910: 42: 18 web.1 | Puma 2.8.1 začíná … 10: 42: 18 web.1 | * Minimální vlákna: 0, maximální vlákna: 1610: 42: 18 web.1 | * Prostředí: vývoj 10: 42: 18 web.1 | * Poslech na tcp: //0.0.0.0: 5000

Namiřte svůj webový prohlížeč na místo, které server poslouchá, a uvidíte to (viz druhá příloha).

Nahrajte svůj náčrt do Arduina a ujistěte se, že je připojen k vaší místní síti. Pokud vše půjde dobře, Arduino bude dotazovat vaši webovou službu jednou za minutu. Dejte mu zprávu k zobrazení: Do pole HW kód zadejte stejné ID, jaké jste nastavili pro konstantu HW_ID v náčrtu. Do pole „Vaše zpráva“napište cokoli a zaškrtněte políčko „Buzz?“zaškrtávací políčko.

Odešlete, chvíli počkejte a uvidíte, že se vaše zpráva objeví v DMD!

Krok 12: Nasazení do cloudu pomocí Heroku

Nyní, když Home Alert pracuje na vývoji, začněme pracovat na cloudu. Pro nasazení webových aplikací je k dispozici nespočet možností. Na základě rozsahu a složitosti Home Alert jsem se rozhodl, že nastavení vlastního virtuálního soukromého serveru nestojí za námahu. Místo toho je lepší jít na službu, jako je Heroku, hostitel aplikace. V mém měřítku je bezplatná úroveň Heroku více než dostačující. Dokonce i pro komponentu Redis jsem si mohl vybrat bezplatný plán od jednoho z mnoha poskytovatelů Redis, kteří pracují s Heroku.

Přesto je zde trochu úsilí, které souvisí s tím, že moje aplikace bude mírně upravena tak, aby vyhovovala specifikacím Heroku. Podrobnosti jsou zde, ale v zásadě budete muset tyto soubory přidat do svého projektu Sinatra (všechny následující soubory lze stáhnout z mého účtu Github):

* config.ru: Říká Heroku, který soubor obsahuje aplikaci. Zde je obsah:

vyžadují './web'run Sinatra:: Application

První řádek ukazuje na web.rb a druhý řádek ve skutečnosti spouští vaši aplikaci.

* Gemfile: obsahuje drahokamy (balíčky rubínových kódů), které aplikace vyžaduje. Heroku se podívá do tohoto souboru, aby zjistil, jaký další kód potřebuje k instalaci, aby vaše aplikace fungovala. Dalším způsobem, jak se podívat na Gemfile, je, že obsahuje seznam závislostí pro váš projekt. Pokud některá z těchto závislostí není k dispozici, vaše aplikace nebude fungovat. Zde je to, co je uvnitř Gemfile pro tuto aplikaci:

zdroj "https://rubygems.org" ruby "2.1.1" drahokam 'sinatra'gem' puma'gem 'redis'

Nejprve nastaví zdrojové úložiště veškerého kódu Gem na rubygems.org. Dále vyžaduje ke spuštění aplikace Ruby verze 2.1.1. Poté vypíše požadované drahokamy: Sinatra, Puma (skvělý webový aplikační server Ruby) a Redis.

* Procfile: říká Heroku, jak spustit server. Zde je pouze jeden řádek:

web: rack -s puma -p $ PORT

Tento řádek říká, že „web“je jediný druh požadované služby (pro zpracování na pozadí můžete mít jiné, například „pracovník“) a že ke spuštění služby musí Heroku použít příkaz, který následuje za „:“.

Můžete simulovat, co bude Heroku dělat, podle této sekvence na vašem vývojovém počítači (před šipkou zadejte pouze test; za šipkou následuje pouze popis příkazu):

$> gem install bundler -> nainstaluje Bundler, který ví, jak zacházet s Gemfile. $> bundle install -> Bundler zpracovává Gemfile a instaluje závislosti. $> rackup config.ru -> Rackup je nástroj, který dokáže zpracovat soubor config.ru. Obvykle se dodává s novější verzí Ruby, pokud ji neinstaluje takto: gem install rack.

Poslední krok má za následek skutečné spuštění vaší aplikace. Měli byste vidět přesně stejný výstup, jako když jste jej dříve spustili pomocí ruby web.rb. Je to stejná spuštěná aplikace, jen s tím rozdílem, že druhou metodou je, jak ji Heroku spustí.

Jsme téměř připraveni nasadit tuto aplikaci na váš účet Heroku. Pokud ještě žádný nemáte, pokračujte a vytvořte si ho hned teď. Poté pomocí průvodce rychlým startem nastavte svůj účet a svůj místní vývojový stroj, a zejména Heroku Toolbelt.

Heroku Toolbelt nainstaluje klienta příkazového řádku Heroku, Git (otevřený systém pro správu zdrojového kódu) a Foreman (nástroj Ruby, který pomáhá spravovat aplikace založené na Procfile).

Jakmile dokončíte instalaci pásu Heroku Toolbelt podle pokynů na webu Heroku, proveďte následující kroky, aby se vaše aplikace nasadila (vše je napsáno na příkazovém řádku, v adresáři aplikace):

$> přihlášení do heroku -> Přihlášení do Heroku pomocí příkazového řádku $> git init -> Inicializace úložiště Git pro vaši aplikaci $> git add. -> (všimněte si tečky!) Přidejte všechny soubory v aktuálním adresáři do úložiště Git $> git commit -m „init“-> Zapište tyto soubory do úložiště s novou zprávou $> vytvoření heroku -> Vytvořit nový Aplikace na Heroku. Heroku dá vaší aplikaci náhodné jméno, něco jako „blazing-galaxy-997“. Poznamenejte si jméno a adresu URL, abyste k nim měli později přístup prostřednictvím webového prohlížeče. Tato adresa URL bude vypadat takto: „https://blazing-galaxy-997.herokuapp.com/“. Budete také muset zkopírovat název hostitele (část „blazing-galaxy-997.herokuapp.com“) vaší nové aplikace do konstanty WEBSITE vaší skici Arduino. Udělejte to hned, abyste nezapomněli později. $> doplňky pro heroku: přidat rediscloud -> Přidá do vaší aplikace bezplatnou úroveň služby Rediscloud Redis. Nastavení konfigurace se automaticky vytvoří a zpřístupní vaší aplikaci. $> git push heroku master -> Nasaďte kód do Heroku. Tím se automaticky přenese kód, nastaví se jakékoli závislosti na Heroku a spustí se aplikace. Na konci procesu uvidíte něco takového: „https://blazing-galaxy-997.herokuapp.com nasazen do Heroku“, což znamená, že vaše aplikace je nyní aktivní ve veřejném cloudu! Gratulujeme!

Jen do toho, pořádně to roztočte!

Krok 13: Dát to všechno dohromady

S nasazenou webovou aplikací nahrajte aktualizovaný náčrt do Arduina (pamatujte, že jste aktualizovali konstantu WEBSITE, aby ukazovala na vaši produkční instanci webové aplikace).

K prohlížeči ve službě Heroku použijte svůj prohlížeč. Stejně jako v úvodu zadejte do prvního textového pole své hardwarové ID, do druhého zprávu a zaškrtnutím políčka aktivujte bzučák.

Pokud vše půjde dobře, vaše zpráva se objeví na DMD asi o minutu později!

Krok 14: Potenciál

Se svým systémem Home Alert můžete udělat mnohem více…

Mít back -end Heroku znamená, že můžete přidat spoustu logiky, která může přidat úžasnou funkčnost. Například můžete do aplikace přidat schopnost spravovat opakovaná oznámení, potvrzení nebo ovládat další hardwarová upozornění, jako jsou blesková světla atd. Můžete ji rozšířit na území domácí automatizace a ovládat světla a dveře. Můžete přidat více DMD a zobrazit buď různé zprávy v každé z nich, nebo jednu zprávu na kombinovaném větším displeji. Jen škrábu povrch toho, co je tady možné!

Užívat si!

Doporučuje: