小凌派鸿蒙社区
登录
直播中
凌睿智捷电子
3年用户
19经验值
擅长:测量仪表
私信
关注
[经验]
基于OpenHarmony的华为云IoT智慧路灯
小凌派
华为云
OpenHarmony
智慧路灯
一、
智慧路灯简介
我们平时看到的
传统路灯基本
是
通过定时
开启、定时关闭来控制路灯亮灭
,在夏天白昼
时间长
,路灯过早开启,造成能源浪费;在冬
天
白昼
时间短
,往往经常是天已经黑了,路灯
却
未
开启
,给人们的出行带来了诸多不便;也有的路灯通过
专人
手动开启
关闭
,
这
种方式虽较定时方式灵活,但也存在
需要人为操作
的局限性。
随着社会的发展进步,智慧
路灯
应运而生
,
智慧路灯通过自身携带的光线传感器,通过传感器采集的
的光线数据判断天黑情况,
可以根据预置的阈值来实现路灯开启关闭;
同时
智慧路灯的
光线数据
也可以
同步上传云端,
通过云端
可以
查询到智慧
路灯
的光线数据、路灯开启关闭状态,同时也可以设置智慧路灯开启关闭的阈值,实现云管理
。
前面的文章介绍了基于
OpenH
ARM
ony
的智慧路灯实现,本文将在前面文章的基础上,添加华为云
IoT
功能,实现基于
OpenHarmony
系统的
IoT
智慧路灯。小凌派
RK2206
开发板
内置
WIFI
模块,外部接口丰富,使用小凌派
RK2206
开发板搭载智慧
路灯模块,
能够轻松实现华为云
IoT
智慧路灯。智慧路灯
模块本身自带光线传感器,通过传感器采集的光线数据判断天黑情况,
根据预设的阈值来实现路灯的开关,同时将光线数据上传到华为云平台,实现华为云平台管理智慧路灯
。
二、
硬件
威廉希尔官方网站
设计
智慧路灯模块
硬件威廉希尔官方网站 如图
1
所示,威廉希尔官方网站 中包含了
E
53
接口连接器
、
EEPROM
存储器、光线传感器
BH1750
、
大功率
L
ED
灯驱动威廉希尔官方网站
。
本文主要使用
光线传感器
BH1750
和
LED
灯驱动威廉希尔官方网站 ,其中
光线传感器为数字接口芯片,使用
I
2C
总线控制
;
LED
灯驱动威廉希尔官方网站 通过
PWD_LED
口控制
LED
灯开启、关闭,
PWD_LED
输出高电平点亮
LED
灯,
PWD_LED
输出低电平熄灭
LED
灯。模块硬件
威廉希尔官方网站 简单,
这里就不
对此进行多余的说明。
图
1
智慧路灯模块
硬件威廉希尔官方网站 图
小凌派
RK2206
开发板与智慧路灯模块均带有防呆设计,
能够
很容易区分安装方向,直接将模块插入到
小凌派
RK2206
开发板的
E53
母座接口上即可,安装如图
2
所示
.
图
2
硬件连接
图
三、
软件设计
1、主程序设计
小凌派
RK2206
开发板上电后,
OpenHarmony
系统开始运行,
LiteOS
系统初始化后,
通过
LOS_QueueCreate
函数创建一个消息队列,用于线程间传递信息;通过
LOS_TaskCreate
创建
e53_isl_thread
和
iot_cloud_isl_thread
两个任务。其中,
e53_isl_thread
任务周期获取智慧路灯模块采集的信息;
iot_cloud_isl_thread
任务处理消息队列里的信息,将智慧路灯模块采集的信息上报华为云。
{
unsigned int ret = LOS_OK;
unsigned int thread_id1;
unsigned int thread_id2;
TSK_INIT_PARAM_S task1 = {0};
TSK_INIT_PARAM_S task2 = {0};
/*
创建消息队列
*/
ret = LOS_QueueCreate("queue", MSG_QUEUE_LENGTH, &m_isl_msg_queue, 0, BUFFER_LEN);
if (ret != LOS_OK)
{
printf("Falied to create Message Queue ret:0x%xn", ret);
return;
}
/*
创建智慧路灯信息获取任务
*/
task1.pfnTaskEntry = (TSK_ENTRY_FUNC)iot_cloud_isl_thread;
task1.uwStackSize = 10240;
task1.pcName = "iot_cloud_isl_thread";
task1.usTaskPrio = 24;
ret = LOS_TaskCreate(&thread_id1, &task1);
if (ret != LOS_OK)
{
printf("Falied to create iot_cloud_isl_thread ret:0x%xn", ret);
return;
}
/*
创建华为云
IoT
任务
*/
task2.pfnTaskEntry = (TSK_ENTRY_FUNC)e53_isl_tread;
task2.uwStackSize = 2048;
task2.pcName = "e53_isl_tread";
task2.usTaskPrio = 25;
ret = LOS_TaskCreate(&thread_id2, &task2);
if (ret != LOS_OK)
{
printf("Falied to create e53_isl_tread ret:0x%xn", ret);
return;
}
}
2、
智慧路灯
信息获取任务
程序设计
智慧路灯信息获取任务,
进入主程序先
初始化智慧路灯模块
,
程序进入主循环,2秒获取一次光线传感器
BH1750
的光线强度值
,当光线强度值小于
20
时,打开
LED
路灯;当光线强度值大于
等于
20
时,关闭
LED
路灯。
同时,将获取到的光线强度值写入消息队列中,等待华为云
IoT
处理。智慧路灯信息获取任务使用的接口在基于
OpenHarmony
的智慧路灯实现文章中已经详细说明,这里不再赘述。
{
float lum = 0;
isl_msg_t *app_msg = NULL;
/*
智慧路灯模块初始化
*/
e53_isl_init();
while (1)
{
/*
获取智慧路灯模块数据
*/
lum = e53_isl_read_data();
printf("luminance value is %.2fn", lum);
/*
光线强度值小于
20
,点亮
LED
灯;否则,熄灭
LED
灯
*/
if (lum < 20)
{
isl_light_set_status(ON);
}
else
{
isl_light_set_status(OFF);
}
/*
光线强度值写入消息队列中
*/
app_msg = malloc(sizeof(isl_msg_t));
if (app_msg != NULL)
{
app_msg->msg_type = en_msg_report;
app_msg->report.lum = (int)lum;
if (LOS_QueueWrite(m_isl_msg_queue, (void *)app_msg, sizeof(isl_msg_t), LOS_WAIT_FOREVER) != LOS_OK)
{
printf("%s LOS_QueueWrite failn", __func__);
free(app_msg);
}
}
LOS_Msleep(2000);
}
}
3、
华为云
IoT
任务
程序设计
华为云
IoT
任务
主要处理消息队列里的信息。
任务
启动后,通过
SetWifiModeOn
连接
WIFI
;
WIFI
连接成功后,初始化
MQTT
协议栈,连接到华为云
IoT
服务器;成功连接华为云
IoT
服务器后,线程开始处理消息队列里的消息。消息队列里只有一种消息格式,
智慧路灯信息获取任务
传输过来的智慧路灯模块的数据,线程直接通过
MQTT
协议传输到华为云
IoT
平台上,此时平台上可以查看到最新上报的智慧路灯模块的亮度数据。
tify">
{
isl_msg_t *app_msg = NULL;
unsigned int addr;
int ret;
/*WIFI
连接网络,通过网络
*/
SetWifiModeOn();
/*
初始化
MQTT
用户名和密匙
*/
device_info_init(CLIENT_ID, USERNAME, PASSWORD);
ret = oc_mqtt_init();
if (ret != LOS_OK)
{
printf("oc_mqtt_init fail ret:%dn", ret);
}
while (1)
{
/*
从队列中获取数据
*/
ret = LOS_QueueRead(m_isl_msg_queue, (void *)&addr, BUFFER_LEN, LOS_WAIT_FOREVER);
if (ret == LOS_OK)
{
app_msg = addr;
switch (app_msg->msg_type)
{
case en_msg_report:
/*
将光线强度值上报到华为云平台
*/
isl_deal_report_msg(&app_msg->report);
break;
default:
break;
}
free(app_msg);
app_msg = NULL;
}
else
{
LOS_Msleep(100);
}
}
}
isl_deal_report_msg
函数将光线强度值按照华为云平台的数据结构填充,将光线强度值上报到华为云平台。
void isl_deal_report_msg(isl_report_t *report)
{
oc_mqtt_profile_service_t service;
oc_mqtt_profile_kv_t Lum;
service.event_time = NULL;
service.service_id = "
智慧路灯
";
service.service_property = &Lum;
service.nxt = NULL;
Lum.key = "
亮度
";
Lum.value = &report->lum;
Lum.type = EN_OC_MQTT_PROFILE_VALUE_INT;
Lum.nxt = NULL;
oc_mqtt_profile_propertyreport(USERNAME, &service);
return;
}
四、
编译测试
1
、登录华为云
IoT
平台
设备连接华为云前,需要做一些准备工作,请在华为云平台注册个人用户账号,并且需要实名认证后才可以正常使用。
如图
3
所示,为
华为云
IotDM
地址:
https://www.huaweicloud.com/product/iotdm.html
。
图
3 华为云IoT网址
2
、创建产品
点击立即使用,进入设备接入页面,
选择侧边栏产品页面,点击右上角创建产品,添加智慧路灯产品
,如图
4
所示,按照要求填写产品类型。
图
4 创建产品
点击进入创建的产品,点击添加服务,服务
ID
填入智慧路灯,如图
5
所示。
图
5 添加服务
选择智慧路灯服务,点击添加属性,添加亮度属性,如图
6
所示。
图
6 添加属性
3、
注册设备
创建产品成功后,侧边栏选择设备,点击右上角注册设备,按照要求填写设备信息,保存密匙信息,如图
7
所示。
图
7 注册设备
设备创建成功后,点击进入设备详情页面,可以查看设备详细详细,保存设备
ID
信息,如图
8
所示。
图
8 设备详情
在连接华为云前需要获取
CLIENT_ID
、
USERNAME
、
PASSWORD
,访问华为云
iot
工具
https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/
;填写注册设备时生成的设备
ID
和设备密钥,生成连接信息(
ClientId
、
Username
、
Password
),
如图
9
所示。
图
9 生成账号、密匙
对应
修改代码中对应的
CLIENT_ID
、
USERNAME
、
PASSWORD
。
#define
CLIENT_ID "61c69349078a93029b83ceff_E53_ISL_0_0_2021122504"
#define USERNAME "61c69349078a93029b83ceff_E53_ISL"
#define PASSWORD "82933df2133618cad436234d88fde06a196dd8ebc0d5c8cf2ee065968a469546"
4
、测试结果
程序编译烧写到
小凌派
RK2206
开发板后,按下开发板的
RESET
按键,通过串口软件查看日志如下
所示
;通过遮挡智慧路灯模块上的光线传感器,从而来改变光线强度值,当光线强度值小于
20
时,
LED
灯打开;当光线强度值大于
20
时,
LED
灯关闭。
luminance value is 45.83
light off
luminance value is 4.17
light on
同时,在华为云平台上,可以看到设备上报上来的光线强度,如图
10
所示。
图
10 华为云数据显示
更多回帖
rotate(-90deg);
回复
相关帖子
小凌派
华为云
OpenHarmony
智慧路灯
基于
OpenHarmony
的
华为
云
IoT
智慧
路灯
实现
18138
基于
OpenHarmony
的
华为
云
IoT
智慧
路灯
实现
982
基于
OpenHarmony
的
华为
云
IoT
智慧
路灯
实现
718
OpenHarmony
华为
云
IoT
应用开发-
智慧
井盖
11
基于STM32+
华为
云
IOT
设计的
智慧
路灯
3792
基于
OpenHarmony
的
智慧
路灯
实现
10030
【小凌派RK2206开发板试用体验】
OpenHarmony
华为
云
IoT
应用开发-
智慧
井盖
5514
【福利活动】深度体验
OpenHarmony
对接
华为
云
IoT
5546
【小熊派
IOT
开发板试用连载】WIFI 模块通过
华为
云
控制
路灯
3501
基于
OpenHarmony
的阿里
云
IoT
服务实现
8160
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
英国威廉希尔公司网站
william hill官网 版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分