描述
<h3>1、项目功能介绍</h3>
<hr>
<p>使用<code>SHT40温湿度传感器</code>和<code>BMP280气压传感器</code>测量实时温湿度及气压值</p>
<p>待完成:</p>
<ul>
<li>[ ] 低功耗</li>
<li>[ ] 记录24小时温湿度和气压历史记录,并提供展示和导出功能</li>
<li>[ ] 实时时钟</li>
</ul>
<h3>2、项目属性</h3>
<hr>
<p>个人项目</p>
<h3>3、开源协议</h3>
<hr>
<p>GPL 3.0
使用了<code>Dr.Zhang</code>的 <a href="//oshwhub.com/dr.zhang/Nokia1110-ESP32" target="_blank"><code>【复刻Nokia】使用ESP32复刻Nokia1110</code></a> 项目中的1.69寸屏幕封装</p>
<h3>4、硬件部分</h3>
<hr>
<h4>主控</h4>
<h5>ESP32-C3-MINI-1</h5>
<p>此模组焊点在模组下方,焊接有难度。</p>
<p>支持<code>低功耗蓝牙(BLE)5.0</code>和<code>2.4GHz WiFi</code>,可进行无线数据传输。</p>
<p>支持<code>USB</code>,GPIO18、GPIO19可直接接USB的D-和D+进行数据传输和下载调试,无需额外的USB转串口芯片。</p>
<p>支持<code>硬件SPI</code>和<code>硬件I2C</code>,比软件模拟速度更快,占用资源更少,在屏幕上差距明显,所以屏幕非常不建议使用软件模拟SPI。ESP32C3的硬件SPI需使用指定的IO口,而硬件I2C则可以使用任意IO。由于I2C的两根总线需要上拉电阻,而ESP32C3的启动电路要求GPIO2、GPIO8、GPIO9连接上拉电阻,GPIO2可用作ADC,所以推荐使用GPIO8、GPIO9作为I2C的SCL和SDA。</p>
<table>
<tr>
<th>SPI、I2C功能引脚</th>
<th>引脚</th>
<th>功能</th>
<th>说明</th>
</tr>
<tr>
<td>GPIO4</td>
<td>SPI SCL</td>
<td>必须,连接屏幕的SCL</td>
</tr>
<tr>
<td>GPIO5</td>
<td>SPI MISO</td>
<td>必须,连接无读取功能的SPI设备(如屏幕)时,需悬空</td>
</tr>
<tr>
<td>GPIO6</td>
<td>SPI MOSI</td>
<td>必须,连接屏幕的SDA</td>
</tr>
<tr>
<td>GPIO8</td>
<td>I2C SCL/I2C SDA</td>
<td>推荐</td>
</tr>
<tr>
<td>GPIO9</td>
<td>I2C SCL/I2C SDA</td>
<td>推荐</td>
</tr>
</table>
<table>
<tr>
<th>ESP32C3启动引脚</th>
<th>启动模式</th>
<th>GPIO2</th>
<th>GPIO8</th>
<th>GPIO9</th>
</tr>
<tr>
<td>SPI Flash(正常启动)</td>
<td>高</td>
<td>任意</td>
<td>悬空或拉高</td>
</tr>
<tr>
<td>Download(下载模式)</td>
<td>高</td>
<td>高</td>
<td>低</td>
</tr>
</table>
<h4>外设</h4>
<h5>SHT40 温湿度传感器</h5>
<p>使用I2C通信</p>
<p>为了尽量减少器件发热对温湿度检测的影响:</p>
<ol>
<li>传感器尽量远离发热器件(电源芯片、单片机、屏幕)</li>
<li>传感器周围不要铺地(铜箔导热更快)</li>
<li>单片机、屏幕尽量低功耗工作,减少散发的热量</li>
</ol>
<h5>BMP280 气压传感器</h5>
<p>支持SPI和I2C通信,因传感器对速度要求不高,所以这里使用I2C通信,节约引脚(SPI需增加CS片选引脚)</p>
<p>SDO接地,表示地址最后一位为0</p>
<p>CSB接VCC,表示使用I2C协议</p>
<h5>1.69寸TFT屏幕</h5>
<table>
<tr>
<th>屏幕的大部分功耗都在背光LED上</th>
<th>引脚</th>
<th>说明</th>
</tr>
<tr>
<td>VCC</td>
<td>3.3V电源</td>
</tr>
<tr>
<td>GND</td>
<td>电源地</td>
</tr>
<tr>
<td>LEDA</td>
<td>背光LED二极管正极,接VCC</td>
</tr>
<tr>
<td>LEDK</td>
<td>背光LED二极管负极。如不需控制屏幕背光亮度,可通过限流电阻接地;也可通过三极管控制背光亮度</td>
</tr>
<tr>
<td>SCL</td>
<td>SPI时钟</td>
</tr>
<tr>
<td>SDA</td>
<td>SPI数据,接SPI MOSI引脚</td>
</tr>
<tr>
<td>D/C</td>
<td>传输内容类型(数据/命令)</td>
</tr>
<tr>
<td>CS</td>
<td>片选引脚,低电平有效,如无其他SPI设备,可接地</td>
</tr>
<tr>
<td>RES</td>
<td>复位引脚,低电平时复位,如无需硬件复位功能,可接单片机的EN引脚(ST7789有软件复位命令)</td>
</tr>
</table>
<h4>电源</h4>
<h5>LGS5500EP 锂电池充放电管理芯片</h5>
<p>锂电池充放电管理芯片,可直接输出5V,自动切换供电电源(USB、锂电池),常用于充电宝。
缺点:输入5V后单片机不能直接使用,需降压至3.3V供单片机使用,浪费电能。建议替换为输出3.3V的锂电池充放电管理芯片。</p>
<h5>XC6210B332MR LDO降压芯片</h5>
<p>5V转3.3V LDO降压芯片,AMS1117-3.3的替代,更小的封装,节约空间,更低的静态电流。CE引脚可控制降压芯片是否工作,高电平工作,单片机可通过此引脚关闭自己的电源。</p>
<h3>5、软件部分</h3>
<hr>
<p>使用 VS Code + PlatformIO + Arduino Framework 开发,具体PlatformIO使用方法可在B站搜索教程</p>
<p>工程文件见附件</p>
<p>工程结构</p>
<ul>
<li>main.cpp 入口程序,调用App.h</li>
<li>App.cpp 主App类,管理屏幕、电池、按键等外设</li>
<li>Constants.cpp 常量定义</li>
<li>Battery.cpp 电池管理类</li>
<li>Button.cpp 按键管理类</li>
<li>i2c/I2CDevice.cpp I2C设备基类</li>
<li>i2c/Sht40.cpp SHT40温湿度传感器管理类</li>
<li>i2c/Bmp280.cpp BMP280气压传感器管理类</li>
<li>ui/Screen.cpp SPI屏幕管理类,使用了GFX Library for Arduino库</li>
<li>ui/weather.c 背景图片,使用<a href="https://lvgl.io/tools/imageconverter" target="_blank">LVGL Image Converter</a>生成</li>
<li>ui/Segment.h 曾打算写模拟数码管的显示程序,已废弃</li>
</ul>
<p>自制背景图片(240x280)</p>
<p><img src="//image.lceda.cn/oshwhub/bace048479264b588f3cfe5e26ccb512.png" alt="weather.png"></p>
<h3>6、BOM清单</h3>
<hr>
<p>BOM中的1.69寸屏幕使用中景园1.69寸TFT屏幕12Pin焊接</p>
<h3>7、大赛LOGO验证</h3>
<hr>
<p><img src="//image.lceda.cn/oshwhub/eccadc4cb8ff413baaf1d07471bca72b.jpg" alt="IMG_20240806_045441.jpg"></p>
<p><img src="//image.lceda.cn/oshwhub/2d427a832ef64fa6bdc10605a30b05bf.jpg" alt="IMG_20240806_045422.jpg"></p>
<h3>8、演示您的项目并录制成视频上传</h3>
<hr>
<p>点击按钮关闭/打开屏幕。
充电时左上角绿色圆点闪烁表示充电中,充满后绿色圆点常亮。</p>
评论(0)