Esp 01s โชว์สถานะหลอดไฟใน blynk


ขอคำแนะนำพี้นฐาน หน่อยคับ คือผมใช้esp8266+swit 3 way + หลอดไฟบ้าน220vac
คือผมอยากให้ledในแอป blynk โชว์สถานะ ของหลอดไฟมีวิธีไหนบ้างคับ

ใช้ 3 ทางต่อเข้ากับ relay 220v เพื่อเอาหน้าคอนเทคไปใช้กับไฟ 3.3 V จากบอร์ด esp8266 ผ่าน R pull up-down เข้า G จากนั้น จั๊มอินพุตเข้า esp8266 เลือกมาหนึ่งพิน เพื่อรับ สถานะ อินพุต 0 หรือ 1 ถ้าเปิดไฟ เป็น 1 ถ้าเป็นเป็น 0

จากนั้นเขียนโปรแกรมรับค่า เพื่อ สางค่าแสดงบน app ครับ

1 Likes

มีตัวอย่างส่วนcodeไมคับ

ประมาณนี้ครับ

  ///// set button 1 ///
  if (digitalRead(Button1) == HIGH) {

      digitalWrite(Relay1, HIGH);
      Blynk.virtualWrite(V37, 1);
      Serial.println("Relay1 On");

     }
    else{

      digitalWrite(Relay1, LOW);
      Blynk.virtualWrite(V37, 0);
      Serial.println("Relay1 Off");

    }

ต้องเปลี่ยน การกำหนด pin ใหม่ด้วยนะครับเป็นแบบ Vpin

วงจรนี้ถูกไมคับตามที่พี่ว่ามาคับ

± คือบอร์ดถูกไหมคับ

ผมส่งผิดๆ เดะวายให้ดูใหม่

ต้องใช้ Relay ในวงจรด้วยนะครับ

อุปกรณ์ตรบคับ

*ถ้าผมจะใช้ code ตัวนี้ต้องส่วนไหนคับ

#define BLYNK_PRINT Serial
#define LED D1
#define SW1 D3
#define SW2 D4
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = “NGWmNo6ev6caxUG4t1s6_Sx3W6nWzX9J”;
char ssid[] = “tanawat”;
char pass[] = “Wat08076677433”;
BlynkTimer timer;
WidgetLED led(V37);
void timerEvent()
{
if(digitalRead(LED)==HIGH)
led.on();
else
led.off();
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
timer.setInterval(2000L, timerEvent);
pinMode(LED,OUTPUT);
pinMode(SW1,INPUT_PULLUP);
pinMode(SW2,INPUT_PULLUP);
}
void loop()
{
Blynk.run();
timer.run(); // run BlynkTimer
if(digitalRead(SW1)==LOW)
digitalWrite(LED,HIGH);
else if (digitalRead(SW2)==LOW)
digitalWrite(LED,LOW);
}

ประมานนี้ไมคับ

ใช่ครับ ลองเทสดู

เดียวช่วยดูcode. ให้หน่อยคับว่าต้องแก้จุดไหน

Sw1 และ 2 ต่ออะไรไว้ครับ

ไม่ได้ต่อคับอะไรได้เลยคับ

แล้วทำไมต้องใช้ sw สองอันครับ

#define BLYNK_PRINT Serial
#define LED D1
#define SW1 D3

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = “NGWmNo6ev6caxUG4t1s6_Sx3W6nWzX9J”;
char ssid[] = “tanawat”;
char pass[] = “Wat08076677433”;

BlynkTimer timer;
WidgetLED led(V37);
void timerEvent()
{
if(digitalRead(LED)==HIGH)
led.on();
else
led.off();
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
timer.setInterval(2000L, timerEvent);
pinMode(LED,OUTPUT);
pinMode(SW1,INPUT_PULLUP);
}
void loop()
{
Blynk.run();
timer.run(); // run BlynkTimer
if(digitalRead(SW1)==LOW)
digitalWrite(LED,HIGH);
}

image

ถนัดเขียนโปรแกรมแบบไม่มีปีกกา เปิด ปิด หรอครับ