项目简介
本项目是基于Arduino框架为虚构的艺术运输公司Contoso Art Shipping打造的资产追踪系统。借助Arduino MKRGSM1400和MKRENV shield收集温度、湿度等环境数据,通过MKR1400的蜂窝调制解调器将数据发送到Azure IoT Central。搭配LCD触摸屏可提供直观的图形用户界面,用于监测设备与Azure IoT Central的连接状态、GSM信号质量以及传感器信息。
项目的主要特性和功能
- 数据通信:利用Arduino MKRGSM1400的蜂窝模块,实现设备与Azure IoT Central之间的数据通信。
- 环境数据收集:通过MKRENV shield准确收集温度、湿度等环境数据。
- 数据传输协议:采用MQTT协议将收集到的数据可靠地发送到Azure IoT Central。
- 可视化监测:支持LCD触摸屏界面,用户可直观查看设备状态、网络信号质量和传感器信息。
安装使用步骤
硬件准备
- 若没有Arduino MKRGSM1400,可从Arduino Store或Mouser购买。
- MKR ENV shield可从Arduino Store或Mouser购买。
- 若需要Arduitouch触摸屏外壳,可从Zihatec购买。
软件准备
- 安装Arduino IDE以及Arduino MKR1000系列开发板所需的驱动,确保简单的LED闪烁示例代码能在开发板上编译并运行。可参考此指南:https://www.arduino.cc/en/Guide/MKR1000 。
- 打开Arduino IDE,点击“Sketch”菜单,选择“Include Library” -> “Manage Libraries”,安装以下库的最新版本:
- MKRGSM
- Arduino_MKRENV
- RTCZero
- PubSubClient
- ArduinoHttpClient 若计划使用LCD触摸屏,还需安装以下库:
- Adafruit GFX Library
- Adafruit ILI9341
- XPT2046_Touchscreen
- QRCode
- 增大PubSubClient库的有效负载大小限制。打开
%HomePath%\Documents\Arduino\libraries\PubSubClient\src\PubSubClient.h
文件,将#define MQTT_MAX_PACKET_SIZE 128
改为#define MQTT_MAX_PACKET_SIZE 2048
,保存文件。
配置Azure IoT Central
- 访问https://apps.azureiotcentral.com/ 创建一个应用程序(需使用Microsoft账户登录)。
- 选择试用版或按需付费版。
- 选择Sample DevKits模板(中间框)。
- 提供应用程序名称和URL域名。
- 若选择按需付费版,需选择Azure订阅并选择安装应用程序的区域;试用版则无需此信息。
- 点击“Create”创建应用程序。
- 点击左侧的Device Explorer,选择MXChip模板,点击“+V”图标,选择“Real”添加一个新的物理设备,为设备命名并点击“Create”。
代码配置
打开configure.h
文件,设置以下常量:
```CPP
// GSM信息
static char PROGMEM PINNUMBER[] = "<替换为SIM卡的PIN号,若不需要PIN则为空字符串>";
// APN数据
static char PROGMEM GPRS_APN[] = "<替换为你的APN>";
static char PROGMEM GPRS_LOGIN[] = "<替换为你的APN登录名,若不需要登录则为空字符串>";
static char PROGMEM GPRS_PASSWORD[] = "<替换为你的APN密码,若不需要密码则为空字符串>";
// Azure IoT Central设备信息 static char PROGMEM iotc_enrollmentKey[] = "<替换为你的IoT Central组密钥>"; static char PROGMEM iotc_scopeId[] = "<替换为你的IoT Central作用域ID>"; static char PROGMEM iotc_modelId[] = "<替换为你的资产追踪器的模型ID>"; ```
编译与运行
- 将
contoso_asset_tracker\contoso_asset_tracker.ino
文件加载到Arduino IDE中,点击工具栏上的Upload按钮,将代码编译并上传到设备。 - 若使用MKR1000时在串口监视器中看到
---> mqtt failed, rc=-2
信息,需将设备的Wi-Fi固件更新到最新版本(MKR1000为19.5.4),参考https://www.arduino.cc/en/Tutorial/FirmwareUpdater 进行更新,然后重新开始此步骤。 - 打开串口监视器(点击Tool菜单 -> Serial Monitor,将波特率改为115200),若设备正常工作,应能看到数据成功发送到Azure IoT Central的输出信息。
- 在Azure IoT Central应用程序中查看设备数据:
- 点击创建的设备,在Telemetry列中选择温度和湿度遥测值,可通过点击眼睛图标开启或关闭遥测值显示。
- 点击“Properties”链接,可看到“Die Number”属性值约每15秒更新一次。
- 点击“Settings”链接,更改Fan Speed (RPM)的值,点击“Update”按钮,设备确认收到设置后,输入框下方的文本会先变红再变绿。
- 点击“Commands”链接,在Echo - Value to display文本框中输入仅包含字母(a - z)和空格的消息,点击“Run”按钮,设备的LED将以摩尔斯电码闪烁显示该消息。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】