Mis on Asjade Internet
Asjade Internet (Internet of Things, IoT) on interneti kaudu omavahel ühendatud asjade võrk, millel on täita kindel ülesanne. Asjadeks võivad olla erinevad seadmed, nagu näiteks nutikellad, mobiiltelefonid, kohvimasinad, kodu küttesüsteemid jms. Eesti keeles on antud sellele veel nimetused nagu nutistu, esemevõrk või värkvõrk.
Omavahel ühendatud seadmed võimaldavad koguda kasulikku informatsiooni, automatiseerida tegevusi ja läbi selle kokku hoida näiteks energias või rahas. Selle kõige juures tuleks kindlasti tähelepanu pöörata turvalisusele, et keegi ei saaks kasutaja kohta isiklikku infot või kontrollida su seadmeid.
Selles postituses üritame läbi interneti lülitada sisse LED valgustust.
WeMos arendusplaadid
Kasutame oma IoT tutvumisprojektis WeMos arendusplaati (https://www.wemos.cc), mis on odav ja lihtne viis oma IoT ideede elluviimiseks. Tegemist on WeMos Electronics seadmega, mille perekonda kuuluvad seadmed D1, D1 Mini, D1 Mini Pro, D1 Mini Lite, D32 ja D32 Pro. Meie kasutada on D1 Mini Pro (aliexpress.com).
WeMos D1 Mini Pro
WeMos D1 Mini Pro on pisike WiFi toega arendusplaat. Südameks on sel populaarne ESP8266EX mikrokontroller, mis on Arduinoga ühilduv. Meie jaoks tähendab see seda, et saad juba varem Arduinos õpitud koodi kasutada.
WeMos D1 Mini Pro omadused:
- 9 digitaalset sisendit/väljundit PWM toetusega (GPIO)
- 1 analoog sisend (NB! 3,2V max)
- 16MB mälu
- keraamiline 3dB antenn ning välise antenni lisamise võimalus (IPX)
- mälu kiirus 80MHz
- USB-UART draiver CP2104
- Wi-Fi 802.11 b/g/n
- WiFi olekud: AP (Access Point), STA (Standalone), AP+STA
- WiFi turvalisus: TKIP, WEP, CRC, CCMP, WPA/WPA2, WPS
- toide 3,3V (USB 5V)
- arendusplaadile paigaldatud LED D4
WeMos D1 Mini Pro ja Arduino IDE
USB draiverid
Enne kui hakkame seadistama Arduino IDE arenduskeskkonda, siis veendu, et arvuti tunneb WeMos arendusplaadi ära. Vajadusel paigalda CP2104 draiverid. Kui arvuti tundis seadme ära, siis Device Manager (Seadmehaldur) kuvab Ports grupis seadme ja selle pordi.
Järgmiseks leia arvutist üles Arduino IDE (www.arduino.cc) ja tee vajadusel uuendused.
Toe lisamine Arduino IDE keskkonda
Vaikimisi pole Arduino IDE keskkonnal ESP8266 tuge. Selle lisamiseks vali menüüst Edit>Preferences ning lisa reale “Additional Boards Manager URLs” aadress
1 2 | http://arduino.esp8266.com/stable/package_esp8266com_index.json |
Kui juhuslikult on sul juba sinna midagi lisatud, siis eralda need komaga.
Vajuta OK ja ava Tools>Board>Boards Manager
Avanenud aknas sisesta otsingukasti “wemos” ja paigalda esp8266 teek klikkides nupule Install.
Vajuta Close ning määrame arendusplaadiks Board: LOLIN(WEMOS) D1 mini Pro ning vastav port. Minu puhul COM12.
Testprogramm
Et veenduda, kas meil kõik töötab, siis proovime vilgutada plaadil olevat LEDi (D4). Sisesta kood ja lae üles.
1 2 3 4 5 6 7 8 9 10 11 | void setup() { pinMode(D4, OUTPUT); } void loop() { digitalWrite(D4, HIGH); delay(1000); digitalWrite(D4, LOW); delay(1000); } |
Sinine tuluke peaks nüüd ennast plaadil vilgutama.
WeMos server
Tekitame siis WeMos arendusplaadile serveri, mis lubab nuppude kaudu LEDi sisse või välja lülitada. Ühendan LEDi pessa D1. Kui ühendad selle D4, siis käitub ta tänu vahele ühendatud takistile vastupidi :)
Kõigepealt tuleb siis ühendada server võrku. Kui see ühendus olemas, siis kuvame seadme IP. Seejärel tuvastame, kas aadressis on led=on või led=off teksti ning vastavalt sellele lülitame LEDi sisse/välja. Ja seda tehes uuendame veebilehe sisu.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | #include <ESP8266WiFi.h> // wifi parool const char* ssid = "sinu_wifi_nimi"; const char* password = "sinu_wifi_parool"; int ledPin = D1; WiFiServer server(80); void setup() { Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // wifi ühendamine Serial.println(""); Serial.print("Ühendan "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi ühendatud"); server.begin(); Serial.println("Server loodud"); // kuvame seadme IP Serial.print("Serveri IP: "); Serial.println(WiFi.localIP()); } void loop() { // kas klient on ühendatud WiFiClient client = server.available(); if (!client) { return; } // ootame kliendi tegevust Serial.println("uus klient"); while(!client.available()){ delay(10); } // kliendi päring (esimene rida) String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); int value = LOW; if (request.indexOf("/led=on") != -1) { digitalWrite(ledPin, HIGH); value = HIGH; } if (request.indexOf("/led=off") != -1){ digitalWrite(ledPin, LOW); value = LOW; } // vastus päringule client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head><style>"); client.println("a { background-color: #40739e; border: none; color: white; padding: 16px 40px; display:block; width:30px;"); client.println("</style></head>"); client.print("LED olek: "); if(value == HIGH) { client.print("ON"); } else { client.print("OFF"); } client.println("<br><br>"); client.println("<a href=\"/led=on\">ON</a><br>"); client.println("<a href=\"/led=off\">OFF</a><br>"); client.println("</html>"); delay(1); Serial.println("kliendi ühenduse katkestamine"); Serial.println(""); } |
Lülita sisse Serial Monitor (jadapordi monitor, 115200 baud), lae programm üles ja mine kuvatud IP-aadressile. Veebilehel peaksid nägema olekut ja kahte nuppu. Nendel klikkides lülitatakse LEDi kenasti sisse/välja. Samaaegselt jälgi ka jadapordi monitori.
Blynk
Eelmine lahendus töötab hetkel ainult kohtvõrgus. On olemas erinevaid veebiteenuseid, mis aitavad mugavalt väljastpoolt ligi saada või mõnda tööd lihtsustada. Näiteks aitavad korjata ja analüüsida infot, anda teada kui palju on külastajaid veebilehel jne. Populaarsed teenused on näiteks: ifttt.com, io.adafruit.com, blynk.io, thingspeak.com jne.
Meie kasutame hetkel Blynk teenuse rakendust. Leia programm, paigalda ja tee omale konto.
Käivita rakendus ja uue projekti loomiseks kliki New Project
Järgmiseks anna projektile nimi, vali seade ja ühenduse tüüp. Seame valikus puudub WeMos D1 mini Pro, aga pildil kuvatud seade ei erine sellest väga palju.
Kliki nuppu Create. Õnnestumise puhul saadetakse sulle email, kuhu saadetakse võti (Auth Token) ja abimaterjal.
Vajuta OK ja lisame rakenduses nupu, LED käivitamiseks. Kliki “+” märgile.
Ja lisame valikust Button
Lisatud nuppu saad tõsta, kui hoiad näppu sellel ja lohistad. Seadete muutmiseks tee sellel 1 klikk. Vali OUTPUT väärtuseks, kuhu kanalisse signaal saadetakse. Kuna mul LED D1 pesas, siis selle ka lisan. Kas valida Push või Switch, sõltub isiklikust eelistusest. Üks töötab näppu peal hoides ja teine “klikkides”.
Nüüd kirjutame WeMos’ile koodi. Kõigepealt piilume emaili, mis meile saadeti. Saadetud emailist viib üks link Blynk teegile: https://github.com/blynkkk/blynk-library. Lae see alla ja lisa Arduino IDE programmi Sketch>Include Library>Add .ZIP Library. Nüüd lisa kood. Pane tähele, et lisad:
- rakenduse võtme (leiad emailist)
- wifi nimi ja parool
- LED pesa number
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #define BLYNK_PRINT Serial #include <ESP8266WiFi.h> #include <BlynkSimpleEsp8266.h> char auth[] = "rakenduse_võti_emailil"; char ssid[] = "wifi_nimi"; char pass[] = "wifi_parool"; int LED = D1; void setup() { Serial.begin(115200); pinMode(LED, OUTPUT); Blynk.begin(auth, ssid, pass); } void loop() { Blynk.run(); } BLYNK_WRITE(V3) { int pinValue = param.asInt(); if (pinValue == 1) { digitalWrite(LED, HIGH); } else { digitalWrite(LED, LOW); } } |
Seejärel saad rakenduse käivitada PLAY nupust.
Kui rakendus on kenasti ühendatud, siis nupule vajutades peaks LED süttima või kustuma.
0 responses on "Asjade Internet"