总述
本项目基于TencentOS tiny(腾讯物联网操作系统)构建了一款智能灯小工具产品。整个产品架构上分为硬件底层、云平台层和小程序终端层,利用官方的Demo框架可迅速打通三层的基本通信逻辑,再对相应接口的调用及方法改写便可创作出自己需要的产品项目来,这也是本项目的构建思路,下面开始详细介绍。
项目创新点:
该项目主要运用于家庭里老人、小孩的便捷智能服务上,也可运用于阅览室等公共场所的智慧照明管理上,传统的灯光控制在便捷性和环保节能方面都有可改善地方,而该小工具可助力生活中的智慧环保与节能,其定位为一款智能小工具产品,一是发挥产品核心的TencentOS tiny低功耗,低资源占用的“小”优势,再就是主要展现载体为小程序,其用完即走、“小”而强大的优势显而易见,这两方面共同支撑这款小工具的小而智能、易用等特征。同时搭载TencentOS tiny的小程序工具产品市面上目前是还没有的,相信未来是趋势。
开发环境:
MDK5(Keil5)、串口调试工具(sscom)、微信开发者工具
一、硬件底层
在硬件底层方面,由腾讯云物联网团队联合南京厚德物联网公司联合定制开发的TencentOS tiny开发板,其主要由
5大部分构成:1、传感器扩展槽(本项目运用的E53_SC1),2、MKU(STM32L431RCT6),3、锂电池(3.7V、600mAh),4、OLED屏,5、wifi 扩展板 ESP8266。此外这套开发套包中还包括必备的STlink 下载器和串口电源线。
其最小系统电路图如下:
依托开发板,LED灯传感器扩展板接入系统需要知道对应的引脚接口并进行调用,这点我觉得是实现开关灯等控制的核心之处,我是如何操作的和踩过哪些“坑”呢,进入正题吧:
1、首先配置好环境,包括MDK的安装,相应Pack的安装,这里注意的是如果网速稳定比较好,那可以选择在mdk里面下载Pack或者导入,否则建议(仅个人意见)直接安装好MDK后再回到文件夹直接点击运行安装pack。开发主要环境安装好后,再把相应开发板的烧录驱动ST-Link驱动、CH340串口驱动安装好就可正式开始开发了。
2、导入最小工程文件进行基础内核实验,一般都是进行HelloWorld这类的,新建或者导入工程文件后,如果初次开发需要进行MDK里面仿真和烧写的环境配置。(这里需要注意和容易忽略的是MDK的激活,否则烧录有问题)
3、LED灯传感器扩展板的引脚接口和数据采集
找到灯传感器扩展板的引脚为7,对应到GPIO2口,然后再进一步看MCU上GPIO2对应的引脚为PB9,这样就通过对此引脚接口进行编写调用,相应拉高和拉低来达到高低电平效果以控制LED灯传感器的开和关:
二、云平台层
云平台层是依托于腾讯物联网开发平台(IoT Explorer),在其上面进行产品创建和部署的。因为该开发平台和TencentOS tiny都是刚发布的,因此第一次使用都需要申请。整个接入开发云平台流程为:开发平台申请——>新建项目——>新建产品——>新建设备——>编写工程文件——>配置平台对接参数——>连接开发板(含传感器)烧录运行——>开发平台查看与调试(联动开发板)。
开发平台申请之后就跟着指引一步步创建项目、产品、设备即可,这几步都没坑(注意新建产品时通信方式选其它)
随后和平台对应修改工程文件里产品名称、设备名称、设备密钥为自己创建的产品数据,当前电脑连接的WIFI账号密码(保持电脑、WIFI模块在同一网域内以通信)这几项数据:
这些做完后就算打通底层与云平台的通信了:
并且可通过平台直观的进行在线调试、下发指令等操作,通信日志也方便易读,这点上交互觉得做得还是比较好的:
再就是进行关键的平台操作LED灯传感器了,这点上说难也有难度(对我这种小白来说),说简单也比较简单。
像对我来说首先想到的是在工程文件里单独编写个控制逻辑的程序,再调用定义相关参数、功能的头文件,但后面发现很多参数和变量很不好找定义的位置,经过几天查看源码和查阅通过GPIO控制小灯传感器的一些资料都未成功,最终是无意看工程文件时发现light_data_template_sample.c有相关,包括显示控制灯颜色和亮度等的函数:
果然在这里面写开关灯控制函数,位置是正确的,也不用加太多东西就可实现功能了:
三、小程序终端层
小程序是本项目的展现终端,也是作为小工具产品定位的直接交互端,借助腾讯云的iotexplorer_mp_demo框架,和前面云平台层一样的思路,首先跑通基本通信逻辑,这里通过在app,js文件里修改自己的产品ID、设备名称、腾讯云secretId和secretKey即可跑通,实现和平台层一样的对开发板上OLED屏显示颜色、亮度的控制:
之后我想了想,决定在页面上也考虑重新布局和优化下,按照用户的使用习惯和控制逻辑来说,开关灯操作这是最高优先级,我得把“开关”设在醒目位置,随后开灯之后可以进行颜色和亮度更改,或选择在小程序端获取平台的数据,也即“查询”功能,最后一级为“发送”功能,向开发板上OLED屏及LED发送灯开关、屏亮(亮就显示灯颜色和亮度)、屏灭的控制指令。
先把开关解决,在index.wxml中写button:
再在index.js中把方法写上:
参照Demo中的两个框架,进行调用传参和写方法:
再就可以写核心的控制功能了:
四、最终效果演示
演示视频:
五、感受与鸣谢
从TencentOS tiny的开发板、软件开发方面来说,给的入门指南和软件工程包算非常详细了,只是有的细微地方会有省略,需要具备最基本的开发常识应该没什么问题,如果再在个别细致点上细致下,对小白用户的用户体验就完美了。再到IoTExplorer平台的操作和体验来说,交互和控制做得还是很方便、直观和易用的,只是有点小建议希望在通信、调试那栏各项的显示完整性上再优化下,和设备同时接入等偶尔存在掉线情况做下优化就更好了。
本次项目是借TencentOS tiny内测和IoTExplorer平台发布之际的机会所作,首先感谢相关团队大佬提供的内测开发板套件及内测软件包,更主要是整个迷你赛项目周期内,大佬们的耐心和专业指点迷津,包括TencentOS tiny开发团队的汪大、Arthur哥、硕哥、Royye哥,坚哥、张sir,参与本次内测&迷你赛的杰杰等大佬,我这块学过相关但搁置两三年了基本从零开始,整个过程下来有时间对我来说还是紧张,没做出最理想效果Demo,有事情堆积一起的排期考验,和自己开发这边硬件层面目前不是很给力等“煎熬”的地方,但更多的是挑战和收获,真的验证了进一寸有一寸的欢喜,这大概也是开发者的乐趣之一吧。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。