ESP32-C3刷MySensors建立NRF24L01+网关
之前测试ESP32的ADC得出其并不适合收集模拟传感器的数据,而arduino又没有原生的无线传输方式。恰好手头有几个吃灰的NRF24L01+模块,可以用来将那几个arduino进行组网。首先需要一个带WiFi的设备作为网关将采集到的数据传给Home Assistant。
硬件准备
Parts | # |
---|---|
合宙ESP32C3-CORE开发板 | 1 |
NRF24L01+ | 1 |
面包板 | 1 |
跳线 | 若干 |
关于这个C3开发板的简介可以看这里,但要注意之前esphome中用的是esp-idf框架,而arduino框架下SPI用不了。MySensors是arduino框架的,所以我顺便解决了这个问题并PR(现已Merged)。
接线
ESP32-C3 | NRF24L01+ |
---|---|
GPIO05 | CE |
GPIO04 | CSN/CS |
GPIO02 | SCK |
GPIO03 | MOSI |
GPIO10 | MISO |
GPIO19 | IRQ |
固件
File > Preferences > Settings > Addtional boards manager URLS 添加以下源:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
在BOARDS MANAGER
搜esp32
并安装esp32 by Espressif Systems
。
Tools > Board 选择AirM2M_CORE_ESP32C3
。标准版的USB CDC On Boot
应Disabled
,而简版则应Enabled
。
在LIBRARY MANAGER
搜MySensors
并安装。
由于C3采用RSIC-V架构,并没有Xtensa特有的XTOS_RESTORE_INTLEVEL
,需修改MyHwESP32.h
,默认位于~/Arduino/libraries/MySensors/hal/architecture/ESP32
。
1 | static __inline__ void __psRestore(const uint32_t *__s) |
需要更改的几处如下:
1 |
|
最后编译上传。串口调试显示如下信息即连接WiFi成功。
接入Home Assistant
Home Assistant的安装见这里。
MySensors已集成到HA,无需安装。
配置 > 设备与服务 > 添加集成 > 搜索MySensors并安装。
选择Configure a TCP gateway > 填入网关的IP、端口和版本 > 提交。
之后连入网关的客户端传输的传感器数据会自动出现在HA中。