概述

基于麻雀一号核心板 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 等

硬件框架

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

软件框架说明

程序运行逻辑图

程序主要文件

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

软件模块说明

我这个作品里软件模块划分的比较清晰,各个模块均独立为一个单独文 件,比较好理解。屏幕、蓝牙、网络、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。这样既节省了内存开支,也比之前的时序稳定性略好。经过实际测试,虽然 仍有瑕疵,但较之前版本效果更好一些,所以最后我选择了这个方案。

具体的实现代码在 ws2812.c 文件中。

演示视频

视频中展示了整个控制流程,从上电,到用自己写的微信小程序连接蓝 牙,再到不同指令的发送。网络通信是直接连接到我自己的一台互联网服务器上,通过 http 接口 获取数据,服务器程序使用 Python 编写。配网功能很简单没有展示,配置成功一次后,上电自动就能联网了。

代码地址

GitHub

https://github.com/illusionlee/lightcube

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

报名参加请扫描图中二维码!

你可以添加微信17775982065为好友,注明:公司+姓名,拉进 RT-Thread 官方微信交流群!

RT-Thread

让物联网终端的开发变得简单、快速,芯片的价值得到最大化发挥。Apache2.0协议,可免费在商业产品中使用,不需要公布源码,无潜在商业风险。

长按二维码,关注我们

点击阅读原文进入RT-Thread官网

你点的每个“在看”,我都认真当成了喜欢

【RT-Thread 开源作品秀】时光空间立方相关推荐

  1. 直播对话RT-Thread大赛一等奖获奖者:时光空间立方从设计到实现

    Hello,各位小伙伴好久不见,又到了双周一次[在线面对面]RT-Thread社区直播的日子~先说下今晚访谈直播的主题: RT-Thread大赛冠军作品--时光空间立方从设计到实现      关于今天 ...

  2. 【RT-Thread 开源作品秀】基于 RT-Thread 的“数码小精灵”设计与实现

    作者:赵俊涛 一.概述 随着近年来智能化设备的不断增长,平板电脑.智能数字音视频播放器.移动数码相机等各类数码产品,正越来越受到城乡居民欢迎.特别是"云生活"让人们对数码产品有了更 ...

  3. 【RT-Thread开源作品秀】基于STM32F407与RT-Thread的智能水培系统

    开源地址:https://gitee.com/li-yutan/rtt.git 本产品着眼于城市家用的智能水培领域,是现代家庭园艺的一部分,随着人们生活水平质量的提高,对绿色健康生活方式的重视,原来越 ...

  4. 【RT-Thread开源作品秀】运动手表

    作者:何雄 该作品是基于ART-PI硬件平台,外接OLED,蜂鸣器,按键,X-NUCLEO-IKS01A3传感器套件完成实现的运动手表. 运动手表应该能够兼顾温湿度,气压信息,指南针以及步数等,能够实 ...

  5. 【RT-Thread 开源作品秀】小型蚯蚓养殖监控系统

    开源地址:https://gitee.com/bltas/earthworm_home 概述: 小型蚯蚓养殖监控系统主要探索在家庭等局限场地下,蚯蚓的正常养殖,从而得到蚯蚓粪和蚯蚓液.系统基于ART- ...

  6. 【RT-Thread开源作品秀】供电所综合网关(1)

    概述 本项目作者为姜春波,和波哥面对面请上B站回看上期访谈节目! 本篇文章将分为1.2两篇连载,第2篇将对本项目的"具体实现"方法展开描述! 背景:现有及新建五星供电所安装了很多智 ...

  7. 基于rt thread smart构建EtherCAT主站

    我把源码开源到到了gitee,https://gitee.com/rathon/rt-thread-smart-soem 有兴趣的去可以下载下来跑一下 软件工程推荐用vscode 打开.rt thre ...

  8. rt thread studio使用QBOOT和片外flash实现OTA升级

    我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...

  9. stm32f407单片机rt thread 片外spi flash OTA升级配置示例

    参考地址https://www.rt-thread.org/document/site/application-note/system/rtboot/an0028-rtboot/ 第一步,生成Boot ...

  10. 关于RT thread系统节拍时钟的配置

    关于RT thread系统节拍时钟的配置                  -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍 ...

最新文章

  1. Scrapy shell
  2. springmvc静态资源;mvc:default-servlet-handler后Controller失效
  3. mysql git 获取 稳定版本 源码_webmagic新版文档(更新中)
  4. Linux上静态库和动态库的编译和使用
  5. SIP协议学习2-pjsip
  6. @Cotroller和@RestCotroller
  7. php文件目录教程,php文件目录操作的开发过程与示例分享
  8. 刘强东卸任京东 CEO,“二号位”徐雷接棒:三大电商巨头“二把手”正式集齐
  9. Android4火狐,Android版火狐4正式发布
  10. InnoDB存储引擎介绍-(1)InnoDB存储引擎结构
  11. 变形监测与数据处理复习总结
  12. 服务器做中转站,搭建 git 本地中转站
  13. PNP型三极管____本人备注
  14. 浅谈二维码门禁在互联网的时代特色
  15. 360极速浏览器屏蔽百度广告
  16. 处理文件上传后返回json数据在IE出现文件下载问题(框架是spring boot)
  17. 计算机软考网络工程师如何复习?
  18. 怎样黑进Microsoft:循序渐进指南 (转)
  19. 欧拉角变化率和机体角速度的关系
  20. 计算机专业硕士毕业论文摘要,湖北计算机专业硕士毕业论文英文摘要,经济学专业本科毕业论文...

热门文章

  1. java设计计算器_Java复数计算器的设计
  2. OBD系统系族分类规则
  3. 嵌入式技术学习路线分享
  4. Oracle中insert into select和select into的用法(异常0RA-00905:missing keyword的解决)
  5. dns劫持如何完美修复?dns被劫持如何解决如何完美修复
  6. json.dumps()、json.laods()、demjson相关
  7. gt、lt、ge、le、eq、ne的含义
  8. 蚂蚁金融科技:两大发布,实力开放
  9. win7浏览器主页修改不过来_IE浏览器主页无法修改的两种解决办法
  10. Steam推出多人联机本地游戏功能 即将推出