Letní IoT: Den 4

Z MiS
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(RGB dioda)
m (Opraveno formátování HTML.)
Řádka 18: Řádka 18:
  
 
= WiFi lampička =
 
= WiFi lampička =
 
<code>
 
  
 
  #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
+
    ''// 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();
Serial.print("Pripojuji k ");
+
    Serial.print("Pripojuji k ");
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) {
delay(100);
+
      delay(100);
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();
if (!client) {
+
    if (!client) {
return;
+
      return;
}
+
    }
 
   
 
   
// Cekej, dokud klient neposle nejaka data
+
    ''// Cekej, dokud klient neposle nejaka data''
Serial.println("Novy klient!");
+
    Serial.println("Novy klient!");
while (!client.available()) {
+
    while (!client.available()) {
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");
client.println("Content-Type: text/html");
+
    client.println("Content-Type: text/html");
client.println("");
+
    client.println("");
client.println("<!DOCTYPE html>");
+
    client.println("&lt;!DOCTYPE html>");
client.println("<html><body>");
+
    client.println("&lt;html>&lt;body>");
client.print("<h1>Moje WiFi lampicka</h2>");
+
    client.print("&lt;h1>Moje WiFi lampicka&lt;/h2>");
// Tlacitko pro sepnuti LEDState vede na adresu /ON
+
    ''// Tlacitko pro sepnuti LEDState vede na adresu /ON''
client.println("<a href=\"/ON\"><button>Zapnout LEDku</button></a>");
+
    client.println("&lt;a href=\"/ON\">&lt;button>Zapnout LEDku&lt;/button>&lt;/a>");
// Tlacitko pro odpojeni LEDState vede na adresu /OFF
+
    ''// Tlacitko pro odpojeni LEDState vede na adresu /OFF''
client.println("<a href=\"/OFF\"><button>Vypnout LEDku</button></a><br />");
+
    client.println("&lt;a href=\"/OFF\">&lt;button>Vypnout LEDku&lt;/button>&lt;/a>&lt;br />");
client.println("</body></html>");
+
    client.println("&lt;/body>&lt;/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("");
 
  }
 
  }
 
</code>
 

Verze z 16. 7. 2020, 06:02


Obsah

Opakování

  1. 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
  2. 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("");
}
Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje