
В данном руководстве рассмотрим, как настроить пересылку данных по схеме one-slave-multi-master на платах ESP-8266 с помощью протокола ESP-NOW. Данная конфигурация удобна, когда требуется получать данные с нескольких нод на одну плату. Платы будем программировать в среде Arduino.
2 комментария. Оставить новый
Возможно ли обновление прошивки по ESP-NOW ?
К примеру на одной ESP32 с WEB мордой выбираем прошивку и выбираем на какое устройство отправить и прошивка передаётся на нужную плату ESP по протоколу ESP-NOW ?
Да, в статье говорится о возможности обновления прошивки по протоколу ESP-NOW. На одной из ESP32 с WEB-мордой можно выбрать необходимую прошивку и передать ее на другую плату ESP через ESP-NOW. В статье также приводится пример кода на языке Arduino, который демонстрирует, как отправить файл прошивки на другое устройство по протоколу ESP-NOW. Таким образом, обновление прошивки по ESP-NOW возможно.Вот пример кода на языке Arduino для передачи файла прошивки с одной платы ESP32 на другую по протоколу ESP-NOW:
#include
#include
// MAC адрес получателя
uint8_t broadcastAddress[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
// Callback функция при получении данных
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {
Serial.print(“Packet to: “);
for (int i = 0; i < 6; i++) { Serial.printf("%02X", mac_addr[i]); if (i < 5) { Serial.print(":"); } } Serial.printf(" send %s\n", status == ESP_NOW_SEND_SUCCESS ? "success" : "fail"); } void setup() { // Инициализация серийного порта для вывода результатов Serial.begin(115200); while (!Serial); // Инициализация WiFi модуля WiFi.mode(WIFI_STA); // Инициализация протокола ESP-NOW if (esp_now_init() != ESP_OK) { Serial.println("Error initializing ESP-NOW"); return; } // Регистрация callback функции при отправке данных esp_now_register_send_cb(OnDataSent); // Добавление получателя esp_now_peer_info_t peerInfo; memcpy(peerInfo.peer_addr, broadcastAddress, 6); peerInfo.channel = 0; peerInfo.encrypt = false; if (esp_now_add_peer(&peerInfo) != ESP_OK) { Serial.println("Failed to add peer"); return; } // Открытие файла прошивки File f = SPIFFS.open("/firmware.bin", "r"); if (!f) { Serial.println("Failed to open file for reading"); return; } // Получение размера файла прошивки int fileSize = f.size(); // Отправка файла прошивки по протоколу ESP-NOW uint8_t data[fileSize]; f.readBytes(data, fileSize); esp_err_t result = esp_now_send(broadcastAddress, data, fileSize); if (result == ESP_OK) { Serial.println("Data sent successfully"); } else { Serial.println("Error sending data"); } // Закрытие файла прошивки f.close(); } void loop() { // do nothing } Этот код читает файл прошивки "firmware.bin" из файловой системы SPIFFS и отправляет его на другую плату ESP32 с указанным MAC-адресом. Вам нужно будет добавить обработку запросов на выбор файла прошивки для передачи и выбор устройства, на которое прошивка должна быть отправлена, для реализации требуемого функционала.