한 Blynk 서버에서 연결된 여러개의 ESP8266 디지털핀을 각각 제어하려면
Blynk의 Virtual Pin 기능을 사용해주시면 됩니다.
저는 Wemos D1 Mini를 사용했습니다.
Wemos D1을 이용한 신호등 중앙제어 예제
Server-Side
Blynk서버의 중앙제어 예제는 생략합니다.
Blynk 로컬 서버 구축은 여기를 참고해주세요.
Client-Side
//신호등 1번
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
int red = D4;
int yellow = D3;
int green = D2;
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "Token";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "SSID_NAME";
char pass[] = "PASSWORD";
char ip[] = "Custom_server_ip";
void setup()
{
// Debug console
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
Blynk.begin(auth, ssid, pass, ip, 8080);
}
void loop()
{
Blynk.run();
}
BLYNK_WRITE(V2)
{
if (param.asInt() == 1) digitalWrite(green, HIGH);
else digitalWrite(green, LOW);
}
BLYNK_WRITE(V1)
{
if (param.asInt() == 1) digitalWrite(yellow , HIGH);
else digitalWrite(yellow, LOW);
}
BLYNK_WRITE(V0)
{
if (param.asInt() == 1) digitalWrite(red, HIGH);
else digitalWrite(red, LOW);
}
//신호등 2번
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
int red = D4;
int yellow = D3;
int green = D2;
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "Token";
// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "SSID_NAME";
char pass[] = "PASSWORD";
char ip[] = "Custom_server_ip";
void setup()
{
// Debug console
Serial.begin(9600);
pinMode(red, OUTPUT);
pinMode(yellow, OUTPUT);
pinMode(green, OUTPUT);
Blynk.begin(auth, ssid, pass, ip, 8080);
}
void loop()
{
Blynk.run();
}
BLYNK_WRITE(V5)
{
if (param.asInt() == 1) digitalWrite(green, HIGH);
else digitalWrite(green, LOW);
}
BLYNK_WRITE(V4)
{
if (param.asInt() == 1) digitalWrite(yellow , HIGH);
else digitalWrite(yellow, LOW);
}
BLYNK_WRITE(V3)
{
if (param.asInt() == 1) digitalWrite(red, HIGH);
else digitalWrite(red, LOW);
}
기본적으로 연결할때 같은 Auth-Token에 연결해주고
클라이언트 단에서 BLYNK_WRITE(V핀번호) 로 이벤트를 받아주면 됩니다.
위 예제에서는 Blynk 서버에서 V0에 신호를 보내면 1번 Wemos D1의 빨간불이,
V3에 신호를 보내면 2번 Wemos D1의 빨간불이 켜지게 됩니다.
Blynk 로컬 서버를 이용하지 않으실거라면 코드에서
이부분을 제거하고
char ip[] = "Custom_server_ip";
Blynk 셋업 부분을 다음과 같이 변경합니다.
Blynk.begin(auth, ssid, pass);
사실 BLYNK는 다중제어에는 크게 적합하지 않습니다.
1:n의 다중제어가 필요하다면 MQTT등의 서비스를 이용하는걸 추천합니다
'프로젝트 > 아두이노' 카테고리의 다른 글
ESP-01로 MQTT 프로토콜 사용하기 (3) | 2021.11.21 |
---|---|
DJ MAX Respect V 리듬 게임 컨트롤러 자작기 - 1편 [재료구비] (0) | 2021.08.09 |
MQTT + Wemos D1 Mini로 에어컨 무선 원격제어하기 (0) | 2020.07.17 |
MQTT + DHT22(AM2302) 센서 신호 보내기(publish) (9) | 2020.07.16 |
마인크래프트 RGB LED 무드등 DIY (0) | 2020.03.08 |