IoTMakers와 아두이노 연동

본 자료는 http://iotmakers.kt.com/openp/index.html#/blog/blogDetail/10/KOR 의 내용을 바탕으로 작성되었습니다.

목표

준비사항

1. 아두이노 MKR WIFI 1010 에서 LED 제어하기

1.1 하드웨어 구성

1.2 MKR WIFI 1010 설정

1.3 스케치 코드 실행 및 확인

2. 아두이노 MKR WIFI1010에서 DHT-11 센서를 활용한 온도 센서 값 수집하기

2.1 DHT-11 센서

2.2 하드웨어 구성

[주의] DHT-11VCC, Data, GND 핀의 위치가 다소 차이가 있을 수 있음

2.3 관련 라이브러리 설치

2.4 DHTTester 예제

#include "DHT.h"

#define DHTPIN 2     // Digital pin connected to the DHT sensor

#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(9600);
  Serial.println(F("DHTxx test!"));

  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(2000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  // Read temperature as Fahrenheit (isFahrenheit = true)
  float f = dht.readTemperature(true);

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Compute heat index in Fahrenheit (the default)
  float hif = dht.computeHeatIndex(f, h);
  // Compute heat index in Celsius (isFahreheit = false)
  float hic = dht.computeHeatIndex(t, h, false);

  Serial.print(F("Humidity: "));
  Serial.print(h);
  Serial.print(F("%  Temperature: "));
  Serial.print(t);
  Serial.print(F("°C "));
  Serial.print(f);
  Serial.print(F("°F  Heat index: "));
  Serial.print(hic);
  Serial.print(F("°C "));
  Serial.print(hif);
  Serial.println(F("°F"));
}

2.4 실행결과 확인

3. 아두이노 MKR WIFI1010에서 WIFI 테스트

3.1 WIFININA 라이브러리 추가

3.2 WIFI 테스트 예제 실행

4. IoTMakers와 아두이노 연동

4.1 하드웨어 구성

  1. LED 제어 배선

  2. DHT-11 온습도 센서

4.2 아두이노/IoTMakers 연결: 디바이스 등록

  1. 실습을 위한 준비를 마쳤다면 IoTMakers에 접속해서 디바이스를 등록해보자. 처음 가입하면 다음과 같이 디바이스 등록 화면을 볼 수 있다.

  2. 디바이스 명을 입력하고 프로토콜 유형을 선택한다.

  3. 디바이스 연결 상태: OFF 확인

  4. 디바이스 상세 정보를 미리 확인해 둔다.

4.3 아두이노/IoTMakers 연결: SDK 설치

4.4 아두이노/IoTMakers 연결: IoTMakersDemo 실행

  1. IoTMakersDemoMKR1010을 다운로드하여 Arduino IDE에서 실행한다.

  2. 소스코드에서 다음을 찾아 사용 환경에 맞도록 수정후, 빌드/업로드 한다.

  3. 아두이노 IDE의 시리얼 모니터를 열고, 접속이 제대로 이루어지는 지 확인해 본다.

4.5 아두이노/IoTMakers 연결: 상태확인 (ON)

4.6 IoTMakers에서 LED on/off 제어

4.6.1 LED 제어태그 등록

4.6.2 LED제어 소스코드

// ... 생략
#define PIN_LED     5

// ... 생략

void mycb_strdata_handler(char *tagid, char *strval)
{
    // !!! USER CODE HERE
    //Serial.print(tagid);Serial.print(F("="));Serial.println(strval);

    if ( strcmp(tagid, "LED")==0 && strcmp(strval, "ON")==0 )   
        digitalWrite(PIN_LED, HIGH);
    else if ( strcmp(tagid, "LED")==0 && strcmp(strval, "OFF")==0 )     
        digitalWrite(PIN_LED, LOW);
}

4.7 IoTMakers를 통해 온도값 수집

4.7.1 온도 수집태그 등록

4.7.2 온도 수집 소스코드

\\… 생략 …

void loop()
{
    static unsigned long tick = millis();

    // 3초 주기로 센서 정보 송신
    if ( ( millis() - tick) > 3000 )
    {
        digitalWrite(PIN_LED, HIGH);
        send_temperature();
        tick = millis();
    }

    // IoTMakers 서버 수신처리 및 keepalive 송신
    g_im.loop();
}


int send_temperature()
{
    float temperature = dht.readTemperature();

    Serial.print(F("Temperature (c): ")); Serial.println(temperature);
    if ( g_im.send_numdata("temperature", (double)temperature) < 0 ) {
        Serial.println(F("fail"));  
        return -1;
    }
    return 0;   
}

\\… 생략 …

4.7.3 IoTMakers를 통해 온도값 수집: 태그스트림 확인

5. IoTMakers를 통해 규칙에 의한 아두이노 LED on/off 제어하기

5.1 디바이스의 Event 관리

5.3 결과 확인

6. 실습

추가 자료