拟辉光管时钟

60 多年过去了,尽管辉光管已经停产,有很多工程师仍然对它情有独钟。我用 8 块液晶显示屏制作了一个拟辉光管时钟,感受复古元素的美感,表达对过去经典的敬意。

项目起源

看过《命运石之门》的朋友应该知道里面有一个“时间线变动仪”,就是用辉光管呈现数字,网上很多电子爱好者也成功用辉光管进行了复刻,效果拔群。对于刚接触电子行业的我来说有点复杂,而且辉光管早已停产,后来我在各个平台寻觅,终于看到了一个用液晶屏显示辉光管图片的方式做的拟辉光管时钟,相比于传统的辉光管,液晶显示屏工作电压低、寿命长、可呈现多种色彩,还可以显示图片,可玩性比较高。在实现时间显示功能的同时,我还给时钟增加了一个AHT10 温 / 湿度模块和一个 0.96 英寸的OLED 显示屏,用于显示室内温 / 湿度。

材料介绍

主控芯片

本 项 目 主 控 芯 片 采 用 ESP32-WROOM-32D 模块(见图 1),具有可扩展、自适应的特点。时钟频率的调节范围为 80~240MHz,只需极少的外围元器件,即可实现强大的处理性能、可靠的安全性能、Wi-Fi 和蓝牙功能。

图 1  ESP32-WROOM-32D 模块

液晶显示模块

显 示 屏 使 用 1.14 英 寸 LCD 液 晶 显示 模 块( 见 图 2), 分 辨 率 为 135 像 素×240 像素,驱动芯片型号为 ST7789,通信方式为 4 线 SPI,接口方式为焊接式,0.7mm 的接口间距对焊接比较友好。

图 2 1.14 英寸液晶显示模块

AHT10温/湿度模块

温 / 湿度模块型号为 AHT10(见图 3),该模块配有一个 ASIC 专用芯片、一个经过改进的 MEMS 半导体电容式湿度传感元器件和一个标准的片上温度传感元器件,响应迅速、抗干扰能力强、性价比高、稳定性好,广泛应用于空调、除湿器及其他相关温 / 湿度检测控制设备中。

图 3  AHT10 温 / 湿度模块

OLED显示模块

OLED显示模块为0.96英寸(见图4),像素为白色的,分辨率为 128 像素 ×64像素,接口为 I2C。OLED 显示屏可视角度大、功耗低、不需背光源、对比度高、厚度薄、反应速度快、可用于挠曲面板、使用温度范围广、结构及制程简单等优异特性,操作方便,功能丰富,可显示汉字、ASCII 码、 图案等信息。

图 4  OLED 显示模块

电路设计

主控部分

ESP32-WROOM-32D 模块提供了丰富的 GPIO 接口,温 / 湿度模块的I2C接口和 OLED 显示模块以及时间芯片的I2C 接口复用,减少 I/O 接口的占用,主控电路里使用了一路 ADC 采集,读取环境光亮度采集电路的电压变化来控制显示屏背光,使用了 8 个引脚(CS1~CS8)分别连接 8 块液晶显示屏的引脚,通过电平变化实现对 8 个显示屏的控制,使用一个按键引脚(key1)用于液晶显示屏显示内容的切换,主控电路如图 5 所示。

图 5  主控电路

下载电路

本项目使用 CH340C 芯片,该芯片内置晶体振荡器,可以省去晶体振荡器电路,价格便宜,电路简单,配合三极管可实现自动下载功能,下载电路如图 6 所示。

图 6  下载电路

供电及稳压电路

供电电路使用了 3 个 Micro USB 接口,方便后期从时钟的左、右、后 3 个方向给时钟供电,使用一个 MSK-12D19 拨动开关实现对电源的通断。

稳压电路使用 LM1117-3.3 芯片,该芯片是一种常见的稳压芯片,价格便宜,电路简单,供电及稳压电路如图 7 所示。

图 7  供电及稳压电路

AHT10温/湿度模块电路

AHT10 温 / 湿度模块使用 I2C 总线,模块集成度高,仅有 4 个接口,AHT10 温 / 湿度模块电路如图 8 所示。

图 8 AHT10 温 / 湿度模块电路

OLED显示模块电路

OLED 显示模块同样使用 I2C总线,仅有 4 个接口,OLED 显示模块电路如图9 所示。

图 9 OLED 显示模块电路

环境光亮度采集电路

光敏电阻在不同光强度下电阻值不同,光照变强,电阻值变小,该电路采集的是与光敏电阻串联阻值为 1kΩ 的定值电阻两端电压,因为光照变强,光敏电阻阻值变小,环境光亮度采集电路中的电流变大,1kΩ定值电阻两端电压会变大,这样 ESP32-WROOM-32D 模块采集到的电压与光照强度呈现正相关,方便后期程序调试,环境光亮度采集电路如图 10 所示。

图 10  环境光亮度采集电路

时钟芯片电路

时钟芯片使用的是 PCF8563,是一款工业级内含 I2C 总线接口、具有极低功耗的多功能时钟和日历芯片,性价比很高。电路中增加了 CR1220 电池座,主电源掉电后,可采用备用纽扣电池供电,这里时钟芯片精度不做要求,因为 ESP32-WROOM-32D模块有Wi-Fi功能,在有网络的条件下,程序中可实现启动时获取网络时间完成本地对时,时钟芯片电路如图 11 所示。

图 11  时钟芯片电路

液晶显示屏驱动电路

液晶显示屏驱动电路采用开源平台的成熟方案,将需要的引脚引出后,连接到8Pin 的 NDK/TAT 总线插槽里,画成 PCB后,显示屏可以像游戏卡带那样直立插到主控板上,液晶显示屏驱动电路如图 12 所示。

图 12  液晶显示屏驱动电路

PCB设计

我 在 设 计 PCB 之 前 综 合 考 虑 了8块液晶显示屏横向排开的间距以及时 钟 整 体 稳 定 性, 将 PCB 尺 寸 定 为200mm×50mm。将大部分贴片元器件分别布置在 PCB 底层,让顶层保持一定的美观,PCB 面积比较大,留给元器件空间也足够,焊接难度降低。

主控 PCB 整体布局如图 13 所示,主 控 PCB 整 体 效 果 如 图 14 所 示,在 ESP32-WROOM-32D 模 块 天线下方区域不覆铜(见图 15),防止PCB 铜箔层对信号产生干扰。为了防止ESP32-WROOM-32D 模块以及稳压电路工作时产生的热量对 AHT10 温 / 湿度模块检测室温干扰,将 AHT10 温 / 湿度模块放置在远离主控芯片和稳压电路的位置(见图 16)。

图 13 主控 PCB 整体布局

图 14 主控 PCB 整体效果

图 15 ESP32 模块天线下方不覆铜

图 16 AHT10温 /湿度模块远离主控芯片和稳压电路

液晶显示屏驱动 PCB 整体布局如图17 所示,液晶显示屏驱动 PCB 效果如图18 所示,PCB 下方的顶层和底层分别留出4 个焊盘(见图 19),焊盘通过 8Pin 的NDK/TAT 总线插槽和主控 PCB 连接。

图 17 液晶显示屏驱动 PCB 整体布局

图 18 液晶显示屏驱动 PCB 效果

图 19 液晶显示屏驱动 PCB 下方焊盘

程序设计

编程环境

我使用 Arduino IDE 1.8.16 版本,软件中的开发板管理器中的 ESP32 开发板版本为 1.0.6(见图 20)。

图 20 Arduino IDE 版本以及 ESP32 开发板版本

程序编写

(1)导入库

Arduino 自带很多库文件,可以直接在“库管理器”中安装使用,这个项目用到了支持时钟芯片、支持温 / 湿度模块、实 现 ESP32 模 块 的 Wi-Fi 功 能 和 断 电

记忆功能、驱动液晶显示屏显示和驱动OLED 显示模块显示的相关库文件。

(2)配网功能

这里采用的是乐鑫提供的SmartConfig 方 案, 配 合 手 机 端 App、EspTouch 使用,当前设备在没有和其他设备建立任何实际性通信连接的状态下,可以一键配置该设备接入 Wi-Fi,如程序1所示。

(3)获取时间和温度

参 考 I2C_BM8563.h 库 文 件 的 示 例程序,获取时间芯片里的时间和日期,将时、分、秒分别赋值给变量,如程序 2 所示。

将时、分,秒变量的十位数和个位数分别取出赋值给新的变量,用来对应显示代表数字的图片,如程序 3 所示。

参考“Adafruit_AHT10.h”库文件的示例程序,获取温 / 湿度模块的温度和湿度,将温度和湿度分别赋值给变量,如程序4所示。

(4)将温/湿度数值显示到OLED显示模块

使 用“U8g2lib.h” 库, 设 置 OLED显示模块的驱动类型和硬件连接方式,将从温 / 湿度模块获取的温度和湿度显示到OLED 显示模块上,这里以显示温度内容为例,如程序 5 所示。

(5)将辉光管字体显示到液晶显示屏上

准备好代表 0~9 的 10 张辉光管字体图片,通过画图软件将其调整为宽 135 像素,高 240 像素,如图 21 所示。

图 21 调整辉光管字体图片大小

调整好辉光管字体图片大小后,把数字是 0 的图片通过“jpg 转 Hex”软件转码后创建扩展名是 .h 的文件,命名为a0.h,剩下的图片也按照这种方法处理。

使用 TFT_eSPI.h 库驱动液晶显示屏显示内容,在 setup() 函数中将液晶显示屏与 ESP32-WROOM-32D 模块连接的CS1~CS8这8个引脚定义为“OUTPUT”,以液晶显示屏显示小时的第2位数字为例,先把第 2 块液晶显示屏 CS 引脚拉低让显示屏使能,剩下液晶显示屏 CS 引脚拉高,通过 switch() 函数把小时的第二位数字对应的图片显示到第 2 块液晶显示屏上,如程序 7 所示。剩下各个位置数字用相同办法下拉对应液晶显示屏的 CS 引脚,将与数字对应的辉光管字体图片显示到对应的液晶显示屏上,程序通过获取时间判断该位置数字是否发生变化,如果改变则会触发 if 语句刷新该位置显示屏内容。

(6)液晶显示屏背光亮度调节

ESP32 模块从环境光亮度采集电路获取电压值,计算 10 次的平均数,然后将此数值转化为 0~255 范围的液晶显示屏背光亮度,如程序 8 所示。

成果展示

将液晶显示屏焊接到液晶显示屏驱动PCB 上,液晶显示屏背面用双面胶固定,如图 22 所示,最后制作完成的拟辉光管时钟如图 23 所示。

图 22 液晶显示屏

图 23 拟辉光管时钟

结语

这个项目里 ESP32-WROOM-32D模块还有一个 IO34 引脚没有使用,感兴趣的朋友可以利用这个引脚扩展其他功能,目前能想到的是把人体感应模块的信号引脚接到 IO34,这样拟辉光管时钟通过人体感应模块传来的高低电平信号控制显示屏背光的开关,这样拟辉光管时钟在没有人的时候会关闭显示,达到省电的目的。

这 8 块液晶显示屏除了做时钟,还可以显示丰富多彩的内容,通过程序让 ESP32-WROOM-32D 模块利用 Wi-Fi 从互联网上获取信息,比如天气预报、农历、二十四节气,将获取的信息显示到液晶显示屏上。当然这些只是抛砖引玉,想必大家还有更多更好的想法去丰富这个拟辉光管时钟的功能。

我第一次看到辉光管时钟就被它黑暗中橙黄色幽光的独特韵味深深吸引,真没想到自己会用另一种形式将其复刻出来,前期构思花了很长时间,几乎要放弃,可能是念念不忘必有回响,一天查看资料发现了同时点亮两块液晶显示屏并且显示不同内容的方法,于是这个基于液晶显示屏的拟辉光管时钟真的被我做成了。焊接好元器件写入程序最后点亮的那一刻,我感觉一切都值得,那种快乐妙不可言。

本文来源:无线电杂志

往期推荐

开源一辆精致的Mini FOC无刷平衡车,AT32F413+ESP32-C3,快来复刻吧!

开源一个USB PD诱骗器,基于CH224和CH32V003

介绍一个4000行代码的开源GuiLite,并移植到STM32,收藏

开源】纯手工低成本打造拟辉光管时钟,也可以很酷炫

开源一个各种USB电缆的测试仪,再也不用担心被只有充电功能的数据线坑了

开源项目】用ESP32制作一个桌面天气预报站

ESP32制作一个拟辉光管时钟相关推荐

  1. #教你从零制作拟辉光管时钟#

    #制作电路板 #设计制作 方案确定后,即可展开制作,制作之前先来看一下制作拟辉光管时钟所需的物料 物料清单: Esp8266控制器 *1 PCB灯板 *6 ws2812灯带 1条 50*30mm透明亚 ...

  2. 【开源】纯手工低成本打造拟辉光管时钟,也可以很酷炫

    不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我 <命运石之门>里 "世界线变动率探测仪",各种辉光管的作品,让热爱DIY的小伙伴欢喜,但是辉光管的价 ...

  3. 拟辉光管时钟“重生”记(源码)

    再次升级:增加农历和天气预报 海鲜市场入手拟辉光管时钟,就是这货: 效果还是蛮炫的. 用了一年多,突然抽风,具体表现为自动切换为日期和星期显示,需要按键才能切回来,过一会儿又变成日期/星期. 原来是运 ...

  4. 自己制作“EleksTubeIPS创意复古RGB拟辉光管时钟”分享《四》-(持续更新2022-2-28)

    很抱歉好久没有更新了! 因为改动比较大所以更新慢了点,之前总想着使用stm32单片机做但是为了控制成本一直提高不了刷新效率,后来在热心网友的帮助下选择了ESP32来做,今天刚刚有点成绩,就迫不及待的想 ...

  5. 自己制作“EleksTubeIPS创意复古RGB拟辉光管时钟”分享《一》---(持续更新2021-12-17)

    1.先来一张正儿八经的产品图 相当的帅气!可惜腰包不给力就只能自己动手丰衣足食了!!! 2.材料分析(因为贫穷只能看图说话了!) 外壳:外壳看成色有种金属质感(磨砂带颗粒的)但是我上网查了半天并没有找 ...

  6. 自己制作“EleksTubeIPS创意复古RGB拟辉光管时钟”分享《二》---(持续更新2021-12-22)

    一.前期的准备工作 1.经过漫长的等待pcb等一系列物料都一一到齐了,下图为本次的物料 二.测试版的制作 1.首先焊接两个屏幕小板和一个底板,如下图所示, 2.接下来就是写代码了.代码直接放到最后的下 ...

  7. 自己制作“EleksTubeIPS创意复古RGB拟辉光管时钟”分享《三》---(持续更新2021-12-27,2021-12-28新增修改)

    一,如何解决屏幕刷新速率的问题 1.目前能达到的刷新速率,因为没有办法连续刷新,只能按复位来看图片的刷新速率,显然速度还是很慢. STM32F103驱动屏幕显示图片目前能达到的速度 2.理论上可以达到 ...

  8. html、js、css3制作一款辉光管时钟

    代码地址与作者:https://github.com/AmperiaWang/Nixie-Clock <html> <head><title>辉光钟显示效果< ...

  9. 辉光管时钟学习制作及开源软硬件工程

    文章目录 前言 开源地址 辉光管项目介绍 辉光管的工作条件 硬件部分 部分介绍 充电电路 驱动电路 不足之处 软件部分 总结 前言 作为一个电子人,一直想做一个辉光管时钟,算是大学的一个心愿,终于在快 ...

最新文章

  1. Travis CI + github + hexo 自动化部署
  2. LightGBMError: Length of label is not same with #data
  3. arduino tft 方向_ESP32在Arduino环境下玩转 LVGL,ESP32移植LVGL详细教程
  4. C#中split分隔字符串的应用
  5. gettimeofday函数使用《代码》
  6. Java每日问题汇总-02
  7. android driver log,Android调试驱动抓log的方法
  8. base64与图片互换
  9. 产品经理是怎样炼成的
  10. MyBatis3与Spring3的整合配置(初级篇)
  11. 基于matlab的自适应滤波器,基于MATLAB的自适应滤波器的设计与实现.doc
  12. 只需45秒,用Python给故宫画一组雪景手绘图
  13. PS剪切图的基本操作
  14. 最近抖音上虚拟元宇宙项目-猜歌名,代码解析
  15. blog放在 http://cunsh.ycool.com/
  16. Trivial、Non-Trivial和POD类型
  17. python处理grd格式文件_python sklearn中,GBDT模型训练之后,可以查看模型中树的分裂路径吗?...
  18. 内存不能为“read” “written”的解决方法
  19. 倪海厦天纪笔记16_倪海厦《天纪》——人间道听课笔记
  20. 关于Python中的基础问题与重点语法分析

热门文章

  1. 【寒假每日一题】洛谷 P5734 【深基6.例6】文字处理软件
  2. Java的jdk配置成功,但是输入java -version等,命令行没有任何反应
  3. 使用 Amazon Aurora Serverless构建无服务器应用程序仅仅只需要10分钟
  4. 失联飞机的情况分析和搜救应对措施
  5. 神经网络滤镜安装教程图,ps神经网络滤镜安装包
  6. WIN7 开启PAE突破4G内存使用限制
  7. QQ 珊瑚虫 飘云
  8. FTP共享文件服务器
  9. SDIO协议读写SD卡之SD卡简介
  10. 管理类联考——写作——素材篇——论说文——写作素材03——志篇:逆境·考验04——志篇:初心