ESP8266 สั่งรีเลย์ 4 channel ด้วยแอป Blynk ปุ่ม disable



 ESP8266 สั่งรีเลย์ 4 channel  ด้วยแอป Blynk ปุ่ม disable

การเชื่อมต่อ

ESP8266   -> Relay 4 channel

3V        -> VCC

D1(GPIO5) -> In1

D2(GPIO4) -> In2

D5(GPIO14)-> In3

D6(GPIO12)-> In4

GND     -> GND

วิธีทำ 

1.เขียนโค้ด เชื่อมต่อ บอร์ด ESP8266 and Relay 4 Channel

2.เพิ่มโค้ด ที่ใช้ในการเชื่อมต่อแอป Blynk กับ ESP8266

  ในส่วนที่ ไม่มีให้ (มีข้อดี-เสีย ต่างจาก QuickStart)

3.สร้าง Datastream in Blynk

4.สร้าง Web Dashboard in Blynk

5.เขียนโค้ด เพื่อให้รับคำสั่งจาก Blynk ทำงาน 



1.เขียนโค้ด เชื่อมต่อ บอร์ด ESP8266 and Relay 4 Channel

// Code Connected Relay 4 channel

int r1 = 5;

int r2 = 4;

int r3 = 14;

int r4 = 12;


void setup() {

pinMode(LED_BUILTIN, OUTPUT);

//ตั้งค่า พินเลข  เป็นเอาท์พุต

pinMode(r1, OUTPUT);

pinMode(r2, OUTPUT);

pinMode(r3, OUTPUT);

pinMode(r4, OUTPUT);

//เปิดจ่ายไฟ ค่าพินเลข   เพื่อปิดการทำงานของ Relay

digitalWrite(r1, HIGH);

digitalWrite(r2, HIGH);

digitalWrite(r3, HIGH);

digitalWrite(r4, HIGH);

}


// the loop function runs over and over again forever

void loop() {

  digitalWrite(r1, LOW);  // turn on LED on (LOW  is the voltage level = Active Low)

  delay(1000);                     

  digitalWrite(r1, HIGH); // turn the LED off by making the voltage HIGH

  delay(1000);                     

}


/*--------------------------------------------------------*/

2.เพิ่มโค้ด ที่ใช้ในการเชื่อมต่อแอป Blynk กับ ESP8266

(มีข้อดี-เสีย ต่างจาก QuickStart)

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

// Your WiFi credentials.

// Set password to "" for open networks.

char ssid[] = "2.4G";

char pass[] = "";



void setup() {

Serial.begin(115200);

Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);

...

}

void loop() {

  // put your main code here, to run repeatedly:

  Blynk.run();

}


/*--------------------------------------------------------*/


3.สร้าง Datastream in Blynk

Btn1 V1  Integer

Btn2 V2  Integer

Btn3 V3  Integer


4.สร้าง Web Dashboard in Blynk

สร้าง Switch 1,2,3 Show on/off label

5.เขียนโค้ด เพื่อให้รับคำสั่งจาก Blynk ทำงาน

5.1 เมื่อกดปุ่มเปิด 1 สั่งรีเลย์ 1 ทำงาน ด้วย digitalWrite(r1, LOW);

BLYNK_WRITE(V1) // this command is listening when something is written to V1

{

  int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable

  

  if (pinValue == 1){

    digitalWrite(r1, LOW);

  } else if (pinValue == 0) {

    digitalWrite(r1, HIGH);

  }

  Serial.print("V1 button value is: "); // printing value to serial monitor

  Serial.println(pinValue);

}


5.2 ดูการทำงานของ

Serial.begin(115200);

BLYNK_PRINT Serial,


5.3 ถ้าต้องการให้จ่ายไฟที่รีเลย์ ตัวเดียว (เหมือนสวิตซ์พัดลม)

1. ปิดการจ่ายไฟ รีเลย์ตัวอื่น ด้วย คำสั่ง  digitalWrite(relay, HIGH);

2. ป้องกันการกดปุ่มใหม่ ด้วย คำสั่ง

Blynk.setProperty(V1, "isDisabled", true); 

3. สร้างเลเบล บอกการทำงานของปุ่ม มีหรือไม่มี ก็ได้ 

Blynk.virtualWrite(V0, "1");  

//Code

#define BLYNK_TEMPLATE_ID "TMPL6kGZaCyLY"

#define BLYNK_TEMPLATE_NAME "Relay  Control"

#define BLYNK_AUTH_TOKEN "gigbWSgy4cBvg2_bV3NnoJSQ-k-jnlQU"

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

// Your WiFi credentials.

// Set password to "" for open networks.

char ssid[] = "Nui 2.4G";

char pass[] = "0895515998";

int r1 = 5;

int r2 = 4;

int r3 = 14;

int r4 = 12;

BLYNK_WRITE(V1) // this command is listening when something is written to V1

{

  int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable

  

  if (pinValue == 1){

    digitalWrite(r1, LOW);

    digitalWrite(r2, HIGH);

    digitalWrite(r3, HIGH);    

    digitalWrite(r4, HIGH);

    Blynk.setProperty(V2, "isDisabled", true);     

    Blynk.setProperty(V3, "isDisabled", true); 

    Blynk.setProperty(V4, "isDisabled", true); 

    Blynk.virtualWrite(V0, "1");     

  } else if (pinValue == 0) {

    digitalWrite(r1, HIGH);

    Blynk.setProperty(V2, "isDisabled", false);     

    Blynk.setProperty(V3, "isDisabled", false); 

    Blynk.setProperty(V4, "isDisabled", false); 

    Blynk.virtualWrite(V0, ""); 


  }

  Serial.print("V1 button value is: "); // printing value to serial monitor

  Serial.println(pinValue);

}

BLYNK_WRITE(V2) // this command is listening when something is written to V1

{

  int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable

  

  if (pinValue == 1){

    digitalWrite(r2, LOW);

    digitalWrite(r1, HIGH);

    digitalWrite(r3, HIGH);    

    digitalWrite(r4, HIGH);    

    Blynk.setProperty(V1, "isDisabled", true);     

    Blynk.setProperty(V3, "isDisabled", true); 

    Blynk.setProperty(V4, "isDisabled", true);     

    Blynk.virtualWrite(V0, "2");   

  } else if (pinValue == 0) {

    digitalWrite(r2, HIGH);

    Blynk.setProperty(V1, "isDisabled", false);     

    Blynk.setProperty(V3, "isDisabled", false); 

    Blynk.setProperty(V4, "isDisabled", false);     

  }

  Serial.print("V2 button value is: "); // printing value to serial monitor

  Serial.println(pinValue);

}

BLYNK_WRITE(V3) // this command is listening when something is written to V1

{

  int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable

  

  if (pinValue == 1){

    digitalWrite(r3, LOW);

    digitalWrite(r1, HIGH);

    digitalWrite(r2, HIGH);    

    digitalWrite(r4, HIGH);    

    Blynk.setProperty(V1, "isDisabled", true);     

    Blynk.setProperty(V2, "isDisabled", true); 

    Blynk.setProperty(V4, "isDisabled", true);      

    Blynk.virtualWrite(V0, "3");     

   } else if (pinValue == 0) {

    digitalWrite(r3, HIGH);

    Blynk.setProperty(V1, "isDisabled", false);     

    Blynk.setProperty(V2, "isDisabled", false); 

    Blynk.setProperty(V4, "isDisabled", false);      

  }

  Serial.print("V3 button value is: "); // printing value to serial monitor

  Serial.println(pinValue);


}

BLYNK_WRITE(V4) // this command is listening when something is written to V1

{

  int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable

  

  if (pinValue == 1){

    digitalWrite(r4, LOW);

    digitalWrite(r1, HIGH);

    digitalWrite(r2, HIGH);    

    digitalWrite(r3, HIGH);    

    Blynk.setProperty(V1, "isDisabled", true);     

    Blynk.setProperty(V2, "isDisabled", true); 

    Blynk.setProperty(V3, "isDisabled", true);      

    Blynk.virtualWrite(V0, "4");            

  } else if (pinValue == 0) {

    digitalWrite(r4, HIGH);    

    Blynk.setProperty(V1, "isDisabled", false);     

    Blynk.setProperty(V2, "isDisabled", false); 

    Blynk.setProperty(V3, "isDisabled", false);      

  }

  Serial.print("V4 button value is: "); // printing value to serial monitor

  Serial.println(pinValue);

}


void setup() {  

Serial.begin(115200);

Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);

pinMode(r1, OUTPUT);

pinMode(r2, OUTPUT);

pinMode(r3, OUTPUT);

pinMode(r4, OUTPUT);

//เปิดจ่ายไฟ ค่าพินเลข   เพื่อปิดการทำงานของ Relay

digitalWrite(r1, HIGH);

digitalWrite(r2, HIGH);

digitalWrite(r3, HIGH);

digitalWrite(r4, HIGH);

}


void loop() {

  // put your main code here, to run repeatedly:

  Blynk.run();

}


/////////////////


Relate Link :

https://docs.blynk.io/en



Contact:

https://www.facebook.com/chaiyutpong




Tag:

Relay,ESP8266,Arduio IDE,NodeMCU,digitalWrite,

Blynk,BLYNK_WRITE(),Virtualpin,pinValue,Blynk.virtualWrite,

Blynk.setProperty,isDisabled,

ความคิดเห็น