距离传感器控制灯泡代码_虚谷号结合智能灯泡——让创客空间的照明系统个性化起来...

创客空间应该是一个充满个性的地方,各种奇思妙想都能在这里得到实现。当我校的创客空间全新装修好后,我和学生总觉得还不够个性化,科技感也不强。创客空间里的细节布置肯定要自己来设计并且实现。于是,我们把目光投向了照明系统,即灯光。

要让照明系统体现个性,自然要买支持物联网控制的灯光,如小米、华为和yeelight的智能灯泡。这些灯泡的往往具有可调光、支持手机远程控制等特点,也称为智能情景照明灯。但我们不满足于用企业开发的App来控制灯光,而是希望能够自己编程对灯泡进行个性化控制,比如定时开灯和关灯,或者结合一些创客空间的传感器实现真正的智能控制。

e2a81170f473ac2f7cd619995a805dfb.png

Yeelight智能灯泡

一、原理分析

支持手机App控制的智能灯泡很多,但是能够让用户自行编程控制的却寥寥无几。研究了市场上常见的开放接口的智能灯泡,总结出自定义编程大致有两种方式。一是智能灯泡的物联网网关支持第三方认证接入,比如天猫精灵。二是智能灯泡同时支持局域网内部的控制,比如yeelight。

默认情况下,yeelight智能灯泡与物联网网关建立联系,然后手机App通过网关发送控制指令给灯泡,每一个智能灯泡都是一个智能终端。但是,yeelight智能灯泡如果开启了“局域网控制”功能,那么就可以同时响应来自局域网任一智能设备的控制指令了,发送控制指令的设备可以是电脑、手机,也可以是任何一个支持网络功能的MCU,如掌控板、虚谷号和树莓派等,具体过程如图所示。

827267215870e1855a0684ac7e20cec5.png

智能灯泡的工作流程图

二、智能灯泡的编程控制实验

虽然任何一种支持网络的编程语言都可以给Yeelight智能灯泡设备进行编程,考虑到学习难度,我们选择Python语言。因为Yeelight官方提供了一个库。在这个库的支持下,编程会更加容易。

(一)准备工作:

1)智能灯泡和电脑或者其他可编程智能设备要处于同一个局域网。我们使用的是最新的虚谷号,一款面向人工智能教学和Python编程学习而开发的开源硬件平台,其自带了Wi-Fi,接上鼠标键盘和显示器,就是一台电脑。也可以像U盘一样,插入普通电脑进行编程。

7021874c718d11f6bc98502c4f0c951b.png

开源硬件虚谷号

2)打开智能灯泡的局域网控制功能,具体操作如图所示。

ee8f836972c6e41c5677b2855f3bbb86.png

eb41282791aacc361aaef178c28f3706.png

打开智能灯泡的“局域网控制”模式

3)安装好Python 3环境。虚谷号已经内置了Python3.5,并且已经安装了一些常见的库。

(二)实验过程:

步骤1:安装Yeelight库。

在命令行中输入pip install yeelight,通过网络安装yeelight库,安装速度很快。

步骤2:打开Python IED进行编程测试

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_prop set_default set_power toggle set_bright start_cf stop_cf set_scene cron_add cron_get cron_del set_ct_abx set_rgb set_hsv set_adjust adjust_bright adjust_ct adjust_color set_music set_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_prop set_default set_power toggle set_bright start_cf stop_cf set_scene cron_add cron_get cron_del set_ct_abx set_rgb set_hsv set_adjust adjust_bright adjust_ct adjust_color set_music set_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的电路,比较危险。现在,有了支持物联网功能的电器后,一种新的玩法也出现了。创客空间里的学生会发现,编程并不是虚拟世界中的游戏,而是能真正作用于真实世界的。当然,要方便自如的控制这些智能灯泡,虚谷号是一个很好的工具。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值