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:
Type | Command | Response |
---|---|---|
Query | AT+CWMODE_CUR? | +CWMODE:<mode> OK |
Set | AT+CWMODE_CUR=<mode> | OK |
Defined values:
Mode | Value |
---|---|
1 | Station mode |
2 | SoftAP mode (factory default) |
3 | Station+SoftAP mode |
#
2. Enable DHCPAT Command: AT+CWDHCP_CUR Syntax:
Type | Command | Response |
---|---|---|
Query | AT+CWDHCP_CUR? | +CWDHCP_CUR:<para> OK |
Set | AT+CWMODE_CUR=<para>,<en> | OK |
Defined values:
Parameter | Value |
---|---|
0 | SoftAP DHCP 와 Station DHCP 를 disable 한다. |
1 | SoftAP DHCP 는 enable 하고 Station DHCP 는 disable 한다. |
2 | 2: SoftAP DHCP 는 disable 하고 Station DHCP 는 enable 한다. |
3 | SoftAP DHCP 와 Station DHCP 를 enable 한다. (factory default) |
#
3. List available APsAT Command: AT+CWLAP Syntax:
Type | Command | Response |
---|---|---|
Query | AT+CWLAP | +CWLAP:([<ecn>,<ssid>,<rssi>,<mac>,<channel>,<wps>]) |
Defined values:
Parameter | Value |
---|---|
<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 APAT Command: AT+CWJAP_CUR Syntax:
Type | Command | Response |
---|---|---|
Set | AT+CWJAP_CUR=<ssid>,<pwd>,[<bssid>] | +CWJAP_CUR:<ssid>,<bssid>,<channel>,<rssi> OK |
Defined values:
Parameter | Value |
---|---|
<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 setAT Command: AT+AZSET
Syntax:
Type | Command | Response |
---|---|---|
Set | AT+AZSET=<iothub_name>,<device_id>,<device_key> | OK |
Defined values:
Parameter | Value |
---|---|
<hub ID> | string parameter. IoT Hub의 ID |
<device ID> | string parameter. IoT Device의 ID |
<key> | string parameter, IoT Device의 Key |
#
6. Set MQTT TopicAT Command: AT+MQTTTOPIC
Syntax:
Type | Command | Response |
---|---|---|
Set | AT+MQTTTOPIC=<publish topic>,<subscribe topic>,<subscribe topic2>,<subscribe topic3> | OK |
Defined values:
Parameter | Value |
---|---|
<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 AzureAT Command: AT+AZCON
Syntax:
Type | Command | Response |
---|---|---|
Set | AT+AZCON | CONNECT 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 messageAT Command: AT+MQTTPUB
Syntax:
Type | Command | Response |
---|---|---|
Set | AT+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 parametersAzure IoT Hub 연결 위한 WiFi ssid, WiFi pwd, Hub ID, Device ID, Device Key 변경하여 테스트 해볼 수 있습니다.
다음 그림과 같이 Arduino Mega2560 보드와 포트를 선택하고, 컴파일을 수행합니다.
컴파일이 완료 되면 다음과 같이 업로드를 수행하여 최종적으로 보드에 업로드를 수행 합니다. 업로드가 정상적으로 완료되면 'avrdude done. Thank you.' 메시지를 확인 할 수 있습니다.
업로드를 완료한 후, 시리얼 모니터를 이용하여 정상적으로 Arduino Mega2560 보드에 업로드 되었는지 확인할 수 있습니다.
#
동작 예제 결과- IoT Explorer 에서 Telemetry Section안에 "Start" 버튼을 누릅니다.
MQTTPUB 명령을 통해 메시지를 보내기 전에 "Start" 버튼을 눌러야 합니다.
- MQTTPUB command으로 수신한 데이터를 확인 할 수 있습니다.