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,

ความคิดเห็น
แสดงความคิดเห็น