ESP8266 có 512 byte EEPROM bên trong. Điều này sẽ rất hữu ích nếu bạn cần lưu trữ một số cài đặt. Chẳng hạn như địa chỉ IP hoặc một số chi tiết Wifi. Trong bài này, mình sẽ hướng dẫn các bạn cách đọc, ghi vào bộ nhớ EEPROM trong ESP8266 NodeMCU.
Bộ nhớ EEPROM là gì?
EEPROM (hay E2PROM) là viết tắt của bộ nhớ chỉ đọc. Nó có thể lập trình xóa được bằng điện và là một loại bộ nhớ non-volatile. Chúng được tích hợp trong bộ vi điều khiển để lưu trữ lượng dữ liệu tương đối nhỏ nhưng có thể xóa và lưu lại theo từng byte riêng lẻ.EEPROM được cấu trúc dưới dạng một mảng nối tiếp các ô nhớ khác nhau. EEPROM có thể được lập trình và xóa trong chương trình, bằng cách áp dụng các lệnh lập trình đặc biệt.
Ban đầu, các EEPROM bị giới hạn ở bằng cách hoạt động theo từng byte đơn khiến chúng chậm hơn. Tuy nhiên các EEPROM hiện đại cho phép hoạt động cùng một lúc nhiều byte.Bộ nhớ flash là một loại EEPROM được thiết kế cho tốc độ cao và mật độ cao. Không có ranh giới rõ ràng giữa EEPROM và Flash, nhưng thuật ngữ EEPROM thường được sử dụng để mô tả bộ nhớ non-volatile với các khối nhỏ (khoảng 1 byte) và thời gian tồn tại dài (thường là 1.000.000 chu kỳ). Xem thêm: https://en.wikipedia.org/wiki/EEPROM.

ESP8266 NodeMCU
NodeMCU ESP8266 được phát triển dựa trên Chip WiFi ESP8266EX bên trong Module ESP-12E dễ dàng kết nối WiFi với một vài thao tác. Board còn tích hợp IC CP2102, giúp dễ dàng giao tiếp với máy tính thông qua Micro USB để thao tác với board. Và có sẳn nút nhấn, Led để tiện trong quá trình học, nghiên cứu. ESP8266 được sử dụng rộng rãi trong các dự án IOT, ESP8266 Blynk.
Với kích thước nhỏ gọn, linh hoạt board dễ dàng liên kết với các thiết bị ngoại vi để tạo thành project, sản phẩm mẫu một cách nhanh chóng.
ESP8266 có 512 byte EEPROM bên trong, điều này sẽ rất hữu ích nếu bạn cần lưu trữ một số cài đặt, chẳng hạn như địa chỉ IP hoặc một số chi tiết Wifi.
EEPROM của ESP8266 có sự khác biệt nhỏ so với EEPROM chuẩn. Để sử dụng, cần gọi EEPROM.begin(size)
trước khi bắt đầu đọc hoặc ghi. size
là số bytes muốn sử dụng. Số bytes đó có thể ở bất cứ đâu trong khoảng 4 và 4096 bytes.

CODE
Đầu tiên là ví dụ về ghi file vào EEPROM ESP8266:
#include <EEPROM.h>
int addr = 0;
void setup()
{
EEPROM.begin(512); //Initialize EEPROM
// write to EEPROM.
EEPROM.write(addr, 'a');
addr++; //Increment address
EEPROM.write(addr, 'b');
addr++; //Increment address
EEPROM.write(addr, 'C');
//Write string to eeprom
String sample = "testing eeprom";
for(int i=0;i<sample.length();i++)
{
EEPROM.write(0x0F+i, sample[i]); //Write one by one with starting address of 0x0F
}
EEPROM.commit(); //Store data to EEPROM
}
void loop()
{
}
Và bây giờ là code đọc:
#include <EEPROM.h> int addr = 0; void setup() { EEPROM.begin(512); //Initialize EEPROM Serial.begin(9600); Serial.println(""); Serial.print(char(EEPROM.read(addr))); addr++; //Increment address Serial.print(char(EEPROM.read(addr))); addr++; //Increment address Serial.println(char(EEPROM.read(addr))); //Read string from eeprom (testing eeprom) String strText; for(int i=0;i<14;i++) { strText = strText + char(EEPROM.read(0x0F+i)); //Read one by one with starting address of 0x0F } Serial.print(strText); //Print the text } void loop() { }
Trên đây chỉ là ví dụ về đọc và ghi EEPROM trong ESP8266 NodeMCU. Tuỳ theo tình huống của bạn, bạn có thể sử dụng chúng một cách linh hoạt. Kết hợp chúng để hoàn thiện chương trình của bạn.
Xem thêm: 7 bước ESP8266 connect Firebase Realtime