type
slug
status
summary
icon
category
date
tags
password
开发板功能介绍

1:OLED液晶接口 支持I2C的OLED
2:蜂鸣器模块 无源蜂鸣器
3:Hi-07S模组(含海思Hi3861v100芯片,flash存储芯片288KB,SRAM352KB,一个外扩flash2MB)
4:舵机接口,两路SG90,连接更多舵机,可以通过引出的IO口和电源进行扩展
5:ADC电位器,测试芯片内部ADC的功能
6:DS18B20和DHT11(温湿度传感器)的公用接口,右边三个孔:DS18B20(温度传感器),
7:继电器模块(5V),大电流和大电压设备的控制
8:NFC模块(NT3H1101芯片),可以实现FC设备配对和数据传输
9:Hi3861的IO引脚,电源和设备引脚接口
10:按键(设备控制和参数调节)
11:用户指示灯LED
12:复位按键
13:电源模块,5V转化为3.3V,供系统和设工作使用
14:USB转串口的模块,上位机电脑通信以及程序下载(电脑USB接口,模组支持串口通信),CH340驱动实现串口和USB的转换。
15:程序下载口
16:电机模块(5V直流电机和五线四线步进电机ULN2003芯片)
Hi3861
Hi——07S:2.4G


左上角为引脚1,名称为IO08
Hi3861运行系统介绍
运行HarmonyOS,鸿蒙操作系统LiteOS-M内核,

包含被包含独立
Hi3861启动流程
LiteOS启动流程:最小硬件系统配置完成之后,Lite0S操作系统内核进行初始化到合适的状态,再由appint()调用open harmony和应用相关的代码,最后由osstart把操作系统运作起来
环境配置
详情见视频

清除上次编译产生的中间文件/编译/重新编译整个文件/下载
三个.gn:
app.gn:指定编译器所查找的目录
demo.gn:指定编译的实验工程(需要编译就删除#,加上crl+s)
实验.gn:源文件,头文件路径
网络通信

数据的传送:层层向下传输,给网卡,网卡将数据转换成物理电路上的电频信号
数据的接受:逆过程,根据首部解析数据
hi3861里面已经封装LwIP协议库

LiteOS操作系统,运用的是socketAPI(c实现)
AP模式:


sta模式:客户端模式,sta模式来连接外部的一个热点


关闭串口助手之后再upload,再开启串口助手,再复位执行程序

UDP通信:



本机的ip地址:192.168.1.107
开发板:196.169.1.100
本地主机端口:8080
cmd+ ipconfig/all
TCP协议




MQTT通信

MQTT Broker:服务器只负责中转数据,不做存储
客户端:信息的发布者/订阅者
订阅了这个主题的客户端(手机网页云端)可以收到消息


MQTT的ip地址:44.232.241.40
cmd: ping + broker.emqx.io
华为IoTDA
实现设备和云端的双向通信

物联网平台作为连接业务应用和设备的中间层,屏蔽各种复杂的设备接口
数据上报到平台,平台也可以通过控制命令下发给设备,实现双向通信
业务应用是通过调用物联网平台提供的API,实现设备数据的采集/数据下发设备的一个管理等的场景
hi3861的数据通过MQTT接入华为云LOT,也可以通过物联网平台控制设备




接入设备地址信息和端口号(31.2)

我的:
产品id:67ba90a82ff1872637de1eda

创建产品(31.3)


注册设备

设备id:
67ba90a82ff1872637de1eda_hi3861_led
设备密钥:
ffa325b895fd2948fccd46c3ce055c15
添加属性
再次点击产品名称,点击模型定义,选择自定义模型,添加服务,
服务ID:attribute

新增属性:

我的:

添加命令

ON,OFF之间需要用英文字符隔开

修改代码里相应的数据(31.4)

记录IP地址为117.78.5.126
默认端口1883
软件设计

注意:
在整个demo的BUILD.gn中只需要打开27一个
在27_wifi_huawei_lotda的BUILD.gn,需要增加(第一次错了是因为少了一个逗号)
"//vendor/pzkj/pz_hi3861/common/bsp/src/bsp_dht11.c",
同时注释掉
#"//vendor/pzkj/pz_hi3861/common/bsp/src/bsp_ds18b20.c",
结果
数据传输
build upload后串口调试助手:
DHT11初始化成功:(tips在烟雾报警和光敏加入后也需要写上这样的句子)

WIFI连接成功。连接服务器成功:

MQTT客户端初始化成功:

数据包传输成功:

温湿度变化不灵敏,对着呼气刷新才可以导致数值变动。
但是上面的更新时间刷新很快,大概4s刷新一次
(?这个4s是可以调整的吗)
(?实时变化是需要灵敏度更高的传感器,还是我给的变化条件再大一些?)


注意DHT11的温度和湿度检测范围:


下发点灯命令

监控运维—>在线调试—>选择设备

同时LED的状态为ON

板载小灯点亮

传感器
MQ-2烟雾传感器
adc

烟雾传感器:检测浓度为300~10000



代码修改

对应引脚:
VCC→3V3_1 GND→GND_1 A0—>12


修改ppm公式和值(评论区)
DHT11温湿度传感器

已改函数名,GPIO_GetInputValue_1(DHT11)
GPIO_GetInputValue(DS18B20)



根据我们这个传感器的接线方式为:
从右边往左VCC(红线)第一个孔,out(绿线)在第二个孔,GND(蓝线)在第四个孔
这个DS: DS:这个引脚通常与DS18B20温度传感器相关,DS18B20是一种数字温度传感器,DS引脚是其数据引脚,用于与微控制器通信。
在第一个
template.c
文件中,你已经实现了通过MQTT协议与华为云平台通信的功能,并且在代码中已经包含了DHT11温湿度传感器的驱动程序(bsp_dht11.h
)。为了接受DHT11上传的温度和湿度数据,你需要对代码进行以下修改:修改步骤
- 在数据结构中添加湿度字段
在
msg_sensorData_t
结构体中添加一个用于存储湿度值的字段。
- 在
mqtt_send_task
任务中获取DHT11数据 在mqtt_send_task
函数中,使用DHT11的API获取温度和湿度数据,并将它们存储到sensorData
结构体中。
- 在
Packaged_json_data
函数中添加湿度数据 在生成JSON数据时,将湿度值也包含进去。
- 初始化DHT11传感器
在
hardware_init
函数中添加对DHT11传感器的初始化。
测试和验证
- 编译代码 确保代码没有语法错误,并且能够成功编译。
- 运行程序 将程序烧录到开发板上,观察串口输出,确保DHT11数据能够正确采集并上传到华为云平台。
- 检查华为云平台 登录华为云平台,检查设备上报的数据是否包含温度和湿度信息。
通过以上修改,你的程序将能够接受DHT11传感器上传的温度和湿度数据,并将它们发送到华为云平台。
光敏传感器
ADC读取

ADC实验

常见的电压转化为数字信号

代码修改
step_motor

将电脉冲信号转化为角位移,每发一个信号,步进电机向前进一步。


顺时针旋转:1到8节拍
逆时针选择:8到1节拍


第一步:a导通,其他不导通则默认为高电平
每一步45度
通过按键来控制步进电机的方向和速度

k1控制方向
k2控制速度
延时1到5ms


电机驱动模块已经在板子上了
雨滴传感器


A0—>9 ADC4


A0读取可以显示采集的雨量
没有雨滴输出高电平,有雨滴输出低电平

雨量大小和数字呈现一个正相关,雨量越大数字越大。没有雨量的时候数字为0(0到4095)
蜂鸣器
无源蜂鸣器
源不止是电源的意思

本实验0.5khz,对应的时间,50%占空比,延时时间
周期200ms,高电平100ms,低电平100ms,连续输出

硬件资源

UL2003D 可以简单理解为非门
IN6输入高电平,经过模块后输出低电平(beep_out),同时蜂鸣器的另一端为5v,形成电压。又因为是无源蜂鸣器,所以需要IN6还得输入低电平,经过模块后变为高电平,无电势差,即蜂鸣器断电。这样才能形成脉冲信号
蜂鸣器引脚连接IO14
直流电机


优化
串口输出adc_value_ppm/lux

数据更新频率
idea1
idea2
已问,尽力了还是5s一刷……

lux<50
ppm>1000报警
降雨强度数据优化
感觉需要修正-47



PPM/Humidity/lux保留两位小数和%
以字符串的形式上发
由于浮点数在 C 语言中以二进制形式存储,并没有固定的“显示精度”,你目前在采集数据时已经做了四舍五入处理,但在调用 cJSON_AddNumberToObject 时,JSON 库仍会按照浮点数的全部精度输出。要让 JSON 数据中 “ppm” 和 “lux” 只显示两位小数,可以在组 JSON 时先将这两个值格式化成字符串,再添加到 JSON 对象中。这样最终输出的 JSON 数据中的这两个字段就是字符串形式的两位小数了。
你可以将湿度数据也格式化为字符串,添加上“%”符号,然后在组 JSON 时通过 cJSON_AddStringToObject 添加。下面给出修改后的 Packaged_json_data 函数示例,针对湿度数据做了处理:
下面给出修改后的 Packaged_json_data 函数示例,仅对 ppm 、lux 、humidi部分做修改:
说明
- 格式化输出
使用
sprintf(buf, "%.2f", sensorData.ppm);
将 sensorData.ppm
格式化为两位小数的字符串,再通过 cJSON_AddStringToObject
添加到 JSON 中,保证最终 JSON 数据中 ppm 字段只显示两位小数。- 保持数据原始值
注意这样处理后,在 JSON 数据中 ppm 和 lux 字段是字符串类型。如果接收端要求为数值类型,可在接收端进行转换,或者考虑在生成 JSON 前将值固定两位,但 C 语言的浮点数本质上无法限制存储精度,只能在输出时控制显示格式。
通过上述修改,输出的 JSON 数据将类似于:
Github与Git
第三阶段
实时传输
关闭看门狗以实现
我们例程的写法就是运行一会之后就自动复位了,复位之后就连不上了;然后程序会重启重新连接

send MQTT_Data Fail
这样的问题是因为:只能调用这些source代码

为什么bsp_dht11,可以加入路径
因为在这里面确实是有dht11的拓展的
但是smoke_sense和light_sense不能自己添加
只能去他们都使用的地方bsp里面添加代码:

统计引脚

光敏传感器

VCC→3V3_2 GND→GND_2 A0—>11

烟雾传感器

A0→12 : adc_0
dht11

ds→7

sg90


GPIO_05
GPIO_06
step_motor

IN1→GPIO1
IN2→GPIO0
IN3→GPIO13
IN4→GPIO8
蜂鸣器

BP-IO
换一个蜂鸣器:有源蜂鸣器



这个源是震荡源。有源蜂鸣器内部有一个震荡电路,所以就直接供电就可以发出固定的音调。
无源蜂鸣器没有震荡电路,需要外部提供震荡。(有源上面有贴纸)


GPIO函数


usleep(微妙延时)

雨滴传感器


语音模块
整个工程中,中英文不能混用,标点符号中英文区分。
GPIO输出控制


串口




室内灯光大概:85lux~120lux波动
如果用纸巾完全挡住那么大概是80以下lux
这下面是我的要求:
光敏传感器
当小于多少的时候,驱动步进电机(窗帘)打开以及GPIO小灯亮
小于80lux的时候(驱动窗帘打开和)GPIO小灯亮
当大于多少的时候,驱动步进电机(窗帘)关闭以及GPIO小灯熄灭
当大于150lux的时候,驱动窗帘打开
当小于多少时,驱动GPIO小灯打开,大于多少的时候关闭(人体感应自动实现)
计划和杂七杂八的资料
任务一:应用开发
任务二:硬件开发
任务三:连起来
应用开发的视频和手册

开发板

项目总览

演示
(只基于板子和应用)https://www.bilibili.com/video/BV1242ZYYEdg/?spm_id_from=333.337.search-card.all.click&vd_source=e4fa1c3d198b15a23736ee13db98083f
(板子应用和硬件)
关于小程序和应用的开发
(这个是基于STM32的)
云平台
(阿里云)
可能的思路
(1)智能控制中心 主要由智能主板和小型网关组成, 用来对接各类智能化设备,组建成一个智能家居传感场景, 通过OpenHarmony APP和小型网关, 达到设备的智能联动, 智能场景切换的目的;( 2) 安防系统通过对NFC卡片的读写数据, 来实现以门禁卡的形式控制门锁开关, NFC卡片开锁, 并结合人脸识别能力, 实现刷脸开锁的功能;( 3) 智能照明通过APP实现房屋内灯光的基本控制。 对灯光的亮灭、 亮度进行控制, 并结合人体感应、 光照强度等综合因素进行智能化场景自动控制;( 4) 家庭环境监测系统实现对家庭中的温度、 湿度基本信息监测, 并在展示板上进行数值展示,在APP上基本判断环境适宜度, 若温湿度过高或者过低给予远程控制解决方案;( 5)系统扩展性系统可灵活接入其他家居电器,通过APP对其实现控制( 至少接入一个) 。在APP上基本判断环境适宜度,若温湿度过高或者过低给予远程控制解决方案。
手机端:我的理解是,手机端(也可能是电脑上的,但是手机上肯定更好。谁会想开灯之前先打开电脑呢。。。)上开发一个鸿蒙的app,然后通过鸿蒙暴露出来的设备开发接口(可以把这些设备开发接口理解为更高级的库函数),写一些与网络相关的应用程序,实现能够通过手机发出信号,然后通过网络传输给其他的硬件设备(通过网络传输应该要求要在一个局域网内吧,在一个局域网内的所有联网设备应该都在同一个网关下,NAT)
硬件:我想的是,如果只需要用一个小模型(就是小房子的模型)进行演示的话,那我觉得只需要一个主控板(具体选什么型号的板子都无所谓,但是一定要有联网功能)就好了。主控板接收手机端发出的信号,然后对其他的硬件进行控制即可(比如说智能照明,就是通过主控板对LED灯进行控制。。。)
任务划分
- PPT+视频+报告:三个人一起做吧,就是手机端开发和硬件开发做完之后。如果时间不够的话建议直接在网上找找开源的代码。if(找不到开源代码&&是初赛),因为只需要交一个视频就好了,这样手机端就可以做成静态页面(就是不能交互的页面),然后硬件开发也可以硬编码(就比如说点灯就可以随便一点,比如说定时点灯,这个时候手机app和硬件设备之间没有交互,但是拍视频的时候,要假装点了一下手机啥的)
- 手机端开发:两个人
- 硬件开发:一个人(最起码实现一下联网点灯,如果还有余力的话就多做点硬件)
- 鸿蒙系统,在上面怎么开发,应用开发需要什么,类似的源代码项目,板子型号?
应用端云一体化
一些奇奇怪怪的资源
鸿蒙官方手册:
基于homeassistant的智能家居控制系统:(这个也好像有点东西哇但是要钱,可以根据这个来搭建)
关于NFC卡片扫描的演示视频:
(含源代码)
基于鸿蒙开发板智能家居项目:
鸿蒙系统应用开发学习之路:
运用阿里云的智能家居开发,但作者专栏内容下面的关于stm32获取DHT11温度传感器数据的消息还行
Hi3861鸿蒙开发板及入门常见问题解答
人脸识别
stm32:
esp32cam:
树莓派人脸识别:
k210:操作很简单,只是得再多买一块板子。
基于stm32的智能门禁系统,包含人脸识别,RFID,蓝牙app,密码锁【stm32c8t6】
(没有接线图和教学视频之类的)
stm32:
(有教学视频,接线图但是要付费)
树莓派、Arduino 做的 人脸识别门禁系统
Esp32:
k210:
传感器数据
烟雾传感器(ADC)【报警】
温湿度传感器、【语音】
光敏传感器(ADC)【步进电机窗帘,室内灯】,并结合人体感应、 光照强度等综合因素进行智能化场景自动控制;
晾衣架【两个舵机】
上云
报警,
改GPIO口
合成一个文件可以同时跑吗(简单的两个文件合起来,再到三个文件)
温湿度传感器接收数据与测试
温湿度传感器接收数据上传云端
烟雾传感器改ADC引脚
烟雾传感器上传烟雾数据
查看ppm的正常数值更改,找到打火机进行更改
光敏传感器上传光照数据
修改舵机转动速度,驱动两个舵机转动
合并云平台文件和烟雾传感器
下发参数0~100,pwm灯
鸿蒙应用和华为云loT对接


智能照明
( 3) 智能照明通过APP实现房屋内灯光的基本控制。 对灯光的亮灭、 亮度进行控制,呼吸灯--->外置灯实现效果参照之前找的视频?(讨论)
服创第二阶段任务
传感器数据
烟雾传感器(ADC)【报警】
温湿度传感器、【语音】
光敏传感器(ADC)【步进电机窗帘,室内灯】,并结合人体感应、 光照强度等综合因素进行智能化场景自动控制;
晾衣架【两个舵机】
上云
报警,
改GPIO口
合成一个文件可以同时跑吗(简单的两个文件合起来,再到三个文件)
温湿度传感器接收数据与测试
温湿度传感器接收数据上传云端
烟雾传感器改ADC引脚
烟雾传感器上传烟雾数据
查看ppm的正常数值更改,找到打火机进行更改
光敏传感器上传光照数据
修改步进电机转动速度
驱动两个舵机转动(衣架)
开门
合并云平台文件和烟雾传感器
下发参数0~100,pwm灯
光敏设定阈值(<50>300),驱动步进电机(窗帘)打开关闭
烟雾报警设定阈值(>1000),驱动板载蜂鸣器
模型搭建
github

3.12 (21:30~22:50)
上传GitHub,并且学会使用git,写出自己的技术文档
记录所有设备的接线引脚
3.15
舵机上云和控制命令
两个舵机
步进电机上云和控制命令
烟雾驱动板载蜂鸣器
烟雾报警设定阈值(>500),驱动蜂鸣器
ppm公式有问题(根据stm32进行修改)
连接线出现问题,电压5v
光敏驱动舵机和步进电机
雨滴传感器?驱动舵机转动,收衣服
光照大于多少时,步进电机转动,降下窗帘
小于多少客厅灯亮
在什么区间窗帘抬起
光照在什么区间的时候,步进电机转动,打开窗帘适合屋内透光
ppm350左右
lux的数据计算有点问题?
修改板载连线
驱动蜂鸣器,蜂鸣器上云
雨滴传感器,雨滴传感器上云
数据下发
连接稳定
实时传输数据

4.10
16:52~17:52测试整个其他的
光敏传感器
当小于多少的时候,驱动步进电机(窗帘)打开以及GPIO小灯亮
当大于多少的时候,驱动步进电机(窗帘)关闭以及GPIO小灯熄灭
当小于多少时,驱动GPIO小灯打开,大于多少的时候关闭(人体感应自动实现)
测试模块(教给🐏姐)
17:52~18:52语音模块
打开所有照明
播报温湿度
打开空调
打开窗帘
打开衣架
4.12完成视频拍摄|完成视频剪辑
服创脚本:
第一幕:
作品外观展示
第二幕:
作品app展示
(1)智能控制中心 主要由智能主板和小型网关组成, 用来对接各类智能化设备,组建成一个智能家居传感场景, 通过OpenHarmony APP和小型网关, 达到设备的智能联动, 智能场景切换的目的;
第三幕:
作品功能演示
3.1( 2) 安防系统
通过对NFC卡片的读写数据, 来实现以门禁卡的形式控制门锁开关, NFC卡片开锁, 并结合人脸识别能力, 实现刷脸开锁的功能;
3.2( 3) 智能照明
通过APP实现房屋内灯光的基本控制。 对灯光的亮灭、 亮度进行控制, 并结合人体感应、 光照强度等综合因素进行智能化场景自动控制;
光敏:当室内光照过暗:打开走廊灯(夜晚人走过时)
亮度进行控制
3.3( 4) 家庭环境监测系统
实现对家庭中的温度、 湿度基本信息监测, 并在展示板上进行数值展示,在APP上基本判断环境适宜度, 若温湿度过高或者过低给予远程控制解决方案;(??)
光敏:当室外光照合适,打开窗帘。室外光照弱时,自动打开灯光。
温湿度传感器:检测环境温度,提醒用户穿衣
进入厨房后,检测到天然气泄漏等,变回触发报警器报警
在卧室的窗外有语音可控的晾衣架,方便晾晒衣服的同时可减少占地
雨滴:当室外雨水过大时,自动收起晾衣杆。衣架还可以通过手机app连接云端控制

3.4( 5) 系统扩展性
系统可灵活接入其他家居电器,通过APP对其实现控制( 至少接入一个) 。
(是将语音模块和app模块合在一起展示吗)
12:30~13:00 完成数据库作业(30min)
13:00~14:00完成视频剪辑
12:00~ 14:00 完成视频剪辑
完成ppt制作
(1)项目概要介绍;
(2)项目简介PPT;
(3)项目详细方案;
(4)项目演示视频;
(5)企业要求提交的材料:
需求分析文档完整;
②系统设计文档完整;
③测试案例完整;
④源码与数据库完整(源代码自愿提供);
⑤测试报告完整;
⑥产品HAP安装包。
(6)团队自愿提交的其他补充材料
传感器说明书、板子说明书
服创最终
视频
代码
Hi3861
SparkleYuyu • Updated Apr 16, 2025
- 作者:🐟🐟
- 链接:https://www.imyuyu.top//article/Competiton1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。