使用 ESPHome + INA219 模块构建一个简易功率计

最近在使用 ESP32 做一些小东西,其中一个设备是使用电池供电,因此对使用电池时的续航比较关心,但是手头并没有合适的电子负载仪,在翻模块库存的时候,刚好发现有一个 INA219 模块,就直接拿它现做一个功率计了。

再配上一个 12864 OLED 屏幕,这样就可以实时去观测单片机设备的实时功率以及功耗了:

EasyPower Demo

ESPHome

ESPHome 是一个配置化生成 ESP32/ESP8266 智能家居固件的系统,一般都会用它来作为智能家居节点中的系统来使用,配合很便宜的 ESP32/ESP8266 模块,使用起来很是方便。

在查阅它所支持的模块时,发现 INA219 也在其中,并且 ESPHome 本身对 12864 OLED 也有良好的支持,因此最终就直接选择了 ESPHome 来作为功率计的基础系统,这样可以省去编写很多基础代码,例如任务设计、屏幕绘制、I2C 总线读写等,只需要关注功率计核心的功能即可。

最近也使用 ESPHome 比较好,发现它还是有很多优点的,基本可以作为一个 Arduino 项目的基础应用框架来使用:

  • 配置化生成代码,无需管理复杂的库依赖
  • 丰富的模组库支持,对于开发单片机应用来说,常见的输入输出模块都内置支持
  • 完整的运行框架,开发者只需要关注业务本身,其他相关内容都内置了,例如 MQTT、OTA 等功能
  • 灵活的 Lambda 支持,它的 Lambda 就是 C++ 的 Lambda,因此对于有能力的开发者来说,可以直接写代码

总的来说,对于一般 DIY 项目来说,ESPHome 足够强大、足够灵活来处理大部分需求了。

INA219

INA219 是德州仪器出品的一款功率监测芯片。

INA219 是一款具备I2C 或SMBUS 兼容接口的分流器和功率监测计。 该器件监测分流器电压降和总线电源电压,转换次数和滤波选项可通过编程设定。 可编程校准值与内部乘法器相结合,支持直接读取电流值(单位:安培)。 通过附加乘法寄存器可计算功率(单位:瓦)。

INA219 的特性:

  • 感测的总线电压范围:0V 至 26V
  • 报告电流、电压、和功率
  • 16 个可编程地址
  • 高精度:整个温度范围内的精度为 0.5%(最大值)(INA219B)

一般单片机开发,供电都是 5V 或者 3.3V,锂电池供电的范围也在 3V~4.2V,因此 INA219 的测量范围足够使用了,而且 0.5% 的精度在使用过程中也足够测量出预期范围内的数据。

数据监测

对于如何监测数据,我直接在 App Store 上找到一个 App MQTT Explorer,它可以将 MQTT Topic 消息中的数值直接显示为图表,这样就可以很方便的去观测整个设备在运行期间的功率、耗电量变化。

EasyPower Data Monitor

项目代码

这个功率计比较简单,可以直接使用 ESP8266 + INA219 模块 + 12864 OLED 在洞洞板上飞线连接起来,插上 USB 就直接可以开始使用了。

我已经整理好了项目的代码,放在了 GitHub 上。

具体的代码请前往 GitHub:ohdarling/EasyPower

--- EOF ---

发表评论?

0 条评论。

发表评论


注意 - 你可以用以下 HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>