EEPROM (Electrically Erasable Programmable Read-Only Memory) - это технология энергонезависимой памяти, которая позволяет хранить данные даже после отключения питания. В ESP32 и ESP8266 флэш-память используется для эмуляции EEPROM, что позволяет сохранять данные даже при перезагрузке устройства.

Применение флэш-памяти: Флэш-память на ESP32 и ESP8266 может быть использована для сохранения различных типов данных, таких как последнее состояние переменной, настройки устройства, количество активаций и многое другое. Это особенно полезно, когда необходимо сохранить данные на длительное время.
Ограничения флэш-памяти: Одним из ограничений флэш-памяти является ограниченное количество операций записи. Вы можете записать данные в нее ограниченное количество раз (обычно 100,000 - 1,000,000 операций записи). Однако вы можете считывать данные сколько угодно раз без ограничений.
Библиотека EEPROM: Для работы с флэш-памятью ESP32 и ESP8266 в Arduino IDE используется библиотека EEPROM. Эта библиотека позволяет вам легко записывать и считывать данные из флэш-памяти, подобно тому, как вы делали это с Arduino EEPROM.
1. EEPROM.begin(size):
Инициализирует эмулированную EEPROM с указанным размером size (в байтах). Обычно вызывается в функции setup().
2. EEPROM.end():
Завершает работу с эмулированной EEPROM и освобождает зарезервированные ресурсы. Необходимо вызывать, когда вы закончили работу с EEPROM.
3. EEPROM.write(address, value):
Записывает значение value (байт) в указанный адрес address в эмулированной EEPROM.
4. EEPROM.read(address):
Считывает байт данных из указанного адреса address в эмулированной EEPROM и возвращает это значение.
5. EEPROM.update(address, value):
Обновляет значение в указанном адресе address в эмулированной EEPROM. Если новое значение отличается от текущего, то происходит запись нового значения.
6. EEPROM.get(address, data):
Считывает данные из указанного адреса address в эмулированной EEPROM и сохраняет их в переменную data. Может использоваться для считывания структур или пользовательских типов данных.
7. EEPROM.put(address, data):
Записывает данные из переменной data в указанный адрес address в эмулированной EEPROM. Может использоваться для записи структур или пользовательских типов данных.
8. EEPROM.commit():
Сохраняет все изменения, внесенные в эмулированную EEPROM, во флэш-памяти. Это необходимо вызвать после операций записи, чтобы изменения вступили в силу.
Библиотеки включена в стандартный набор библиотек Arduino IDE, предназначенных для разработки программного обеспечения для ESP32 и ESP8266. Поэтому нет необходимости дополнительно устанавливать эту библиотеку после установки платы ESP32 или ESP8266 в Arduino IDE.
При создании проекта и работы с платами ESP32 или ESP8266, вы можете сразу начать использовать функции библиотеки EEPROM, такие как EEPROM.write(), EEPROM.read(), EEPROM.commit() и другие. Эти функции позволяют вам записывать и читать данные из эмулированной памяти, сохраняя информацию даже при перезагрузке устройства.
Чтобы записать данные в флэш-память, используйте функцию EEPROM.write(address, value), где address - адрес памяти для записи (от 0 до 511), а value - значение данных (от 0 до 255).
/*
Сайт автора https://arduino-tex.ru/
Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html
Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html
Страница урока https://arduino-tex.ru/news/175/rabota-s-bibliotekoi-eeprom-na-esp32-esp8266.html
*/
#include <EEPROM.h>
void setup() {
EEPROM.begin(512); // Инициализация EEPROM с размером 512 байт
int address = 0; // адрес памяти для записи (от 0 до 511)
byte value = 123; // значение данных (от 0 до 255)
EEPROM.write(address, value); // Запись данных
EEPROM.commit(); // Сохранение изменений
}
void loop() {
// Ваш код здесь
}Для чтения данных из флэш-памяти используйте функцию EEPROM.read(address), где address - адрес памяти для чтения.
/*
Сайт автора https://arduino-tex.ru/
Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html
Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html
Страница урока https://arduino-tex.ru/news/175/rabota-s-bibliotekoi-eeprom-na-esp32-esp8266.html
*/
#include <EEPROM.h>
void setup() {
EEPROM.begin(512);
int address = 0; //адрес памяти для чтения.
byte value = EEPROM.read(address); // Чтение данных
// Используйте значение данных (value) по вашему усмотрению
}
void loop() {
// Ваш код здесь
}
EEPROM.end() - это функция из библиотеки EEPROM, которая выполняет освобождение ресурсов, занимаемых под эмуляцию EEPROM во флэш-памяти ESP32. Эта функция должна быть вызвана после того, как вы закончили работу с библиотекой и больше не планируете записывать или читать данные из EEPROM.
Принцип работы библиотеки EEPROM на ESP32 следующий: при вызове EEPROM.begin(size), где size - размер эмулируемой памяти, библиотека резервирует определенное количество флэш-памяти для эмуляции EEPROM. Когда вы вызываете EEPROM.write() для записи данных или EEPROM.read() для чтения данных, библиотека обращается к этой зарезервированной части флэш-памяти.
После того, как вы закончили работу с библиотекой EEPROM, чтобы освободить ресурсы, занятые эмуляцией EEPROM, вы должны вызвать EEPROM.end().
Пример использования EEPROM.end():
/*
Сайт автора https://arduino-tex.ru/
Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html
Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html
Страница урока https://arduino-tex.ru/news/175/rabota-s-bibliotekoi-eeprom-na-esp32-esp8266.html
*/
#include <EEPROM.h>
void setup() {
EEPROM.begin(512); // Инициализация EEPROM с размером 512 байт
// Работа с EEPROM
}
void loop() {
// Ваш код здесь
}
void saveData() {
// Сохранение данных
EEPROM.commit();
EEPROM.end(); // Освобождение ресурсов
}Обратите внимание, что вызов EEPROM.commit() перед EEPROM.end() является важным. Функция EEPROM.commit() сохраняет все изменения, которые вы сделали в эмулируемой EEPROM, во флэш-памяти. После сохранения данных, вызов EEPROM.end() завершает работу с библиотекой и освобождает ресурсы.
Итак, освобождение ресурсов с помощью EEPROM.end() важно для эффективного управления памятью и предотвращения утечек памяти при использовании библиотеки EEPROM на ESP32.
Этот пример демонстрирует, как использовать библиотеку EEPROM на микроконтроллерах ESP32 и ESP8266 для создания счетчика, который подсчитывает количество включений (перезагрузок) устройства. Библиотека EEPROM позволяет нам сохранять данные в энергонезависимой памяти, которые останутся неизменными даже после выключения питания.
/*
Сайт автора https://arduino-tex.ru/
Проекты на Arduino https://portal-pk.ru/page-17/proekty-na-arduino.html
Проекты на ESP https://arduino-tex.ru/menu/10/11/proekty-na-esp8266-esp32.html
Страница урока https://arduino-tex.ru/news/175/rabota-s-bibliotekoi-eeprom-na-esp32-esp8266.html
*/
#include <EEPROM.h>
int address = 0; // адрес памяти для записи (от 0 до 511)
byte value_w; // значение данных (от 0 до 255)
void setup() {
Serial.begin(74880);
EEPROM.begin(512); // Инициализация EEPROM с размером 512 байт
value_w = EEPROM.read(address); // Чтение данных
value_w++;
EEPROM.write(address, value_w); // Запись данных
EEPROM.commit(); // Сохранение изменений
byte value_r = EEPROM.read(address); // Чтение данных
// Используйте значение данных (value) по вашему усмотрению
Serial.println();
Serial.print("Номер включения устройства: ");
Serial.println(value_r);
}
void loop() {
}Как это работает:
address, которая будет использоваться как адрес в памяти для хранения количества включений. Мы также создаем переменную value_w, которая будет хранить текущее количество включений.Serial.begin(74880).EEPROM.begin(512).EEPROM.read(address).EEPROM.write(address, value_w).EEPROM.commit().
Итог: Этот код создает счетчик, который увеличивает значение при каждой перезагрузке устройства и сохраняет его в эмулированной энергонезависимой памяти. Таким образом, вы можете отслеживать, сколько раз ваше устройство было включено, даже при перезагрузке или отключении питания. Это полезный способ сохранения и подсчета долгосрочных статистических данных на ESP32 и ESP8266.
Удачи в вашем эксперименте с EEPROM!
Понравился урок. Работа с библиотекой EEPROM на ESP32, ESP8266? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Файлы для скачивания
| Кода для подсчета количества включений устройства.ino | 1 Kb | 820 | Скачать |
Уроки ESP32 и ESP8266
10 августа , 2023
Комментариев:0
Файлов для скачивания:1
Понравилась статья? Нажми
Читайте также
Мы в соц сетях
Комментарии