【云驻共创】手把手教你系列之鸿蒙设备开发之从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 有线通信技术
有线通信是一种通信方式,狭义上现代的有线通信是指有线电信,即利用金属导线、光纤等有形媒质传送信息的方式。光或电信号可以代表声音,文字,图像等。
通信方式 | 特点 | 适用场景 |
---|---|---|
ETH | 协议全面、通用、成本低 | 智能终端、视频监控 |
RS-232 | 一对一通信、成本低、传输距离较近 | 少量仪表,工业控制等 |
RS-485 | 总线方式、成本低、抗干扰性强 | 工业仪表、抄表等 |
USB | 一对一通信、通用、传输速度快 | 智能家居、办公、移动设备等 |
M-Bus | 针对抄表设计、使用普通双绞线、抗干扰性强 | 工业能源消耗数据采集 |
PLC | 针对电力载波、覆盖范围广、安装简便 | 电网传输、电表 |
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开发工具要求
开发工具 | 用途 |
---|---|
Visual Studio Code | 代码编辑工具 |
Hiburn | 代码烧录工具 |
MobaXterm或其他超级终端 | 远程连接Linux编译服务器 |
CH341SER.EXE | USB转串口驱动 |
3、Liunx构建工具要求
开发工具 | 用途 |
---|---|
Python3.7+ | 编译构建工具 |
SCons3.0.4+ | 编译构建工具 |
bash | 命令处理器 |
gn | 产生ninja编译脚本 |
ninja | 执行ninja编译脚本 |
交叉编译器 gcc riscv32 | 交叉编译工具 |
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)用包管理器命令行获取
hpm init -t default
hpm install @bearpi/bearpi_hm_nano
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灯。
- LED对应的GPIO引脚是GPIO2,通过控制GPIO2输出的的电平信号来实现LED灯的闪烁。
- GPIO中断
- F1和F2按键对应的GPIO引脚是分别是GPIO11和GPIO12,通过检测GPIO的电平信号来判断按键的状态。
实现按键控制LED灯亮灭。
- F1和F2按键对应的GPIO引脚是分别是GPIO11和GPIO12,通过检测GPIO的电平信号来判断按键的状态。
- PWM输出
- 通过代码实现输出不同占空比的PWM来改变LED的亮度。
- ADC采样
- 根据输入参数从指定的ADC通道读取一段采样数据,编码实现读取ADC通道5的电压值。
- 12C总线
- NFC芯片的I2C对应的GPIO引脚是分别是GPIO0和GPIO1,所以需要编写软件使用GPIO
0和GPIO1产生I2C信号去控制NFC芯片。
- NFC芯片的I2C对应的GPIO引脚是分别是GPIO0和GPIO1,所以需要编写软件使用GPIO
- UART
- UART1对应的GPIO引脚是分别是GPIO5和GPIO6,将使用GPIO5和GPIO6进行UART数据的收发。
4.无线联网
- WIFI AP热点
注册WIFI事件的回调函数
设置指定的热点配置
启动WIFI热点模式
检查热点模式是否使能
等待STA连接
wifi_hotspot.h接口简介:
接口名 | 功能描述 |
---|---|
EnablelHotspot | 启用AP热点模式 |
DisableHotspot | 禁用AP热点模式 |
SetHotspotConfig | 设置指定的热点配置 |
GetHotspotConfig | 获取指定的热点配置 |
IsHotspotActive | 检查AP热点模式是否启用 |
GetStationList | 获取连接到该热点的一系列STA |
GetSignallevel | 获取接收信号强度和频率 |
- WIFI STA联网
注册WIFI事件的回调函数
使能WIFI
判断WIFI是否激活
分配空间保存WIFl信息
轮询查找WIFl列表
wifi_device.h接口简介:
接口名 | 功能描述 |
---|---|
EnableWifi | 启用Wifi STA模式 |
DisableWifi | 禁用Wifi STA模式 |
IsWifiActive | 检查Wifi STA模式是否启用 |
Scan | 扫描热点信息 |
GetScanInfoList | 获取所有扫描到的热点列表 |
AddDeviceConfig | 配置连接到热点信息 |
GetDeviceConfigs | 获取配置连接到热点信息 |
RemoveDevice | 删除指定的热点配置信息 |
ConnectTo | 接到指定的热点 |
Disconnect | 断开Wif连接 |
GetLinkedInfo | 获取热点连接信息 |
GetDeviceMacAddress | 获取设备的MAC地址 |
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.通信扩展板案例集
四、由浅入深,“理论+实操+考试”一站式学习
华为云开展《14天鸿蒙设备开发实战营》,本次实战营课程通过理论讲解、动手实操使初学者具备鸿蒙设备开发基础技能,课程内容涵盖编译环境搭建、内核开发、驱动子系统开发、网络应用开发、设备联网上云等知识点。
相关活动网址:https://developer.huaweicloud.com/activity/device-develop_IoT.html
总结
本文主要讲解以下四个部分:物联网开发概述、鸿蒙设备开发、鸿蒙设备如何联网上云、由浅入深,“理论+实操+考试”一站式学习。
通过本课程学习相信大家对物联网相关概念和协议都有所了解,知道鸿蒙设备开发的一些知识和如何进行鸿蒙设备数据上云,本内容为14天课程的第一课,具体实操可以根据上面链接继续学习。
本文整理自华为云社区【内容共创】活动第18期。
查看活动详情:https://bbs.huaweicloud.com/blogs/364560
相关任务详情:任务26.鸿蒙设备如何从0到1联网上云
- 点赞
- 收藏
- 关注作者
评论(0)