8321浏览
查看: 8321|回复: 8

[ESP8266/ESP32] 建党百年 | 教你用esp32点亮10片亚克力重温百年党史

[复制链接]
本帖最后由 Mr Guo 于 2021-6-21 22:39 编辑

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图1


#故事起源#
    恰逢今年是中国共产党建党100周年,为了用行动证明我心向党,旺仔爸爸计划以建党百年为主题设计一个作品,之前看到过拟辉光管的时钟非常有意思,不如借用一下这个创意,正好让我们跟随作品一起回顾中国共产党的百年历程,先通过演示视频来全面了解一下这个作品



#方案介绍#
    1921年建党至今,祖国发生了翻天覆地的变化。我们脚下的这片热土,如今拥有世界第一公路里程,拥有世界第一高铁里程,拥有世界第一的架桥技术,拥有世界第一的巨型水电站建设技术,从“嫦娥”探月到“天问”着陆火星,从神舟一号到神舟十二号,从北斗组网到5G商用,从“和谐号”到“复兴号”,当今的中国,彰显出了大国的实力和魄力,那个曾背负落后腐朽枷锁的中国早已苏醒,那个曾被各国垄断技术的中国已然一去不复返,中国已然傲立于世界的东方

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图2


    在建党百年之际旺仔爸爸选取了建党百年来具有典型代表性的10件大事,将其刻制在10片40mm*60mm大小的亚克力上,使用了WS2812灯珠点亮每片亚克力

    亚克力图案的选择十分关键,既要有代表性又不能太复杂,最好还能体现一下科技感,接下来我们一起跟随这十件大事重温百年党史

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图3


建党百年 | 教你用esp32点亮10片亚克力重温百年党史图4


    当然可以展示的内容远远不止这些,比如我国的跨海大桥,水电站,空间站,5G,蛟龙号,体育竞赛成就等都可以体现在上面,也可以展示一些为祖国做出巨大贡献的国之栋梁,感兴趣的伙伴可以去尝试一下

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图5


建党百年 | 教你用esp32点亮10片亚克力重温百年党史图6


    为了压缩体积和减少接线,这次我们特意设计了一款带有20颗WS2812灯珠的PCB板,上一期旺仔爸爸用电熨斗改造了一个回流焊加热台,这次正好可以小试牛刀

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图7


    此次作品的主控采用了ESP32mini的控制板,ESP32自带的蓝牙和Wi-Fi功能可能让我们更加随心所欲的远程操控,后续如果想要设计拟辉光管时钟也不需要做大的改动

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图8


方案确定好后就可以展开设计了,首先我们来看一下都用到了哪些硬件材料

#硬件清单#

  • ESP32mini*1

  • RGB灯板*1

  • 200mah501230锂电池*1(5mm高30mm长12mm宽)

  • 200mm*200mm黑色和透明亚克力(2mm、3mm、4mm厚度的各一块)

  • 滚花铜柱、螺丝等五金若干

  • 导线及下载线

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图9


#图纸设计#

    使用Fusion360计算机辅助设计软件设计图纸,材料选用1-4mm厚度的亚克力板各一张,旺仔爸爸将固定的通孔以圆弧的形式放置在了四个角,为了方便下载程序和使用开关,中间层的亚克力设计成了半开放的状态,设计图纸如下

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图10


    十件比较典型的大事通过雕刻描线的工艺加工,还可以根据自己的喜好换成其他事件,或者在其他节日主题时换成对应风格的图案

将设计图进行装配、渲染检查无误后即可进行加工

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图11


使用激光切割机加工出来后的效果如下

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图12


十片亚克力雕刻图案

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图13


除了旺仔爸爸选择的这十件典型的时间外还可以设计其他画面

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图14


#电路设计#
这次我们将电路设计分为RGB灯板PCB设计和电路接线两部分
RGB灯板设计
RGB灯板的原理图如下所示,主要部件有WS2812灯珠,无声轻触按键和几个电容电阻组成,通过级联的方式将20颗WS2812灯珠串联在一起,电源采用并联的方式,而信号采用串联的方式

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图15


每颗灯珠具体的引脚功能可以通过下图查看

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图16


而无声轻触按键在电路中设计了一个上拉电阻让其信号变得稳定

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图17


原理图绘制完成后就可以将原理图生成PCB文件了,紧接着我们根据原理图进行布线

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图18


PCB设计完成后切换至三维模式查看3D效果

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图19


最后检查没有问题后就可以送去打样了

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图20


RGB灯板用到的焊接元件可以和打样同步进行准备,焊接材料如下:

  • WS2812灯珠*20

  • 100nF电容*3

  • 无声轻触按键*1

  • 10K电阻*1

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图21


元件准备齐全后,我们使用电熨斗回流焊加热平台进行焊接

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图22


焊接完成效果如下

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图23


电路接线设计
RGB灯板焊接完成后,我们需要将主控与RGB灯板接线然后进行功能测试,接线图如下

从接线图中我们可以看出在RGB灯板的OUT输出端增加了一颗RGB灯,其作用是作为氛围灯安装在底部位置

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图24


电路设计完成后就可以进入激动人心的组装环节了

#组装#
此次作品的组装非常的简单,只需几步即可完成

第一步按照电路图将电源、RGB灯板与控制器焊接在一起

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图25


建党百年 | 教你用esp32点亮10片亚克力重温百年党史图26


建党百年 | 教你用esp32点亮10片亚克力重温百年党史图27


第二步组装灯片上顶板和下底板以及滚花铜柱

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图28


第三步安装亚克力灯片

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图29


第四步将控制器、RGB灯板与亚克力外壳组装在一起

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图30


建党百年 | 教你用esp32点亮10片亚克力重温百年党史图31


第五步将安装好的控制器部分与亚克力灯片部分组合,用4颗螺丝固定

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图32


最后我们来看一下成品效果

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图33


建党百年 | 教你用esp32点亮10片亚克力重温百年党史图34


不同颜色展示

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图35




组装完成后,最后就是程序设计了,开始程序设计前,我们需要先理清楚思路

#程序设计#
    这是我们本次作品程序设计的思路,分按键和“Blynk”两种控制方式,每种控制方式都有三种运行模式

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图36


    程序设计主要涉及到两部分,一部分为Blynk移动端的控制程序的编写,另一部分为按键控制的程序编写,我们先来编写按键控制的程序

    编写本次作品程序可以选择的编程环境有mind+,mixly,Arduino

    由于mind+编程环境esp32板卡下不支持Blynk,arduino ide对于大多数人来说还是比较晦涩难懂,所以本次的程序设计旺仔爸爸采用Mixly编程环境,没有安装编程环境的伙伴可以在<mixly.org>官网下载最新版本的mixly软件
mixly程序设计

    第一步,我们先来测试板载按键,通过串口打印的方式来查看按键的状态,下载如下程序,观察串口监视器中输出的数据可以发现,当按键按下时输出低电平也就是“0”,当松开按键是输出高电平也就是“1”,由此可知,我们的按键是低电平有效,查看电路原理图也可以发现这个按键其实接的是一个上拉电阻

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图37


    掌握了按键的状态后,我们就可以通过判断按键是否按下,按了几次或者是否长按来执行相应的任务了

    不过磨刀不误砍柴工,将亚克力点亮的实质其实就是对RGB灯的控制,我们再学习了一下RGB灯的编程方法,再将RGB灯与按键结合起来应该会碰撞出意想不到的火花

第二步,RGB灯的控制,编写RGB灯的程序需要用到下面的程序块

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图38


要想让RGB灯亮起来,我们需要对RGB灯进行初始化设置,需要设置控制RGB的管脚,灯珠的数量以及RGB灯的亮度,我们设计的灯板中有20颗灯珠,亮度的调节范围是0-255,如果设置的数值大于255,Mixly中默认会将输入的数值除以255的余数作为灯珠的亮度

关于RGB灯初始化的程序设计完成后,我们一起编写一个简单的程序来控制RGB灯点亮,编写下方的程序下载后会看到RGB灯隔1秒点亮一次然后隔1秒熄灭一次,如此循环往复,需要注意的是每次点亮或者熄灭RGB灯都需要增加<RGB灯设置生效>的程序块才达到预期的效果

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图39


如果单颗RGB灯可以控制,控制全部的RGB灯也是没有问题的,最简单的方法就是将上面的程序块多重复几次,当然还有更加简单的方法,比如我们可以使用一个"for"循环来实现20颗灯全部点亮成黄色

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图40


事实上,我们除了可以使用程序块内置的颜色以外,还可以通过调节RGB的数值来调节出更加丰富的颜色,比如将"R"和"G"的值都设置为255时将会显示黄色,其中"R"、"G"、"B"的数值可以在0-255之间调节,理论上可以调节出256*256*256种颜色,如果将RGB的数值都设置为0则显示黑色,也就是全部灯珠熄灭,如果将RGB的数值都设置为255则显示白色

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图41


掌握了基本用法后,就可以设计一些函数,让我们随心所欲的调用了

下面我们设置一个显示黑色的函数,这样在需要熄灭RGB灯时就可以直接使用这个函数

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图42


接下来,我们将按键和RGB灯结合做一些有趣的案例

因为我们只有一个按键,所以为了让它尽可能增加更多的功能,我们需要使用多功能按键程序块,这样我们就可以设置单击、双击、长按等功能了

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图43


我们设置按键为4号管脚,低电平触发,当单击按键时1号灯珠亮黄色,当双击按键时,先将所有灯熄灭,接着再将所有灯依次点亮为白色,这里我们调用了前面封装好的<Black>函数,当长按按键时所有灯珠熄灭

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图44


现在我们学会了多功能按键的使用方法,观察RGB灯板可以看出,RGB灯板中20颗灯珠有序排列的,在PCB板设计时为了走线方便,单数列按照由上往下顺序排列,双数列按照由下往上的顺序排列,而我们有10片亚克力板,也就是每2颗RGB灯点亮一篇亚克力板,点亮的组合方式为单数列1-11、2-12、3-13、4-14、5-15;双数列6-16、7-17、8-18、9-19、10-20

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图45


我们假设按键的朝向为正前方,而如果要让亚克力板由前往后点亮的话,则需要先点亮双数列的第一个组合6-16,接着点亮单数列的第一个组合5-15,以此类推

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图46


那么对应的程序该如何设置呢,因为是单数列和双数列的切换,这时候我们可以采用判断奇偶数的方法来切换

我们设置一个“count”变量作为按键按下的计数器,同时判断其奇偶性,奇数就点亮单数列,偶数就点亮双数列

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图47


为了让RGB灯珠的颜色能够变换,还可以继续改进,我们增加“R、G、B”三个变量来切换颜色,由于不同的颜色显示的效果不同,我们这里只选用显示效果比较明显的红、绿、黄三种颜色,使用“count”变量除以3取余数的方法来实现颜色的切换

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图48


程序下载后我们来看一下按键单击的效果

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图49




当RGB灯可以实现单击控制后,双击和长按也将不再是什么难事,我们可以分别设置单击,双击,长按几种模式的函数,前面已经讲解过的函数,由于篇幅原因这里就不展示了

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图50


按键双击后的效果

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图51


按键长按后RGB灯会从前往后依次点亮‍



建党百年 | 教你用esp32点亮10片亚克力重温百年党史图52




从上面的演示中可以看出我们增加了氛围灯的效果,是如何实现的呢

其实非常的简单,只需要增加第21号灯即可

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图53


到此为止我们已经实现了通过按键手动和自动控制RGB灯的方法,当然如果我们有足够多的RGB灯板,修改部分程序即可实现单个IO管脚控制多个RGB灯板,相信拟辉光时钟也能轻松实现了

接下来我们只需要做简单的改进就可以实现移动端控制RGB灯,我们需要用到Blynk APP来实现远程控制
Blynk控制程序

    ‍编写程序前,我们需要对Blynk App做一些设置

第一步登陆账号,如果是第一次使用需要先进行注册,如下图所示“Login”为登陆,"Create New Account ”为注册

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图54




输入账号密码进行登陆

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图55




点击中间的三个点可以选择blynk的服务器,可以选择系统默认的服务器,也可以自行输入服务器地址,比如<blynk.mixly.org>,这样组件可以随便使用,不受额度限制

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图56


登陆成功后,点击“New Project”上面的+号新建项目

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图57


点击右上角的感叹号可以看到关于本账号的基本信息

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图58


接着选择主控为ESP32 Dev Board

点击“CONNECTION TYPE”选择连接方式

本次任务,我们可以选择“Wi-Fi”和蓝牙两种方式,在操控响应速度方面蓝牙模式会更快一点,基本没有延迟,本次作品我们以蓝牙方式进行讲解,这里我们选择“BLE”模式

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图59


选择完成后,点击“Create Project”按钮,会询问是否向邮箱发送一封包含授权码的邮件,点击OK即可创建项目并收到这份邮件,当然你也可以在项目中找到该授权码,这个授权码是blynk移动端与ESP32控制板蓝牙连接的关键,在编程时会使用到

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图60


点击右上角的六边形可以进入项目设置界面,在最下方也可以看到授权码的信息,如下图所示

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图61


上述步骤完成后,我们可以看到如下界面,你可以把它理解为一个画布,接着可以在这个界面设置我们想要的组件了

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图62


APP向左滑动可以添加组件,组件列表如下图所示,我们本次需要使用3个按键“Button”、1个蓝牙“BLE”组件

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图63


加载好的组件,如下图所示

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图64


接着我们需要在Blynk APP中对按键“Button进行设置,3个按键分别对应为V0、V1和V2虚拟引脚,按键设置有“PUSH”“SWITCH”两种模式可选

“PUSH”模式下,按键按下响应相应动作,松开时复位,“SWITCH”模式下,按键按下锁定当前动作,直到再次按下按键才会复位

三个按键我们统一设置成为“PUSH”模式即可

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图65


最后还需要设置一下蓝牙模块准备工作就完成了,点击蓝牙模块会看到如下图所示的界面,接着点击“Connect BLE Device”

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图66


选择搜寻到的蓝牙名称,这里的名称是在程序里设定好的,找到你自己设定的名字即可,比如我们使用的默认蓝牙名称为“Blynk”,

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图67


选择好后之后点击“ok”,等待连接成功

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图68


最后我们点击右上角的“三角形”就可以用运行这个程序了

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图69


Blynk移动端的组件设置完成后,接着我们在Mixly中编写程序

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图70


首先需要在邮箱中找到自己的授权码

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图71


将授权码填写到程序块中,随后编写下面的程序

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图72


通过测试得知,虚拟引脚按键按下时的状态为“1”,我们在程序中设置V0、V1、V2三个虚拟引脚分别触发三种不同的模式,当ESP32主控板接收到移动端发来的消息后就可以实现远程控制RGB灯了,我们来看下一下演示效果

单张画面切换

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图73


多张画面自动切换

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图74


流水灯模式

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图75


至此,所有程序功能都已介绍完毕

最后奉上完整程序

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图76


#总结#
本次作品的创意来源于拟辉光管时钟,向提供创意的前辈致敬

本次作品,我们学会了亚克力雕刻的技巧,PCB制版的技巧

多功能按键和RGB灯的编程方法

学会了Blynk的设置以及程序编写

不足之处是,亚克力板子增多后,显示效果会有所影响

写文章之时,正值神舟十二号发射成功之际,我们预祝他们圆满完成任务,平安归来!

建党百年 | 教你用esp32点亮10片亚克力重温百年党史图77


最后,在建党百年之际,我们回顾过去,在科技强国的探索之路上我们一直砥砺前行,我们开始有机会可以见证,见证开启时代的研精覃思,见证飞跃梦想的孜孜不倦,见证科技智能的突飞猛进,科技强则国强,科技兴则国兴。前途似海,来日方长,而如今由新一代的我们砌成的钢铁中华,必将实现祖国科技强国梦想,祖国也将长久傲立于东方

造物让生活更美好,我们下期见
更多有趣的项目,欢迎旺仔爸爸造物社公众号
建党百年 | 教你用esp32点亮10片亚克力重温百年党史图78


gyc13597926778  学徒

发表于 2021-6-21 20:03:08

狠人,用了不少心思
回复

使用道具 举报

娜娜2012  见习技师

发表于 2021-6-26 07:48:51

打板、激光切割、mixly、blynk,太专业了!设计精巧、美观,太赞了!!
回复

使用道具 举报

hmilycheng  高级技师

发表于 2021-6-30 08:49:43

构思新颖!漂亮!!
回复

使用道具 举报

霹雳豆沙包  学徒

发表于 2021-7-3 20:09:46

激光雕刻的亚克力板吗?
回复

使用道具 举报

ZJHER  学徒

发表于 2021-7-17 17:31:58

请问成品可以购买吗!我想把它带到我们学校里来作为展示,同时也给学弟学妹们科普相关知识!
回复

使用道具 举报

榴莲豆儿  学徒

发表于 2021-8-5 10:00:08

请问有切割图源文件吗?
回复

使用道具 举报

虾虾^0^  见习技师

发表于 2021-8-12 15:52:06

厉害厉害厉害厉害厉害
回复

使用道具 举报

Mr Guo  初级技神
 楼主|

发表于 2021-9-2 00:34:00

ZJHER 发表于 2021-7-17 17:31
请问成品可以购买吗!我想把它带到我们学校里来作为展示,同时也给学弟学妹们科普相关知识! ...

加VX18752544995
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail