第八章 利用阿里云和NB-Wi-Fi通信模块搭建物联网系统_第1页
第八章 利用阿里云和NB-Wi-Fi通信模块搭建物联网系统_第2页
第八章 利用阿里云和NB-Wi-Fi通信模块搭建物联网系统_第3页
第八章 利用阿里云和NB-Wi-Fi通信模块搭建物联网系统_第4页
第八章 利用阿里云和NB-Wi-Fi通信模块搭建物联网系统_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CHAPTER08利用阿里云和NB/Wi-Fi通信模块

搭建物联网系统为什么需要外置通信模块?📌回顾:内置Wi-Fi的局限第7章我们使用了集成Wi-Fi的ArduinoD1开发板,它能快速连接云端,操作简单直接。但这种方式高度依赖板载功能,扩展性受限,无法满足所有复杂场景需求。❓现实场景中的挑战•硬件限制:使用ArduinoMega2560等无联网功能的主控板时,如何上网?•环境限制:户外、地下室等无Wi-Fi信号区域,且要求数年电池续航,该如何联网?外置通信模块方案将通信功能独立出来,通过标准的串口(UART)与主控MCU连接,为主控板提供灵活、专业的联网能力,适应各种复杂场景。本章主角&学习目标主角:阿里云IoT平台+NB-IoT/Wi-Fi模块+云智能APP目标:掌握AT指令控制、对比两种通信技术、玩转物模型高级功能。8.1AT指令:通信模块的“通用语言”什么是AT指令?•AT是“Attention”的缩写,最初由Hayes公司为调制解调器发明。•现已成为控制各种通信模块(Wi-Fi,NB-IoT等)的事实标准,是一种基于文本的指令语言。工作原理MCU(如Arduino)通过串口(UART)发送文本指令,模块执行后返回结果(OK/ERROR)。基本格式•发送:AT<指令>[=<参数>]•返回:OK/ERROR/+<指令>...⚠️重要注意事项指令集差异:不同厂家、不同型号的通信模块,其支持的AT指令集和参数定义可能不同,开发时请务必查阅对应硬件的《AT指令手册》。8.2NB-IoT实验通用准备01.硬件准备•主控板:ArduinoMega2560(推荐使用,资源丰富)•通信模块:移远BC260Y-CNNB-IoT模组•SIM卡:已开通NB-IoT业务的物联网专用SIM卡02.硬件接线(Serial3)•NB-IoTVCC→Arduino3.3V(电源)•NB-IoTGND→ArduinoGND(地)•NB-IoTTX→ArduinoRX3(数字引脚15)•NB-IoTRX→ArduinoTX3(数字引脚14)03.阿里云平台配置•创建设备产品(蜂窝网络),定义物模型•获取关键的设备三元组(ProductKey,DeviceName,DeviceSecret)•配置并记录MQTT发布/订阅Topic04.Arduino程序通用框架setup()函数:初始化硬件串口、通过AT指令配置模组并连接NB网络,建立MQTT连接。loop()函数:主循环中持续监听串口,处理消息订阅回调,以及周期性的数据上报与发布。8.2NB-IoT——布尔数正向传送(遥测):开关状态上报APP▍实验目标将物理开关的状态(开/关)通过NB-IoT网络上报到阿里云物联网平台,并在手机端的云智能APP上实时显示当前状态。▍物模型定义•名称:switch|数据类型:布尔型(bool)

•访问权限:只读(Read-Only)——仅用于设备向云端上报数据▍代码关键点1.读状态:digitalRead(12)获取引脚电平

2.组数据:{"params":{"switch":true}}封装为JSON格式

3.发消息:AT+QMTPUB=0,0,0,0,"topic",JSON发布到Topic可视化终端通过云智能APP

实时查看开关状态

所见即所得▍实验结果验证拨动物理开关,云智能APP上对应设备的“开关状态”会同步发生变化,且延迟极低,实现真正的实时数据上云与展示。8.2NB-IoT——布尔数反向控制(遥控):APP控制LED实验目标在云智能APP上点击按钮,通过阿里云平台下发指令,实现对Arduino开发板上LED模块的远程亮灭控制。物模型定义•名称:light(灯光控制)•类型:布尔型(bool)——0/1对应关/开•权限:读写(RW)——支持云端下发指令代码逻辑关键步骤01.订阅Topic

使用AT指令`AT+QMTSUB`订阅云端下发指令的Topic,建立通信通道。02.循环监听串口

在`loop()`主循环中持续检查串口,识别并捕获`+QMTRECV`接收消息。03.解析JSON数据

对收到的JSON格式数据包进行解析,精准提取`params.light`的布尔值。04.硬件执行动作

根据解析出的值,调用`digitalWrite()`控制引脚电平,实现LED亮灭。控制端:APP界面用户通过手机端点击“开关”按钮,云端将指令实时下发给设备。反馈端:串口调试指令接收成功后,LED立即响应,同时串口监视器可看到原始数据输出,便于调试排查。8.2NB-IoT——布尔数遥测遥控实验目标结合前两个实验,实现一个完整的双向通信系统:既能将物理开关状态定时上报至云端,也能接收云端指令控制开发板LED亮灭。物模型定义•switch:布尔型(Boolean)/只读(上报开关状态)

•light:布尔型(Boolean)/读写(控制LED灯)代码关键点1.发布逻辑:使用`millis()`定时读取GPIO状态,通过MQTT协议上报。

2.订阅逻辑:在`loop()`中轮询监听云端下发的Topic,收到消息后解析并执行。

3.非阻塞设计:严禁使用`delay()`,防止阻塞接收逻辑。8.2NB-IoT——浮点数正向传送(遥测):电压值上报APP实验目标将电位器的电压值通过NB-IoT协议上报到阿里云物联网平台,并在手机APP端实时刷新显示,直观验证设备上云效果。物模型定义(ThingModel)●名称:upVoltage|类型:浮点型(float)|权限:只读(RO)用于存储设备端上报的实时电压数值,保留两位小数精度。核心代码逻辑1.读模拟值:analogRead(A0)|2.电压换算:(5.0/1023.0)

3.数据组装:{"params":{"upVoltage":2.56}}|4.上报指令:AT+QMTPUB实验验证结果APP端成功订阅并展示设备上报的实时电压数值。

手动缓慢旋转电位器旋钮,APP上的数值会随之动态变化(范围0.00V~5.00V),验证数据链路全通。8.2NB-IoT——浮点数反向控制(遥控):APP设置电压值实验目标在APP上通过滑动条设置电压值,设备接收指令后,通过PWM信号在引脚上输出相应的模拟电压。物模型定义名称:downVoltage数据类型:浮点型(float)访问权限:读写(RW)代码实现关键点1.订阅云端指令Topic2.解析JSON参数获取downVoltage

3.映射转换:map(v*100,0,500,0,255)4.输出PWM:analogWrite(4,val)实验预期结果在移动端APP上拖动电压调节滑块,硬件设备端将实时响应并输出对应占空比的PWM信号。

连接示波器至引脚,可清晰观测到与APP设置数值相对应的平均电压值。8.2NB-IoT——浮点数遥测遥控(双向)实验目标结合前两个实验,实现电压的双向传输。APP既能实时显示电位器的采集电压,也能通过云端下发指令,精准控制设备PWM输出的电压值。物模型定义需在控制台同时定义两个浮点型属性:

•upVoltage(只读):上报采集到的实时电压值

•downVoltage(读写):接收云端下发的控制电压值代码关键点融合“属性上报”与“服务调用”逻辑:

•利用millis()实现非阻塞式定时读取A0口电压并上报

•在主循环中持续监听串口,解析并响应云端的PWM控制指令演示效果在移动端APP界面可同时操作:

•实时查看采集的电压数值

•通过滑动条下发目标电压值,实现对设备输出电压的实时闭环调节8.2NB-IoT——DS18B20温度遥测实验目标&物模型定义🎯目标:使用单总线数字温度传感器DS18B20采集环境温度,并将数据上报至阿里云物联网平台。🛠️物模型配置:属性名:temp|类型:浮点型(float)|权限:只读(RO)DS18B20温度传感器•采用单总线接口,仅需一根数据线即可实现双向通信,硬件连接简单。•支持多点组网,可在一根总线上挂接多个传感器,适应不同测量场景。关键代码逻辑1.库引入:导入OneWire与DallasTemperature驱动库。2.初始化:使用DallasTemperaturesensors(&oneWire)初始化传感器对象。3.采集与上报:调用requestTemperatures()读取温度,组装为Alink协议JSON格式发布。📱实时数据展示物联网应用端(APP)会实时刷新并展示当前环境温度数值。💡趣味验证:用手握住传感器金属探头,观察APP界面温度数值,会随人体温度快速上升,直观验证数据传输链路通畅。8.3Wi-Fi——布尔数实验(对比)与NB-IoT的相同点•物模型定义:逻辑和属性定义完全一致,无需重新配置。•硬件连接:开关与LED模块的电路接线方式保持不变。•数据交互:统一遵循Alink协议的JSON数据格式标准。•代码逻辑:Arduino程序的主循环、中断处理等框架逻辑高度相似。AT指令差异(核心)🔗网络连接:AT+CWJAP☁️连接云平台:AT+MQTTCONN📤发布消息:AT+MQTTPUB📥订阅主题:AT+MQTTSUB📩接收前缀:+MQTTSUBRECV:代码改造与效果✅改造工作:仅需将原代码中网络连接与MQTT通信相关的函数替换为对应的Wi-FiAT指令即可。✨最终效果:功能表现与NB-IoT实验完全一致,APP端体验无差别。8.3Wi-Fi——浮点数实验(对比)核心要素·相同点▍硬件连接

电位器(A0)与PWM输出(D4)的物理接线完全不变。▍物模型定义

上报属性`upVoltage`与下发属性`downVoltage`的定义保持一致。▍数据逻辑

`analogRead`读取、电压转换公式、PWM输出代码逻辑无任何改动。关键差异·AT指令“换汤不换药”的改造无需重写业务逻辑,仅需将代码中NB-IoT模块的AT指令部分,替换为Wi-Fi模块对应的指令即可完成移植。💡结论:掌握了AT指令差异,两种模块开发流程高度相似。改造与演示效果代码封装:创建专用的`connectWiFi()`和`connectMQTT()`连接函数。交互效果:实现APP端实时显示电压,并通过滑动条控制设备PWM输出,与NB-IoT效果一致。8.3Wi-Fi——DS18B20温度实验(对比)实验相同点•硬件连接:DS18B20传感器的三线/两线接线方式保持不变。•库使用:依然需要引入`OneWire`和`DallasTemperature`核心库。•数据读取:温度获取核心代码`requestTemperatures()`与`getTempCByIndex(0)`无需修改。•数据格式:上报至平台的JSON数据格式完全一致。核心差异点AT指令集的切换实验最大的区别在于模块的初始化流程。•网络连接:从NB-IoT的基站附着指令,替换为Wi-Fi的热点连接指令(`AT+CWJAP`)。•通用部分:MQTT连接和数据发布指令`AT+MQTTPUB`在逻辑上是通用的,无需大幅改动。改造与效果演示•主要工作:在`setup()`函数中,替换用于建立网络连接的AT指令序列即可完成改造。•最终效果:与NB-IoT实验完全一致。NB-IoTvsWi-Fi模块总结:如何选择?NB-IoT模块蜂窝网络·极低功耗·广域覆盖📊核心指标:速率~20-250kbps|需SIM卡及流量费📌典型场景:智能水表、共享单车、地下管道/环境监测等需长待机、偏远覆盖场景。Wi-Fi模块无线局域网·高吞吐量·局域覆盖📊核心指标:速率可达数十Mbps|模块成本低,无流量费📌典型场景:智能家居、智能办公、视频监控、手机互联等高频交互、大数据传输场景。📍需广覆盖、长待机、小数据量?➜选NB-IoT⚡需高速率、大数据、局域网环境?➜选Wi-Fi8.4物模型三大功能概述:属性、事件、服务物模型(ThingModel):阿里云对物理设备功能的抽象描述,是实现设备与云端标准化通信的基石。01/属性Property📝定义:描述设备的状态,是设备当前运行情况的直观反映。✨特点:可读可写,通常与云端形成“请求-响应”的成对交互。💡示例:智能灯的开关状态、温湿度传感器的实时温度值。02/事件Event📝定义:设备主动向云端发起的上报通知,常用于告警或异常提醒。✨特点:单向通信(设备->云端),无需云端回复。💡示例:温度传感器的高温告警、设备离线/故障通知。03/服务Service📝定义:设备向外部提供的、可供远程调用的能力或方法。✨特点:可包含输入/输出参数,支持复杂逻辑处理,比属性更灵活。💡示例:远程控制设备重启、对传感器进行自动校准、OTA升级指令。8.4属性实验:Web端实时显示温度仪表盘实验目标掌握使用阿里云IoTStudio快速构建Web可视化应用的能力。通过拖拽组件并配置数据源,实现将设备端的“温度”属性以直观的“仪表盘”形式实时展示。操作步骤01.定义物模型:在控制台定义浮点型只读属性`temp`。02.创建Web应用:在IoTStudio工作台新建一个Web应用项目。03.设计UI:从组件库拖拽“仪表盘”组件到画布。04.配置数据:将仪表盘组件与设备的`temp`属性进行绑定。05.模拟上报:使用MQTTX等工具向云端推送温度数据。实验结果Web页面上的仪表盘指针会根据设备上报的数据进行实时转动,并准确显示当前温度数值,实现了数据与可视化的实时联动。8.4事件实验:温度过高触发告警灯实验目标当设备上报的温度数据超过设定的阈值时,云端自动触发一个特定事件,并实时联动Web可视化应用,点亮界面上的告警灯,实现异常情况的自动化感知。关键步骤01.定义物模型事件

在产品功能定义中,新增自定义事件类型“tempAlarm”。02.创建业务逻辑规则

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论