综合案例2.0-WS2812个性氛围灯带
最新案例教程点击下方链接跳转,优快云已停止更新
点
击
跳
转
简介
LED灯带广泛应用于家具、汽车、广告、照明、轮船、酒吧等行业。跳动的彩色灯光也变成了城市夜晚的靓丽风景。
本案例通过手机控制RGB灯光模式,点击相应的按钮就可以改变LED灯光模式。
准备
本案例需要的硬件
| 器材 | 数量 |
|---|---|
| HaaS506开发板 | 1 |
| WS2812灯带(30灯) | 1 |
| SIM卡 | 1 |
| 杜邦线 | 若干 |
硬件连接图
连接时注意灯带信号方向,本案例使用SPI控制LED灯带。

代码流程
1、连接阿里云平台。
2、编写灯带8种状态,默认为关闭状态
3、配置iot云端下发属性,当云端模式改变时,发送到设备端,改变灯光状态。
功能实现
1、物联网平台开发
第一次使用物联网平台的读者,需要开通实例后使用物联网平台功能。也可以使用免费的公共实例进行开发,在阿里云物联网平台中,左上角选择‘华东2-上海’,点击‘公共实例’,即可开通。
1、平台产品创建可参考haas506 2.0开发教程-aliyunIoT
2、创建产品属性(添加物模型)
- 选择产品功能定义–编辑草稿

- 添加自定义功能
- 添加标识符与数据类型(标识符要与代码一致)
- 点击发布上线

- 点击确定

2、设备端开发
-
第一次使用开发板的读者可以按照haas5062.0开发教程-导学篇搭建开发环境。
-
搭建完后复制以下代码到Visual Studio Code,复制产品证书到代码相应位置。

-
2.2版本获取IMEI号接口有更新,需要更改了以下内容(Ctrl+F 查找modem)
由
# 获取设备的IMEI 作为deviceName 进行动态注册
deviceName = modem.getDevImei()
...
改为
# 获取设备的IMEI 作为deviceName 进行动态注册
deviceName = modem.info.getDevImei()
...
- main.py
# coding=utf-8
from driver import GPIO
from ws2812 import WS2812
from driver import SPI
import network
import ujson
import utime as time
import modem
from aliyunIoT import Device
import kv
from driver import TIMER
import _thread
from driver import WDT
import math
#当iot设备连接到物联网平台的时候触发'connect' 事件
def on_connect(data):
global module_name,default_ver,productKey,deviceName,deviceSecret,on_trigger,on_download,on_verify,on_upgrade
print('***** connect lp succeed****')
data_handle = {
}
data_handle['device_handle'] = device.getDeviceHandle()
#当连接断开时,触发'disconnect'事件
def on_disconnect():
print('linkkit is disconnected')
#当iot云端下发属性设置时,触发'props'事件
def on_props(request):
global mode,breathing_light
params=request['params']
params=eval(params)
if "mode" in params:
mode=params["mode"]
if 'breath' in params:
breathing_light = params["breath"]
#当iot云端调用设备service时,触发'service'事件
def on_service(id,request):
print('clound req id is {} , req is {}'.format(id,request))
#当设备跟iot平台通信过程中遇到错误时,触发'error'事件
def on_error(err):
print('err msg is {} '.format(err))
#网络连接的回调函数
def on_4g_cb(args):
global g_connect_status
pdp = args[0]
netwk_sta = args[1]
if netwk_sta == 1:
g_connect_status = True
else:
g_connect_status = False
#网络连接
def connect_network():
global net,on_4g_cb,g_connect_status
#NetWorkClient该类是一个单例类,实现网络管理相关的功能,包括初始化,联网,状态信息等.
net = network.NetWorkClient()
g_register_network = False
if net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:
g_register_network = True
else:
g_register_network = False
if g_register_network:
#注册网络连接的回调函数on(self,id,func); 1代表连接,func 回调函数 ;return 0 成功
net.on(1,on_4g_cb)
net.connect(None)
else:
print('网络注册失败')
while True:
if g_connect_status:
print('网络连接成功')
break
time.sleep_ms(20)
#动态注册回调函数
def on_dynreg_cb(data):
global deviceSecret,device_dyn_resigter_succed
deviceSecret = data
device_dyn_resigter_succed = True
# 连接物联网平台
def dyn_register_device(productKey,productSecret,deviceName):
global on_dynreg_cb,device,deviceSecret,device_dyn_resigter_succed
key = '_amp_customer_devicesecret'
deviceSecretdict = kv.get(key)
print("deviceSecretdict:",deviceSecretdict)
if isinstance(deviceSecretdict,str):
deviceSecret = deviceSecretdict
if deviceSecretdict is None or deviceSecret is None:
key_info = {
'productKey': productKey ,
'productSecret': productSecret ,
'deviceName': deviceName

本文详细介绍了如何通过HaaS506开发板和WS2812灯带,配合阿里云物联网平台,实现手机远程控制RGB灯光模式,包括硬件连接、代码编写、功能实现和物联网应用开发过程。从物联网平台创建、设备端调试,到移动应用页面设计和预发布,提供了完整实战教程。
最低0.47元/天 解锁文章
1236

被折叠的 条评论
为什么被折叠?



