经过近半年时间的角逐,腾讯云IoT应用创新大赛日前完满落下帷幕,大赛期间不少优秀的作品脱颖而出,获得了评委和读者们的认可和喜爱。本文是对其中一篇获奖作品的摘录,基于TencentOS tiny与腾讯云物联网开发平台IoT Explorer,打造一款实现创意桌面的个性化物联网小产品。
一、作品简介
现代人群与各类电子终端的接触时间越来越长,桌面作为经常伴随的环境,成为了我们视线和注意力最集中的一角,说是一片个人的小天地也不为过。
好的桌面环境会给我们带来更好的感受,人们希望能够让自己的桌面充实一点,个性化一点,更加智能化一点,保持整洁光亮不枯燥。在此思想出发,本文作者基于TencentOS tiny与腾讯云物联网开发平台IoT Explorer,打造了一款实现桌面个性化的物联网作品,并且可以通过微信小程序去控制。
”Hello-IoT 创意桌面摆件”专注打造个性化桌面!
1. 为什么推出这款产品?
通过大赛提供的机会使用TencentOS tiny和腾讯云物联网开发平台IoT Explorer,感受IoT带来的便捷与创新,并且设计一个稍微实用而不失美观的作品,让大家都有机会去体验。
桌面成了我们经常伴随的环境,桌面环境也在潜移默化影响着我们,好的桌面环境会给我们带来更好的感受。基于这些考虑,做出了这样的作品。
2. 为什么需要联网以及通过微信小程序控制?
(1)成本削减
通过联网和利用微信小程序控制,可以去掉一部分硬件成本。屏幕使用的触摸屏成本还是比较高的,通过使用裸屏幕显示就可以把硬件上的电容触摸屏方案省掉。能够把硬件成本压缩下去,作为一个消费级电子产品才更具备竞争力。
(2)适应更多场景
通过微信小程序能够实现更多的应用场景,随着今后物联网应用的推广,以后可能会推出更多的应用功能。
(3)降低开发难度
微信小程序的界面开发比嵌入式平台的界面开发相对来说容易很多,也更易于实现更多的功能和更友好的用户交互界面。
(4) 融入腾讯云生态
通过使用腾讯的TencentOS tiny和腾讯云物联网开发平台IoT Explorer会有稳定的服务,同时有可能通过腾讯云的其它产品平台实现更多的功能,实现产品功能的多样化。
二、技术原理展示
1. 设备端软件层次结构
首先通过xFrame单片机软件框架来实现硬件底层和系统抽象层来适配TencentOS tiny。这样的话就可以在不修改或者最小修改上层应用代码的前提下适应我们不同的单片机和硬件平台,以及RTOS。
其次通过Platform平台适配层,通过虚拟的方式将单片机应用放到Windows或者Linux上运行,我们这里相当部分的应用开发便是放到Windows上进行虚拟开发的,在电脑上虚拟了LCD/触摸/按键/SPI Flash/文件系统/24C02等。
下图展示了"Hello-IoT 桌面摆件“的设备端软件层次结构图:
设备端单片机的软件层次结构图
2. TencentOS tiny的移植
GitHub上的TencentOS tiny项目下,开发者们贡献了很多开发板的TencentOS tiny的移植例程,我使用的单片机是STM32F103VET6,所以我直接参考整点原子的工程进行了移植。
把HAL库改成了标准库,GUI需要的内存比较大,又把TencentOS tiny的堆栈大小由0x6000改成了0x1000,其它的保留不变,移植就完成了,TencentOS tiny的移植非常简单便捷。
3. 用户交互开发
这里的用户图形界面比较多,所以使用了一个叫做LemonGUI的组件框架方便我们的用户交互开发,下图为相关的GUI组件框架结构图:
GUI组件框架图
4. 对接腾讯云物联网开发平台IoT Explorer
这里设备通过ESP8266 AT指令连接网络,间接通过路由器与腾讯云物联网开发平台IoT Explorer实现对接,在GitHub上也都提供了很多的例程参考。
第一次使用物联网云平台感觉并没有想象中的那么难,佷方便,能够把时间和精力都放到产品应用开发上,减短开发周期及时推出产品。尤其是作为小团队,没有专门的人去搭建和维护服务器,使用腾讯云物联网开发平台IoT Explorer是一个很不错的选择。
5.微信小程序开发
因为之前有安卓界面的开发经验和有完善素材库的支持,所以很快实现了微信小程序的开发。
关于微信小程序如何通过腾讯云物联网开发平台IoT Explorer控制我们的设备,GitHub上已经提供有微信小程序智慧灯的参考例程,所以我就借鉴例程进行了开发,最终实现了微信小程序对设备的操作。
微信小程序主界面的截图
微信小程序按照原来预想的完整用户业务对接实现,界面布局参考了APP的样式,这样界面会好看一点,同时以后需要写对应的安卓APP的话也会方便点,界面微信小程序的功能组织框架图如下:
6.设备硬件平台
我们这里使用的是一块以STM32F103VET6为主控的单片机硬件平台,带有ESP8266和JDY32蓝牙串口模块,以此实现联网和输出调试,W25Q128 Flash芯片作为字库和素材存储,SD卡作为文件系统和桌面电子相册相片的存储。
硬件PCB加上我们的LCD面板基本就可以实现最小功能了,然后搭配了一个塑料支架,可调仰俯角,方便实用。LCD面板使用ISP全视角面板,即使摆得很偏也能保持惊艳的观看效果。
电路原理图
PCB3D版图
”Hello-IoT创意桌面摆件”前视图
三、优化方向
1. 选用低成本硬件平台
因为相当部分人没有制作硬件的经验,所以借助便宜的第三方硬件方案可能是更好的选择。这里选择国产某TKM32F499,这个芯片带有8MB的RAM和240MHz的主频。官方硬件板卡成本价格相对来说很便宜。
(1)TencentOS tiny的移植
因为这款MCU的是基于M4内核的,GitHub上也正好有正点原子F429开发板的TencentOS tiny移植例程。只要是内核一样,直接复制粘贴文件就可以移植,所以移植TencentOS tiny到这个平台是有可能的。
(2)板卡自带ESP8266模块
正好满足了我们WiFi联网到腾讯云物联网开发平台IoT Explorer的需求,不过需要说明的是ESP8266的固件还是需要手动烧录腾讯提供的固件,这个可以从GitHub上下载。
(3)240MHz的主频和8MB内存
可以弥补当前STM32刷屏不流畅的缺点,实现更多的功能。
2. 通过APP访问腾讯云物联网开发平台IoT Explorer
由于微信小程序需要搭建服务器,不利于个人DIY,所以对设备的操作最好是使用手机APP直接访问腾讯云物联网开发平台IoT Explorer进行操作。这里就需要把微信小程序的功能用JAVA实现到安卓APP上。腾讯云物联网开发平台IoT Explorer很是完善,提供了JAVA的API接口,相信实现这么一个APP并不会很难。
四、结语
腾讯云物联网开发平台IoT Explorer和TencentOS tiny系统给开发者带来的开发效率和开发便利性不是一点点的提升。作为一个入门的产品工程师,我深知一个消费级产品对开发周期的敏感性,如果一个消费级产品没有在最短时间内完成开发、调试、推广,就很有可能让竞争对手抢占先机占据市场份额。
作为开发者应当使产品的开发周期在保证质量的前提下尽可能地短。那么在物联网产品的开发中怎么才能即能保证质量的同时缩短开发周期呢?腾讯云物联网开发平台IoT Explorer的出现无疑是一个很好的途径与方式。
大多数嵌入式工程师往往在网络后台和前端都不是很擅长,腾讯云物联网开发平台IoT Explorer不需要开发者实现前端与后台只需要实现对应的接口就能网络通信和前端用户交互,于是用户->设备端->网络->服务器后台->前端用户交互->IoT设备端就很快捷地对接起来了。
举一个例子,作者本人在本次比赛之前几乎没有接触过任何网络开发,也没接触过任何物联网云平台,连最基本Linux下的socket通信demo和ESP8266 SDK开发都没有接触过,更不要说MTQQ之类的了,此前也就接触过单片机串口通信,在物联网行业连小白都算不上。
这一次比赛期间,正是基于腾讯云物联网开发平台IoT Explorer,作者在一天之内就完成了ESP8266的开发环境部署与远程控制开发,实现了基本的通信功能,所以腾讯云物联网开发平台IoT Explorer在开发效率上占据很大优势。
我就是依赖GitHub上提供的参考文档和腾讯云物联网开发平台IoT Explorer的API文档一点一点地把这个比赛作品搭建起来的。
另外,TencentOS tiny的多平台支持非常全面,各个厂商的多个系列芯片还有官方板卡的例程工程应有尽有,尤其是STM32的支持连正点原子的开发板都适配了,给开发者带来了极大的便利。
参考资料:
[1] 腾讯云物联网开发平台IoT Explorer:
https://cloud.tencent.com/product/iotexplorer
[2] TencentOS tiny:
https://github.com/Tencent/TencentOS-tiny
来源:oschina
链接:https://my.oschina.net/qcloudcommunity/blog/4299872