前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PIKOCUBE:带 LED、陀螺仪,WiFi 控制的可编程骰子

PIKOCUBE:带 LED、陀螺仪,WiFi 控制的可编程骰子

作者头像
MCU起航
发布2020-06-29 15:38:17
1.5K0
发布2020-06-29 15:38:17
举报
文章被收录于专栏:单片机爱好者

MAKER:moekoe/译:趣无尽

今天给大家带来一个非常好玩的项目,带有 54 颗 LED、陀螺仪,支持 WiFi 控制的可编程骰子。

这枚骰子主要由一个 ESP8285-01F、六块 PCB 和 54 颗 LED 组成。其结构设计十分巧妙,在制作的过程中也处处体现出结构的精巧(文中「组装骰子」部分有完整的焊接视频)。

https://v.qq.com/x/page/e0944qrg0hj.html

主要部件简介:

1、内部的陀螺仪传感器可以检测运动和骰子的位置。

2、WiFi MCU 的尺寸为 10×12mm。

3、骰子内部的控制器旁有一个 150mAh 的锂电池和充电电路。

4、每块 PCB 板的尺寸为 25×25mm,包括了九个 WS2812-2020 迷你 LED 像素。

5、骰子内部的控制器旁有一个 150mAh 的锂电池和充电电路。

如果你想要了解更小立方体,可点击查看我的第一版由环氧树脂制作的立方体。 https://www.makermoekoe.net/post/pikocube-is-it-the-smallest-led-cube

材料清单

ESP8285-01F WiFi MCU × 1 ADXL345 陀螺仪 × 1 贴片电容器 0603(100n、1μ、10μ) × 若干 贴片电阻 0603(600、1k、5k、10k、47k、100k、190k、1M) × 若干 贴片二极管 SOD123 1N4148 × 若干 贴片 LED 0805 × 若干 贴片 Mosfet(IRLML2244、IRLML2502) × 若干 贴片 LDO MCP1700 × 若干 贴片 90deg 按钮 × 若干 WS2812 2020 LED × 54 MCP73831 充电器 × 1 贴片二极管 MBR0530 × 若干 JST 1.25mm 2P 连接器 × 1

PCB 设计

我使用 Autodesk EAGLE 设计 PCB 板。并同时用两种不同的方法来设计 PCB 板,确保骰子的体积不要过大。两块 PCB 的尺寸均为 25x25mm 的正方形。

这些 PCB 板的不同之处在于,每侧的三个蜂窝式的孔可以将三个信号(+5V、GND 和 LED 信号)分布到整个骰子上。

PCB 板的排列方式如图所示。一旦骰子组装折叠后,彩色的边就聚集在一起。 箭头图标记出 WS2812 的信号线。

两版的 PCB 设计原理图、电路板和 BOM 文件请在项目文件库中下载。 https://make.quwj.com/project/214

PCB 板的说明

整个骰子由两种不同类型的 PCB 板组成。一种带有充电电路和锂电池插孔,另一种带有 MCU、传感器和一些电源自锁电路。每块 PCB 板只安装一次,骰子其余外部的面都包含九个 LED。

PCB 板的每一个边都带有蜂窝式的孔,它具有两种功能。一方面,这些孔或焊料垫让这些板子看起来像一个骰子,同时可以将所有东西固定到位。另一方面,它还可以传输 LED 的功率和 WS2812 的信号。

后者较为复杂,它必须按照特定的顺序进行排列。每个 PCB 板都有一个输入信号和一个输出信号。为了防止在某一点上中断信号,我添加了一些贴片焊接跳线垫。

组装骰子

关于组装骰子的细节,你可以参考视频来组装。

组装骰子的焊接部分比较难,因此我设计了一种小型焊接辅助工具,可以先将三个 PCB 板焊接在一起。

重复两次,然后将它们的 PCB 边缘焊接起来即可完成。注意检查骰子是否能够正常使用。

在连接电池插孔之前,请确保将三个 PCB 板焊接在一起。你需要修改 .stl 文件,在插孔处添加一个合适的小孔。

.stl 文件请在项目文件库中下载。 https://make.quwj.com/project/214

下面是完整的焊接视频,步骤还是有些复杂的,需要耐心,感兴趣的朋友可以了解一下:

Arduino 编程

骰子开始可以启用禁用 WiFi 的模式以便节省电量,这就是调制解调器睡眠模式。关于 ESPs 数据表,MCU 在调制解调器休眠时仅消耗 15mA 的电流,而在正常模式下则需要 70mA 左右。

因此这种设置适用于电池供电的设备。为此,在调用设置功能时,你需要输入以下代码。

代码语言:javascript
复制
void preinit() {
    ESP8266WiFiClass::preinitWiFiOff();
}

按下另一个按钮,你可以通过调用标准 WWiFi.begin() 功能或 Blynk.begin() 来唤醒 WiFi。它是我用来控制骰子的 APP 设置。

在骰子上,一些动画转换其实是一些数字的转换。骰子外体墙面的矩阵可以转化为像素,它是通过输入以下代码完成的:

代码语言:javascript
复制
int get_pixel(int mat, int px, int py) {
    //starting at top left corner
    return (px + py * 3) + mat * 9;
}

第一个矩阵是顶部的矩阵,第二个矩阵是面向正面的矩阵,第三个矩阵是围绕骰子向右方移动,最后一个矩阵是底部的矩阵。

使用代码时,需要将 WiFi 凭证连接到你的网络。为了正确使用 Blynk APP,在打开草图之前,请将两个文件( BLYNK.ino 和另一个包含 Blynk 的文件)放入同一文件夹中。草图中包含两个不同的选项卡。

另一个文件实际上不执行任何操作,不需要配备其他选项卡,它仅用于在未按下按钮时使骰子休眠。否则,骰子就无法进入睡眠状态,并会一直消耗电量。

代码文件请在项目文件库中下载。 https://make.quwj.com/project/214

APP 设置

只需要按下一个按钮就可以开始把玩骰子了,但不是从 WiFi 的功能开始。当骰子启动后再按一次按钮就可以启用 WiFi 并连接到预定义的网络。

稍后,你可以使用 Blynk APP 来控制骰子。 https://blynk.io/en/getting-started

当然,你可以扩展功能,这样骰子就更好玩了!

这里展示一个 Blynk APP 内部的简单布局。它包括了两个 SLIDER(亮度和动画速度)、两个 STYLED 按钮(更改动画模式并关闭骰子)、一个用于切换骰子的逻辑、一个用于显示骰子面朝上的 LED 以及用于显示电池状态的 GAUGE。

所有这些小部件都利用虚拟引脚进行 APP-MCU 通信。它的功能是通过 MCU 读取虚拟引脚。

V1 是指使用的虚拟引脚,而 param.asInt() 会保存该引脚的当前值。该功能是为了限制输入值,安全第一。

代码语言:javascript
复制
BLYNK_WRITE(V1) {
    //StepH  t = millis();
    current_mode = constrain(param.asInt(), 0, n_modes - 1);
}

将虚拟引脚写入 Blynk APP,并使用以下功能:

代码语言:javascript
复制
int data = getBatteryVoltage();
Blynk.virtualWrite(V2, data);

你可以 Arduino 草图中获得更多信息。

完成

设计和建造骰子非常的有意思!但它也存在一些问题,需要我们去思考。

1、在第一版中,我使用升压转换器电路,以确保 WS2812 LED 以 5V 运行。实际上,它们将以大约 3.7V 的电池电压运行,因为升压转换器的噪声太高干扰了 LED 的信号,从而导致骰子非正常的闪烁。

2、在第二版中,我尝试使用无线充电。我添加了一些充电垫,可从骰子的外部访问这些充电垫,但电感功率会受到 PCB 和其他元件的干扰。因此,我必须再造一个 3D 打印的充电座将骰子放进去,并且设置一些触点。

本项目文件库地址:

http://make.quwj.com/project/214

via instructables.com/id/Six-Sided-PCB-LED-Dice-With-WIFI-Gyroscope-PIKOCUB/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单片机爱好者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 材料清单
  • PCB 设计
  • PCB 板的说明
  • 组装骰子
  • Arduino 编程
  • APP 设置
  • 完成
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档