专栏首页单片机爱好者PIKOCUBE:带 LED、陀螺仪,WiFi 控制的可编程骰子

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

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 左右。

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

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 打印的充电座将骰子放进去,并且设置一些触点。

本项目文件库地址:

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

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

本文分享自微信公众号 - 单片机爱好者(mcucoder)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 基于STM32CUBE的USB鼠标键盘二合一

    看来你们对USB兴趣一般,所以这次我把它放在次条。感兴趣的就看一眼,没兴趣的就算了。

    MCU起航
  • 你手上的PCB怎么制作的?几张动图揭晓工厂生产流程

    在PCB出现之前,电路是通过点到点的接线组成的。这种方法的可靠性很低,因为随着电路的老化,线路的破裂会导致线路节点的断路或者短路。绕线技术是电路技术的一个重大进...

    MCU起航
  • 闯荡深圳20年:一个电子工程师的心声

    上世纪八十年代的升学名额有限,我因为英语考得不好导致总分差了10来分而未能继续升学。当时考虑是就此回家种地还是另谋出路?也曾经迷茫过、彷徨过,在那改革开放伊始,...

    MCU起航
  • 如何用简单易懂的例子解释隐马尔可夫模型?(进阶篇)

    昨天通俗易懂的讲解了什么是HMM,没看的点这里。那么今天就来看看,具体理论是什么以及数学上怎么计算的呢?

    zenRRan
  • 【机器学习 基本概念】隐马尔可夫模型

    隐形马尔可夫模型,英文是 Hidden Markov Models,所以以下就简称 HMM。 既是马尔可夫模型,就一定存在马尔可夫...

    魏晓蕾
  • 用简单易懂的例子解释隐马尔可夫模型

    隐马尔可夫(HMM)好讲,简单易懂不好讲。我希望我的读者不是专家,而是对这个问题感兴趣的入门者,所以我会多阐述数学思想,少写公式。霍金曾经说过,你多写一个公式,...

    AI研习社
  • [Go] golang定时器的使用

    golang中的定时器是使用的chanel阻塞来实现的,主要使用到了time包中的内容,如果有多个定时器的channel,为了防止阻塞,可以使用select来获...

    陶士涵
  • Win10新添实用功能,你发现了吗?

    尽管微软更新总是不断翻车,各种bug不断,但用户量依然很大,而很多人还是对新版系统抱有很大的期望。这不,在最新的 Windows 10 预览版中,微软终于带来了...

    民工哥
  • 安装数据库很痛苦?试试这个SQL在线编辑器,省掉你的安装烦恼

    经常有小伙伴因为数据库安装报错给我私信。发给我的报错各式各样,有些我能解决,有些报错真的我也没见过,不知如何作答。这导致很多初学SQL的爱好者自信心受到打击。

    披头
  • opencv cudacodec VideoReader 报错

    这篇文章 https://blog.csdn.net/zijin0802034/article/details/83825081 提供了一个办法,复用例子里的代...

    shirishiyue

扫码关注云+社区

领取腾讯云代金券