BLYNK로 ESP8266 여러개 제어하기 (Multiple Device)


 

 

한 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등의 서비스를 이용하는걸 추천합니다

COMMENT WRITE