Sisukord:

Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil: 14 sammu (koos piltidega)
Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil: 14 sammu (koos piltidega)

Video: Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil: 14 sammu (koos piltidega)

Video: Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil: 14 sammu (koos piltidega)
Video: Elu parim püügipäev! HOIATUS: Videos võib näha palju kalu! 2024, November
Anonim
Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil
Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil
Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil
Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil
Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil
Koduhoiatus: Arduino + pilvesõnumid suurel ekraanil

Mobiiltelefonide ajastul võite eeldada, et inimesed reageerivad teie kõnele ööpäevaringselt.

Või mitte. Kui mu naine koju jõuab, jääb telefon käekotti maetud või selle aku on tühi. Meil pole maaliini. Helistamine või SMS -i saatmine, et küsida vihmasel ööl rongijaamast lifti koju või helistada, et küsida, kas mu võtmed on ikka laual, on sõna otseses mõttes soovmõtlemine.

Mul on seda probleemi piisavalt sageli, et lahendust nõuda. Natuke Arduino ja Freetronics Dot Matrix Display (DMD) nuputamist saime väga tüütuks (minu naise jaoks) vidinaks, kuid minu jaoks hämmastavaks sidevahendiks ja teabekeskuseks. Mulle meeldib see ja see on ainult versioon 1!

Koduhoiatus koosneb järgmistest osadest:

  • Freetronics Dot Matrix Display, mis koosneb 16x32 LED -st. Neid on erinevat värvi, kuid ma rõhutan punast, et see vidin on mõeldud „kriitiliste” märguannete jaoks.
  • Arduino Uno koos Etherneti kilbiga.
  • Reaalajas kell, nagu see või see.
  • Pieso -helisignaal
  • DHT22 temperatuuri ja niiskuse andur.

Koduhoiatust juhitakse veebilehe kaudu, mida hostitakse pilvepõhise rakenduse hosti Herokus. Veebileht on kodeeritud rubiinis, kasutades Sinatra veebirakenduse raamistikku ja Redise võtmeväärtuste poodi.

Heitke pilk avalehele (näidake selle sammu esimesel lisatud pildil), kus vorm ootab kasutajalt uut sõnumit.

Esimene väli aktsepteerib numbrilist riistvarakoodi. See on kood, mis võimaldab teil sihtida konkreetset koduhoiatussüsteemi, kuna igale neist saab anda kordumatu koodi. Või saate sama koodi jagada mitme koduhoiatusega, nii et sama teade kuvatakse mitmes kohas.

Teade, mida soovite kuvada, läheb teisele väljale. Kõik sinna sisestatud tekst kuvatakse DMD -s.

Kui soovite müra tekitada, kontrollige Jah! märkeruut ja helisignaal köidab kindlasti kõigi läheduses olevate inimeste tähelepanu.

Selles artiklis näitan teile, kuidas luua oma koduhoiatussüsteem, nii Arduino riist- ja tarkvara, kui ka veebirakendus Sinatra.

Alustame!

Samm: riistvara

Riistvara
Riistvara
Riistvara
Riistvara
Riistvara
Riistvara

Vidina keskpunkt on DMD. Oleksin võinud minna väikese LCD -ekraaniga, kuid selle projekti põhiidee oli toota midagi, mida eemalt näeb ja kuuleb. Visuaalse osa jaoks vajasin ma midagi suurt ja eredat ning see Freetronics ekraan on täpselt see, mida ma vajasin. Igal paneelil on 16x32 LED -i massiivi ja saate neist mitu kokku kleepida, et luua palju suuremaid kuvasid. See on asi, mida tahaksin lähitulevikus teha.

DMD -l on hõlpsasti kasutatav Arduino raamatukogu. see suhtleb Arduinoga kiire SPI kaudu. Mul oli võimalik raamatukogu hankida Freetronics Githubi lehelt, seejärel käivitada demovisand ja panna see tööle mõne minuti jooksul pärast kasti avamist. Olin üllatunud, kui nägin nii eredat ekraani, mis kasutas ainult Arduino energiat. Kui soovite oma vaatajaid ajutiselt pimestada, saate selle DMD -ga ühendada spetsiaalse toiteallika. Kui see nende tähelepanu ei köida, siis mitte midagi!

Füüsiliselt on selle ekraani mõõtmed 320 mm (lai), 160 mm (k) ja 14 mm (sügavus).

Tagapaneelil on pistikud välise toite jaoks, 5 V, mille võimsus on vähemalt 4 amprit, Arduino pistik tähistusega HUB1 ja pistik vastasküljel olevate lisakuvade ketistamiseks. Dokumentatsiooni kohaselt saate kuni nelja DMD-d kettida.

DMD -d juhib Arduino Uno. Freetronics pakub väga mugavat DMDCON -pistikut, mis lihtsalt klõpsab otse õigele SPI -le ja andmestikudele.

Lisaks DMD-le kasutasin Arduino Unot, Etherneti kilpi, reaalajas kella väljalülitamist, helisignaali ja DHT22. Kõigi nende komponentide jaoks olen loonud loenguid, mis kirjeldavad nende toimimist oma Udemy kursusel. (Häbematu enesereklaam: registreeruge minu e-posti loendisse arduinosbs.com ja saate kupongi, mis annab teile soodushinnaga juurdepääsu kõigile 55 loengule).

Reaalajas kell, DS18072 kella IC-l põhinev väljalülitus, on I2C-seade, nii et see on ühendatud Uno analoogpistikutega 1 ja 2, mis rakendavad I2C-bussi.

Sumin on ühendatud digitaalse tihvtiga 3, kust ma seda tooni () funktsiooni kasutades juhtin.

DHT22 andur on ühendatud digitaalse tihvtiga 2. Olge ettevaatlik, ühendades 10KΩ tõmbetakisti 5V liini ja andmeliini vahele.

Samm: Arduino visand

Visand ei ole ridade arvu poolest suur, kuid tänu kõigile kaasasolevatele teekidele ammendab see Uno saadaoleva välkmälu peaaegu ära. Mälu optimeerimiseks on palju ruumi, kuid kuna olen prototüüpimise etapis, on see veel üks päev. See kood on saadaval Githubis.

Siin on visand koos manustatud kommentaaridega (vt PDF -i manus).

Selle visandi peamine vastutus on muuta Arduino veebiteenuse tarbijaks. Veebiteenus on lihtne veebisait, millel on kaks lõpp-punkti, millest üks on inimkasutajale veebibrauseri kaudu juurdepääsetav ja tekstistring, mille nad soovivad DMD-l kuvada, ja teine, kuhu Arduino pääseb juurde. too tekstistring alla.

Palun laadige alla ja lugege lisatud PDF -faili, see sisaldab manustatud kommentaare, mis kirjeldavad selle toimimist.

3. samm: Sinatra astub lavale

Sinatra astub lavale!
Sinatra astub lavale!

Veebisaitide ja -teenuste loomiseks on palju võimalusi. Alates programmeerimiskeeltest koos veebipõhiste teekidega ja lõpetades täisfunktsionaalsete raamistikega, võib selle töö jaoks ühe valimine olla segane ja raske.

Olen kasutanud ja mänginud hulgaliselt veebirakendustehnoloogiaid ning leian, et Sinatra sobib ideaalselt veebiteenuste ja väikeste veebisaitide loomiseks. Eelkõige, kui loon Arduino vidina toetamiseks veebiteenuse, on Sinatra tõesti hea valik.

Mis on Sinatra ja miks see on nii hea valik? Mul on hea meel, et küsisite!

Sinatra on keel veebirakenduste kiireks arendamiseks. See põhineb Ruby peal, mis on väga populaarne ja väljendusrikas üldotstarbeline skriptikeel. Te võite kuulda, et Sinatrale viidatakse kui „DSL -ile”, domeenispetsiifilisele keelele. Siin on domeeniks veeb. Sinatra jaoks loodud märksõnad (sõnad) ja süntaks on sellised, mis hõlbustavad inimestel veebirakenduste loomist.

Ajal, mil veebirakenduste arendamiseks mõeldud nn arvamusraamistikud, nagu Ruby on Rails ja Django, on ülipopulaarsed, jäädvustab Sinatra spektri vastupidise otsa. Kui Ruby on Rails ja Django nõuavad programmeerijalt kindla kokkuleppe ja asjade tegemise viisi järgimist (mis omakorda tähendab järsku ja pikka õppimiskõverat), siis Sinatra selliseid nõudeid ei esita.

Sinatra on kontseptuaalselt palju lihtsam kui maailma rööpad ja djangod. Saate alustada veebirakendusega, mis suudab teie Arduinoga mõne minuti jooksul suhelda.

Näitan näitega. Siin näeb välja Sinatra minimaalne veebirakendus (lugege praegu järgmist, ärge seda tegelikult oma arvutis tehke, sest tõenäoliselt pole teil veel selle eeltingimusi seadistatud):

Ühes failis nimetagem seda my_app.rb, lisage see tekst:

nõuda 'sinatra'get'/'do "Hello, world!" end

Käsurealt käivitage rakendus järgmiselt:

rubiin my_app.rb

Teie rakendus käivitub ja näete konsoolis järgmist teksti:

peter@ubuntu-dev: ~/arduino/sinatra_demo $ ruby my_app.rb Puma 2.8.1 käivitamine…* Minimaalsed lõimed: 0, maksimaalsed teemad: 16* Keskkond: arendus* Kuulamine tcp: // localhost: 4567 == Sinatra/1.4.4 on astunud lavale 4567 arendamiseks koos Puma varukoopiaga

Rakendus on nüüd valmis klienditaotlusi vastu võtma. Avage brauser, suunake see aadressile https:// localhost: 4567 ja seda näete (vt lisatud ekraanipilti).

See on neli lihtsat koodirida ühes failis. Seevastu oleks Rails vajanud üle saja faili, mis on loodud lihtsalt raamistiku nõuete täitmiseks. Ärge saage minust valesti aru, ma armastan Railsit, aga kas tõesti?…

Niisiis, Sinatra on lihtne ja kiire. Eeldan, et te ei tea midagi Ruby'st, Sinatrast ja rakendustest pilve, nii et järgmises jaotises juhatan teid samm -sammult nullist kuni teie Arduino veebiteenuse pilveni juurutamiseni.

Samm: seadistage oma arendusmasin

Sinatra põhineb Ruby programmeerimiskeelel. Niisiis, peate enne Sinatra installimist Ruby installima.

Samuti peate installima võtmeväärtusega kaupluse serveri nimega Redis. Mõelge Redisele kui andmebaasile, mis salvestab andmeid võtme vastu. Kasutate võtit andmete toomiseks ja see on optimeeritud pigem kiiruse kui paindlikkuse tõttu, mille jaoks traditsiooniline relatsiooniline andmebaas on loodud. Home Alert salvestab oma sõnumid Redis.

Samm: Ruby Macis või Linuxis

Kui kasutate Maci või Linuxi arvutit, soovitan teil Ruby installimise installimiseks ja haldamiseks kasutada RVM -i (RVM: Ruby Version Manager). Juhised Ruby installimiseks RVM -iga on sellel lehel või lihtsalt kopeerige ja kleepige see käsk oma kesta:

curl -sSL https://get.rvm.io | bash -s stabiilne -hõõruv

Istuge, puhake ja oodake, kuni RVM ja Ruby allalaadimine, kompileerimine ja installimine lõpeb.

Samm: rubiin Windowsis

Kui kasutate Windowsi, soovitan järgida seda juhendit veebisaidil Ruby Installer for Windows ja kasutada seadistusrakendust.

Samm: kontrollige ja seadke oma rubiin

Kirjutamise ajal on viimane stabiilne Ruby väljaanne 2.1.1.p76. RVM -iga installitud versiooni saate kontrollida, tippides selle:

rvm info

Ilmub palju teavet RVM -i ja Ruby kohta. Minu puhul on see rubriigi jaotis:

ruby: interpreter: "ruby" version: "2.1.1p76" date: "2014-02-24" platform: "x86_64-linux" patchlevel: "2014-02-24 revision 45161" full_version: "ruby 2.1.1p76 (2014 -02-24 versioon 45161) [x86_64-linux]"

Soovitan kasutada ka rubiini 2.1.1, nii et kui näete midagi vanemat, uuendage seda järgmiselt:

rvm install 2.1.1

See installib Ruby 2.1.1. RVM -i projekti sait sisaldab palju teavet RVM -i ja Ruby -installi haldamise kohta.

Samm: installige Sinatra (kõik platvormid)

Rubys jagatakse koodi pakettidena, mida nimetatakse kalliskivideks. Koodi, millest Sinatra koosneb, saab arvutisse kalliskivina installida järgmiselt:

kalliskivi installi sinatra

See rida toob kogu koodi ja dokumentatsiooni ning installib selle teie arvutisse.

Samm: tehke uuesti Macis või Linuxis

Redise seadistamine Macis või Linuxis on lihtne. Protsessi kirjeldatakse Redise veebisaidil. Avage shelliterminal ja sisestage need käsud:

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

Käivitage Redis, tippides:

$ src/redis-server

… Ja sa oled valmis!

Samm: tehke uuesti Windowsis

Redis on Windowsis soovitatav ainult arendamiseks ja peate selle kompileerima tasuta Visual Studio Expressi arenduskeskkonna abil. Selle käivitamiseks kulub natuke aega, kuid see töötab hästi ja on vaeva väärt. Järgige projekti Githubi lehel olevaid juhiseid. Sealt leiate ka lingi Visual Studio Expressi lehele.

Samm: looge veebiteenuse rakendus

Looge veebiteenuse rakendus
Looge veebiteenuse rakendus

Ehitame rakenduse ja käivitame selle teie arendusmasinas. Kohandame Arduino visandit selle rakenduse eksemplariga ühenduse loomiseks, kui seda katsetame. Kui oleme veendunud, et kõik töötab hästi, juurutame pilve ja värskendame visandit pilveeksemplari kasutamiseks.

Siin on Ruby -kood, kõik ühes failis nimega "web.rb" (see kood on saadaval Githubis).

Tähtis: laadige alla ja lugege lisatud PDF -faili, see sisaldab üksikasjalikke manustatud kommentaare (palun tehke seda enne jätkamist!).

Nüüd saate proovida oma koduhoiatussüsteemi. Muutke oma visandis veebisaidi ja veebisaidi konstandeid, et need osutaksid teie arendusmasinale ja teie arendus Sinatra serveri pordi numbrile. Minu puhul on mul arendusmasin IP -aadressil 172.16.115.136 ja Sinatra arendusserver kuulab pordi 5000, nii et minu visandiseaded on järgmised:

#define HW_ID "123" #define WEBSITE "172.16.115.136:5000”#define WEBPAGE"/get_message/"

Sellele IP -aadressile pääsevad juurde ainult minu koduvõrgu seadmed.

Seade HW_ID tähistab „riistvara ID -d”, st ID -d, millele DMD -d juhtiv Arduino end Sinatra rakendusele identifitseerib. See on väga lihtne autentimisviis. Veebirakendus edastab sõnumi Arduinole, paludes seda vastavalt esitatud HW_ID -le. Teil võib olla mitu seadet sama HW_ID -ga, sel juhul kuvatakse kõikides seadmetes sama teade. Kui soovite privaatsust, valige ID, mis sisaldab palju juhuslikke tähemärke, mida teised inimesed ei oska arvata. Samuti olge ettevaatlik, ükski side pole krüptitud.

Nüüd jätkake ja käivitage oma Sinatra rakendus, tippige see (eeldusel, et olete Sinatra projekti kaustas):

rubiin web.rb

… Ja näete midagi sellist (mõned üksikasjad võivad erineda, kui see kokku ei jookse, on kõik korras):

10:42:18 veeb.1. algas pid 4911910: 42: 18 web.1 | Puma 2.8.1 alates… 10: 42: 18 web.1 | * Minimaalsed lõimed: 0, maksimaalsed niidid: 1610: 42: 18 web.1 | * Keskkond: arendus10: 42: 18 veeb.1. | * Kuulamine tcp: //0.0.0.0: 5000

Suunake oma veebibrauser asukohale, mida server kuulab, ja näete seda (vt teine manus).

Laadige oma visand Arduinole üles, veenduge, et see on teie kohaliku võrguga ühendatud. Kui kõik läheb hästi, küsitleb Arduino teie veebiteenust üks kord minutis. Andke talle kuvamiseks teade: tippige väljale HW kood sama ID, mille olete visandis HW_ID konstandile määranud. Sisestage väljale „Teie sõnum” midagi ja märkige „Buzz?” märkeruut.

Esitage, oodake minut ja vaadake oma sõnumit DMD -s!

12. samm: juurutage pilve abil Heroku abil

Nüüd, kui koduhoiatus töötab välja, laseme selle pilve peal töötada. Veebirakenduste juurutamiseks on saadaval lugematu arv võimalusi. Koduhoiatuse ulatuse ja keerukuse põhjal otsustasin, et oma virtuaalse privaatserveri seadistamine pole vaeva väärt. Selle asemel on parem valida selline teenus nagu rakenduste hosti Heroku. Minu skaala jaoks on Heroku tasuta tasand enam kui piisav. Isegi Redise komponendi jaoks suutsin valida tasuta paketi ühelt paljudelt Herokuga töötavatelt Redise pakkujatelt.

Sellegipoolest on vaja teha natuke vaeva, mis on seotud minu rakenduse kerge muutmisega, et see vastaks Heroku spetsifikatsioonidele. Üksikasjad on siin, kuid sisuliselt peate need failid oma Sinatra projekti lisama (kõiki järgnevaid faile saab alla laadida minu Githubi kontolt):

* config.ru: see ütleb Herokule, milline fail seda rakendust sisaldab. Siin on sisu:

nõuda './web'run Sinatra:: Rakendus

Esimene rida osutab saidile web.rb ja teine rida käivitab tegelikult teie rakenduse.

* Gemfile: see sisaldab kalliskive (rubiinkoodipakette), mida rakendus nõuab. Heroku vaatab selle faili sisse, et välja selgitada, millist muud koodi on vaja installida, et teie rakendus töötaks. Teine võimalus Gemfile'i vaadata on see, et see sisaldab teie projekti sõltuvuste loendit. Kui mõni neist sõltuvustest pole saadaval, ei tööta teie rakendus. Selle rakenduse Gemfile'i sisu on järgmine:

allikas "https://rubygems.org" ruby "2.1.1" pärl 'sinatra'gem' puma'gem 'redis'

Esiteks määrab see kogu Gem -koodi lähtehoidlaks rubygems.org. Järgmisena nõuab see rakenduse käivitamiseks Ruby versiooni 2.1.1. Seejärel loetletakse selles vajalikud kalliskivid: Sinatra, Puma (suurepärane Ruby veebirakenduste server) ja Redis.

* Procfile: see ütleb Herokule, kuidas serverit käivitada. Siin on ainult üks rida:

veeb: rackup -s puma -p $ PORT

See rida ütleb, et „veeb” on ainus nõutav teenus (tausta töötlemiseks võib teil olla ka teisi, näiteks „töötaja”) ja teenuse käivitamiseks peab Heroku kasutama käsku, mis järgneb „:”.

Saate simuleerida, mida Heroku teeb, järgides oma arendusmasinas seda järjestust (tippige test ainult noole ette; noolele järgnev on ainult käsu kirjeldus):

$> gem install bundler -> installib Bundleri, mis teab, kuidas Gemfile'i käsitseda. $> kimbu installimine -> Bundler töötleb Gemfile'i ja installib sõltuvusi. $> rackup config.ru -> Rackup on tööriist, mis suudab töödelda faili config.ru. Tavaliselt on see kaasas Ruby hilisema versiooniga, kui seda ei installita niimoodi: kalliskivi installiriiul.

Viimase sammuna käivitatakse teie rakendus. Te peaksite nägema täpselt sama väljundit, kui alustasite seda ruby web.rb -ga varem. See töötab sama rakendusega, ainult selle erinevusega, et teine meetod on see, kuidas Heroku selle käivitab.

Oleme peaaegu valmis selle rakenduse teie Heroku kontole juurutamiseks. Kui teil pole seda veel olemas, jätkake ja looge see kohe. Seejärel järgige oma konto ja kohaliku arendusmasina ning eriti Heroku tööriistavöö seadistamiseks lühijuhendit.

Heroku tööriistavöö installib Heroku käsurea kliendi Git (avatud lähtekoodiga haldussüsteem) ja Foremani (Ruby tööriist, mis aitab hallata Procfile-põhiseid rakendusi).

Kui olete Heroku tööriistarihma installimise lõpetanud, järgides Heroku veebisaidi juhiseid, järgige rakenduse juurutamiseks järgmisi samme (kõik sisestatakse käsureale rakenduse kataloogi):

$> heroku sisselogimine -> Herokusse sisselogimine käsurealt $> git init -> Initsialiseeri oma rakenduse jaoks Giti hoidla $> git add. -> (pange tähele punkti!) Lisage kõik praeguses kataloogis olevad failid Giti hoidlasse $> git pühendus -m “init” -> Kinnitage need failid hoidlasse uue sõnumiga $> heroku create -> Loo uus rakendus Herokul. Heroku annab teie rakendusele juhusliku nime, näiteks “blazing-galaxy-997”. Märkige üles nimi ja URL, et saaksite sellele hiljem oma veebibrauseri kaudu juurde pääseda. See URL näeb välja selline: "https://blazing-galaxy-997.herokuapp.com/". Samuti peate oma uue rakenduse hostinime (osa „blazing-galaxy-997.herokuapp.com”) kopeerima oma Arduino visandi veebisaidi konstandisse. Tehke seda kohe, et mitte hiljem unustada. $> heroku lisandmoodulid: lisage rediscloud -> lisab teie rakendusele teenuse Rediscloud Redis tasuta taseme. Konfiguratsiooniseaded luuakse automaatselt ja tehakse teie rakendusele kättesaadavaks. $> git push heroku master -> Juurutage oma kood Herokule. See edastab koodi automaatselt, seadistab kõik sõltuvused Herokust ja käivitab rakenduse. Protsessi lõpus näete midagi sellist: “https://blazing-galaxy-997.herokuapp.com juurutatud Herokule”, mis tähendab, et teie rakendus on nüüd avalikus pilves! Palju õnne!

Lase käia, keeruta!

13. samm: pange see kõik kokku

Kui teie veebirakendus on juurutatud, laadige värskendatud visand Arduinosse üles (pidage meeles, et värskendasite veebisaidi konstanti, et osutada veebirakenduse tootmisinstantsile).

Kasutage Herokus oma rakendusele juurdepääsu saamiseks oma brauserit. Sarnaselt sissejuhatusega sisestage esimesele tekstikasti oma riistvara ID, teisele sõnum ja märkige sumisti aktiveerimiseks märkeruut.

Teie sõnum ilmub DMD -le umbes minuti pärast, kui kõik läheb hästi!

14. samm: potentsiaal

Koduhoiatussüsteemiga saate teha veel palju…

Heroku tagaosa olemasolu tähendab, et saate lisada palju loogikat, mis võib lisada hämmastavaid funktsioone. Näiteks saate rakendusele lisada võimaluse hallata korduvaid märguandeid, kinnitusi või juhtida täiendavat teavitusriistvara, näiteks välgutulesid jne. Saate selle laiendada koduautomaatika territooriumile ning juhtida tulesid ja uksi. Saate lisada mitu DMD -d, et kuvada igas sõnumis erinevaid sõnumeid või ühte sõnumit kombineeritud suuremal ekraanil. Ma lihtsalt kratsin pinda, mis siin võimalik on!

Nautige!

Soovitan: