知识点:什么是掌控板?
掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED显示屏、RGB灯、加速度计、麦克风、光线传感器、蜂鸣器、按键开关、触摸开关、金手指外部拓展接口,支持图形化及MicroPython代码编程,可实现智能机器人、创客智造作品等智能控制类应用。
1、物联网(Internet of Things,缩写:IoT)
是基于互联网、传统电信网等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络。其应用领域主要包括运输和物流、工业制造、健康医疗、智能环境(家庭、办公、工厂)等,具有十分广阔的市场前景。
物联网的概念最早是在1999年由Kevin Ashton在一次演讲中提出来的,当时他是一个RFID研究机构的执行主任,这家研究机构是在宝洁公司和吉列公司的赞助下成立的。而他本人也因此被称为物联网之父。随后麻省理工学院的Neil Gershenfeld教授出版了一本名为《When things Start to Think》的书。以这些为标志,正式揭开了物联网的序幕。
物联网的英文是Internet of Things,缩写为IoT。这里的"物"指的是我身边一切能与网络联通的物品。例如你带的手表、你骑的共享单车、马路上的汽车、家里的冰箱、路边的路灯、甚至是一棵树。只要一件物品能够与网络相连,它就都是物联网中的"物"。而所谓物联网,就是"物"与人,以及"物"与"物"之间,通过网络来传递和处理信息。
Yeelight
是全球领先的智能照明品牌,2014年加入小米智能家居生态链,在物联网、智能交互、工业设计和灯光体验等方面不断打磨,持续定义照明行业的最高标准。Yeelight拥有完整的智能家居照明产品线,产品系列辐射家装照明、台上照明、氛围照明以及智能照明控制,全球累计出货1100余万件,用户辐射100多个国家和地区,致力于通过高品质光环境的打造,让更多人享受到智能照明的便捷和乐趣。
6、自动变色循环流光灯
#MicroPython动手做(28)------物联网之Yeelight
#自动变色循环流光灯
python
# MicroPython动手做(28)------物联网之Yeelight
#自动变色循环流光灯
from mpython import *
import network
import time
from yeelight import *
my_wifi = wifi()
my_wifi.connectWiFi("zh", "zy1567")
rgb[1] = (int(0), int(102), int(0))
rgb.write()
time.sleep_ms(1)
while True:
if len(discover_bulbs()) > 0:
D = Bulb(discover_bulbs()[0]["ip"])
time.sleep_ms(500)
D.turn_on()
time.sleep_ms(500)
D.set_rgb(32, 178, 170)
for i in range(10, 101, 5):
time.sleep_ms(500)
D.set_brightness(i)
time.sleep_ms(500)
D.set_hsv(359, i)
time.sleep_ms(500)
D.turn_off()
mPyehon X 实验图形编程
自动变色循环流光灯
7、局域网控制
Yeelight 支持Google Assistant 和 Amazon Alexa 智能语音控制。还支持国内少有支持的IFTTT。它可以社交媒体、智能硬件等各类网络服务更好的联动。后续我们会讲解IFTTT的有关应用。 除此外,Yeelight还针对技术爱好者推出,第三方控制协议,可实现局域网内的个性化的控制。本文讲解的掌控板控制Yeelight智能照明设备就是用到该协议。
Yeelight第三方控制协议:https://www.yeelight.com/download/Yeelight_Inter-Operation_Spec.pdf
Yeelight 拥有完整的智能家居照明产品线,产品系列辐射家居照明系列、台上照明系列、氛围照明系列以及智能控制系列。集前沿技术和至美设计于一体是Yeelight一贯的追求。 AI技术、BLE MESH技术、全屋智能照明技术均旗下产品进行广泛应用,全线WiFi产品支持智能语音控制,灯光变化,尽在言语之间。
掌控板提供 yeelight 驱动库,该库可在 awesome-mpython/libary/yeelight 获取。里面有更详细的 yeelight 模块的API说明。 yeelight.py 下载至掌控板的文件系统。掌控板连接到Yeelight相同的局域网内。
8、MicroPython编程
(1)发现灯泡
掌控板和Yeelight灯泡在同局域网内后,我们要控制灯泡,首先需要知道该灯泡的IP地址,我们可以使用 discover_bulbs() 函数:
python
from mpython import * # 导入mpython模块
from yeelight import * # 导入yeelight模块
my_wifi = wifi() # 连接到与YeeLight相同的局域网内
my_wifi.connectWiFi("ssid","password")
discover_bulbs() # 发现局域网内YeeLight的设备信息
网内的Yeelight灯泡响应并返回包含bulbs属性的字典:
python
>>> discover_bulbs()
[{'ip': '192.168.0.8', 'capabilities': {'rgb': '16711680', 'bright': '100', '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', 'sat': '100', 'power': 'off', 'id': '0x0000000007e7544d', 'name': '', 'fw_ver': '26', 'color_mode': '2', 'hue': '359', 'ct': '3500', 'model': 'color'}, 'port': '55443'}]
discover_bulbs() 函数,可获取网内Yeelight设备的属性。从上述返回的来看,该灯泡的IP地址为 192.168.0.8 。
(2)开关控制
知道IP地址后,我们构建 Bulb 对象,对灯泡开关控制:
python
bulb=Bulb("192.168.0.8") # 构建对象
bulb.turn_on() # 开灯指令
bulb.turn_off() # 关灯指令
除了 turn_on() 、turn_off() 还可使用 toggle() 反转状态。
(3)亮度调节
bulb.set_brightness(100)
set_brightness(brightness) , brightness 参数为亮度值,可调范围0~100 。
(4)设置颜色
bulb.set_rgb(255,0,0) # 通过RGB设置灯泡颜色
bulb.set_hsv(180,100) # 通过HSV设置灯泡颜色
bulb.set_color_temp(1700) # 设置灯泡色温
yeelight 模块提供 set_rgb(red, green, blue) 和 set_hsv(hue, saturation) 两个函数。"RGB" 和"HSV" 两种颜色模型来设置灯泡灯光颜色。RGB颜色模型比较常用,相信大家并不陌生。通过对红®、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色。 HSV(Hue Saturation Value)颜色模型:hue 色调,用角度度量,取值范围为0~359,从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。saturation 饱和度,表示颜色接近光谱色的程度。颜色的饱和度也就愈高。饱和度高,颜色则深而艳。范围0~100。 Value亮度参数,未提供支持。只需设置 hue 、saturation 参数即可。在做些彩虹效果,颜色过渡时,HSV更为自然。
还可以使用 set_color_temp(degrees) 函数设置灯泡色温, degrees 色温参数,范围1700~6500。
注意
Yeelight, 目前WiFi智能设备最多支持4个同时TCP连接。超过的连接尝试将被拒绝。对于每个连接,都有一个命令消息配额限制, 也就是每分钟60个指令。所有LAN也有一个总配额限制,144。
Yeelight 智能灯
python
(1)yeelight.discover_bulbs(timeout=2)
描述: 发现所有局域网内的Yeelight灯泡
返回值: 字典列表,包含网络中每个灯泡的IP,端口和功能
参数:
timeout (int) - 等待回复需要多少秒。发现将总是要花这么长的时间, 因为它不知道当所有的灯泡都响应完毕时
python
(2)class yeelight.Bulb(ip, port=55443, effect='smooth', duration=300, auto_on=False)
描述: YeeLight的控制类
参数:
ip (str) - 灯泡的IP
port (int) - 连接灯泡的端口号,默认55443
effect (str) - 效果类型."smooth" or "sudden"
duration (int) - 效果的持续时间,以毫秒为单位.最小值为30.突然效果会忽略此值
auto_on (bool) - 是否 ensure_on() 在每次操作之前调用以自动打开灯泡,如果它已关闭。这会在每条消息之前更新灯泡的属性, 每个命令会花费一个额外的消息。 如果您担心速率限制,请将其关闭并自行检查。get_properties() 或运行 ensure_on()
python
(3)Bulb.turn_on()
描述: 打开灯泡
python
(4)Bulb.turn_off()
描述: 关闭灯泡
python
(5)Bulb.toggle()
描述: 反转灯泡状态
python
(6)Bulb.set_rgb(red, green, blue)
描述: 设置灯泡的 RGB 值
参数:
red (int) - 红色范围 (0-255)
green (int) - 绿色范围 (0-255)
blue (int) - 蓝色范围 (0-255)
python
(7)Bulb.set_hsv(hue, saturation)
描述: 设置灯泡的 HSV 值
参数:
hue (int) - 色调(0-359)
saturation (int) - 饱和度(0-100)
python
(8)Bulb.set_color_temp(degrees)
描述: 设置灯泡色温
参数:
degrees (int) - 色温范围(1700-6500)
python
(9)Bulb.set_brightness(brightness)
描述: YeeLight的控制类
参数:
brightness (int) - 亮度范围 (1-100)