EEPROM (Electrically Erasable Programmable Read-Only Memory) là một loại bộ nhớ không khả biến (non-volatile), cho phép lưu trữ dữ liệu ngay cả khi thiết bị bị tắt nguồn. Trong các hệ vi điều khiển như Arduino, ESP32, và ESP8266, EEPROM thường được sử dụng để lưu trữ các tham số cấu hình hoặc dữ liệu quan trọng như mật khẩu Wi-Fi, giá trị cài đặt của thiết bị, v.v.
EEPROM trong Arduino
Trong Arduino, EEPROM là bộ nhớ tích hợp, được truy cập thông qua thư viện <EEPROM.h>. Dung lượng EEPROM tùy thuộc vào hộ vi Arduino bạn đang sử dụng. Ví dụ:
Arduino Uno: 1 KB
Arduino Mega: 4 KB
Các lệnh cơ bản:
EEPROM.read(address): Đọc dữ liệu từ địa chỉ.
EEPROM.write(address, value): Ghi giá trị vào địa chỉ.
EEPROM.update(address, value): Chỉ ghi nếu giá trị mới khác giá trị cũ, giúp kéo dài tuổi thọ EEPROM.
Ví dụ:
#include <EEPROM.h>
void setup() {
Serial.begin(9600);
// Ghi dữ liệu
EEPROM.write(0, 123);
// Đọc dữ liệu
int value = EEPROM.read(0);
Serial.println(value);
}
void loop() {
}
EEPROM trong ESP32
ESP32 không có EEPROM tích hợp như Arduino, nhưng nó có thể giả lập EEPROM bằng Flash. Thư viện <EEPROM.h> trên ESP32 cũng có giao diện giống như Arduino.
Khác biệt quan trọng: Trước khi ghi dữ liệu, bạn phải gọi lệnh EEPROM.begin(size), trong đó size là dung lượng cần định nghĩa (tối đa 4096 byte).
Sau khi ghi, bạn cần gọi lệnh EEPROM.commit() để dữ liệu thực sự được ghi vào Flash.
Ví dụ:
#include <EEPROM.h>
void setup() {
Serial.begin(9600);
// Ghi dữ liệu
EEPROM.write(0, 123);
// Đọc dữ liệu
int value = EEPROM.read(0);
Serial.println(value);
}
void loop() {
}
EEPROM trong ESP8266
Giống như ESP32, ESP8266 không có EEPROM tích hợp và sử dụng Flash để giả lập. Thư viện <EEPROM.h> trên ESP8266 cung cấp các hàm tương tự ESP32.
Dung lượng EEPROM tối đa là 4096 byte, và bạn phải sử dụng EEPROM.begin(size) trước khi truy cập.
Ví dụ:
#include <EEPROM.h>
void setup() {
Serial.begin(9600);
EEPROM.begin(512); // Khởi tạo 512 byte EEPROM
// Ghi dữ liệu
EEPROM.write(0, 99);
EEPROM.commit();
// Đọc dữ liệu
int value = EEPROM.read(0);
Serial.println(value);
}
void loop() {
}
Lưu ý khi sử dụng EEPROM
Giới hạn chu kỳ ghi: EEPROM chịu được số chu kỳ ghi-hủy giới hạn (đường thường 100.000 lần). Sử dụng EEPROM.update thay vì EEPROM.write để giảm sự hao mòn.
Dung lượng EEPROM: Lựa chọn dung lượng phù hợp với dự án để tránh lãng phí Flash.
Ghi/commit: Nhớ commit trong ESP32 và ESP8266 để đảm bảo dữ liệu
EEPROM là một công cụ mạnh mẽ để lưu trữ dữ liệu trên Arduino, ESP32 và ESP8266. Tuy nhiên, để sử dụng hiệu quả, bạn cần hiểu rõ cách hoạt động và các giới hạn của nó. Hi vọng bài viết này đã cung cấp thông tin hữu ích để bạn bắt đầu tích hợp EEPROM vào các dự án của mình!



You actually make it seem so easy with your presentation but
I find this topic to be actually something which I think I would
never understand. It seems too complex and extremely broad for me.
I’m looking forward for your next post, I’ll try to get the hang of
it!
I savour, cause I found just what I used to be taking a look for.
You’ve ended my four day long hunt! God Bless you man. Have a great day.
Bye
Today, I went to the beachfront with my children. I found a sea shell and gave it to my
4 year old daughter and said “You can hear the ocean if you put this to your ear.” She put the shell to her
ear and screamed. There was a hermit crab inside and it pinched her ear.
She never wants to go back! LoL I know this is totally off topic but
I had to tell someone!