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 | 732 | Скачать |
Уроки ESP32 и ESP8266
10 августа , 2023
Комментариев:0
Файлов для скачивания:1
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии