시나브로

[ MQTT ] IoT 프로젝트 본문

임베디드/MQTT

[ MQTT ] IoT 프로젝트

혬혬 2020. 11. 11. 18:45
728x90

 

 

MQTT를 이용하여 AWS에서 입력을 하면 아두이노 ESP32 보드에서 이를 받아 LED 전구를 점등하는 프로젝트입니다.

사용 스펙
- 아두이노 ESP32
- AWS
- Node-RED

 

이러한 구조로 만들겠습니다. 

ESP에서 구동하는 것은 금방 가능하나, AWS와 Node-RED, ESP32를 연결하는 것이 중요합니다. 

 

  1.  아두이노 IDE에서 ESP32로 셋팅합니다.
  2.  ESP 32보드에서 시리얼 입력을 통해 LED가 정상작동 되는 지 확인합니다.
  3.  컴퓨터에 MQTT를 셋팅합니다 
  4.  MQTT를 통해서 컴퓨터와 연결하고 동작을 확인합니다.
  5.  AWS를 셋팅합니다
  6.  AWS와 Node-RED를 연결합니다
  7.  Node-RED와 ESP 32보드를 연결합니다. 
  1.  아두이노 IDE에서 ESP32로 셋팅합니다.
  2.  ESP 32보드에서 시리얼 입력을 통해 LED가 정상작동 되는 지 확인합니다.
  3.  컴퓨터에 MQTT를 셋팅합니다 
  4.  MQTT를 통해서 컴퓨터와 연결하고 동작을 확인합니다.
  5.  AWS를 셋팅합니다
  6.  AWS와 Node-RED를 연결합니다
  7.  Node-RED와 ESP 32보드를 연결합니다. 

이러한 개발 순서를 가지고 있습니다.

 

ESP 32코드

#include "EspMQTTClient.h"
const int ledPin1 = 23;  
const int ledPin2 = 22;  
EspMQTTClient client(
  "연결할 와이파이 이름",
  "연결할 와이파이 비밀번호",
  "컴퓨터 IP번호",  // MQTT Broker server ip
  "",   // Can be omitted if not needed
  "",   // Can be omitted if not needed
  "NBB",     // Client name that uniquely identify your device
  1883              // The MQTT port, default to 1883. this line can be omitted
);

void setup()
{
  Serial.begin(115200);
 pinMode(ledPin1, OUTPUT);
  digitalWrite(ledPin1, LOW);
   pinMode(ledPin2, OUTPUT);
  digitalWrite(ledPin2, LOW);
 client.enableDebuggingMessages(); // Enable debugging messages sent to serial output
  client.enableHTTPWebUpdater(); // Enable the web updater. User and password default to values of MQTTUsername and MQTTPassword. These can be overrited with enableHTTPWebUpdater("user", "password").
  client.enableLastWillMessage("TestClient/lastwill", "I am going offline");  // You can activate the retain flag by setting the third parameter to true
}

void onConnectionEstablished()
{
   client.subscribe("/hyemin/test", [](const String & payload) {
     Serial.println(payload);
     if(payload =="{L1}") {
      digitalWrite(ledPin1, HIGH);
            digitalWrite(ledPin2, LOW);
     }
     else if(payload =="{L2}"){ 
        digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, HIGH);
     }
     else{
              digitalWrite(ledPin1, LOW);
      digitalWrite(ledPin2, LOW);
     }
  });
}

void loop()
{
    client.loop();
}

 

Node-RED 

728x90

'임베디드 > MQTT' 카테고리의 다른 글

[ MQTT ] MQTT에 대하여  (0) 2020.11.11
Comments