发作品签到
标准版

[小更新] ESP8266桌面气象站 支持显示遥遥领先开机动画

工程标签

3.0k
0
0
6

简介

ESP8266桌面气象站转接板,用于连接NodeMCU和2.8寸触摸屏,焊接简单,自带电池及充放电管理。新上传了一个可以模拟华为Mate60开机及解锁界面的小程序。

简介:ESP8266桌面气象站转接板,用于连接NodeMCU和2.8寸触摸屏,焊接简单,自带电池及充放电管理。新上传了一个可以模拟华为Mate60开机及解锁界面的小程序。

开源协议

GPL 3.0

创建时间:2023-01-11 10:42:43更新时间:2025-01-22 17:41:16

描述

程序及说明可以参见原文网址:项目,也可以依照本文中的说明制作。

焊好后的成品(USB接口及电池焊点建议打胶固定,避免脱落):

 

这是一个用于连接ESP8266 NodeMCU和ILI9341 2.8寸触摸屏的转接板,自带AMS1117 LDO和可选的锂电池及充放电管理,四格电量指示,以及一枚物理开关。3D模型见附件,提供OBJ、STEP和STL三种格式。

 

 

所需材料:

1.接插件

        1*14排母(用于连接屏幕)*1

        1*15排母(用于连接NodeMCU,其中靠近肖特基二极管D2的两个排母根据NodeMCU型号二选一焊接,兼容串口芯片为CP2102、CH9102X和CH340的NodeMCU)*2

 

2.直插元件

        SS12D10G5开关(PWR)*1

        MicroUSB插座(USB)*1

 

3.贴片元件

        0805封装贴片LED(25%、50%、75%、100%)*4

        1206封装贴片10kΩ电阻(R1、R2)*2

        1206封装贴片82kΩ电阻(R3)*1

        0630封装贴片2.2uH电感(L0630)*1

        0805封装贴片100nF电容(C1、C2、C3、C4)*4

        1210封装贴片22uF电容(C5、C6)*2

        1210封装贴片10uF电容(C7、C8)*2

        1206封装贴片4.7uF电容(C9)*1

        SMA封装贴片SS34肖特基二极管(D1、D2)*2

        SOT-223封装AMS1117稳压芯片(U1、U2)*2

        ESOP-8封装ETA9740充放电管理芯片(ETA9740)*1

 

4.电池

        锂聚合物电池(我使用582535型号,容量420mAh,带保护板,不过可以换成略大一点的电池。放电池的空间最多有 长40mm×宽25mm×厚7mm)*1

 

 

其余说明及程序参数借用原文:

1.安装Arduino中的ESP8266环境;

 

2.下载代码和库(附件中也有):

Arduino 代码:https://github.com/ThingPulse/esp8266-weather-station-color

库:
1、Mini Grafx by Daniel Eichhorn:https://github.com/ThingPulse/minigrafx

2、ESP8266 WeatherStation by Daniel Eichhorn:https://github.com/ThingPulse/esp8266-weather-station

3、Json Streaming Parser by Daniel Eichhorn:https://github.com/squix78/json-streaming-parser

4、ThingPulse XPT2046 Touch by ThingPulse:https://github.com/ThingPulse/XPT2046_Touchscreen#xpt2046-touchscreen-arduino-library

如果如果你已经安装了原始的 XPT2046_Touchscreen,需要先卸载。

 

3.获取 OpenWeatherMap API Key

天气数据来自 https://openweathermap.org/price 网站,所以必须获得 OpenWeatherMap API 密钥。

1、选择第一列免费那一栏,限制为每分钟 60cpm。

2、点击获取“Get API key”,然后填写凭据后创建一个新帐户。

3、记下 API 密钥,下一步代码时使用。

4、访问 https://api.openweathermap.org/data/2.5/weather?q={City}&appid={API key} (“{City}”用自己的城市名称(如“Beijing”)代替,“{API key}”用上一步获取的密钥替换),应该会获得和下图类似的结果(图片来源于官网说明文档 https://openweathermap.org/weather-data):

ehyxHTv03Q88N74zIzWiw94EWIMj2LiqmE1KopTN.png

5、记下第二行的“id”后的一串数字,这是下一步会用到的OPEN_WEATHER_MAP_LOCATION_ID城市代码。

 

4.修改程序参数:

1、打开文件夹并点击 “esp8266-weather-station-color.ino ”。

2、打开选项卡中的 settings.h,浏览文件并调整几个配置参数,在第一个红框中分别填上WiFi名称和密钥,在第二个红框中填上上一步获取的API密钥,在第三个红框的OPEN_WEATHER_MAP_LOCATION_ID处填上城市代码,在DISPLAYED_LOCATION_NAME处填上城市名称,最后一个红框不用管。

3.连接NodeMCU至电脑,选择正确的端口号并上传程序。

 

5.上传程序到ESP8266。

 

 

组装:

1.将液晶屏模块缓慢放入外壳中:

2.如果顺利的话,屏幕应该会嵌入上壳的槽中(翻过来检查时要在背后顶住屏幕模块,否则屏幕可能会陷下去):

3.确认屏幕与外壳齐平后在屏幕模块的四个角挤上一点热熔胶:

4.将NodeMCU装到焊接好的PCB上(注意方向,USB口朝下,这款是宽版的串口芯片为CH340的NodeMCU,故焊接靠外的排针):

5.将安装好NodeMCU的PCB轻轻放入外壳中(排针对齐):

6.在屏幕排母的焊点处稍用力按压至排针嵌入排母中(此时PCB上端会下陷,因为没有支撑):

7.打开开关检查,若屏幕点亮则说明电路连接正常。将NodeMCU轻轻向上提,确保PCB与桌面平行后用热熔胶在PCB四个角点胶固定:

8.等到热熔胶冷却后,盖上后盖(旧版的外壳有两个开槽,一个是开关,另一个是WiFi模组的位置,后来发现打开后盖后再拨动开关更方便,就取消了两个开槽(实测外壳对NodeMCU的WiFi信号影响不大)):

9.侧面的电量指示灯:

10.成品(旧版外壳尺寸有问题,上下壳之间有缝隙。附件中的压缩包为新版外壳,已修复该问题):

 

------------------------------程序已更新(2024-06-11)------------------------------

整理程序时翻出今年二月份写的一个用LCD库+JPEG解码模拟华为Mate60开机动画的程序,效果还不错。

文件名:ILI9341_KEYBOARD_ESP8266_HarmonyOS.zip,NTPClient (库,直接复制到libraries里即可)。

当时刚在学校给班级的希沃替换了开机动画,回到家看到桌上的小气象站突发奇想,就有了这个程序。

那个周末花了一整个上午完成了图片转数组的适配 (TJpg_Decoder这个库很挑格式,Image2LCD转的都不行,后来去库开发者推荐的网站才转换出来)。

代码里的几个关键函数名称都很长,应该都能看得懂。开机出现华为LOGO时按住屏幕直到显示“Waiting For WLAN...”后即可连接名为“ESP8266 Smart Terminal”的热点进行配网 (WiFiManager库,用于同步时间),配网成功后会显示“WiFi Connected!”,此时马上按住屏幕可以跳过开机动画,不按住则会显示完整开机动画。动画结束后会进入锁屏界面,如果同步了时间就是当前时间和日期,否则就是1970年1月1日上午8点。锁屏界面短按屏幕可进入解锁界面,锁屏界面及解锁界面带自动熄屏。默认密码是123456,可以查看串口打印的信息确认密码。密码错误无次数限制,若输入正确会进入黑底白字时间显示界面 (手机桌面实在是不会写,太复杂了),此界面没有自动熄屏,屏幕会常亮。显示的时间左边会有一个圆形,圆形是红色的即为未联网,绿色即为已联网。在时间显示界面短按屏幕进入密码更改界面,需要输入旧密码、输入新密码、确认新密码。若两次输入的新密码不一样则会回到输入新密码环节。具体操作见视频。

这玩意效果还不错,上传到开源平台图个乐。开机动画数组存在Pictures.h里,有需要直接include即可。

使用的库:TJpg_Decoder 1.1.0,LittleFS 0.1.0,TFT_eSPI 2.5.0,TFT_eWidget 0.0.5,ESP8266WiFi 1.0,DNSServer 1.1.1,ESP8266WebServer 1.0,WiFiManager 2.0.17,NTPClient 3.1.0。NTPClient库需要使用附件提供的版本,该版本加入了getFormattedDate()函数便于获取日期,使用常规版会报错“getFormattedDate() was not declared in this scope”。有一些诸如SD,SDFS,SPI,SdFat一类的系统库可能会因安装某些库时导入的其他支持库产生“Multiple libraries were found for xxx”的问题,若编译不通过可尝试移除系统标注“Used”的库,尝试其他库来解决。一般报错都是因为这个原因,源程序当时是可以编译通过的。

------------------------------附件已更新(2025-01-22)------------------------------

期末考考完后后来刷OSHW才发现竟然忘记放附件了,遂补上。高二的事情是真多,基本没什么时间把新做的项目发出来。放假后考虑再发几个项目?(最近做了个矩阵+灯环的时钟,还有一个很古老的矩阵项目,2812是真的好玩哈哈)

设计图

原理图
PCB

BOM

IDNameDesignatorFootprintQuantity
1单排直插排母 1*14P 2.54MM2.8_INCH_TFT_TOUCHSCREENHDR-TH_14P-P2.54-V-F-11
2LTST-C171KFKT25%,50%,75%,100%LED0805-RD_ORANGE4
3100nFC1,C2,C3,C4C08054
422uFC5,C6C12102
510uFC7,C8C12102

附件

序号文件名称下载次数
1
3D_Shell.zip
35
2
Code & Libraries.zip
77
3
ILI9341_KEYBOARD_ESP8266_HarmonyOS.zip
9
4
NTPClient.zip
5
5
petal_20250122_232040.mp4
9
6
petal_20250122_234109.mp4
2
克隆工程
添加到专辑
0
0
分享
侵权投诉

工程成员

评论

全部评论(1)
按时间排序|按热度排序
粉丝0|获赞0
相关工程
暂无相关工程

底部导航