Letní IoT: Den 4
Z MiS
(Rozdíly mezi verzemi)
(→RGB dioda) |
m (Opraveno formátování HTML.) |
||
| Řádka 18: | Řádka 18: | ||
= WiFi lampička = | = WiFi lampička = | ||
| − | |||
| − | |||
#include <ESP8266WiFi.h> | #include <ESP8266WiFi.h> | ||
| − | // Nazev Wi-Fi site, do ktere se mam pripojit | + | ''// Nazev Wi-Fi site, do ktere se mam pripojit'' |
const char* ssid = "TypeYourWifiSSID"; | const char* ssid = "TypeYourWifiSSID"; | ||
| − | // Heslo Wi-Fi site, do ktere se mam pripojit | + | ''// Heslo Wi-Fi site, do ktere se mam pripojit'' |
const char* password = "typeYourWiFiPassword"; | const char* password = "typeYourWiFiPassword"; | ||
| − | // Je LEDka zapnuta | + | ''// Je LEDka zapnuta'' |
bool LEDState = false; | bool LEDState = false; | ||
| − | //pin na který je připojena LED | + | ''//pin na který je připojena LED'' |
const char ledka = 5; | const char ledka = 5; | ||
| − | // Webovy server pobezi na portu 80 (HTTP komunikace) | + | ''// Webovy server pobezi na portu 80 (HTTP komunikace)'' |
WiFiServer server(80); | WiFiServer server(80); | ||
| − | // Promenna s HTTP pozadavkem z prohlizece | + | ''// Promenna s HTTP pozadavkem z prohlizece'' |
String request; | String request; | ||
void setup() { | 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 | + | ''// Smycka loop se opakuje stale dokola'' |
void loop() { | 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("<h1>Moje WiFi lampicka</h2>"); | |
| − | + | ''// Tlacitko pro sepnuti LEDState vede na adresu /ON'' | |
| − | + | client.println("<a href=\"/ON\"><button>Zapnout LEDku</button></a>"); | |
| − | + | ''// Tlacitko pro odpojeni LEDState vede na adresu /OFF'' | |
| − | + | client.println("<a href=\"/OFF\"><button>Vypnout LEDku</button></a><br />"); | |
| − | + | client.println("</body></html>"); | |
| − | + | ''// To je vse, ted jeste 1 ms pockam a cela smycka se muze zopakovat'' | |
| − | + | delay(1); | |
| − | + | Serial.println("Klient odpojen"); | |
| − | + | Serial.println(""); | |
} | } | ||
| − | |||
| − | |||
Verze z 16. 7. 2020, 06:02
Obsah |
Opakování
- Když bude více než 30°C, rozsvítí se červená LEDka, jinak se rozsvítí modrá, bude se to aktualizovat každých 6 sekund
- Na display se vypíše teplota v °C, °F a v kelvinech
Sériový vstup
RGB dioda
Vytvoříme si vlastní metodu s 3 parametry (R, G, B) - viz. 3. den
analogWrite() má 1024 stavů ... 0 - 1023 RGB modul má 256 barev ... 0 - 255
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("<h1>Moje WiFi lampicka</h2>");
// Tlacitko pro sepnuti LEDState vede na adresu /ON
client.println("<a href=\"/ON\"><button>Zapnout LEDku</button></a>");
// Tlacitko pro odpojeni LEDState vede na adresu /OFF
client.println("<a href=\"/OFF\"><button>Vypnout LEDku</button></a><br />");
client.println("</body></html>");
// To je vse, ted jeste 1 ms pockam a cela smycka se muze zopakovat
delay(1);
Serial.println("Klient odpojen");
Serial.println("");
}