基于麻雀一号核心板 RW052的时光空间立方

描述


 
 概述

       基于麻雀一号核心板 RW052,即博通的 WIFI 蓝牙一体的芯片 BK7252,我制作了一款桌面小工具:时光空间立方。

它可以实现:

1、微信小程序可以通过蓝牙配置小立方的参数; 

2、晃动立方可以触发亮屏、亮灯; 

3、立方可以通过蓝牙配网,连接 WIFI; 

4、屏幕上可以显示:日期时间、实时天气、名言警句,或者是模仿摇 骰子产生随机点数; 

5、立方内部有呼吸灯和彩虹灯的效果。作为一款桌面小工具,它既可以提示必要的信息,如时间、天气,又可 以趣味互动,如摇骰子、随机显示名言警句,集信息提示与娱乐一体。 

外观则是完美的正方体,每个面在未启动时就像一面镜子,启动后则可 以看到一个无限五彩斑斓的内部空间。放置于办公桌面,既是一款优雅的装饰品,又是一款具有实用价值的小巧工具。

整个方案涉及的技术栈有:硬件选型,PCB 设计,RT-Thread 程序, 3D 建模打印,服务器端程序,API 接口对接,微信小程序编写等等。通过这个作品,锻炼了我实现产品的能力,让我对产品设计的不同方面 都加深了理解。

 
 RT-Thread使用情况概述
 

内核部分:使用了线程、信号量、互斥量、定时器 

组件部分:使用了虚拟文件系统、FinSH、netdev 网卡 

软件包:

fal/EasyFlash/littlefs/netutils/cJSON/mbedtls/rt_ota 等 

设备驱动:

GPIO/SPI/RTC/WLAN/BLE 等

 
 硬件框架
   

RT-Thread

核心模块RW052是官方的一个基于 BK7252 芯片的WIFI 蓝牙一体的 模组,引出了非常多的引脚,使用起来非常方便,可以直接通过 USB 供电。驱动屏幕使用了模拟 SPI,LCD 是使用了麻雀一号上屏幕厂家的同系列不 同尺寸的屏幕。WS2812 则是使用了硬件 SPI,通过 MOSI 按照时序进行输出规定协 议的波形,从而驱动 WS2812。


 软件框架说明
 
 

RT-Thread

程序运行逻辑图

RT-Thread

程序主要文件

软件方案自我感觉比较简单,中间使用了部分信号量和互斥量保证线程 同步,整体是按照不同功能模块进行了文件拆分,方便功能划分和解耦合。 


 软件模块说明
 

我这个作品里软件模块划分的比较清晰,各个模块均独立为一个单独文 件,比较好理解。屏幕、蓝牙、网络、GPIO 基本上都是遵循原有的代码逻 辑进行编写,逻辑比较清晰。所以这里我重点讲一下之前驱动 WS2812 失 败的原因与解决方案。 

之前没有正确驱动 WS2812 的原因,比较多样化,比如自以为是的断 定通过 GPIO+延时函数可以实现 WS2812 的驱动逻辑,后来经过示波器 证明时序完全不在一个量级上;后来使用了 I2C,发现时序非常不好控制, 也作罢;最后使用了 SPI,但是也是经历了由模拟 SPI 到硬件 SPI 的过程。软件 SPI 理论上跟模拟 GPIO 没区别,达不到效果,使用了硬件 SPI 后发 现时序有时候会乱掉。最终使用硬件 SPI+DMA 方式,才得到了最终效果。

至于为什么使用 SPI,是从 WS2812 驱动时序来反推的。

WS2812 的时序属于单总线式的时序,每一个 bit 都是由一个高电平+ 低电平实现,一个周期要在 1.25 微秒左右。当高电平在 400 纳秒,低电 平在 800 纳秒左右,则该 bit 为 0,反之为 1。 

当 SPI 时钟设置在一个比较合适的频率时,一个字节周期刚刚好可以在 1.25 微秒左右,比如 6-8MHz。这样,只需要用一个字节表示 WS2812 一个 bit 即可。 

当然,一切都是可以变通的,我最开始的程序是采用了一个字节表示一 个 bit 的方式,后来发现这种方式不是很稳定,则改成了一个字节表示 2bit。这样既节省了内存开支,也比之前的时序稳定性略好。经过实际测试,虽然 仍有瑕疵,但较之前版本效果更好一些,所以最后我选择了这个方案。

代码地址

GitHubhttps://github.com/illusionlee/lightcube 

代码使用了 MIT 协议,相对较为开放。因为我的一些代码仍然会有一些 BUG,所以非常期待更多人可以参与进来,issue、pr,开源精神亦在于此 吧!共同完善,争取每个人都可以拥有属于自己的时光空间立方,工作闲暇 之余,拿起来晃一晃,能够体验到一点点乐趣。

责任编辑:xj

原文标题:【RT-Thread 开源作品秀】时光空间立方

文章出处:【微信公众号:RTThread物联网操作系统】欢迎添加关注!文章转载请注明出处。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分