|
本帖最后由 southwolf1813 于 2014-5-6 13:06 编辑
本来想一次都发出来的,结果发现摊子铺得太大,可能必须分开写了……
这是我的SensorTag项目中的第一个,也是相对来讲比较简单的一个,不对SensorTag本身做过多的改动,更加偏向SensorTag应用。
先让我们来认识一下Yeelight。来自青岛的创业团队,我们的好基友。Yeelight Blue是基于TI CC254x系列的BLE蓝牙智能灯,也算是我们SensorTag的同门了。
Yeelight支持包括调色,定时开关,以及根据音乐节奏和照片颜色进行情景互动等功能。
我们今天要做的就是通过SensorTag的传感器操控Yeelight灯光。比如把SensorTag拿在手上,利用加速度、陀螺仪等传感器,检测人的动作,控制Yeelight进行相应的灯光颜色、亮度调节,让我们也能化身能够“隔山打牛”的“气功大师”。
Yeelight 也是通过操作Characteristic来控制灯光的,操作方法可以在Yeelight网站上找到文档
就是通过操作FFF0 Service中的FFF1 Characteristic 来改变颜色,控制指令长度为18字节ASCII,不足18字节的用逗号补齐.
格式为 ,,,,,, 其中R,G,B是颜色,0~255, L是亮度0~100
之前的文章里已经描述过采用techBASIC可以快速开发iOS平台的BLE程序,这次我们仍然采用techBASIC。
简单测试,向Yeelight发送指令 "0,100,200,60,,,,,,"。注意writeCharacteristic只接受整形数组的value,所以需要先把字符转成ASCII
- IF service.uuid = ylServices(lightCtrl%) THEN
- IF characteristics(i).uuid = "FFF1" THEN
- PRINT "Light Ctrl Found."
- DIM value(18) as INTEGER
- value = [$30, $2c, $31, $30, $30, $2c, $32, $30, $30, $2c, $36, $30, $2c, $2c, $2c, $2c, $2c, $2c]
复制代码 可以工作,证明我们的控制指令是没有问题的。
然后就是把SensorTag的传感器数据转化为控制灯光的指令,我们这里选择加速度,X轴、Y轴控制颜色,Z轴控制亮度。
由于SensorTag默认的加速度传感器量程为 ±2G,考虑到我们拿在手上运动不剧烈的时候一般也就 ±1G,所以转换范围就定到±1G了。另外视频里为了取得较好的演示效果,把小于0.05的加速度(可以认为是静止状态)忽略了。不然,就会导致一停下就恢复到原来颜色的囧状况……
通过读取手机加速度,再转换为颜色、亮度的数值,就可以控制Yeelight啦!请叫我气功大师!
详细的代码稍后补上!
|
|