我的第一个创意作品
作者: 刘致远
作为一名对理工科充满热情的青少年,从初中开始,我就特别想制作一个可显示天气、时间的桌面终端设备,但最终成品未能达到我的期望。上高中后,我自学电路板设计,结合之前学习的3D建模,C++、HTML等知识和经验,重新制作这个作品。
我定下了设计目标:1.能显示日期、天气和文字(座右铭),其中,未来的天气用图表显示;2.可充电,以便长时间使用;3.能使用无线访问接入点(AP)配置Wi-Fi、网络接口(API)申请信息、文字等。
目标确定后,我开始选择电子元件。之前,我偶然了解到一种显示屏——墨水屏,它比OLED显示屏更加省电,且不会发光,人们晚上使用时不会觉得刺眼,于是我选用墨水屏作为显示屏。微控制器我选择了自己比较熟悉的ESP32。电路板的渲染图如图1,上面的电阻电容尽量选用0603封装尺寸,这样更容易焊接。
接下来便是设计程序。天气数据源自“和风天气”数据库。ESP32的实时时钟(RTC)使用网络时间协议(NTP)进行同步。ESP32的唤醒和日期显示均依赖于ESP32内部的实时时钟。刚开始设计时,我使用的是Arduino开发框架,后来发现Arduino无法修改时钟源,造成RTC时间漂移,最终我将Arduino的代码移植到了ESP-IDF上继续开发。
由于ESP32在非睡眠状态时的电能消耗较大,而墨水屏每小时刷新一次,这意味着,ESP32在这一个小时内并不需要运行,为了节约电能,本次程序设计用到了ESP32的深睡眠功能。在这个作品中,被唤醒的可能性有两种,一种是用户自己按下配置按钮进入AP配置模式,另一种是定时整点唤醒。通过计算和实验验证,在装有一颗1200 mAh的电池的条件下,墨水屏天气站能够续航28天。
AP配置方式简单来说就是让ESP32发送一个热点,ESP32充当服务器,用户通过手机等电子产品访问服务器提交Wi-Fi、天气、文字等相关数据。如图2、图3,分别为墨水屏天气站的天气信息配置页面和文字配置页面。
用户界面设计如图4,其中未来5小时天气和未来5天的天气都是用图表展示。
最后便是作品外壳的设计。外壳可提升作品的美观度,保护内部器件。外壳使用3D打印机打印,材质为ABS塑料,正反两面使用3 mm厚的亚克力板,将亚克力板与外壳用8颗M2×5 mm的螺丝连接,电路板与ABS外壳使用M2螺丝连接,使用双面胶将电池固定在电路板上。作品渲染图如图5,实物图如图6。
本作品历时6个月完成。在这一过程中,我不仅解决了一系列技术难题,还获得了宝贵的实践经验。我深刻认识到:实践是检验真理的唯一标准。(指导老师:卢韶仪 彭丽欧 刘燕君)
彩蛋:该作品已在Github、Oshwhub等平台开源,遵循GPL3.0开源协议,欢迎感兴趣的小伙伴复刻或优化。
Github开源地址:https://github.com/kitten-yyds/Weather_Terminal/tree/main
Oshwhub开源地址:https://oshwhub.com/kitten_yyds/mo-shui-ping-0402