Letní IoT: Den 4
Z MiS
(Rozdíly mezi verzemi)
(→WiFi lampička) |
(→WiFi lampička) |
||
Řádka 7: | Řádka 7: | ||
= WiFi lampička = | = WiFi lampička = | ||
− | #include <ESP8266WiFi.h> | + | #include <ESP8266WiFi.h> |
+ | |||
+ | // Nazev Wi-Fi site, do ktere se mam pripojit | ||
+ | const char* ssid = "TypeYourWifiSSID"; | ||
+ | |||
+ | // Heslo Wi-Fi site, do ktere se mam pripojit | ||
+ | const char* password = "typeYourWiFiPassword"; | ||
+ | |||
+ | // Je LEDka zapnuta | ||
+ | bool LEDState = false; | ||
+ | |||
+ | //pin na který je připojena LED | ||
+ | const char ledka = 5; | ||
+ | |||
+ | // Webovy server pobezi na portu 80 (HTTP komunikace) | ||
+ | WiFiServer server(80); | ||
− | + | // Promenna s HTTP pozadavkem z prohlizece | |
− | + | String request; | |
− | + | ||
− | + | void setup() { | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | // Promenna s HTTP pozadavkem z prohlizece | + | |
− | String request; | + | |
− | + | ||
− | void setup() { | + | |
// Nastartuj seriovou linku, do ktere budu vypisovat provozni informace | // Nastartuj seriovou linku, do ktere budu vypisovat provozni informace | ||
Serial.begin(9600); | Serial.begin(9600); | ||
− | + | ||
// Na pin ledka je pripojene LEDState, nastavim jej tedy na vystup | // Na pin ledka je pripojene LEDState, nastavim jej tedy na vystup | ||
// Zaroven nastavim logickou nulu, aby se LEDState po startu nesepnulo | // Zaroven nastavim logickou nulu, aby se LEDState po startu nesepnulo | ||
pinMode(ledka, OUTPUT); | pinMode(ledka, OUTPUT); | ||
digitalWrite(ledka, LOW); | digitalWrite(ledka, LOW); | ||
− | + | ||
// Pripojeni k Wi-Fi | // Pripojeni k Wi-Fi | ||
Serial.println(); | Serial.println(); | ||
Řádka 41: | Řádka 41: | ||
Serial.println(ssid); | Serial.println(ssid); | ||
WiFi.begin(ssid, password); | WiFi.begin(ssid, password); | ||
− | + | ||
// Dokud nejsem pripojeny k Wi-Fi,zapisuj do seriove linky tecky progressbaru | // Dokud nejsem pripojeny k Wi-Fi,zapisuj do seriove linky tecky progressbaru | ||
while (WiFi.status() != WL_CONNECTED) { | while (WiFi.status() != WL_CONNECTED) { | ||
Řádka 47: | Řádka 47: | ||
Serial.print("."); | Serial.print("."); | ||
} | } | ||
− | + | ||
// Jsem pripojeny k Wi-Fi a mohu pokracovat | // Jsem pripojeny k Wi-Fi a mohu pokracovat | ||
Serial.println(); | Serial.println(); | ||
Serial.println("WiFi pripojena!"); | Serial.println("WiFi pripojena!"); | ||
− | + | ||
// Spusteni serveru | // Spusteni serveru | ||
server.begin(); | server.begin(); | ||
Serial.println("Server spusten"); | Serial.println("Server spusten"); | ||
− | + | ||
// Napis IP adresu, kterou mikropocitac dostal | // Napis IP adresu, kterou mikropocitac dostal | ||
Serial.print("Pouzij k pripojeni tuto adresu: "); | Serial.print("Pouzij k pripojeni tuto adresu: "); | ||
Serial.print("http://"); | Serial.print("http://"); | ||
Serial.println(WiFi.localIP()); | Serial.println(WiFi.localIP()); | ||
− | } | + | } |
− | + | ||
− | // Smycka loop se opakuje stale dokola | + | // Smycka loop se opakuje stale dokola |
− | void loop() { | + | void loop() { |
// Pokud ma promenna LEDState hodnotu pravda, posli na pin ledka logickou jedničku | // Pokud ma promenna LEDState hodnotu pravda, posli na pin ledka logickou jedničku | ||
if (LEDState == true) digitalWrite(ledka, HIGH); | if (LEDState == true) digitalWrite(ledka, HIGH); | ||
else digitalWrite(ledka, LOW); | else digitalWrite(ledka, LOW); | ||
− | + | ||
// Cekej, dokud se nepripoji nejaky klient | // Cekej, dokud se nepripoji nejaky klient | ||
WiFiClient client = server.available(); | WiFiClient client = server.available(); | ||
Řádka 73: | Řádka 73: | ||
return; | return; | ||
} | } | ||
− | + | ||
// Cekej, dokud klient neposle nejaka data | // Cekej, dokud klient neposle nejaka data | ||
Serial.println("Novy klient!"); | Serial.println("Novy klient!"); | ||
Řádka 79: | Řádka 79: | ||
delay(1); | delay(1); | ||
} | } | ||
− | + | ||
// Precti a vypis prvni radek od klienta s URL dotazem | // Precti a vypis prvni radek od klienta s URL dotazem | ||
request = client.readStringUntil('\r'); | request = client.readStringUntil('\r'); | ||
Serial.println(request); | Serial.println(request); | ||
client.flush(); | client.flush(); | ||
− | + | ||
// Pokud je v radku vyraz ON, nastav promennou LEDState na pravdu | // Pokud je v radku vyraz ON, nastav promennou LEDState na pravdu | ||
if (request.indexOf("ON") > -1) LEDState = true; | if (request.indexOf("ON") > -1) LEDState = true; | ||
// Pokud je v radku vyraz OFF, nastav promennou LEDState na nepravdu | // Pokud je v radku vyraz OFF, nastav promennou LEDState na nepravdu | ||
if (request.indexOf("OFF") > -1) LEDState = false; | if (request.indexOf("OFF") > -1) LEDState = false; | ||
− | + | ||
// Posli pripojenemu klientu HTML kod stranky s tlacitky | // Posli pripojenemu klientu HTML kod stranky s tlacitky | ||
client.println("HTTP/1.1 200 OK"); | client.println("HTTP/1.1 200 OK"); | ||
Řádka 102: | Řádka 102: | ||
client.println("<a href=\"/OFF\"><button>Vypnout LEDku</button></a><br />"); | client.println("<a href=\"/OFF\"><button>Vypnout LEDku</button></a><br />"); | ||
client.println("</body></html>"); | client.println("</body></html>"); | ||
− | + | ||
// To je vse, ted jeste 1 ms pockam a cela smycka se muze zopakovat | // To je vse, ted jeste 1 ms pockam a cela smycka se muze zopakovat | ||
delay(1); | delay(1); | ||
Serial.println("Klient odpojen"); | Serial.println("Klient odpojen"); | ||
Serial.println(""); | Serial.println(""); | ||
− | } | + | } |
Verze z 15. 7. 2020, 19:23
RGB dioda
Thingspeak
WiFi lampička
#include <ESP8266WiFi.h> // Nazev Wi-Fi site, do ktere se mam pripojit const char* ssid = "TypeYourWifiSSID"; // Heslo Wi-Fi site, do ktere se mam pripojit const char* password = "typeYourWiFiPassword"; // Je LEDka zapnuta bool LEDState = false; //pin na který je připojena LED const char ledka = 5; // Webovy server pobezi na portu 80 (HTTP komunikace) WiFiServer server(80);
// Promenna s HTTP pozadavkem z prohlizece String request; void setup() { // Nastartuj seriovou linku, do ktere budu vypisovat provozni informace Serial.begin(9600); // Na pin ledka je pripojene LEDState, nastavim jej tedy na vystup // Zaroven nastavim logickou nulu, aby se LEDState po startu nesepnulo pinMode(ledka, OUTPUT); digitalWrite(ledka, LOW); // Pripojeni k Wi-Fi Serial.println(); Serial.print("Pripojuji k "); Serial.println(ssid); WiFi.begin(ssid, password); // Dokud nejsem pripojeny k Wi-Fi,zapisuj do seriove linky tecky progressbaru while (WiFi.status() != WL_CONNECTED) { delay(100); Serial.print("."); } // Jsem pripojeny k Wi-Fi a mohu pokracovat Serial.println(); Serial.println("WiFi pripojena!"); // Spusteni serveru server.begin(); Serial.println("Server spusten"); // Napis IP adresu, kterou mikropocitac dostal Serial.print("Pouzij k pripojeni tuto adresu: "); Serial.print("http://"); Serial.println(WiFi.localIP()); } // Smycka loop se opakuje stale dokola void loop() { // Pokud ma promenna LEDState hodnotu pravda, posli na pin ledka logickou jedničku if (LEDState == true) digitalWrite(ledka, HIGH); else digitalWrite(ledka, LOW); // Cekej, dokud se nepripoji nejaky klient WiFiClient client = server.available(); if (!client) { return; } // Cekej, dokud klient neposle nejaka data Serial.println("Novy klient!"); while (!client.available()) { delay(1); } // Precti a vypis prvni radek od klienta s URL dotazem request = client.readStringUntil('\r'); Serial.println(request); client.flush(); // Pokud je v radku vyraz ON, nastav promennou LEDState na pravdu if (request.indexOf("ON") > -1) LEDState = true; // Pokud je v radku vyraz OFF, nastav promennou LEDState na nepravdu if (request.indexOf("OFF") > -1) LEDState = false; // Posli pripojenemu klientu HTML kod stranky s tlacitky client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE html>"); client.println("<html><body>");client.print("