标签存档: ESPHome

Arduino + ESP32 高分开源项目推荐

作为一个 ESP32 重度用户,并且一直使用 Arduino 框架开发嵌入式应用的爱好者,在过去开发的项目过程中使用过不少开源项目,这里稍微总结一下比较有意思的,以及比较有用的开源项目列表。

其中一些项目不光是固件方面的程序,也包含了对应的硬件设计,可以当作一个电子 DIY 入门的学习项目。

开源项目集合

awesome-esp

项目地址:https://github.com/agucova/awesome-esp

一个国外爱好者收集的 ESP32/ESP8266 开源项目集合,主要偏完整的固件应用。

固件应用

这里是一些完整的固件开源项目,通常也会包含一个完整的硬件项目,不管是用来学习硬件开发,还是学习嵌入式软件开发,都是很好的例子。

ESPHome

ESPHome Logo

项目地址:https://github.com/esphome/esphome

算是最流行的开源智能家居固件之一了,通过编写 YAML 配置文件的方式来快速集成各种传感器、开关、屏幕等设备到一个固件中,并且内置了 Home Assistant 等智能家居平台的支持,可以一键添加到这些平台中。

要使用 ESPHome,基于上只需要了解大概的 GPIO 知识,I2C 以及 SPI 总线的概念就可以上手了,传感器或者其他外设的驱动都已经包含在固件中,并且官方文档也包含了详细的配置教程。

之前就使用 ESPHome 快速搭建了两个应用:

tasmota

项目地址:…

阅读全文 »

一个软件工程师的 2022 电子 DIY 小结

在 2022 年中的时候,已经很久没有玩过 DIY 的我,在看到稚晖君以及其他一些 UP 主的视频之后,又对电子 DIY 捡起了兴趣。在这同时,又了解到了嘉立创的免费打样活动,因此也想在之前使用万用板和飞线的基础上,更进一步,能真正向产品化迈进一点,好好地做个东西出来。

在经过了几个月的学习、尝试,也在嘉立创打了快 30 块板子之后,目前也完成了几个小玩具的开发、组装、使用,也算是完成了一些里程碑。

学习路径

为了使 DIY 产品更像一个产品,就需要使用 PCB 了,因此需要系统地了解和学习硬件产品整体的开发流程。幸运的是,现在 B 站科技区很多 UP 主,在发布视频的时候,都给出了完整的实现方式,这就让我的整个学习过程有了比较详细的参考资料。

整体学习过程中,遵循了看视频》原理图学习》EDA 学习和操作》PCB 布线》项目复刻》自主从头实现这个路径。当然因为是业余 DIY,实践的时候都以满足基本需求为主,没有特别地去优化线路、优化功耗。

总的来说,在入门电子 DIY 的时候,还是遵循了实践大于理论的原则,很多时候并没有特别去深入原理性的东西,像模电的一些内容,并没有花太大精力去深入学习,更多还是直接使用了现成的模块。

EDA

在很久以前玩 Arduino 的时候,也去尝试过一些 EDA 软件,那个时候对整个电路,都比较费解,也不太能从头去画一个原理图,并且由于没有系统地去学习过原理图绘制,因此对于什么元件使用什么符号,各个元件所起的作用之类,都不太了解。

但是在接触到了立创开源硬件平台之后,就像是在 GitHub 上去阅读开源项目代码一样,可以成体系地去学习一下开源硬件项目了,自带的编辑器立创 EDA 可以直接打开项目。并且由于立创 EDA 相对其他 EDA 工具而言,功能还不太复杂,对于我这样的初学者来说,可以比较快的掌握并去画一些基础的原理图。

在使用立创 EDA 过程最大的感受就是,可以完全不需要了解各个元件的封装之类的参数,只需要在立创商城找到的元件,就可以直接放在画布中使用,各个参数、符号、3D 模型都是现成的,这也导致我现在使用立创 EDA 的时候还保留有一个习惯,元件选型的时候,只有有模型可以直接放置在画布的元件才会去选用,这样可以完全不用操心元件封装,还可以直接在 …

阅读全文 »

超简单 DIY – AirCube 空气检测站

源由

一直以来对家里的环境状态比较在意,在很多年以前,就使用万用板 + ESP8266 + 传感器组装了很多台空气检测节点放在家里,用于监控 PM 2.5 浓度、二氧化碳浓度、温度、湿度等环境状态。

配合 ESPEasy 固件 + Domoticz,可以很方便的采集环境状态的数值,从而配置 Domoticz 的脚本来完成一些自动化动作,例如打开新风、打开空气净化器等。

进一步,也可以通过 Domoticz 将采集到的数据保存到 InfluxDB 中,使用 Grafana 图形化的展示这些环境状态的变化趋势。

在知道嘉立创的 PCB 免费打样活动之后,就产生了将这些空气检测节点进行升级的想法。

目标

这次升级,主要是为了改进以前使用洞泂板,ESP8266 等老旧部件碰到的一些问题,主要有以下几点:

  • 更美观,原先使用万用板 + 亚克力面板太多飞线,不是很好看,整体空间利用也不充分,并且现在也有 3D 打印机,可以做一个更好看的外壳。
  • 更标准,原先每个节点的传感器选型都不太一致,从而导致每块万用板的飞线都不一致,组装存在出错可能,这次通过使用统一的 PCB,将所有传感器模块位置固定,每个节点的传感器都保持一致。
  • 更强大,原先使用的 ESP8266 模组,GPIO 数量较少,在传感器数量多的情况下,GPIO 就不够用了,这次更换为更先进的 ESP32,拥有更多 GPIO,性能也更为强大。并且因为 GPIO 数量更多,还可以额外增加一个屏幕,这样即使不借助 Domoticz 的情况下,也可以独立使用,查看当前环境数据。
  • 更灵活,原先使用的 ESPEasy 固件,所有的传感器是通过在它的网页配置界面来完成的,并且它的配置保存格式为自定义的二进制格式,很难阅读以及提前配置,这次更换为更灵活的


阅读全文 »

记一次硬件 Debug:ESP32 连接 Wi-Fi 报 Auth Expired 错误

起因

前段时间准备把家里的空气质量检测节点更新一下,从原来的万用板升级为 PCB,并且将主控 MCU 从 ESP8266 升级为 ESP32,这样可以单个节点支持更多传感器,同时把固件从 ESPEasy 换成 ESPHome。

经过

在完成 PCB 打样测试后,就上淘宝采购了一批 ESP32 开发板,其中一批是 USB Type-C 接口的 NodeMCU-32S,最开始测试的时候只买了一块,使用下来并没有什么问题,但是在一次接错 VCC 和 GND 导致温度模式损坏之后,再次使用这块 ESP32 开发板时,发现它无法连接到之前已经配置好的 Wi-Fi 上。

这时还以为是由于之前温度模块损坏关联导致的,因此重新购买了几块同样型号的 ESP32 开发板,但是在完成固件烧录,完成固件配置之后,第二次运行时,同样发现了无法连接 Wi-Fi 的错误,日志中显示连接失败的原因为 Auth Expired:

[23:50:02][I][wifi:248]: WiFi Connecting to 'HOUSE_IOT'...
[23:50:03][W][wifi_esp32:495]: Event: Disconnected ssid='HOUSE_IOT' bssid=xx:xx:xx:xx:xx:xx reason='Auth Expired'
[23:50:03][W][wifi:536]: Error 


阅读全文 »

使用 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



阅读全文 »