梅科尔工作室OpenHarmony设备开发培训笔记-第1章学习笔记
一.物联网典型层级架构
行业应用
数据呈现及客户交互
云
多协议多网络设备连接数据分析和处理
管
输入和传输网络
边
本地数据自治、低时延
端
信息收集和信号处理
二.物联网常见通信协议
1.常见通信协议1
CoAP是受限制的应用协议(Constrained Application Protocol)的代名词,它运行于UDP协议之上而不是像HTTP那样运行于TCP之上。CoAP协议非常小巧,最小的数据包仅为4字节。
MQTT (Message Queuing Telemetry Transport,消息队列遥测传输协议)。它构建于TCP/IP协议上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型"轻量级”通讯协议,使用发布/订阅消息模式,提供了对多的消息分发和应用之间的解耦。
2.常见通信协议2
ModBus网络是一个工业通信系统,由带智能终端的可编程序控制器和计算机通过公用线路或局部专用线路连接而成。其系统结构既包括硬件、亦包括软件。它可应用于各种数据采集和过程监控。
ModBus通信协议分为物理层、数据链路层、应用层。
3.常见通信协议3
OPC-UA (OPC Unified Architecture, OPC统一 架构) 协议由于其跨平台(不受限于架构平台)、面向服务的架构、信息通信安全等强大能力,被广泛应用于工业设备间的通信。
连通机制:
仅在PLC间通讯,协议无法跨网段。
交互机制:
Client/Server和Publisher/Subscriber模式,前者应用之间必须建立单独点对点连接,后者可免去直接连接实现点对多点传输,读写PLC内地址快无需新增硬件,可实现不同厂商设备间数据调用,现阶段Client/Server模式更为通用。
话务机制:
可配置周期订阅与非周期直接读写,周期订阅中可配置发布周期,保活间隔,订阅监控数,采用速率,生命周期与读写超时配置。
三.物联网设备接入方式
1.有线通信技术
通信方式
特点
适用场景
ETH
协议全面、通用、成本低
智能终端、视频监控
RS-232
一对一通信、成本低、传输距离较近
少量仪表、工业控制
RS-485
总线方式、成本低、抗干扰性强
工业仪表、抄表
USB
一对一通信、通用、传输速度快
智能家居、办公、移动设备
M-Bus
针对抄表设计、使用普通双绞线、抗干扰性强
工业能源消耗数据采集
PLC
针对电力载波、覆盖范围广、安装简便
电网传输、电表
2.短距无线通信技术
Bluetooth
Wi-Fi
ZigBee
Z-Wave
频段
2.4GHz
2.4GHz
5GHz
868MHz/915MHz,
2.4GHz
868.42MHz(欧洲)
908.42MHz(USA)
传输速率
1 Mbps- 3Mbps
(24Mbps over 802.11
Link)
11b: 11Mbps
11g: 54Mbps
11n: 600Mbps
11ac: 1Gbps
11ax: 9.6Gbps
868MHz:20kbps
915MHz:40kbps
2.4GHz:250kbps
9.6kbps或40kbps
典型距离
1-300m
50-100m
2.4GHz band:10-100m
30m(室内)~100m(室外)
典型应用
智能家居或鼠标、无线
耳机、手机、电脑等邻
近节点数据交换
无线局域网,家庭,室内场所高速上网
家庭自动化、楼宇自动
远程控制
智能家居、监控和控制
3.蜂窝移动网络
2G
3G
4G
5G
频段
授权频段
(以900M为主)
授权频段
(900.1800M为主)
授权频段
(1800M-2600M)
授权频段:
C-band
毫米波
传输速率
GSM:9.6Kbps
GPRS:56-114Kbps
TD-SCDMA:2.8Mbps
CDMA2000:3.1Mbps
WCDMA:14.4Mbps
下行
Cat.6、7:300Mbps
Cat.9、10:450Mbps
10Gbps
(巴龙5000芯片支持
下行速率-4.6Gbps;
上行速率-2…5Gbps)
典型应用
POS、智能可穿戴设备
自动售货机、智能家居
移动终端、视频监控
AR、VR、辅助驾驶、自动驾驶
4.LPWA通信技术
SigFox
LoRa
NB-IoT
eMTC
频段
SubG免授权频段
SubG免授权频段
主要在SubG授权频段
SubG授权频段
传输速率
100bps
0.3-5kbps
<250kbps
<1Mbps
典型距离
1-50km
1-20km
1-20km
2km
典型应用
智能家庭、智能电表、移动医疗、远程监控
智慧农业、智能建筑
水表、停车、烟雾报警
共享单车、POS
四.鸿蒙设备开发-环境搭建
1.环境搭建1
Linux编译服务器: Ubuntu16.04及以上64位系统版本,Shell使用bash
Windows工作台: Windows XP/Windows7/Windows10
Windows开发工具要求:
开发工具
用途
Visual Studio Code
代码编辑工具
Hiburn
代码烧录工具
MobaXterm或其他超级终端
远程连接Linux编译服务器
CH341SER.EXE
USB转串口驱动
Linux构建工具要求:
开发工具
用途
Python3.7+
编译构建工具
SCons3.0.4+
编译构建工具
bash
命令处理器
gn
产生ninja编译脚本
ninja
执行ninja编译脚本
交叉编译器
交叉编译工具
2.环境搭建2
(1).从镜像站点下载压缩文件
https://repo.huaweicloud.com/harmonyos/os/1.0/code-1.0.tar.gz
(2).从HPM网站组件式获取
HPM网站: https://hpm.harmonyos.com/#/cn/home
软环境要求:Linus服务器安装12.13.0+的Node.js
(3).用包管理器命令行获取
hpm init -t default
hpm install @bearpi/bearpi_hm_nano
(4).从代码仓库获取
需要先注册gitee账号,并配置邮箱
源码链接: https://gitee.com/bearpi/bearpi-hm_nano
五.鸿蒙设备开发-内核开发
1.内核开发1
任务管理
软件定时器
信号量
1.从系统的角度看,任务是竞争系统
资源的最小运行单元。
2.抢占式调度机制+时间片轮转调度
方式,有32个优先级(0-31)。
3.任务状态:就绪态、运行态、阻塞
态、退出态,及状态迁移。
4.任务管理:创建任务、删除某个任
务、任务挂起、任务恢复。
1.基于系统Tick时钟中断且由软件来
模拟的定时器。
2.定时精度与系统Tick时钟的周期有
关。
3.使用系统一个队列&任务资源,触
发遵循队列规则,先进先出。
4.软件定时器管理:创建/启动/停止/
删除定时器。
1.在多任务系统中,各任务之间要
同步或互斥实现临界资源的保护,
可以通过信号量来实现。
2.用作互斥时,信号量创建后记数 是满的;
3.用作同步时,信号量在创建后被 置为空;
4.信号量运作:初始化/创建/申请/释
放/删除。
2.内核开发2
事件管理
互斥锁
消息队列
1.事件是种实现任务间通信的 机制,可用于实现任务间的同 步,但事件通信只能是事件类型的通信,无数据传输。
2.多任务环境下,任务之间往 往 需要同步操作。事件可以 提供一对多、多对多的同步 操作。
3.读事件/写事件/清除事件, 写事件会触发任务调度。
4.功能函数:创建事件标记对 象、设置事件标记、等待事 件标记触发、删除事件标记 对象。
1.互斥锁又称互斥型信号量,是一种
特殊的二值性信号量,用于实现对
共享资源的独占式处理。
2.任意时刻互斥锁的状态只有两种:
开锁或闭锁。
3.当有任务持有时,互斥锁处于闭锁
状态,这个任务获得该互斥锁的所
有权。
4.当该任务释放时,该互斥锁被开锁,任务失去该互斥锁的所有权。
5.确保同一时刻只有一个任务正在访
问非共享公共资源,保证了公共资
源操作的完整性。
6.功能函数:创建/获取/释放/删除互
斥锁。
1.消息队列,是一种常用于任务间通
信的数据结构,实现了接收来自任
务或中断的不固定长度的消息。
2.用户在处理业务时,消息队列提供
了异步处理机制,起到缓冲消息作
用。
3.先进先出,支持异步读写;读/写队
列都支持超时机制。
4.功能函数:创建消息队列、发送消
息、获取消息、删除消息队列。
六.鸿蒙设备开发-驱动子系统开发
1.驱动子系统开发1
(1).操作GPIO
LED对应的GPIO引脚是GPIO2,通过控制GPIO2输出的的电平信号来实现LED灯的闪烁。高电平时点亮LED灯,低电平时熄灭LED灯。
(2).GPIO中断
F1和F2按键对应的GPIO引脚是分别是GPIO11和GPIO12,通过检测GPIO的电平信号来判断按键的状态。实现按键控制LED灯亮灭。
(3).PWM输出
通过代码实现输出不同占空比的PWM来改变ED的亮度。
2.驱动子系统开发2
(1).ADC采样
根据输入参数从指定的ADC通道读取一段采样数据,编码实现读取ADC通道5的电压值。
(2).I2C总线
NFC芯片的I2C对应的GPIO引脚是分别是GPIO0和GPIO1,所以需要编写软件使用GPIO_0和GPIO_1产生I2C信号去控制NFC芯片。
(3).UART
UART1对应的GPIO引脚是分别是GPIO5和GPIO6,将使用GPIO5和GPIO6进行UART数据的收发。
七.鸿蒙设备开发-网络通信开发
1.UDP客户端
编码实现UDP客户端创建流程,使用Sockettool创建UDP服务端用于测试。
2.TCP服务端
编码实现TCP服务端,使用Sockettool创建TCP客户端用于测试。
3.TCP客户端
编码实现TCP客户端。
4.UDP服务端
编码实现UDP服务端。
5.MQTT客户端
基于Paho MQTT,编码实现MQTT客户端。
八.华为云IoT平台介绍
华为云物联网平台,即华为设备接入服务(IoT Device Access),提供海量设备连接上云、设备和云端双向消息通信、批量设备管理、远程控制和监控、OTA升级、设备联动规则等能力,并可将设备数据灵活流转到华为云其他服务,帮助物联网行业用户快速完成设备联网及行业应用集成。