21445| 25
|
[项目] ESPnixie----基于ESP32的辉光钟 |
![]() ![]() 这其实是个烂尾了很久的项目 第一次看到辉光钟的时候真的很惊艳 就那种,duang~一下,很好看,很骚气的感觉 Amazing!!! 然后淘宝上看了看价格,觉得自己做才有意思(并不是 其实说到底就是钱包不允许(摊手 -------- 以下部分是电路分析和介绍,觉得太长的可以略过 -------- 言归正传,这个辉光钟使用的辉光管型号是IN14 这个管子产于上世纪70-90年代的苏联。同其他辉光管一样,也是利用冷阴极辉光放电效应发光。IN14主要充氖气,通电后会产生特征的橘红色光芒来显示0-9十个数字。值得一提的是,IN14的管内还充入了少量汞,可以大幅延长使用寿命。因为汞蒸气能够有效吸收阴极发射的电子,避免其他阴极受电子辐射产生“中毒”现象。也正是因为汞蒸气的存在,IN14的橘色辉光边缘,会带有些许蓝紫色光芒,使得显示效果更加漂亮。 ![]() 蓝紫色的边缘不太好拍清楚,实际看的话还是比较明显的 ![]() 从背面拍就比较明显了 实际上在黑暗环境下,从顶部后侧斜向下看,整个管子的玻璃壳都会泛着幽幽的紫光 ![]() 1977年8月,暴力美学工厂出产 首先解决辉光管的驱动问题 IN14最合适的驱动参数为,阳极170V,串联20K电阻,典型电流为2.5mA 显然直接用220V市电来获取170V高压是比较危险的 出于安全考虑,使用BOOST电路进行升压,从12V直接升压到170V 在第一版样机中,使用经典的MC34063进行升压 但是MC34063是单端驱动,MOS管的关断依靠电阻 关断速度慢不说,米勒效应还大到起飞 直观点来说,就是MOS管和功率电感 非!常!适!合!烧!开!水! ![]() ![]() 可以看到,MOS管关断速度非常慢,而且因为米勒效应存在一个很大平台 已经选择了栅漏电容尽可能小的管子了,再换更小的管子很难了 后来看上了MAX1771 内置图腾柱驱动,而且是PFM控制,在轻重载条件下都能获得很高的转换效率 经过长时间测试,这一版升压电路仅略微温热 示波器图忘记拍了,很完美的方波,没有过冲没有振铃,上升和下降边沿很陡峭 ![]() 很常规的BOOST电路 二极管本来想用肖特基的,但是这么高耐压的肖特基很少,而且很贵 所以最后还是选择了超快恢复管 ![]() ![]() 辉光管驱动芯片选择了HV57708 这个也算是辉光管常用驱动电路了 这里值得一提的是,HV57708的输出端只有80V耐压,所以,这里有个很有意思的技巧。 在电路上,每个辉光管的阳极直接通过20K电阻接到170V高压上 而每个阴极接到HV57708的输出端口上 而HV57708的高压电源端,实际上输入75V,由170V高压通过ZMM75稳压二极管获得 这样,在HV57708输出低电平时,辉光管点亮。 而输出高电平时,辉光管阴极为75V,不能保持辉光放电,从而不显示数字 ![]() 需要注意的是,HV57708为5V电平,而ESP32为3.3V,且不像STM32的IO是5V容忍的,所以必须加电平转换 在这里用了一个SN74LVC125来作为电平转换 主控芯片直接使用了乐鑫官方的ESP32-WROOM-32UC模组 因为PCB板载天线增益较低,方向性也比较明显,而且天线区域需要净空,对器件布局来说会增加一些麻烦 所以特意选择了这个需要外接天线的模组 淘宝上一个小巧的2.4G天线也就两三块钱,但是增益比板载天线要好得多了 ![]() 在制作外壳的时候,主板用铜柱垫高一些,天线的安装位置前后刚好净空 时钟芯片选择了DS3231,配合一枚CR1220纽扣电池 DS3231使用I2C通讯,内部集成晶振,需要的外围器件很少 而且能达到5ppm的精度,非常合适 ----------已知bug---------- 一开始设计的时候,HV57708的数据线和锁存线分别用了36和39这俩IO 然后调试的时候死活没反应 然后才发现ESP32的IO34~39只能作为输入,不能作为输出!所以就只能飞两根线了,将他们分别接到26和33两个IO上 ![]() 在串口烧写程序时,除了IO0要保持为低,IO2也要保持为低 但是在设计时候IO2作为I2C的SDA使用了,被上拉电阻拉高了 后来排查了好久好久才发现这个问题,所以如果要用串口烧写程序,就必须手动将IO2与GND短接一下 不过好在,我开发了OTA升级,直接通过wifi就可以升级程序 然后忘记引出复位引脚也是一个极蠢的错误 (fishgan本来就很蠢)(doudou不仅蠢还皮) 之前一版使用的STM32主控芯片,配合的是XC6206线性稳压器 换ESP32以后,脑袋短路了一下,还是用了XC6206,然后就翻车了。。。 一开始调试时候好好的,后来开发完成,撤除串口调试器以后,莫名就不行了 查了老半天才发现是因为ESP32在wifi通讯时,瞬时电流过大,超过了XC6206最大输出电流 所以,电压就会掉下来,然后ESP32就一直触发Brownout错误,然后复位 而接着调试器的时候,调试器输出3.3V就足够供给了 最后只能飞线出来换上一个AMS1117解决 ![]() 此外要注意一下,很多市面上的USB转串口,都是5V电平的 直接接到ESP32串口上会导致esp32工作不正常 用一个电平转换电路,或者在RX和TX线上串联一个470欧姆电阻就行啦 当然。。我的解决方案是,直接用stm32f103c8t6的开发板自己做了个usb转串口 stm32的原生usb接口与电脑通讯,然后串口电平是3.3V,刚好适合 最后就是一个无伤大雅的bug 调试的端口焊盘标注,TX和RX标反了 (hahahahaha) -------软件功能------- 显示时间是最基本的啦~ 然后每过一分钟会将所有数字跳闪一遍,这样可以有效抑制阴极中毒,延长辉光管寿命 每天会自动连接互联网校时 如果纽扣电池没电,或者长时间没有联网校时,程序会判断为当前时间不可靠 这时候时间数值会闪烁显示,提示用户 联网校时的时长我设定为7天 在nixieHardware.h中可以通过修改MAX_OFFLINE_DAY的数值来调整 直接上电的话,会尝试连接已保存的WiFi热点,同时辉光管显示全1在连接成功或者10秒未成功连接之后,进入正常运行,显示时间 而按住P1按键上电(其实就是P1焊盘和GND短接),会启动AP模式和本地网页服务器此时辉光管显示全0 AP模式默认的wifi热点名称是nixieClock,密码是12345678 在network.h中,可以修改DEFAULT_AP_SSID和DEFAULT_AP_PASSWORD来调整 在连接ap热点后,应该会自动跳转到配置主页 当然,也可以用http://NixieClock.local或者IP地址来访问配置页面 在配置页面里,可以设置家里的路由器,也可以直接上传新的程序 配置页面里的功能大家就自己探索吧~ ![]() ![]() ![]() ![]() 再说一下,预留了数字间冒号的位置,程序里也已经支持了 但是我本人不太喜欢有冒号(这个就看个人口味了,有人就很喜欢) 要的话直接焊上IN3辉光管就行了~ -----福利时间------- 附件里提供了完整的项目文件 包括硬件原理图,PCB文件(已经修正所有已知bug啦) 还有软件源代码以及编译好的镜像 不过完整打包的项目超出了论坛附件大小限制,所以上传到百度云啦 附件是传送门 代码是在PlatformIO平台下开发的,直接就能编译使用了~ 初次使用需要在串口下烧写,后续就可以OTA烧写 编译出来的firmware.bin文件,直接可以使用配置页面上传 如果要在ArduinoIDE下开发的话,这里给出一个迁移方案(未进行实际测试,欢迎大家测试反馈) 首先需要部署好在ArduinoIDE下的ESP32开发工具链(废话) 新建一个Arduino项目,将src文件夹里的main.cpp的内容完全复制进ino文件内 将src文件夹下的其余文件,直接复制到ino文件同一目录下 重启arduinoIDE之后,应该能直接看到别的文件 在库管理器里加载RTC,NTPClient,AutoConnect这三个库 然后尝试编译一下吧~(记得设置好ESP32本身的配置信息哦) 如果编译成功的话,项目–>导出已编译的二进制文件,可以获取bin文件 然后通过配置页面上传就行了 如果在ArduinoIDE下编译有问题欢迎反馈~我会尽力帮忙 -----------py交易时间-------- 因为做这个项目花了不少钱,所以打样时候多的板就出了回点血TAT 出完为止 7块空板-----70元一块(实际上我打样10块750元.....就算70了吧) 所有器件(XC6206已换成AMS1117,除了辉光管)------ 60元一套 如果需要我代焊好的话emmmm 就算20元手工费吧。。。去恰一杯DQ(冬天才适合吃冰淇淋!)【所以没有老婆的零花钱了】 此外可以单独加配木质外壳(激光切割,未组装) 也20元吧。。。毕竟zz同志被我白嫖画的外壳,请他恰顿饭去【所以也没有老婆的饭了】 -----参考信息------ HV57708参考手册http://ww1.microchip.com/downloa ... Sheet-20005861A.pdf ESP32参考手册https://www.espressif.com/sites/ ... uc_datasheet_cn.pdf SN74LVC125参考手册https://atta.szlcsc.com/upload/p ... 4/1457707114011.pdf MAX1771参考手册https://atta.szlcsc.com/upload/p ... FB84B5C72F3E59A.pdf DS3231手册https://atta.szlcsc.com/upload/p ... 5/1457707245139.pdf AutoConnect项目地址https://hieromon.github.io/AutoConnect/index.html ArduinoIDE下ESP32开发环境部署https://github.com/espressif/ard ... e/boards_manager.md -------最后碎碎念------- 项目开发fishGan 外壳设计zz 特别感谢老婆大人doudou帮忙排版和加彩蛋~❤ (哼我也会加彩蛋) 本项目未经许可不得商用! 不得单独转载项目文件包!必须连同本文转载! 转载请注明原作者和出处~ |
51 KB, 下载次数: 6871
DFryl-cTvM8 发表于 2020-3-16 16:24 首先检查一下IO2的电平,烧写模式的时候,IO2也必须拉低的。 有一些板子,是带SD卡的,而且用SPI_MMC控制器的话,IO2就会有个上拉电阻 此外,IO0拉低以后,板卡需要复位一次执行烧写引导程序。 我不知道你用的USB-UART转换器是独立的还是集成的。 如果是独立的,大概率是因为你没接DTR引脚,经典设计是使用DTR信号来复位板卡 此外你也要检查你的串口信号线电平,如果5V直接接ESP32是不行的。 建议用3.3V的USB-UART模块,或者加电平转换器。实在没条件的话,两根信号线上分别串联一个470欧姆电阻 |
ARRGANT 发表于 2020-7-2 14:18 你这里有两个问题源。 首先提示connect failed是因为没能成功连接WiFi,这个报错并不影响正常走时和刷新辉光管显示。但是具体是哪一环节出错我需要你更多信息才能判断。 其次,无限打1是在程序的第57行(loop函数的第二行)Serial.println(pinIntStatus);这一句。pinIntStatus这个引脚要连接到DS3231的SWQ引脚的。在初始化阶段,这个引脚被配置成了秒脉冲输出。无限1就说明ESP32没有读到这个信号。排查一下硬件连接问题(线好不好,连接的IO和宏定义是不是对的起来) |
我尝试了这个方案但是在串口烧写的时候出了问题,“Chip sync error: Failed to connect to ESP32”, IO0和地已经短接了。是有什么其他步骤没做吗? |
FishGan 发表于 2020-8-22 20:13 您可以加下QQ吗 能分享下当时购买的链接吗? 好多都不好找了。。。。我的QQ 978572839 麻烦您。。。 |
FishGan 发表于 2020-8-25 10:20 这样啊 那您能不能分享下您当时的订单 ?好多器件不知道该咋买 。。。不是很懂硬件。。。。 ![]() |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed