0

NodeMCU (ESP8266) + Arduino IDE: Řízení relé či LED přes WiFi

V tomto návodu si ukážeme, jak zprovoznit relé či LEDku přes WiFi pomocí ESP8266 (NodeMCU).

Budeme potřebovat:

  1. Desku NodeMCU
  2. buď LED a rezistor (cca 100 – 470 ohm)
    nebo modul s relé.

Schéma zapojení s LEDkou je zde (nákres z programu Fritzing – modul ESP8266 jsem stáhnul odsud):

node mcu led

Modul s relé lze zapojit podobně: – na GND, + na Vin, vstup na D1.

Samotné relé jde připojit pomocí spínacího tranzistoru:
Použité součástky: dioda (1N4148, UF4007 atd..), tranzistor BC547/BC337, rezistor 470 ohm, relé s 5V cívkou

node mcu RLY

Nejprve je potřeba nainstalovat podporu pro ESP8266 do Arduino IDE. Arduino core pro ESP8266 můžeme najít zde na GitHubu. Instalace je jednoduchá, nejprve je potřeba otevřít Arduino IDE a otevřít předvolby (File -> Preferences). Dále je potřeba si rozkliknout „Additional Boards Manager URLs“ a do nově vloženého okna vložit tuto adresu: http://arduino.esp8266.com/stable/package_esp8266com_index.json – poté vše potvrdíme. Restartujeme Arduino IDE, otevřeme Boards Manager (Tools -> Board -> Boards Manager). Do pole vyhledávání zadáme ESP8266. Boards Manager by měl najít položku „esp8266 by ESP8266 Community“. Na toto klikneme a klikneme na tlačítko Install.

Nyní už můžeme založit nový projekt v Arduino IDE a vybrat naší desku (Tools -> Board -> NodeMCU 1.0 (ESP-12E Module)). Dále vybereme port odpovídající desce NodeMCU (na Windows COMx, na Linuxu /dev/ttyUSBx – pokud není připojené žádné jiné Arduino ani jiné zařízení, bude tam jediná možnost, případně se dá podívat na možnosti, co tam již jsou, připojit NodeMCU a poté zvolit nově „objevený“ port). Ostatní nastavení můžeme nejspíš nechat v základu.

Ještě můžeme nastavit položku Upload Speed. Čím vyšší hodnotu nastavíme, tím rychleji se program nahraje do NodeMCU. Maximální rychlost je 921600 Bd.

Zde je ukázka kódu (je potřeba vyměnit WIFI-SSID a WIFI-HESLO za řetězce odpovídající konkrétní WiFi):

// nacteni knihoven (neni potreba externe stahovat)
#include <ESP8266WiFi.h> // WiFi funkce ESP8266
#include <WiFiClient.h> // funkce WiFi klienta (ESP zde nebezi jako access point)
#include <ESP8266WebServer.h> // webovy server
#include <ESP8266mDNS.h> // multicast dns sluzba
// MDNS umoznuje pristup na ESP pomoci prohlizece na adrese http://nodemcutest.local/ (jde nastavit dale) 
// jinak by se muselo pristupovat pomoci IP adresy

boolean rele;
// udaje k wifi
const char* ssid = "WIFI-SSID";
const char* password = "WIFI-HESLO";

ESP8266WebServer server(80); // start serveru na portu 80

const int relay = D1; // pin rele

void handleRoot() { // zobrazeni hlavni stranky, obsah stranky
 String text = "<html> \
 <head> \
 <meta charset=\"utf-8\"> \
 <title>Relé přes WiFi</title> \
 </head><body> \
 <h1>Relé přes WiFi - test ESP8266</h1> \
 <a href=\"./relOn\">ZAPNOUT</a><br> \
 <a href=\"./relOff\">VYPNOUT</a><br> \
 Relé je nyní: <b>";
 text += rele == true ? "zapnuto" : "vypnuto";
 text += \
 "</b> \
 </body> \
 </html>";
 server.send(200, "text/html", text);
}

void relayOn() { // zapnuti rele (prepnuti pinu a zobrazeni stranky)
 digitalWrite(relay, 1);
 rele = true;
 server.send(200, "text/html", "<!doctype html><html><head><meta charset=\"utf-8\"></head><body><h1>Relé zapnuto</h1><a href=\"/\">Zpět</a></body></html>");
}

void relayOff() { // vypnuti rele
 digitalWrite(relay, 0);
 rele = false;
 server.send(200, "text/html", "<!doctype html><html><head><meta charset=\"utf-8\"></head><body><h1>Relé vypnuto</h1><a href=\"/\">Zpět</a></body></html>");
}

void notFound(){
 String text = "Spatna adresa";
 server.send(404, "text/plain", text);
}

void setup(void){ // Nastaveni veci po startu ESP. 
 // Komunikace s PC pres seriovy port probiha na rychlosti 115200. Muzeme pouzit serial monitor v Arduino IDE.

 rele = false;
 pinMode(relay, OUTPUT);
 digitalWrite(relay, rele);
 Serial.begin(115200);
 WiFi.begin(ssid, password);
 Serial.println("");

 Serial.println("Pripojuji se k WiFi...");
 while (WiFi.status() != WL_CONNECTED) {
 delay(250);
 Serial.print(".");
 }
 Serial.println("");
 Serial.print("Pripojeno k: ");
 Serial.println(ssid);
 Serial.print("IP adresa: ");
 Serial.println(WiFi.localIP());

 if (MDNS.begin("nodemcutest")) { // zde lze nastavit nazev v mDNS
 Serial.println("Sluzba MDNS spustena.");
 }

 server.on("/", handleRoot);
 server.on("/relOn", relayOn);
 server.on("/relOff", relayOff);
 server.onNotFound(notFound);

 server.begin();
 Serial.println("HTTP server spusten");
}

void loop(void){
 server.handleClient();
}

 

Ukázka webové stránky (pozor, služba mDNS trochu zlobí na zařízeních s Androidem)

Screenshot from 2017-09-03 14-35-03 Screenshot from 2017-09-03 14-35-08

Ukázka řízení LEDky:

IMG_20170903_143922

Arduino Uno, Mega, Senzory, Moduly za

VÝHODNOU CENU

Saksun

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *