PIKOCUBE

带有 54 颗 LED、陀螺仪,支持 WiFi 控制的可编程骰子

Cherry

喜欢

811
浏览
1
喜欢

> 更多图片

项目状态:已完成
开放度:公开
所属分类:电子
发布时间:2020-03-31
最近更新:2020-04-07

详细说明


今天给大家带来一个非常好玩的项目,带有 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

链接表


文件库

bom_con.txt
[4281 Bytes at 2020-03-31, 16 次下载]

bom_pow.txt
[3387 Bytes at 2020-03-31, 12 次下载]

pikocube_adxl345_pow.brd
[61590 Bytes at 2020-03-31, 17 次下载]

pikocube_adxl345_con.brd
[77072 Bytes at 2020-03-31, 9 次下载]

pikocube_adxl345_pow.pdf
[19648 Bytes at 2020-03-31, 16 次下载]

pikocube_adxl345_con.pdf
[22891 Bytes at 2020-03-31, 17 次下载]

pikocube_aid.stl
[4684 Bytes at 2020-03-31, 8 次下载]

2020.01.25_Pikocube_Nothing.ino
[692 Bytes at 2020-03-31, 8 次下载]

BLYNK.ino
[2030 Bytes at 2020-03-31, 10 次下载]

2020.03.19_Pikocube_FastLED_Blynk_woCred.ino
[15396 Bytes at 2020-03-31, 13 次下载]



教程

组件清单
  • 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

材料清单

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

下面是完整的焊接视频,步骤还是有些复杂的,需要耐心,感兴趣的朋友可以了解一下:
https://v.qq.com/x/page/p09448d7utk.html

Arduino 编程

骰子开始可以启用禁用 WiFi 的模式以便节省电量,这就是调制解调器睡眠模式。关于 ESPs 数据表,MCU 在调制解调器休眠时仅消耗 15mA 的电流,而在正常模式下则需要 70mA 左右。因此这种设置适用于电池供电的设备。为此,在调用设置功能时,你需要输入以下代码。

void preinit() {
    ESP8266WiFiClass::preinitWiFiOff();
}

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

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


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() 会保存该引脚的当前值。该功能是为了限制输入值,安全第一。

BLYNK_WRITE(V1) { 
    //StepH  t = millis();
    current_mode = constrain(param.asInt(), 0, n_modes - 1);
}

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

int data = getBatteryVoltage();
Blynk.virtualWrite(V2, data);

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

完成


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

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

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