鸿蒙设备开发之从 0 到 1 联网上云 - 概述篇
前言
本文主要讲解以下四个部分:
物联网开发概述
鸿蒙设备开发
鸿蒙设备如何联网上云
一、物联网开发概述
1.物联网典型层级架构
物联网层级架构主要分为以下五个部分:
端:信息收集和信号处理
边:本地数据自治、低时延
管:接入和传输网络
云:多协议多网络设备连接,数据分析和处理
行业应用:数据呈现及客户交互
2.物联网常见的通信协议
2.1 CoAP 协议和 MQTT 协议
CoAP 是受限制的应用协议(Constrained Application Protocol)的代名词,它运行于 UDP 协议之上而不是像 HTTP 那样运行于 TCP 之上。CoAP 协议非常小巧,最小的数据包仅为 4 字节。
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议)它构建于 TCP/IP 协议上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型“轻量级”通讯协议,使用发布/订阅消息模式,提供了一对多的消息分发和应用之间的解耦。
2.2 ModBus 协议
ModBus 网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。
ModBus 通信协议分为物理层、数据链路层、应用层。
2.3 OPC-UA 协议
OPC-UA (OPC Unified Architecture,OPC 统一架构)协议
由于其跨平台(不受限于架构平台)、面向服务的架构、信息通信安全等强大能力,被广泛应用于工业设备间的通信。
连通机制:
仅在 PLC 间通讯,协议无法跨网段。
交互机制:
Client/Server 和 Publisher/Subscriber 模式,前者应用之间必须建立单独点对点连接,后者可免去直接连接实现点对多点传输,读写 PLC 内地址快无需新增硬件,可实现不同厂商设备间数据调用,现阶段 Client/Server 模式更为通用。
话务机制:
可配置周期订阅与非周期直接读写,周期订阅中可配置发布周期,保活间隔,订阅监控数,采用速率,生命周期与读写超时配置
3.物联网设备接入方式
3.1 有线通信技术
有线通信是一种通信方式,狭义上现代的有线通信是指有线电信,即利用金属导线、光纤等有形媒质传送信息的方式。光或电信号可以代表声音,文字,图像等。
3.2 短距无线通信技术
短距无线通信技术主要分为:Bluetooth、Wi-Fi、ZigBee、Z-Wave。
3.3 蜂窝移动网络
蜂窝移动网络主要分为:2G、3G、4G、5G。
3.4 LPWA 通信技术
LPWA 通信技术主要分为:SigFox、LoRa、NB-IoT、eMTC。
二、鸿蒙设备开发
1.环境搭建
1.1 环境配置
1、硬件准备
Linux 编译服务器:Ubuntu16.04 及以上 64 位系统版本,Shell 使用 bash
Windows 工作台:Windows XP/Windows7/Windows10
开发板
2、Windows 开发工具要求
3、Liunx 构建工具要求
1.2 源码获取准备
1)从镜像站点下载压缩文件
https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
2)从 HPM 网站组件式获取
HPM 网站:https://hpm.harmonyos.com/#/cn/home软环境要求:Linux 服务器安装 12.13.0+的 Nodejs
3)用包管理器命令行获取
4)从代码仓库获取
需要先注册 gitee 账号,并配置邮箱源码链接:https://gitee.com/bearpi/bearpi-hm_nano
目录介绍如下:
2.内核开发
内核开发主要分为六部分:任务管理、软件定时器、信号量、事件管理、互斥锁、消息队列。
2.1 内核管理
从系统的角度看,任务是竞争系统资源的最小运行单元。
抢占式调度机制+时间片轮转调度方式,有 32 个优先级(0-31)。
任务状态:就绪态、运行态、阻塞态、退出态,及状态迁移。
任务管理:创建任务、删除某个任 务、任务挂起、任务恢复。
2.2 软件定时器
基于系统 Tick 时钟中断且由软件来模拟的定时器。
定时精度与系统 Tick 时钟的周期有关。
使用系统一个队列 &任务资源,触发遵循队列规则, 先进先出。
软件定时器管理:创建/启动/停止/删除定时器。
2.3 信号量
在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护可以通过信号量来实现。
用作互斥时,信号量创建后记数是满的。
用作同步时,信号量在创建后被置为空。
信号量运作:初始化/创建/申请/释放/删除。
2.4 事件管理
事件是一种实现任务间通信的机制可用于实现任务间的同步,但事件通信只能是事件类型的通信,无数据传输。
多任务环境下,任务之间往往需要同步操作。事件可以提供一对多、多对多的同步操作。
读事件/写事件/清除事件,写事件会触发任务调度。
功能函数:创建事件标记对象、设置事件标记、等待事件标记触发、删除事件标记对象。
2.5 互斥锁
互斥锁又称互斥型信号量,是一种特殊的二值性信号量,用于实现对共享资源的独占式处理。
任意时刻互斥锁的状态只有两种开锁或闭锁。
当有任务持有时,互斥锁处于闭锁状态,这个任务获得该互斥锁的所有权。
当该任务释放时,该互斥锁被开锁任务失去该互斥锁的所有权。
确保同一时刻只有一个任务正在访问非共享公共资源,保证了公共资源操作的完整性。
功能函数:创建/获取/释放/删除互斥锁。
2.6 消息队列
消息队列,是一种常用于任务间通信的数据结构,实现了接收来自任务或中断的不固定长度的消息。
用户在处理业务时,消息队列提供了异步处理机制,起到缓冲消息作用。
先进先出,支持异步读写;读/写队列都支持超时机制。
功能函数:创建消息队列、发送消息、获取消息、删除消息队列。
3.驱动子系统
操作 GPIO
LED 对应的 GPIO 引脚是 GPIO2,通过控制 GPIO2 输出的的电平信号来实现 LED 灯的闪烁。高电平时点亮 LED 灯,低电平时熄灭 LED 灯。
GPIO 中断
F1 和 F2 按键对应的 GPIO 引脚是分别是 GPIO11 和 GPIO12,通过检测 GPIO 的电平信号来判断按键的状态。实现按键控制 LED 灯亮灭。
PWM 输出
通过代码实现输出不同占空比的 PWM 来改变 LED 的亮度。
ADC 采样
根据输入参数从指定的 ADC 通道读取一段采样数据,编码实现读取 ADC 通道 5 的电压值。
12C 总线
NFC 芯片的 I2C 对应的 GPIO 引脚是分别是 GPIO0 和 GPIO1,所以需要编写软件使用 GPIO0 和 GPIO1 产生 I2C 信号去控制 NFC 芯片。
UART
UART1 对应的 GPIO 引脚是分别是 GPIO5 和 GPIO6,将使用 GPIO5 和 GPIO6 进行 UART 数据的收发。
4.无线联网
WIFI AP 热点注册 WIFI 事件的回调函数设置指定的热点配置启动 WIFI 热点模式检查热点模式是否使能等待 STA 连接
wifi_hotspot.h 接口简介:
WIFI STA 联网注册 WIFI 事件的回调函数使能 WIFI 判断 WIFI 是否激活分配空间保存 WIFl 信息轮询查找 WIFl 列表
wifi_device.h 接口简介:
5.网络通信
UDP 客户端
编码实现 UDP 客户端创建流程,使用 Sockettool 创建 UDP 服务端用于测试。
TCP 服务端
编码实现 TCP 服务端,使用 Sockettool 创建 TCP 客户端用于测试。
TCP 客户端
编码实现 TCP 客户端。
UDP 服务端
编码实现 UDP 服务端
MQTT 客户端
基于 Paho MQTT,编码实现 MQTT 客户端。
三、鸿蒙设备如何联网上云
1.华为云 IoT,构建开放的物联网平台,加速企业数字化转型
2.华为云 IoT 平台介绍
华为云物联网平台,即华为设备接入服务(loT Device Access) 提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA 升级、设备联动规则等能力,并可将设备数据灵活流转到华为云其他服务,帮助物联网行业用户快速完成设备联网及行业应用集成。
3.鸿蒙开发板连接华为云 IoT 平台
案例演示如何在 BearPi-HM Nano 开发板上使用 MQTT 协议连接华为 loT 平台,需要将 E53IA1 智慧农业扩展板与 BearPi-HM Nano 开发板安装在一起。
4.通信扩展板案例集
总结
本文主要讲解以下四个部分:物联网开发概述、鸿蒙设备开发、鸿蒙设备如何联网上云、由浅入深。
通过本课程学习相信大家对物联网相关概念和协议都有所了解,知道鸿蒙设备开发的一些知识和如何进行鸿蒙设备数据上云。
版权声明: 本文为 InfoQ 作者【愚公搬代码】的原创文章。
原文链接:【http://xie.infoq.cn/article/9468c02673a7ca5b979902405】。文章转载请联系作者。
评论