标签存档: Arduino - 第2页

ESP32-S3 开发板配套物联网扩展板的设计与制作

在完成之前的 《ESP32-S3 最小开发板》 之后,想到很长一段时间,都是用 ESP32-S3 做物联网相关的应用。在这过程中,又会碰到一些会经常重复使用的模块,例如 LCD 屏幕、I2C 外设等,这个时候如果有一个现成的扩展板,就可以省去很多通过杜邦线连接模块的时间,提升应用开发效率。

在做完 ESP32-S3 最小开发板之后,我就根据自己的需求,并且参考了一些其他扩展板,开始设计一个主要用于物联网领域的扩展板。

设计目标

和 ESP32-S3 最小开发板一样,为了使初学者更容易使用,这次的扩展板也会基于容易焊接的前提去规划,主要使用 0805 元件和 2.54mm 排母插件,其中多数元件以模块的方式来引入,这样可以在淘宝购买对应的模块直插,避免在模块的电路设计上花费太多时间。

整个扩展板以输入模块、输出模块和总线模块三部分组成,对应到物联网开发中的大多数展示以及交互场景。

输入模块

  • 5 个用户按键
    • 接受用户输入,可以作为方向键,也可以模拟鼠标移动和按下操作
  • 多功能按键
    • 常见的手持设备,会提供一个多功能按键来实现向上、向下、按压三种操作
  • TF 读卡器
    • 用于数据文件的保存和读取

输出模块

  • LCD 屏幕
    • 显示界面和数据
  • WS2812 LED
    • 状态指示,灯光效果

总线模块

  • I2C 总线
    • 常见传感器模块都支持 I2C 通信,需要支持多个 I2C 模块同时连接
  • SPI 总线
    • 和屏幕或者 TF 读卡器模块进行通信


阅读全文 »

做一个 ESP32-S3 开发板

接触立创 EDA 和嘉立创 PCB 打样服务之后,一直想从头设计一块 PCB,刚好前段时间立创硬件开源平台搞活动,就又薅了一把羊毛,蹭了立创商城的器件券,和嘉立创的打样券,相当于费用全免,做了一块开发板。

因为一直在玩 IoT,因此 MCU 就选择了最熟悉的乐鑫 ESP32-S3,这款 MCU 内置了 Wi-Fi 和蓝牙,官方支持 Arduino 开发框架,GPIO 数量相对前代 ESP8266 也多了很多,而且支持了 PSRAM,在一些高内存应用场合也可以放心使用了。看在免费的情况下,直接选了顶配 N16R8 型号,16MB Flash + 8MB PSRAM 足够应对绝大部分场景。

需求

除开嘉立创搞活动这个原因,在设计这款开发板之前,我也在淘宝上买过 ESP32-S3 的开发板,但是在使用过程中总会碰到各种不满意的地方,因此借这个机会就一起解决了。

宽度要小

在平时做原型验证的时候,会经常要使用到面包板,像下面这种常见的款式。

esp32devkit-breadboard

但是淘宝上常见的 ESP32-S3 开发板的宽度都稍微宽了一些,在插到这个面包板上之后,左右两侧的 GPIO 只能有一侧可以露出接线孔,这样在使用杜邦线或者跳线连接的时候,就非常不方便。

双 USB Type-C 接口

ESP32 系列在 ESP32-S2 之后, 就已经增加了对 USB 设备驱动的支持,可以通过 …

阅读全文 »

一个软件工程师的 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 的时候还保留有一个习惯,元件选型的时候,只有有模型可以直接放置在画布的元件才会去选用,这样可以完全不用操心元件封装,还可以直接在 …

阅读全文 »

记一次硬件 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



阅读全文 »

阿里云 IoT LinkDevelop 案例实战

阿里云 IoT 在 3 月份的时候发布了 Link Develop 一站式开发平台,我根据平台的文档,编写了几个示例,便于外部开发者们来快速理解和掌握怎样使用 Link Develop 平台去加速和辅助物联网产品的开发工作。

示例包括空气监测站、智能灯、Home Assistant 设备接入等,涉及的技术包括 Arduino、React、iOS、前端开发等。

通过这个文档,可以快速了解 Link Develop 一站式开发平台所提供的功能,以及怎样基于平台实现一个物联网产品。

文档配套示例代码同样提供在 GitHub 中。

目录:

GitHub 地址:

https://github.com/aliyun-linkdevelop/linkdevelop-practice

https://github.com/aliyun-linkdevelop/airmonitor_demo

https://github.com/aliyun-linkdevelop/smartlight_demo

玩玩智能家居3:PlatformIO

ESPEasy 虽然方便,但是毕竟很久没有维护了,里面对硬件的支持也不是很完全,并且在使用有些模块时,与 Domoticz 对接可能会有一些问题,例如 CO2 传感器在发送数据到 Domoticz 时,发送的数据字段就不正确。

在这个时候就需要自己来修改 ESPEasy 代码,重新编译并烧录到 NodeMCU 中,而修改代码就需要用到 IDE 了。ESPEasy 是一个 Arduino 项目,自然用 Arduino IDE 来开发是最直接的。

但是 Arduino IDE 是一个相当古老的程序了,虽然版本号更新到了 1.8,但是在使用的时候有很多功能都不够完善,例如代码自动补全、符号定位、语法着色等。

这个时候就在网上找到了 PlatformIO 这个项目,它提供了基于 Atom 或者 Visual Studio Code 的 IDE 项目 PlatforIO IDE。

PlatformIO IDE

要安装 PlatformIO IDE 很简单,在 Atom 的设置中打开 Packages,直接搜索 platformio ,安装platformio-ide …

阅读全文 »