关闭视频

十分钟开发物联网:楼宇智慧照明(Wifi版)

发表于:2021年11月17日 15:55更新于:2024年05月03日 17:28

本文实现的楼宇智慧照明支持两种模式。一种是自动模式(上电以后默认的模式)根据光照传感器的强度自动调整PWM的占空比以达到调整三个Led灯亮度的目的。

另外一种模式是手动模式,当用户在手机App上打开手动模式开关以后,用户就可以在手机App上分别设置三个Led灯的亮度百分比了,设备的Wifi模组接收到用户下发的指令以后会根据百分比值来调整PWM占空比以调整对应灯的亮度。

 

视频教程及实物展示

 

视频演示教程:

 

接线实物图和App监测页面:

 

硬件端接线图

 

材料清单

 

名称 推荐购买源 资料下载
通用版机智云App 免费 https://download.gizwits.com/zh-cn/p/98/99
ShineBlink 万能物联网开发板 淘宝搜索“机智云”或“ShineBlink”店铺有售 shineblink.com
带机智云GAgent固件的ATK-ESP8266模块 淘宝搜索“机智云”或“ShineBlink”店铺有售 gizwits.com
LED模块 用户可以自己制作,也可在淘宝上购买 https://fa74b5.link.yunpan.360.cn/lk/surl_yPvRCegtn35#/-0
黑色底板

该底板只是为了省掉接杜邦线,让外观好看一些,不是必需品,开发者如果没有可以用杜邦线来替代。

如果仍想获取该底板,可通过右边提供的PCB工程资料自己打样PCB制作即可。

https://fe9a58.link.yunpan.360.cn

/lk/surl_y6mpLtWWB9W#/-0

 

硬件端完整源代码

 

--使能USB print打印功能
LIB_UsbConfig("CDC")
--机智云平台为每个产品类别分配的唯一PK和PS,一定要改成您自己的PK和PS
PK = "4f4bcb6b72c642f4ace7f2d05be8a0d3"
PS = "b209fdf6bf1a4b8a8a4d922e48eff04f"
--初始化Wifi模块
LIB_GizWifiConfig(PK,PS,6000,120,"UART0","D5","D10","D8")
--设置BH1750光照强度传感器占用SCL1和SDA1引脚,并启动传感器以每秒输出5组数据的频率工作
LIB_BH1750Config("IIC1")
--配置D0(黄灯) D1(红灯) D2(绿灯)口为PWM功能,周期10ms(100Hz),高电平为有效极性
LIB_PwmConfig3(10000,1)
Manual = 0 --默认为自动模式,0:自动 1:手动
LedYVal = 0 --黄灯初始化0亮度
LedGVal = 0 --绿灯初始化0亮度
LedRVal = 0 --红灯初始化0亮度
--开始大循环
while(GC(1) == true)
do
--查询机智云是否下发了写"Sw1"开关量数据点的动作(设置手动或自动模式)
flag,recv_data = LIB_RecvFromGizCloud("Sw1")
if flag == 1 then
if recv_data == 0 then
Manual = 0 --自动照明控制模式(根据BH1750光照传感器强度来控制亮度)
else
Manual = 1 --手动照明控制模式(用户可以用App远程控制亮度)
end
end
--查询光照强度传感器是否出数,并根据光照强度调整灯亮度
flag, illumination = LIB_BH1750GetResult()
if flag == 1 then
if Manual == 0 then --只有在自动模式下,才会根据光照强度控制灯亮度
--打印光照强度值去掉小数部分,单位:勒克斯(Lx)
--print(string.format("illumination: %.0f (Lx)", illumination))
if illumination < 1500.0 then --在有光的情况下根据光强度线性调整亮度
--当前光照越亮,Led灯越亮
Adjust = 10000 - illumination*10000/1500.0
LedYVal = math.floor(Adjust)
LedGVal = math.floor(Adjust)
LedRVal = math.floor(Adjust)
else --白天就直接灭灯
LedYVal = 0
LedGVal = 0
LedRVal = 0
end
LIB_PwmUpdate3(LedYVal,LedRVal,LedGVal)
end
end
--查询机智云是否下发了需要写入的短整数数据(范围0~100)(黄灯亮度百分比)
flag,Percent = LIB_RecvFromGizCloud("Ws1")
if flag == 1 then --此时获取到一个范围在0-100的整数
if Manual == 1 then --只有在手动模式下,才允许用户通过远程App来控制灯亮度
LedYVal = Percent*10000/100
LIB_PwmUpdate3(LedYVal,LedRVal,LedGVal) --改变黄灯亮度
end
end
--查询机智云是否下发了需要写入的短整数数据(范围0~100)(红灯亮度百分比)
flag,Percent = LIB_RecvFromGizCloud("Ws2")
if flag == 1 then --此时获取到一个范围在0-100的整数
if Manual == 1 then --只有在手动模式下,才允许用户通过远程App来控制灯亮度
LedRVal = Percent*10000/100
LIB_PwmUpdate3(LedYVal,LedRVal,LedGVal) --改变红灯亮度
end
end
--查询机智云是否下发了需要写入的短整数数据(范围0~100)(绿灯亮度百分比)
flag,Percent = LIB_RecvFromGizCloud("Ws3")
if flag == 1 then --此时获取到一个范围在0-100的整数
if Manual == 1 then --只有在手动模式下,才允许用户通过远程App来控制灯亮度
LedGVal = Percent*10000/100
LIB_PwmUpdate3(LedYVal,LedRVal,LedGVal) --改变绿灯亮度
end
end
end

上面代码中出现的"LIB_"开头的库函数的详细介绍可点击查询。

 

机智云接入和App开发(三个选择)

 

选择一:机智云+通用版APP访问设备(难度最低)

通过《Wifi设备接入机智云教程》我们可以很快掌握机智云的接入流程,并使用现成的通用版机智云App即可很快的实现手机App远程访问我们的开发板。

本例中我们使用了"Sw1”状态位型数据点作为机智云下发自动/手动切换模式的数据通道,记得在机智云平台修改相应的数据点的名称。

本例中我们使用了"Ws1”,"Ws2”,"Ws3”,这三个整数型数据点(范围0~100)来作为机智云下发黄、红、绿灯亮度百分比的数据通道,记得在机智云平台修改相应的数据点的名称。

 

 

► 选择二:机智云+零代码定制版App访问设备(难度较低

在选择二之前,必须完成上面选择一的工作,然后参考《赛博坦零代码App开发(Wifi版)》教程实现定制版App访问设备。

开发好以后的页面如下:

 

► 选择三:定制化开发APP或微信小程序(难度较高

如果有一定开发能力,开发者可以考虑在机智云免费提供的开源代码上做一定的定制开发形成自己的App。

如果开发者希望开发一个专属的App,机智云也会提供代码开源的安卓和IOS SDK框架,帮助开发者快速完成App开发,开发者仅需关注App的UI和UE设计即可,而相对复杂的协议与错误处理等事项可忽略。关于开源SDK的介绍和获取请进入docs.gizwits.com了解更多内容。

如果开发者希望开发一个专属的微信小程序应用, 可以进入docs.gizwits.com了解相关开发教程。