Esp-12F 4 Kanallı Röle Modülü

Esp-12F 4 Kanallı Röle Modülü Arduino geliştirme ortamı altında referans programları ile çalışan ,akıllı ev ve diğer projelerinizde cep telefonunuzdan wifi ile anahtarlama yapabileceğiniz bir modüldür. Kart üzerinde, çalışma voltajı AC 250V / DC30V olan yükleri kontrol etmeye uygun, anahtar sinyalleri çıkaran 4 adet 5V röle bulunmaktadır.
Esp-12F 4 Kanallı Röle Modülü

• Ürün, ESP-12F modülü, 3 alternatif güç giriş opsiyonlu devre (220V girişi, 7-30V DC girişi 5 V DC girişi) ve 4 adet kumanda edilebilir röleden oluşmaktadır.
• ESP-12F modülü üzerine uygun programı yükleyerek WI-FI üzerinden uzaktan kumanda edilebilir röle devresi kurmak mümkündür.
• Röleler ile 10A – 220V AC veya 10A – 30V DC akım anahtarlanabilir.
• Cihaz sadece 1 güç opsiyonu ile beslenmelidir.

Dikkat: 220V ile besleme yapıldığında cihazın üzerinde 220V açık bir şekilde olacağı için hayati tehlike vardır.
Gereken önlemler alınmalı, cihaz uygun bir kutuya izoleli şekilde konulmalı, kullanıcıları uyaran etiketler cihaz üzerinde direktiflere uygun şekilde yer almalıdır.
Cihaza sadece yetkili elektrik tesisatçısı tarafından müdahale edilmelidir.

• Ürünün üzerinde herhangi bir program bulunmamaktadır.
• Örnek olarak verilen 4 röle kontrol eden WEB sunucu yazılımını cihaza yüklemeniz için gerekli adımlar aşağıda aktarılmıştır.
• Ürün üzerinde USB driver bulunmadığı için edineceğiniz FT232 Modül (Şekil – 1) veya benzeri ile programı yüklemeniz gerekmektedir.

FT232 Modül
Şekil: 1

• Ek-1’de dökümü yer alan programı Arduino IDE’de açın. (Sitemizde yer alıyor)
• Programın içindeki WI-FI SSID ve WIFI Şifre parametrelerini kendi WIFI Network ID’niz (SSID) ve şifreniz ile değiştirin. (Örnekte, SSID ve Şifre “DIRENC” olarak geçmektedir.
• Ürüne sıra konektörleri (header) lehimleyin.
• Sıra konektörler üzerinde rölelerin sürücülerini ESP12-F’in I/O pinlerine bağlayan jumper’ları takın. (4 röle için 4 jumper takılacaktır)

  • IO16, 1 nolu röle;
  • IO14, 2 nolu röle,
  • IO12, 3 nolu röle ve IO13, 4 nolu röleye bağlanmış olacaktır. Yazılımda bu atamalar yapılmıştır.

FT232 Modül Bağlantı
Şekil: 2

• Şekil 2’de gösterildiği gibi FT232 modül ile ürün arasında bağlantıyı yapın, sarı jumper’ı program yükleme moduna geçiş için takın.
• Arduino-IDE’de Tools  “Manage Libraries” – “Kütüphaneleri Yönet” sekmesini açın. “ESPAsyncWebServer” kütüphanesini aratın ve kurun.
ArduinoIDE
• Board olarak Generic ESP8266 Module seçeneğini seçin.

ArduinoIDE
• Programı derleyin ve yükleyin.
• Sarı renkli jumper’ı çıkarın, ürünü reset’leyin. (Enerjisini kesip, tekrar verin)
• Arduino IDE – Serial Monitor ekranında programın mesajlarını izleyin.
• Ürün SSID ve şifresini girdiğiniz WI-FI hizmet noktasına bağlanıp, IP alacaktır. Bu IP ekranda yazılır. (Şekil 3)

ArduinoIDE
Şekil: 3

• Ekrandan aldığınız IP’yi browser’ınızda (Google-Chrome vb.) hedef sunucu olarak yazarak enter’a basın. (Örneğimizde 10.34.35.52)
• Aşağıdaki Şekil 4’de gösterilen formatta bir ekran göreceksiniz.
• Tuşları sağa sola kaydırdığınızda röle seslerini duyacaksınız.
• Sisteminiz çalışıyordur.
• Bu program üzerinde değişiklikler yaparak uygulamayı zenginleştirebilirsiniz.

WEBGORSEL
Şekil: 4

 

EK-1

/*********

Rui Santos

Complete project details at https://RandomNerdTutorials.com/esp8266-relay-module-ac-web-server/

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

*********/

// Import required libraries

#include “ESP8266WiFi.h”

#include “ESPAsyncWebServer.h”

// Set to true to define Relay as Normally Open (NO)

#define RELAY_NO    true

// Set number of relays

#define NUM_RELAYS  4

// Assign each GPIO to a relay

int relayGPIOs[NUM_RELAYS] = {16, 14, 12, 13};

// Replace with your network credentials

const char* ssid = “DIRENC”;

const char* password = “DIRENC”;

const char* PARAM_INPUT_1 = “relay”;

const char* PARAM_INPUT_2 = “state”;

// Create AsyncWebServer object on port 80

AsyncWebServer server(80);

const char index_html[] PROGMEM = R”rawliteral(

<!DOCTYPE HTML><html>

<head>

  <meta name=”viewport” content=”width=device-width, initial-scale=1″>

  <style>

    html {font-family: Arial; display: inline-block; text-align: center;}

    h2 {font-size: 3.0rem;}

    p {font-size: 3.0rem;}

    body {max-width: 600px; margin:0px auto; padding-bottom: 25px;}

    .switch {position: relative; display: inline-block; width: 120px; height: 68px}

    .switch input {display: none}

    .slider {position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; border-radius: 34px}

    .slider:before {position: absolute; content: “”; height: 52px; width: 52px; left: 8px; bottom: 8px; background-color: #fff; -webkit-transition: .4s; transition: .4s; border-radius: 68px}

    input:checked+.slider {background-color: #2196F3}

    input:checked+.slider:before {-webkit-transform: translateX(52px); -ms-transform: translateX(52px); transform: translateX(52px)}

  </style>

</head>

<body>

  <h2>ESP Web Server</h2>

  %BUTTONPLACEHOLDER%

<script>function toggleCheckbox(element) {

  var xhr = new XMLHttpRequest();

  if(element.checked){ xhr.open(“GET”, “/update?relay=”+element.id+”&state=1”, true); }

  else { xhr.open(“GET”, “/update?relay=”+element.id+”&state=0”, true); }

  xhr.send();

}</script>

</body>

</html>

)rawliteral”;

// Replaces placeholder with button section in your web page

String processor(const String& var){

  //Serial.println(var);

  if(var == “BUTTONPLACEHOLDER”){

    String buttons =””;

    for(int i=1; i<=NUM_RELAYS; i++){

      String relayStateValue = relayState(i);

      buttons+= “<h4>Relay #” + String(i) + ” – GPIO ” + relayGPIOs[i-1] + “</h4><label class=\”switch\”><input type=\”checkbox\” onchange=\”toggleCheckbox(this)\” id=\”” + String(i) + “\” “+ relayStateValue +”><span class=\”slider\”></span></label>”;

    }

    return buttons;

  }

  return String();

}

String relayState(int numRelay){

  if(RELAY_NO){

    if(digitalRead(relayGPIOs[numRelay-1])){

      return “”;

    }

    else {

      return “checked”;

    }

  }

  else {

    if(digitalRead(relayGPIOs[numRelay-1])){

      return “checked”;

    }

    else {

      return “”;

    }

  }

  return “”;

}

void setup(){

  // Serial port for debugging purposes

  Serial.begin(115200);

  // Set all relays to off when the program starts – if set to Normally Open (NO), the relay is off when you set the relay to HIGH

  for(int i=1; i<=NUM_RELAYS; i++){

    pinMode(relayGPIOs[i-1], OUTPUT);

    if(RELAY_NO){

      digitalWrite(relayGPIOs[i-1], HIGH);

    }

    else{

      digitalWrite(relayGPIOs[i-1], LOW);

    }

  }

  // Connect to Wi-Fi

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(1000);

    Serial.println(“Connecting to WiFi..”);

  }

  // Print ESP8266 Local IP Address

  Serial.println(WiFi.localIP());

  // Route for root / web page

  server.on(“/”, HTTP_GET, [](AsyncWebServerRequest *request){

    request->send_P(200, “text/html”, index_html, processor);

  });

  // Send a GET request to <ESP_IP>/update?relay=<inputMessage>&state=<inputMessage2>

  server.on(“/update”, HTTP_GET, [] (AsyncWebServerRequest *request) {

    String inputMessage;

    String inputParam;

    String inputMessage2;

    String inputParam2;

    // GET input1 value on <ESP_IP>/update?relay=<inputMessage>

    if (request->hasParam(PARAM_INPUT_1) & request->hasParam(PARAM_INPUT_2)) {

      inputMessage = request->getParam(PARAM_INPUT_1)->value();

      inputParam = PARAM_INPUT_1;

      inputMessage2 = request->getParam(PARAM_INPUT_2)->value();

      inputParam2 = PARAM_INPUT_2;

      if(RELAY_NO){

        Serial.print(“NO “);

        digitalWrite(relayGPIOs[inputMessage.toInt()-1], !inputMessage2.toInt());

      }

      else{

        Serial.print(“NC “);

        digitalWrite(relayGPIOs[inputMessage.toInt()-1], inputMessage2.toInt());

      }

    }

    else {

      inputMessage = “No message sent”;

      inputParam = “none”;

    }

    Serial.println(inputMessage + inputMessage2);

    request->send(200, “text/plain”, “OK”);

  });

  // Start server

  server.begin();

}

  void loop() {

}

/*********

Rui Santos

Complete project details at https://RandomNerdTutorials.com/esp8266-relay-module-ac-web-server/

The above copyright notice and this permission notice shall be included in all

copies or substantial portions of the Software.

*********/

// Import required libraries

#include “ESP8266WiFi.h”

#include “ESPAsyncWebServer.h”

// Set to true to define Relay as Normally Open (NO)

#define RELAY_NO    true

// Set number of relays

#define NUM_RELAYS  4

// Assign each GPIO to a relay

int relayGPIOs[NUM_RELAYS] = {16, 14, 12, 13};

// Replace with your network credentials

const char* ssid = “DIRENC”;

const char* password = “DIRENC”;

const char* PARAM_INPUT_1 = “relay”;

const char* PARAM_INPUT_2 = “state”;

// Create AsyncWebServer object on port 80

AsyncWebServer server(80);

const char index_html[] PROGMEM = R”rawliteral(

<!DOCTYPE HTML><html>

<head>

  <meta name=”viewport” content=”width=device-width, initial-scale=1″>

  <style>

    html {font-family: Arial; display: inline-block; text-align: center;}

    h2 {font-size: 3.0rem;}

    p {font-size: 3.0rem;}

    body {max-width: 600px; margin:0px auto; padding-bottom: 25px;}

    .switch {position: relative; display: inline-block; width: 120px; height: 68px}

    .switch input {display: none}

    .slider {position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-color: #ccc; border-radius: 34px}

    .slider:before {position: absolute; content: “”; height: 52px; width: 52px; left: 8px; bottom: 8px; background-color: #fff; -webkit-transition: .4s; transition: .4s; border-radius: 68px}

    input:checked+.slider {background-color: #2196F3}

    input:checked+.slider:before {-webkit-transform: translateX(52px); -ms-transform: translateX(52px); transform: translateX(52px)}

  </style>

</head>

<body>

  <h2>ESP Web Server</h2>

  %BUTTONPLACEHOLDER%

<script>function toggleCheckbox(element) {

  var xhr = new XMLHttpRequest();

  if(element.checked){ xhr.open(“GET”, “/update?relay=”+element.id+”&state=1”, true); }

  else { xhr.open(“GET”, “/update?relay=”+element.id+”&state=0”, true); }

  xhr.send();

}</script>

</body>

</html>

)rawliteral”;

// Replaces placeholder with button section in your web page

String processor(const String& var){

  //Serial.println(var);

  if(var == “BUTTONPLACEHOLDER”){

    String buttons =””;

    for(int i=1; i<=NUM_RELAYS; i++){

      String relayStateValue = relayState(i);

      buttons+= “<h4>Relay #” + String(i) + ” – GPIO ” + relayGPIOs[i-1] + “</h4><label class=\”switch\”><input type=\”checkbox\” onchange=\”toggleCheckbox(this)\” id=\”” + String(i) + “\” “+ relayStateValue +”><span class=\”slider\”></span></label>”;

    }

    return buttons;

  }

  return String();

}

String relayState(int numRelay){

  if(RELAY_NO){

    if(digitalRead(relayGPIOs[numRelay-1])){

      return “”;

    }

    else {

      return “checked”;

    }

  }

  else {

    if(digitalRead(relayGPIOs[numRelay-1])){

      return “checked”;

    }

    else {

      return “”;

    }

  }

  return “”;

}

void setup(){

  // Serial port for debugging purposes

  Serial.begin(115200);

  // Set all relays to off when the program starts – if set to Normally Open (NO), the relay is off when you set the relay to HIGH

  for(int i=1; i<=NUM_RELAYS; i++){

    pinMode(relayGPIOs[i-1], OUTPUT);

    if(RELAY_NO){

      digitalWrite(relayGPIOs[i-1], HIGH);

    }

    else{

      digitalWrite(relayGPIOs[i-1], LOW);

    }

  }

  // Connect to Wi-Fi

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(1000);

    Serial.println(“Connecting to WiFi..”);

  }

  // Print ESP8266 Local IP Address

  Serial.println(WiFi.localIP());

  // Route for root / web page

  server.on(“/”, HTTP_GET, [](AsyncWebServerRequest *request){

    request->send_P(200, “text/html”, index_html, processor);

  });

  // Send a GET request to <ESP_IP>/update?relay=<inputMessage>&state=<inputMessage2>

  server.on(“/update”, HTTP_GET, [] (AsyncWebServerRequest *request) {

    String inputMessage;

    String inputParam;

    String inputMessage2;

    String inputParam2;

    // GET input1 value on <ESP_IP>/update?relay=<inputMessage>

    if (request->hasParam(PARAM_INPUT_1) & request->hasParam(PARAM_INPUT_2)) {

      inputMessage = request->getParam(PARAM_INPUT_1)->value();

      inputParam = PARAM_INPUT_1;

      inputMessage2 = request->getParam(PARAM_INPUT_2)->value();

      inputParam2 = PARAM_INPUT_2;

      if(RELAY_NO){

        Serial.print(“NO “);

        digitalWrite(relayGPIOs[inputMessage.toInt()-1], !inputMessage2.toInt());

      }

      else{

        Serial.print(“NC “);

        digitalWrite(relayGPIOs[inputMessage.toInt()-1], inputMessage2.toInt());

      }

    }

    else {

      inputMessage = “No message sent”;

      inputParam = “none”;

    }

    Serial.println(inputMessage + inputMessage2);

    request->send(200, “text/plain”, “OK”);

  });

  // Start server

  server.begin();

}

  void loop() {

}

Esp-12F 4 Kanallı Röle Modülü Ürünü için bu linki kullanabilirsiniz.
Tüm ESP Röle Kart Ürünlerimiz için bu linki kullanabilirsiniz.

Likes:
2 0
Views:
302
Article Categories:
ProjelerYENİ

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir