我正在做一个项目,我有一个 ESP32 设备(Wifi 和蓝牙),它从一些传感器读取数据,例如温度和土壤湿度(室外环境)。然后将数据发送到 15 米远的 Raspberry PI,然后 PI 通过 Internet 发送数据。现在,Raspberry 将插入外部稳定电源,而 ESP32 将使用 3.3 伏电池运行,因此我需要设计好两个设备的通信方式以节省能源。乍一看,我正在考虑简单的 RESTful API,基本上,一个在 PI 上运行的 Flask 应用程序,带有 ESP32,每 3 小时从深度睡眠模式唤醒一次,向服务器发送 POST 请求。经过一番研究,我发现我的 ESP32 也支持 BLE(低功耗蓝牙),所以我玩了一下,我已经能够在 PI 和 ESP32 之间交换一些数据。我的做法是:
- ESP32 自我宣传,将传感器的值写入特征
- PI 持续扫描 ESP32,并在找到时读取数据
- ESP32 在每个周期后进入深度睡眠。
即使我设法完成了这项工作,我认为 Flask 方法要干净得多,因为没有像现在 PI 中那样的循环。关键是 ESP32 几乎总是处于深度睡眠状态,所以我需要循环(在 PI 中)找到它,如果找到则读取数据。我正在阅读 BLE 设计中传感器是服务器的内容,但我认为如果 PI 是服务器自己做广告并且 ESP32 发现它并将传感器的值写入一个特性中,那可能会更好。我仍然需要完全理解这里的最佳模式。
任何人的建议在上面有更多经验?