主页 > 创意作品展示 >

虚谷号结合智能灯泡——让创客空间的照明系统

2019-03-29 14:21 点击:62
虚谷号结合智能灯泡——让创客空间的照明系统个性化起来
浙江省温州中学 谢作如
涉及学科:物理、技术、艺术
创客空间应该是一个充满个性的地方,各种奇思妙想都能在这里得到实现。当我校的创客空间全新装修好后,我和学生总觉得还不够个性化,科技感也不强。创客空间里的细节布置肯定要自己来设计并且实现。于是,我们把目光投向了照明系统,即灯光。
要让照明系统体现个性,自然要买支持物联网控制的灯光,如小米、华为和yeelight的智能灯泡。这些灯泡的往往具有可调光、支持手机远程控制等特点,也称为智能情景照明灯。但我们不满足于用企业开发的App来控制灯光,而是希望能够自己编程对灯泡进行个性化控制,比如定时开灯和关灯,或者结合一些创客空间的传感器实现真正的智能控制。
Yeelight智能灯泡
一、原理分析
支持手机App控制的智能灯泡很多,但是能够让用户自行编程控制的却寥寥无几。研究了市场上常见的开放接口的智能灯泡,总结出自定义编程大致有两种方式。一是智能灯泡的物联网网关支持第三方认证接入,比如天猫精灵。二是智能灯泡同时支持局域网内部的控制,比如yeelight。
默认情况下,yeelight智能灯泡与物联网网关建立联系,然后手机App通过网关发送控制指令给灯泡,每一个智能灯泡都是一个智能终端。但是,yeelight智能灯泡如果开启了“局域网控制”功能,那么就可以同时响应来自局域网任一智能设备的控制指令了,发送控制指令的设备可以是电脑、手机,也可以是任何一个支持网络功能的MCU,如掌控板、虚谷号和树莓派等,具体过程如图所示。
 
                                                 智能灯泡的工作流程图
 
二、智能灯泡的编程控制实验
虽然任何一种支持网络的编程语言都可以给Yeelight智能灯泡设备进行编程,考虑到学习难度,我们选择Python语言。因为Yeelight官方提供了一个库。在这个库的支持下,编程会更加容易。
(一)准备工作:
1)智能灯泡和电脑或者其他可编程智能设备要处于同一个局域网。我们使用的是最新的虚谷号,一款面向人工智能教学和Python编程学习而开发的开源硬件平台,其自带了Wi-Fi,接上鼠标键盘和显示器,就是一台电脑。也可以像U盘一样,插入普通电脑进行编程。
开源硬件虚谷号
2)打开智能灯泡的局域网控制功能,具体操作如图所示。
 
打开智能灯泡的“局域网控制”模式
3)安装好Python3环境。虚谷号已经内置了Python3.5,并且已经安装了一些常见的库。
(二)实验过程:
步骤1:安装Yeelight库。
在命令行中输入pip install yeelight,通过网络安装yeelight库,安装速度很快。
步骤2:打开PythonIED进行编程测试
1)寻找设备
输入如下代码:
from yeelight import discover_bulbs
ledlist=discover_bulbs()
print("发现%d个LED设备"%len(ledlist))
屏幕会打印出这个局域网中找到的智能灯泡设备数量。变量ledlist的数据类型为“列表”,用print(ledlist)语句打印出来,会看到这一的内容:
[{'ip': '192.168.199.184', 'port': 55443, 'capabilities': {'id': '0x0000000007e1d3f8', 'model': 'color', 'fw_ver': '70', 'support': 'get_propset_defaultset_power toggle set_brightstart_cfstop_cfset_scenecron_addcron_getcron_delset_ct_abxset_rgbset_hsvset_adjustadjust_brightadjust_ctadjust_colorset_musicset_name', 'power': 'on', 'bright': '100', 'color_mode': '2', 'ct': '4000', 'rgb': '16711680', 'hue': '359', 'sat': '100', 'name': ''}}, {'ip': '192.168.199.142', 'port': 55443, 'capabilities': {'id': '0x0000000007e4a08a', 'model': 'color', 'fw_ver': '70', 'support': 'get_propset_defaultset_power toggle set_brightstart_cfstop_cfset_scenecron_addcron_getcron_delset_ct_abxset_rgbset_hsvset_adjustadjust_brightadjust_ctadjust_colorset_musicset_name', 'power': 'on', 'bright': '100', 'color_mode': '2', 'ct': '4000', 'rgb': '16711680', 'hue': '359', 'sat': '100', 'name': ''}}]
这些信息描述了这个智能灯泡的关键信息,其中192.168.199.184和192.168.199.142就是智能灯泡的IP地址。我的局域网中有两个智能灯泡设备。
2)控制智能灯泡的开关状态
使用Bulb对象指定一个设备的IP地址,用“bulb.turn_on”和“bulb.turn_off()”就可以控制灯泡的开关状态。参考代码如下:
from yeelight import Bulb
import time
bulb = Bulb("192.168.199.142")#括号内是智能灯泡的IP地址
bulb.turn_on()#打开
time.sleep(2) #休眠2秒
bulb.turn_off()#关闭
time.sleep(2) #休眠2秒
除了用“bulb.turn_on”和“bulb.turn_off()”,yelight还提供了一个“bulb.toggle()”的方法直接让设备切换状态。
3)控制一个设备的色彩
Yeelight支持多方式控制灯光色彩,如RGB、HSV和色温控制等方式。下面的代码实现了RGB方式控制。
from yeelight import Bulb
import time
bulb = Bulb("192.168.199.142")
bulb.set_rgb(255, 0, 0) # 设定为红色
 
如果要实现更多功能,可以查看Yeelight库的文档介绍。
yeelight库文档的地址如下:
https://yeelight.readthedocs.io/en/latest/
 
三、更多创意示例
一旦实现了局域网控制后,这个智能灯泡就变得更加好玩了,也能支持我们的各种奇思妙想。我和学生们讨论了几种创意方案。
创意1:根据天气预报自动变换色彩的灯泡
用Python代码定时获取当前的天气预报,然后显示不同的灯泡色彩。晴天就柔和一点,下雨天则要亮一些。学生说如果是刮风天气,灯光要闪烁,如同被大风吹过,确实是脑洞大开。
创意2:设计一个大型的LED灯带
在创客空间前面的走廊,我们准备装一行8个以上的智能灯泡,这样就形成了一个大型的“LED灯带”,可以实现彩虹灯,流水灯之类的效果,也可以根据音乐旋律来显示一些闪烁的舞台灯光效果。
创意3:设计一个大型的LED阵列
如果在创客空间的天花板上,装上25(5*5)个智能灯泡,就构成了一个和micro:bit的点阵屏差不多的大型“LED阵列”,用来显示特定的图案或者字母,如笑脸,箭头等。但和micro:bit不同的是,这个LED阵列还是全彩的呢,玩起来更加酷。
学生们还提出了远程开灯、刷脸开灯等创意。因为虚谷号支持各种Arduino传感器模块,也支持摄像头,从简单互动到人工智能,太多的创意想法不再一一列举了。
 
盘点这些年学校创客空间中做的各种作品,往往局限于LED、舵机、直流电机之类的电子模块,很少有人去直接控制家用电器。因为家用电器毕竟使用的是220V的电路,比较危险。现在,有了支持物联网功能的电器后,一种新的玩法也出现了。创客空间里的学生会发现,编程并不是虚拟世界中的游戏,而是能真正作用于真实世界的。当然,要方便自如的控制这些智能灯泡,虚谷号是一个很好的工具。
 
热门新闻
虚谷号结合摄像头制作智能变色灯
2019-03-29 14:24:25
虚谷号A0-3395教学版
2019-01-17 14:52:13
虚谷号新款实验板
2019-01-09 10:32:42