Yilin Sun
763d32be90
Signed-off-by: Yilin Sun <imi415@imi.moe> |
||
---|---|---|
.. | ||
armgcc | ||
azure_iot_mqtt_v3_14.xml | ||
board.c | ||
board.h | ||
clock_config.c | ||
clock_config.h | ||
dcd.c | ||
dcd.h | ||
evkmimxrt1020_sdram_init.jlinkscript | ||
fx_user.h | ||
get_seed.c | ||
main.c | ||
nx_azure_iot_cert.c | ||
nx_azure_iot_cert.h | ||
nx_user.h | ||
pin_mux.c | ||
pin_mux.h | ||
readme.md | ||
sample_azure_iot.c | ||
tx_user.h |
readme.md
Overview
This example demonstrates how to communicate with Azure IoT Hub through MQTT.
Prerequisites Before running the example, need to set up a device in Azure IoT Hub, and write the device parameters in the example code.
Here, we demonstrate how to setup a device in Azure IoT Hub. If you are not familiar with Azure CLI, please refer to the document for the details. (https://docs.microsoft.com/en-us/azure/iot-hub/)
Note that these steps assume you use the Azure IoT Hub for the first time.
-
Register an Azure account.
-
Install Azure CLI locally, or use Azure CLoud Shell.
-
Before using any CLI commands locally, you need to sign in:
az login
-
Add the Microsoft Azure IoT Extension for Azure CLI.
az extension add --name azure-iot
5: Create a new resource group which is a logical container into which Azure IoT Hub are deployed and managed. {MyResourceGroupName}: Name of the new resource group {MyResourceLocation}: Location, for example, westus. Select a location from: az account list-locations -o table. > az group create --name {MyResourceGroupName} --location {MyResourceLocation}
6: Create a new IoT Hub in the resource group. {MyResourceGroupName}: The name of the resource group you just created. {MyIoTHubName}: Name of the new IoT Hub. This name must be globally unique. If failed, please try another name. > az iot hub create --resource-group {MyResourceGroupName} --name {MyIoTHubName}
7: Create a new device identity in the Hub IoT. {MyIoTHubName}: Name of the IoT Hub just created {MyDeviceId}: ID of the new device > az iot hub device-identity create --hub-name {MyIoTHubName} --device-id {MyDeviceId}
8: Create a new device SAS token for the device {MyDeviceId}. Note that the token is only valid in 3600 seconds. > az iot hub generate-sas-token --hub-name {MyIoTHubName} --device-id {MyDeviceId} If you want to set a specified valid duration, please use the parameter, --duration {seconds}, to set the valid token duration in seconds. The command result is in the JSON format, like: { "sas": "{MySASToken}" }
-
Write the above device parameters into the source code, sample_azure_iot.c, in your project. Fill these three macros, HOST_NAME, DEVICE_ID, DEVICE_SAS. HOST_NAME: {MyIoTHubName}.azure-devices.net DEVICE_ID: {MyDeviceId} DEVICE_SAS: {MySASToken} For example: #define HOST_NAME "test-hub.azure-devices.net" #define DEVICE_ID "test-dev" #define DEVICE_SAS "SharedAccessSignature sr=test-hub.azure-devices.net%2Fdevices%2Ftest-dev&sig=57jVRiSOeoX9g4aI6iyP6tFzrjEdam5SpdNITeeUbVY%3D&se=1615181586"
-
Build the code and write it into the on-board Flash.
SDK version
- Version: 2.15.000
Toolchain supported
- IAR embedded Workbench 9.40.1
- Keil MDK 5.38.1
- GCC ARM Embedded 12.2
- MCUXpresso 11.8.0
Hardware requirements
- Mini/micro USB cable
- Network cable RJ45 standard
- EVK-MIMXRT1020 board
- Personal Computer
Board settings
No special settings are required.
Prepare the Demo
- Connect a USB cable between the host PC and the OpenSDA USB port on the target board.
- Open a serial terminal with the following settings:
- 115200 baud rate
- 8 data bits
- No parity
- One stop bit
- No flow control
- Insert Cable to Ethernet RJ45 port and connect it to a ethernet switch.
- Write the program to the flash of the target board.
- Press the reset button on your board to start the demo.
Running the demo
When the demo is running, the serial port will output, for example:
Start the azure_iot_mqtt example... MAC address: 00:11:22:33:44:56 DHCP In Progress... IP address: 10.193.20.67 Mask: 255.255.255.0 Gateway: 10.193.20.254 DNS Server address: 10.192.130.201 Connected to server Subscribed to server [Published] topic = devices/imxrt1050/messages/events/, message: {"temperature": 21} [Published] topic = devices/imxrt1050/messages/events/, message: {"temperature": 22} [Published] topic = devices/imxrt1050/messages/events/, message: {"temperature": 23} [Published] topic = devices/imxrt1050/messages/events/, message: {"temperature": 24}