构建一个电子纸温度计
扫描二维码
随时随地手机看文章
我喜欢将电子产品与设计相结合,这个项目是我最喜欢的项目之一。它看起来像一个经典的温度计,但由一个ESP32微控制器和一个三色电子纸显示器供电。这个箱子是用木丝3d打印的,给它一个真正的复古外观。虽然它有一种老派的魅力,但它内置的实时仪表板可以让你通过一个干净、现代的界面跟踪温度、湿度和压力。让我给你展示一下我是怎么做的!
如果你关注我的Hackster项目,你就会知道我有多喜欢老式设备。当我发现这些三色电子纸显示器时,我立即想到重现经典温度计的优雅简约。电子纸技术是完美的选择。
电子纸显示器提供出色的对比度,使其易于阅读,并且仅在更新时才耗电。所以,这就是结果——一个模拟外观的温度计,使用了制造商可以获得的最新电子元件。我喜欢简单,正如列奥纳多·达·芬奇曾经说过的,“简单是终极的成熟。”这就是为什么我设计这个温度计只显示当前温度的原因。
我认为这种简单使它看起来很漂亮。温度读数每五分钟更新一次,但如果我们需要更频繁和详细的信息,网络仪表板提供温度、湿度和气压的实时监测。
无论你是在办公桌前还是在另一个房间,你都可以通过手机或电脑查看实时读数。数据存储在本地,所以没有离开你的网络,确保充分的隐私。通过48小时的日志记录,您还可以回顾并查看温度、湿度和压力随时间的变化情况,从而轻松发现环境中的趋势。
有了它,我们就拥有了两全其美的东西——一个拥有丰富信息的优雅小工具。
供应
总组件成本低于40美元,使其成为一个负担得起的DIY项目。让我们复习一下需要的部分。
步骤1:墨版三色电子纸显示
那么,让我们来谈谈是什么让墨盘2如此有趣。它采用2.13英寸的三色电子纸显示屏,我认为这对于小型项目来说是完美的。
屏幕可以显示红、黑、白三种颜色,分辨率为212x104像素。虽然与现代高清屏幕相比,它的分辨率确实很低,但对于电子纸显示器来说,它仍然很好。11dpi的屏幕足够清晰,可以显示简单的图形和文本。
不过,更棒的是,电子纸只在屏幕更新时才耗电。这意味着一旦图像出现在显示器上,它就会保持在那里而不消耗任何电力,这使得它非常适合电池供电的项目。刷新率约为15秒,这是这类电子纸技术的标准。这意味着它不适合任何需要快速更新的东西,比如动画或实时显示。但是,它可以很好地用于静态内容,例如显示温度、待办事项列表或其他不经常更改的信息。
该板使用ESP32微控制器,这是一个功能强大的芯片,具有两个32位内核,运行频率为160 MHz。它有320kb的RAM, 8MB的PSRAM和4mb的闪存,足以处理高级任务。它还内置了Wi-Fi和蓝牙,可以很容易地连接到其他设备或互联网。此外,该板有一个外部天线,提高了信号强度和范围,以获得更好的无线性能。
这种板在节约能源方面也很出色。在低功耗模式下,它仅使用8µA,这意味着它可以在锂离子电池上运行数月。它还有一个内置的电池充电器,所以你可以直接连接电池,并使用USB-C端口轻松充电。凭借其电源,无线功能和能效的结合,该板非常适合便携式或长期项目,如传感器,时钟或任何不需要经常更新显示器的项目。
步骤2:BME280传感器
BME280是一款来自博世的新型传感器。到目前为止,我使用的是可以测量温度和气压的BMP180传感器。BME280传感器可以测量温度、湿度和气压!这太酷了!我们只需要一个传感器就能建立一个完整的气象站!
除此之外,传感器的尺寸非常小,非常容易使用。我们今天要使用的模块使用I2C接口,因此它使与Arduino的通信非常容易。我们只需要连接电源和另外两根电线就可以使它工作。
已经为这个传感器开发了许多库,所以我们可以很容易地在我们的项目中使用它!
注意:我们需要BME280传感器。还有一个不提供湿度测量的BMP280传感器。注意订购你需要的传感器。
步骤3:MicroUSB分插板
Micro USB分插板是一种小型电路板,提供了一种简单的方法将Micro USB端口集成到DIY电子项目中。它将电源(VCC, GND)和数据(D+, D-)引脚从Micro USB连接器分离到可访问的焊盘或头引脚,从而轻松连接到微控制器,传感器或其他组件。一些分线板还包括IO引脚,可用于设备识别或其他配置。这些电路板通常用于为设备供电,为电池充电,或与ESP32或Arduino等微控制器进行USB通信。通过消除对微型USB连接器复杂焊接的需要,它们为嵌入式系统中的电源和数据连接提供了方便可靠的接口。
步骤4:连接部件
这个构建最好的地方之一是布线非常简单—您只需要四个连接!BME280传感器测量温度,湿度和气压,它使用I2C接口,因此非常容易使用。
我焊接了4根电线到电路板上,并将传感器连接到它们。我们必须将电源和另外两根电线连接到电路板的SCL和SDA引脚。现在让我们看看我们需要的软件。
步骤5:项目代码
这个项目的软件是用面向对象的编程方法组织的。每个功能都有自己的类,使代码库更加模块化和可维护。
我还为代码准备了一个完整的文档文件。你可以在这里下载。
该文件包含了您需要了解的有关代码的所有内容。
为了使项目编译,我们需要3个库,Inkplate库用于显示,Adafruit_BME280库用于传感器和ArduinoJson库。你可以直接从Arduino IDE下载所有的库。
因此,我们有了Sensor类,它处理与BME280传感器的通信,检索温度、湿度和压力读数。然后我们有SensorData类,它管理数据存储和历史记录,允许系统跟踪过去48小时内的环境读数。最后,我们有Display类,它负责在电子纸显示器上呈现信息。这种模块化的方法可以很容易地调整项目—如果想使用不同的显示,只需要创建一个新的display类。类似地,如果您想使用不同的传感器,您只需要修改sensor类。其余的代码保持不变,确保了无缝的功能。你可以在视频描述中找到代码的链接。它是完全开源的,您可以自由地使用其他功能对其进行扩展。我很想看看您使用此代码作为起点创建了什么!
我没有花很多时间优化这款设备的电源效率,因为它的设计是保持插电状态。不过,我确实在可能的情况下实现了一些节能措施。例如,电子纸显示只在必要时更新——如果温度读数发生变化,但差异不足以明显影响显示,则不会刷新。这意味着,即使设备每五分钟读取一次温度,显示屏也只在明显变化时更新,从而减少了不必要的功耗。
我不会深入讨论这段代码是如何工作的或它的确切功能。如果你有兴趣了解更多,我已经创建了一个详细的10页PDF解释每个文件的作用。您可以在此步骤中找到附加的文件。
在主项目文件中,我们需要设置两个值:我们的WiFi网络的SSID和密码。这允许董事会为仪表板建立一个web服务器。此外,如果您更喜欢英制单位而不是公制单位,请将metric变量设置为false。
就是这样!代码现在已经准备好上传到板上了。
步骤6:测试软件48小时
该设备现在在电子纸屏幕上显示温度,并建立了一个网络服务器。如果我们检查控制台,我们可以看到它的IP地址。通过在浏览器中输入这个IP地址,我们可以访问我们的仪表板。
太酷了!现在我们可以看到当前的温度、湿度和气压读数。
但是,由于没有可用的历史数据,这些图还不可见。图表需要48小时才能完全填充历史数据。因此,我让这台设备整个周末都在运行,由一个充电宝供电,并使用一个电表来测量它的能耗。
48小时后,我回到了办公室。充电宝仍然有电,仪表板现在显示周末收集的所有数据。代码运行无崩溃,证明了系统的可靠性。注意我不在的时候气温明显下降了。现在我们来看一下耗电量,在过去的48小时内,项目消耗了2400mAh的电量。
这意味着该设备每天需要大约1200毫安时的电量才能运行,因此使用电池供电是不切实际的。高功耗是由于web服务器持续运行并等待传入请求。如果我们不需要仪表盘,我相信我们可以通过优化功耗来修改项目,使其在电池供电的情况下运行几个月。
步骤7:3D打印外壳
为了提高设备的美观性和功能性,我决定把它装在一个定制的3d打印盒里。我用Fusion 360稍微修改了板厂提供的原始3D文件。我做了两个关键的调整。首先,我在背面增加了一个小切口,以暴露传感器,确保更准确的环境读数。其次,我为USB迷你分线板创建了一个开口,允许更方便的电源连接。内置的用于编程和供电的USB端口的位置不能让设备直立。
接下来,我从USB插线板焊接了两根电线到板的VIN和GND引脚。这种修改使我们可以方便地从这个连接器为电路板供电。所有部件组装好后,工程就完成了。我很喜欢最后的结果。完成的项目放在我桌上看起来棒极了。电子纸显示器提供了巨大的对比度,给温度计一个经典的,模拟的外观。
步骤8:最后的想法
我希望你喜欢这个项目;这是我一直以来的最爱之一。我一直想要一个这样设计的电子纸气象站。由于没有这样的商业产品存在,我决定自己做一个。我们很幸运地生活在这样一个时代,我们可以在短短几天内创造出任何我们想象的东西。多亏了互联网,我们可以获得无尽的知识,并有能力与志同道合的人联系。
本文编译自hackster.io