Arduino ESP32 通过 BLE 接收文件(用于 OTA 更新)

Posted

技术标签:

【中文标题】Arduino ESP32 通过 BLE 接收文件(用于 OTA 更新)【英文标题】:Arduino ESP32 receive file over BLE (for OTA update) 【发布时间】:2021-01-07 23:06:01 【问题描述】:

我想通过 BLE (https://github.com/xabre/xamarin-bluetooth-le) 从我的 Xamarin Forms (C#) ios 应用程序向我的 ESP32 (Arduino) 发送一个文件 (bin)。该文件将是用于更新的 bin 文件。我已经找到了一个关于如何从 spiffs (arduino-esp32 do OTA via BLE) 中更新 ESP32 的解决方案,但是有人知道我如何使用 ESP32 接收文件并将其保存到 spiffs 中吗?

(到esp32的BLE连接应用程序已经完全运行,我可以发送文本,但我不知道如何发送文件)

最好的问候 nflug

【问题讨论】:

【参考方案1】:

您必须将文件内容作为单个字节发送并将其保存到 SPIFFS

您可以使用以下函数(Arduino 代码)创建和写入二进制文件

void writeBinary(fs::FS &fs, const char * path, uint8_t *dat, int len) 

  //Serial.printf("Write binary file %s\r\n", path);

  File file = fs.open(path, FILE_APPEND);

  if (!file) 
    Serial.println("- failed to open file for writing");
    return;
  
  file.write(dat, len);
  file.close();

在这里查看用法ESP32_BLE_OTA_Arduino。

我还创建了一个安卓应用来上传文件ESP32_BLE_OTA_android

【讨论】:

以上是关于Arduino ESP32 通过 BLE 接收文件(用于 OTA 更新)的主要内容,如果未能解决你的问题,请参考以下文章

Arduino ESP32 BLE蓝牙串口通讯实验

arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网

arduino ESP32 AndroidStudio BLE低功耗蓝牙 物联网

Arduino ESP32 BLE蓝牙和安卓端蓝牙数据交互实验

无法使用 Noble 获取通知数据

ESP32 BLE蓝牙 微信小程序通信发送大于20字符数据