Skip to main content

Arduino Mega 2560 + WizFi360 Azure AT Command를 이용하여 Azure IoT Hub에 연결

시작하기 전에#

Hardware Requirement#

  • Arduino Mega 2560 board
  • Desktop or laptop computer
  • USB 케이블
  • WizFi360-EVB-Shield

Software Requirement#

  • MS Azure Account (Azure 구독이 아직 없는 경우 체험 무료계정을 만듭니다.)
  • Preferred Serial Terminal (TeraTerm, YAT, etc.)
  • Azure IoT Explorer
  • Arduino IDE

소개#

Microsoft Azure 는 Microsoft 의 클라우드 컴퓨팅 서비스입니다. Microsoft Azure 의 서비스에 WizFi360 을 연동하여 데이터를 클라우드로 전송하고, 모니터링 할 수 있습니다.

본 문서에서는 Arduino Mega 2560 + WizFi360 이용하여 MS Azure Services에 연결 방법에 대한 가이드를 제공합니다. 이 프로세스는 다음 단계로 구성됩니다.

  • Azure IoT Hub 준비
  • IoT 디바이스 등록
  • Azure IoT와 연결 및 데이터 통신

Azure IoT Hub 준비와 IoT 디바이스 등록 과정 대해 Azure Cloud 소개 참조하시기 바랍니다.

WiFi모듈 테스트를 위해 WizFi360-EVB-Shield Evaluation 보드를 사용되었습니다.

디바이스 준비#

하드웨어 설정#

이 문서에서는 Arduino Mega2560 과 WizFi360-EVB-Shield 를 사용합니다. Arduino Code 에서 UART1 을 사용하여 WizFi360-EVB-Shield 와 통신하기 위해, Arduino 의 TX1, RX1 Pin 과 WizFi360-EVB-Shield 의 RXD, TXD pin 을 연결합니다. WizFi360-EVB-Shield 에서 RXD/TXD Selector 를 OFF 로 변경하여 USB 가 아닌 Pin 을 통해 UART 통신을 하도록 합니다.

WizFi360-EVB-Shield에 있는 DHT11 센서 사용을 위해 Arduino Mega D14 pin과 EVB D14 pin 연결해야 됩니다.

디바이스 연결#

하드웨어 설정 후 USB 커넥터를 이용하여 Arduino Mega2560 Rev3 보드와 PC를 연결합니다. PC 운영체제 장치 관리자에서 장치와 연결된 COM 포트를 확인할 수 있습니다.

Arduino IDE를 정상적으로 설치하면, 위와 같이 장치 관리자에서 COM 포트를 확인할 수 있습니다.

AT 명령어#

1. Set current WiFi mode (not saved in flash)#

AT Command: AT+CWMODE_CUR Syntax:

TypeCommandResponse
QueryAT+CWMODE_CUR?+CWMODE:<mode>
OK
SetAT+CWMODE_CUR=<mode>OK

Defined values:

ModeValue
1Station mode
2SoftAP mode (factory default)
3Station+SoftAP mode

2. Enable DHCP#

AT Command: AT+CWDHCP_CUR Syntax:

TypeCommandResponse
QueryAT+CWDHCP_CUR?+CWDHCP_CUR:<para>
OK
SetAT+CWMODE_CUR=<para>,<en>OK

Defined values:

ParameterValue
0SoftAP DHCP 와 Station DHCP 를 disable 한다.
1SoftAP DHCP 는 enable 하고 Station DHCP 는 disable 한다.
22: SoftAP DHCP 는 disable 하고 Station DHCP 는 enable 한다.
3SoftAP DHCP 와 Station DHCP 를 enable 한다. (factory default)

3. List available APs#

AT Command: AT+CWLAP Syntax:

TypeCommandResponse
QueryAT+CWLAP+CWLAP:([<ecn>,<ssid>,<rssi>,<mac>,<channel>,<wps>])

Defined values:

ParameterValue
<ecn>0: Open
1: WEP
2: WPA_PSK
3: WPA2_PSK
4:WPA_WPA2_PSK
<ssid>string parameter. AP의 ssid
<rssi>signal strength
<mac>string parameter. AP의 mac
<wps>0: WPS는 disable된다
1: WPS는 enable된다

4. Connect to AP#

AT Command: AT+CWJAP_CUR Syntax:

TypeCommandResponse
SetAT+CWJAP_CUR=<ssid>,<pwd>,[<bssid>]+CWJAP_CUR:<ssid>,<bssid>,<channel>,<rssi>
OK

Defined values:

ParameterValue
<ssid>string parameter. Target AP의 ssid. MAX: 32 bytes
<pwd>string parameter. Target AP의 password. MAX: 64-byte ASCII
<bssid>string parameter, target AP 의 MAC address, 같은 SSID 를 가진 여러 개의 AP 들이 있을 때 사용된다.

5. Azure IoT Hub configuration set#

AT Command: AT+AZSET

Syntax:

TypeCommandResponse
SetAT+AZSET=<iothub_name>,<device_id>,<device_key>OK

Defined values:

ParameterValue
<hub ID>string parameter. IoT Hub의 ID
<device ID>string parameter. IoT Device의 ID
<key>string parameter, IoT Device의 Key

6. Set MQTT Topic#

AT Command: AT+MQTTTOPIC

Syntax:

TypeCommandResponse
SetAT+MQTTTOPIC=<publish topic>,<subscribe topic>,<subscribe topic2>,<subscribe topic3>OK

Defined values:

ParameterValue
<publish topic>string parameter, WizFi360 이 publish 하는 topic
<subscribe topic>string parameter, WizFi360 이 subscribe 하는 topic
<subscribe topic2>string parameter, WizFi360 이 subscribe 하는 topic
<subscribe topic3>string parameter, WizFi360 이 subscribe 하는 topic

Note:

  • 이 command 는 broker 에 연결하기전에 설정되어야 합니다.
  • <subscribe topic2> 와 <subscribe topic3>는 Firmware v1.0.5.0 이후 version 부터 사용가능 합니다.

7. Connect to Azure#

AT Command: AT+AZCON

Syntax:

TypeCommandResponse
SetAT+AZCONCONNECT
OK

Note: • 이 command 를 전송하기전에 AT+AZSET command 와 AT+MQTTTOPIC command 를 설정합니다. • Connect 이후 AT+MQTTPUB command 를 통해 Azure Sever 에 데이터를 전송합니다. • 자세한 내용은 https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support 를 참조하세요.

8. Publish a message#

AT Command: AT+MQTTPUB

Syntax:

TypeCommandResponse
SetAT+MQTTPUB=<message>OK

Note: • 이 command 는 MQTT 가 연결되어 있을 때 사용됩니다. • Publish 한 data 의 topic 은 AT+MQTTTOPIC command 에 의해 결정되며, 사용자는 broker 에 연결하기전에 topic 을 설정합니다.

동작 예제#

Arduino 예제 코드 다운로드#

다음 링크에서 Arduino 예제 코드를 다운로드한 후, ino 확장자의 프로젝트 파일을 실행 시킵니다.

예제는 다음 경로에 위치하고 있는 Project를 참고 바랍니다.

samples/Wi-Fi/Arduino_Azure_Atcmd_Wizfi360

Modify parameters#

Azure IoT Hub 연결 위한 WiFi ssid, WiFi pwd, Hub ID, Device ID, Device Key 변경하여 테스트 해볼 수 있습니다.

//WiFi credentials
char ssid[] = "XXXXXXXXXXXXXXXXXX"; // your network SSID (name)
char pass[] = "XXXXXXXXXXXXXXXXXX"; // your network password
//Azure Hub & Device credentials
char IotHubname[] = "XXXXXXXXXXXXXXX";
char DeviceId[] = "XXXXXXXXXXXXX";
char DevicePrimaryKey[] = "XXXXXXXXXXXXXXXXXX";

다음 그림과 같이 Arduino Mega2560 보드와 포트를 선택하고, 컴파일을 수행합니다.

컴파일이 완료 되면 다음과 같이 업로드를 수행하여 최종적으로 보드에 업로드를 수행 합니다. 업로드가 정상적으로 완료되면 'avrdude done. Thank you.' 메시지를 확인 할 수 있습니다.

업로드를 완료한 후, 시리얼 모니터를 이용하여 정상적으로 Arduino Mega2560 보드에 업로드 되었는지 확인할 수 있습니다.

동작 예제 결과#

  1. IoT Explorer 에서 Telemetry Section안에 "Start" 버튼을 누릅니다.

    MQTTPUB 명령을 통해 메시지를 보내기 전에 "Start" 버튼을 눌러야 합니다.

  2. MQTTPUB command으로 수신한 데이터를 확인 할 수 있습니다.

다음 단계#