Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số và cuộc cách mạng công nghiệp 4.0, xu hướng Internet of Things (IoT - Internet vạn vật) đang tái định hình toàn diện ngành bán lẻ hiện đại (Smart Retail). Theo các báo cáo thị trường từ Grand View Research, quy mô thị trường nhãn giá điện tử (Electronic Shelf Label - ESL) toàn cầu đạt tốc độ tăng trưởng kép hàng năm (CAGR) trên 16.5%. Tại các chuỗi bán lẻ truyền thống và cửa hàng kinh doanh thiết bị công nghệ (như điện thoại di động, máy tính bảng), việc quản lý và niêm yết thông tin sản phẩm vẫn dựa chủ yếu vào tem nhãn in bằng giấy. Phương thức thủ công này bộc lộ hàng loạt nhược điểm: tốn kém chi phí in ấn định kỳ, tiêu tốn 20–30% quỹ thời gian của nhân viên cho việc thay đổi nhãn, dễ gây sai sót thông tin giá và thông số kỹ thuật (như mã IMEI, cấu hình RAM/ROM, thời hạn bảo hành), đồng thời làm giảm tính thẩm mỹ của không gian trưng bày.
Đề tài "Hệ thống hiển thị báo giá và thông tin sản phẩm" được nghiên cứu và hiện thực hóa nhằm giải quyết triệt để bài toán tự động hóa quy trình cập nhật thông tin sản phẩm tại điểm bán thông qua kết nối Internet không dây.
+------------------+ HTTP/TCP +----------------------+
| Web Management | ------------------------> | ESP8266 Controller |
| (PHP & MySQL) | | (NodeMCU ESP-12E) |
+------------------+ +----------------------+
|
I2C Bus (SDA/SCL)
|
+-------------+-------------+
| | |
+---------+ +---------+ +---------+
| LCD 1 | | LCD 2 | | LCD 3 |
| (0x27) | | (0x26) | | (0x25) |
+---------+ +---------+ +---------+
Mục tiêu dự án
- Thiết kế phần cứng nhúng tích hợp: Xây dựng mạch điều khiển trung tâm sử dụng vi điều khiển ESP8266 NodeMCU, giao tiếp và điều khiển đồng thời nhiều màn hình hiển thị LCD 20x4 độc lập thông qua chuẩn truyền thông I2C (Inter-Integrated Circuit).
- Xây dựng hệ thống Web Server quản trị: Phát triển giao diện web trên nền tảng PHP và cơ sở dữ liệu quan hệ MySQL cho phép người quản trị thực hiện các thao tác CRUD (Create, Read, Update, Delete) thông tin sản phẩm (tên, giá niêm yết, cấu hình, mã IMEI, thời gian bảo hành) mọi lúc, mọi nơi.
- Hiện thực hóa giao thức đồng bộ dữ liệu thời gian thực: Thiết lập luồng truyền nhận dữ liệu tự động giữa Database đám mây/Web Server và vi điều khiển qua giao thức HTTP/TCP-IP trên nền Wi-Fi chuẩn 802.11 b/g/n, phân tích chuỗi dữ liệu nhận được và cập nhật tức thời lên từng màn hình tương ứng.
- Thi công và kiểm thử mô hình thực tế: Đóng gói hoàn thiện bộ điều khiển và thi công mô hình kệ trưng bày sản phẩm kích thước 49 x 14 x 17 cm, hoạt động ổn định 24/7 với nguồn điện xoay chiều 220VAC dân dụng hạ áp xuống 5VDC ổn định.
Phạm vi và giới hạn đề tài
- Phần cứng: Sử dụng 01 vi điều khiển ESP8266 ESP-12E NodeMCU, 01 khối nguồn hạ áp tích hợp biến áp và IC ổn áp LM7805, 03 module chuyển đổi I2C PCF8574 kết nối tới 03 màn hình LCD 20x4 ký tự.
- Dữ liệu hiển thị: Mỗi màn hình hiển thị tương ứng với 01 sản phẩm riêng biệt, hiển thị tối đa 4 dòng thông tin (Dòng 1: Tên sản phẩm; Dòng 2: Giá niêm yết; Dòng 3: Cấu hình phần cứng; Dòng 4: Mã IMEI & Bảo hành).
- Hạ tầng mạng: Hệ thống hoạt động trên dải tần Wi-Fi 2.4 GHz với chế độ bảo mật WPA/WPA2-PSK.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Nhãn giấy truyền thống |
Hệ thống ESL công nghiệp (E-ink) |
Giải pháp IoT ESP8266 + LCD (Đề tài) |
| Chi phí đầu tư ban đầu |
Rất thấp (vài nghìn VND/nhãn) |
Rất cao (20 - 50 USD/nhãn + Trạm thu phát RF) |
Tối ưu (~100.000 - 150.000 VND/cụm) |
| Tốc độ cập nhật |
Thủ công (1 - 2 giờ/cửa hàng) |
Tự động (1 - 5 giây) |
Tự động (< 2 giây qua Wi-Fi) |
| Độ chính xác dữ liệu |
Dễ sai sót do con người |
Tuyệt đối (Đồng bộ ERP/POS) |
Tuyệt đối (Đồng bộ trực tiếp MySQL) |
| Khả năng quan sát ban đêm |
Không (cần đèn rọi ngoài) |
Hạn chế (trừ loại có đèn nền) |
Rất tốt (Đèn nền LCD LED tích hợp) |
| Bảo trì và mở rộng |
Tốn công in ấn định kỳ |
Phức tạp, phụ thuộc nhà cung cấp |
Linh hoạt, dễ thay thế linh kiện phổ thông |
Phân loại yêu cầu hệ thống (Mô hình MoSCoW)
- Must-have (Bắt buộc):
- Cập nhật giá và thông tin sản phẩm qua giao diện web trực quan.
- Tự động phân tách chuỗi dữ liệu từ máy chủ và hiển thị chính xác lên từng màn hình LCD tương ứng theo địa chỉ I2C riêng biệt.
- Mạch nguồn ổn định 5VDC/1.5A chịu tải liên tục, có cơ chế tự động kết nối lại Wi-Fi khi mất tín hiệu.
- Should-have (Nên có):
- Đăng nhập xác thực tài khoản quản trị viên với cơ chế mã hóa mật khẩu.
- Khả năng thay đổi địa chỉ phần cứng I2C linh hoạt bằng hàn cầu Jumpers A0, A1, A2.
- Could-have (Có thể mở rộng):
- Hiệu ứng cuộn chữ (auto-scrolling) cho các dòng thông tin cấu hình dài vượt quá 20 ký tự.
- Tích hợp thêm đèn LED trạng thái thông báo mất kết nối mạng.
- Won't-have (Chưa thực hiện trong phiên bản này):
- Tích hợp quét mã vạch Barcode/QR Code trực tiếp tại màn hình.
- Vận hành bằng pin mặt trời / pin sạc lithium chuyên dụng.
Thiết kế kiến trúc hệ thống
graph TD
A[Admin User / Browser] -->|HTTP POST/GET| B[Web Server - Apache / PHP 5.6+]
B <-->|SQL Queries| C[(MySQL Database)]
D[ESP8266 NodeMCU ESP-12E] -->|HTTP GET Request / Wi-Fi 2.4GHz| B
B -->|Text Response Payload| D
D -->|I2C Protocol - SDA/SCL 100kHz| E[PCF8574 Module #1 - 0x27]
D -->|I2C Protocol - SDA/SCL 100kHz| F[PCF8574 Module #2 - 0x26]
D -->|I2C Protocol - SDA/SCL 100kHz| G[PCF8574 Module #3 - 0x25]
E --> H[LCD 20x4 #1: iPhone X]
F --> I[LCD 20x4 #2: Samsung Galaxy S8]
G --> J[LCD 20x4 #3: Sony Xperia XZ]
Công nghệ và thông số kỹ thuật chi tiết
- Khối xử lý trung tâm:
- Vi điều khiển ESP8266 ESP-12E NodeMCU V1.0 (SoC Tensilica L106 32-bit, xung nhịp cấu hình 80MHz – 160MHz).
- Bộ nhớ: 4MB SPI Flash, 64KB Instruction RAM, 96KB Data RAM.
- Giao thức mạng: TCP/IP Stack, IEEE 802.11 b/g/n (2.4 GHz), WPA/WPA2 Authentication.
- Khối truyền thông ngoại vi (Bus I2C):
- Giao thức 2 dây:
SDA (Serial Data) trên chân GPIO4 (D2) và SCL (Serial Clock) trên chân GPIO5 (D1).
- Module chuyển đổi I2C to Parallel 8-bit sử dụng IC PCF8574T (tốc độ chuẩn 100 kHz).
- Thiết lập địa chỉ phần cứng qua Jumpers 3-bit ($A_0, A_1, A_2$):
$$\text{Address} = 0x20 \ | \ (A_2 \ll 2) \ | \ (A_1 \ll 1) \ | \ A_0$$
- Màn hình 1: Open all ($A_0=1, A_1=1, A_2=1$) $\rightarrow$
0x27
- Màn hình 2: Jump $A_0$ ($A_0=0, A_1=1, A_2=1$) $\rightarrow$
0x26
- Màn hình 3: Jump $A_1$ ($A_0=1, A_1=0, A_2=1$) $\rightarrow$
0x25
- Khối hiển thị:
- Màn hình LCD 20x4 (HD44780 controller): 4 hàng x 20 ký tự, tích hợp bộ nhớ DDRAM (Display Data RAM), CGROM (Character Generator ROM mã ASCII), và CGRAM (Custom Characters).
- Khối nguồn và mạch tương tự:
- Nguồn đầu vào: 220VAC / 50Hz qua biến áp cách ly hạ áp xuống 12VAC.
- Chỉnh lưu toàn kỳ: Cầu Diode 1N4007 kết hợp tụ hóa lọc nguồn $C = 2200\mu\text{F} / 25\text{V}$.
- Điện áp đỉnh sau nắn:
$$V_{\text{peak}} = V_{\text{rms}} \times \sqrt{2} - 2 V_{\text{diode}} \approx 12 \times 1.414 - 1.4 = 15.57\text{V}$$
- IC ổn áp tuyến tính LM7805 (TO-220): Điện áp ngõ ra cố định $5\text{V} \pm 2%$, dòng tải cực đại $1.5\text{A}$.
- Điện trở kéo xuống (pull-down) cho nút nhấn Reset trên chân
RST:
$$R = \frac{V_{cc}}{I_{\text{target}}} = \frac{5\text{V}}{10\text{mA}} = 500\Omega \quad \longrightarrow \quad \text{Chọn điện trở chuẩn } 470\Omega$$
Thiết kế cơ sở dữ liệu (Database Schema)
Hệ thống quản trị sử dụng MySQL với bảng tổng hợp lưu trữ trạng thái hiển thị của các sản phẩm:
CREATE DATABASE IF NOT EXISTS `ql_sanpham` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE `ql_sanpham`;
-- Bảng quản trị viên
CREATE TABLE `admin` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL,
`password` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Bảng thông tin sản phẩm hiển thị trên các LCD
CREATE TABLE `sanpham` (
`id_sp` INT(11) NOT NULL AUTO_INCREMENT,
`ten_sp` VARCHAR(20) NOT NULL,
`gia_sp` VARCHAR(20) NOT NULL,
`cauhinh_sp` VARCHAR(20) NOT NULL,
`imei_baohanh` VARCHAR(20) NOT NULL,
`lcd_channel` INT(2) NOT NULL UNIQUE, -- 1: 0x27, 2: 0x26, 3: 0x25
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id_sp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Implementation và kết quả
Development Process & Key Algorithms
Hệ thống được phát triển theo quy trình khép kín gồm: Lập trình firmware cho vi điều khiển (C++ trên nền Arduino Core for ESP8266), xây dựng Web Backend API (PHP) và thiết kế giao diện (HTML5, CSS, Bootstrap).
1. Backend Script xuất chuỗi dữ liệu (get_data.php)
File PHP đóng vai trò API Gateway, truy vấn dữ liệu từ MySQL và đóng gói thành chuỗi ký tự đặc biệt có ký tự phân tách để vi điều khiển dễ dàng bóc tách:
<?php
header('Content-Type: text/plain; charset=utf-8');
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "ql_sanpham";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("ERROR_CONNECTION");
}
mysqli_set_charset($conn, "utf8");
// Lấy 3 sản phẩm tương ứng với 3 kênh hiển thị LCD (Channel 1, 2, 3)
$sql = "SELECT ten_sp, gia_sp, cauhinh_sp, imei_baohanh FROM sanpham ORDER BY lcd_channel ASC LIMIT 3";
$result = $conn->query($sql);
$payload = "";
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
// Định dạng mỗi sản phẩm: [TenSP#Gia#CauHinh#IMEI]
$payload .= "[" . $row["ten_sp"] . "#" . $row["gia_sp"] . "#" . $row["cauhinh_sp"] . "#" . $row["imei_baohanh"] . "]";
}
echo $payload; // Output mẫu: [iPhone X#25.990.000d#OLED 5.8in 64GB#VN/A BH12T][Galaxy S8#18.490.000d#AMOLED 5.8in 4GB#SSVN BH12T]...
} else {
echo "NO_DATA";
}
$conn->close();
?>
2. Firmware ESP8266: Xử lý chuỗi và điều khiển Bus I2C đa màn hình
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Khởi tạo 3 màn hình LCD 20x4 với 3 địa chỉ I2C khác nhau
LiquidCrystal_I2C lcd1(0x27, 20, 4);
LiquidCrystal_I2C lcd2(0x26, 20, 4);
LiquidCrystal_I2C lcd3(0x25, 20, 4);
const char* ssid = "Showroom_WiFi";
const char* password = "Password@2018";
const char* hostUrl = "http://192.168.1.100/smart_retail/get_data.php";
void setup() {
Serial.begin(115200);
// Khởi tạo giao tiếp I2C trên ESP8266: SDA = D2 (GPIO4), SCL = D1 (GPIO5)
Wire.begin(4, 5);
lcd1.init(); lcd1.backlight();
lcd2.init(); lcd2.backlight();
lcd3.init(); lcd3.backlight();
lcd1.setCursor(0, 0); lcd1.print("Connecting WiFi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
lcd1.clear();
lcd1.setCursor(0, 0); lcd1.print("WiFi Connected!");
delay(1000);
}
// Hàm hiển thị 4 dòng dữ liệu lên LCD chỉ định
void updateLCD(LiquidCrystal_I2C &lcd, String line1, String line2, String line3, String line4) {
lcd.clear();
lcd.setCursor(0, 0); lcd.print(line1.substring(0, 20));
lcd.setCursor(0, 1); lcd.print(line2.substring(0, 20));
lcd.setCursor(0, 2); lcd.print(line3.substring(0, 20));
lcd.setCursor(0, 3); lcd.print(line4.substring(0, 20));
}
// Bóc tách chuỗi [Line1#Line2#Line3#Line4]
void parseAndDisplayProduct(String rawData, int productIndex) {
String fields[4];
int lastIndex = 0;
int fieldIndex = 0;
for (int i = 0; i < rawData.length(); i++) {
if (rawData.charAt(i) == '#' || i == rawData.length() - 1) {
int endIndex = (i == rawData.length() - 1) ? i + 1 : i;
fields[fieldIndex++] = rawData.substring(lastIndex, endIndex);
lastIndex = i + 1;
if (fieldIndex >= 4) break;
}
}
if (productIndex == 0) updateLCD(lcd1, fields[0], fields[1], fields[2], fields[3]);
else if (productIndex == 1) updateLCD(lcd2, fields[0], fields[1], fields[2], fields[3]);
else if (productIndex == 2) updateLCD(lcd3, fields[0], fields[1], fields[2], fields[3]);
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
WiFiClient client;
http.begin(client, hostUrl);
int httpCode = http.GET();
if (httpCode == HTTP_CODE_OK) {
String payload = http.getString();
// Phân tách từng sản phẩm nằm giữa dấu '[' và ']'
int prodIdx = 0;
int startPos = 0;
while ((startPos = payload.indexOf('[', startPos)) != -1 && prodIdx < 3) {
int endPos = payload.indexOf(']', startPos);
if (endPos == -1) break;
String productBlock = payload.substring(startPos + 1, endPos);
parseAndDisplayProduct(productBlock, prodIdx);
prodIdx++;
startPos = endPos + 1;
}
}
http.end();
}
delay(3000); // Chu kỳ quét cập nhật dữ liệu: 3 giây
}
Testing và Validation
Hệ thống đã trải qua quy trình kiểm thử toàn diện tại phòng thí nghiệm Bộ môn Điện tử Công nghiệp – Y sinh:
[220VAC Mains] ---> [Transformer 12VAC] ---> [Bridge Diode + 2200uF] ---> [LM7805 Reg] ---> 4.98VDC Steady
|
+-----------------------------------------------------------------+
| | |
[ESP8266 NodeMCU] [3x PCF8574 I2C] [3x LCD Backlight]
(Current: 80mA) (Current: 7.5mA) (Current: 170mA)
- Kiểm tra thông số điện áp và dòng tải:
- Điện áp sau tụ lọc 2200µF: $15.42\text{VDC}$ (Độ gợn sóng $V_{\text{ripple}} < 0.15\text{V}$).
- Điện áp sau ổn áp LM7805: $4.98\text{VDC}$ (Đạt sai số cho phép $\pm 0.4%$).
- Dòng tiêu thụ tổng của toàn mạch khi bật toàn bộ 3 đèn nền LCD: $I_{\text{total}} \approx 257.5\text{mA}$ (Thấp hơn nhiều so với ngưỡng quá nhiệt của LM7805 khi có cánh tản nhiệt nhôm).
- Benchmark tốc độ truyền nhận và phản hồi:
- Độ trễ cập nhật từ khi nhấn "Lưu" trên Web Admin đến khi màn hình LCD thay đổi: $\approx 850\text{ms} - 1.2\text{s}$ trên mạng nội bộ LAN.
- Tỷ lệ hiển thị đúng chuỗi ký tự trên cả 3 màn hình: Đạt $100%$ qua 500 lần thay đổi dữ liệu liên tục không xảy ra hiện tượng tràn bộ đệm I2C hoặc mất gói tin.
Đổi mới và đóng góp
- Tối ưu hóa tài nguyên phần cứng bằng chuẩn I2C:
- Thay vì sử dụng cách ghép nối song song truyền thống (chuẩn 4-bit hoặc 8-bit cần tới 6–10 chân I/O cho mỗi LCD $\rightarrow$ tổng cộng 18–30 chân cho 3 LCD), hệ thống ứng dụng module PCF8574 giúp điều khiển toàn bộ 3 màn hình chỉ với duy nhất 2 chân GPIO (
D1/SCL, D2/SDA) của ESP8266. Tiết kiệm hơn 88% số chân I/O.
- Kiến trúc phân tán giá thành thấp (Ultra-low cost ESL):
- Chi phí phần cứng cho 1 điểm hiển thị chỉ dao động từ 100.000 đến 150.000 VND, thấp hơn 75–80% so với việc trang bị các module E-ink công nghiệp nhập khẩu từ nước ngoài.
- Cơ chế cập nhật độc lập, không đồng bộ (Asynchronous Multi-display):
- Cho phép định tuyến từng bản tin sản phẩm đến đúng vị trí vật lý của sản phẩm đó trên kệ hàng thông qua ánh xạ mã kênh I2C (
lcd_channel $\leftrightarrow$ Device Address).
Ứng dụng thực tế và triển khai
+-------------------------------------------------------------------------+
| HỆ THỐNG KỆ TRƯNG BÀY THÔNG MINH |
| |
| +---------------------+ +---------------------+ +---------------------+|
| | [LCD 1: Vị trí A1] | | [LCD 2: Vị trí A2] | | [LCD 3: Vị trí A3] | |
| | iPhone X 64GB Silver| | Galaxy S8 Midnight | | Xperia XZ Premium | |
| | Gia: 25.990.000 d | | Gia: 18.490.000 d | | Gia: 16.990.000 d | |
| | OLED 5.8" / Apple A11 | AMOLED 5.8" / Exynos| | 4K HDR 5.5" / SD835 | |
| | IMEI:... BH: 12T | | IMEI:... BH: 12T | | IMEI:... BH: 12T | |
| +---------------------+ +---------------------+ +---------------------+|
| | | | |
+-------------+-----------------------+-----------------------+-----------+
+------------------- Bus I2C -------------------+
Kịch bản ứng dụng (Use Cases)
- Showroom điện thoại & chuỗi siêu thị bán lẻ điện máy: Triển khai trực tiếp tại các quầy trải nghiệm sản phẩm. Khi giá thị trường thay đổi hoặc có chương trình flash sale, phòng kinh doanh chỉ cần cập nhật trên hệ thống Web trung tâm, toàn bộ nhãn giá tại các quầy sẽ đổi giá đồng loạt trong vài giây.
- Quản lý kho linh kiện điện tử: Gắn nhãn tại từng khay hàng để hiển thị số lượng tồn kho thực tế, vị trí ô chứa và thông số kỹ thuật linh kiện, đồng bộ trực tiếp với hệ thống quản trị kho ERP/WMS.
Phân tích hiệu quả kinh tế (ROI)
- Với một cửa hàng bán lẻ quy mô 200 mặt hàng:
- Chi phí in ấn tem giấy, thiết kế lại bảng thông số và công lao động thay thế: ước tính $1.500.000\text{ VND/tháng}$.
- Chi phí triển khai hệ thống hiển thị thông minh: hoàn vốn (ROI) trong vòng 5 – 7 tháng, sau đó giúp doanh nghiệp tiết kiệm $100%$ chi phí nhãn giấy định kỳ.
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Màn hình LCD 20x4: Giới hạn hiển thị 80 ký tự chữ/số không dấu, không hiển thị được hình ảnh sản phẩm và tiêu thụ dòng lớn cho đèn nền (backlight) so với màn hình E-paper.
- Phương thức truyền nhận: Sử dụng cơ chế HTTP Polling (định kỳ gửi request hỏi máy chủ) thay vì kỹ thuật Full-Duplex thời gian thực, tạo ra lưu lượng mạng dư thừa nếu dữ liệu không thay đổi.
Hướng phát triển
- Nâng cấp công nghệ hiển thị: Thay thế LCD 20x4 bằng màn hình E-Paper (E-Ink Display) 2.9 inch hoặc 4.2 inch 3 màu (Đen - Trắng - Đỏ) tiêu thụ năng lượng siêu thấp (Zero Power khi tĩnh), cho phép chạy bằng pin cúc áo CR2450 trong 2–3 năm.
- Chuyển đổi giao thức sang MQTT / WebSocket: Ứng dụng giao thức truyền thông nhẹ MQTT (Message Queuing Telemetry Transport) thông qua Broker (như Mosquitto/EMQX) với cơ chế Publish/Subscribe để đẩy dữ liệu thời gian thực (Push notification) ngay khi có thay đổi trên Database.
- Tích hợp mã QR động (Dynamic QR Code): Cho phép khách hàng dùng smartphone quét mã QR trên nhãn để chuyển hướng tới trang thanh toán trực tuyến hoặc xem video đánh giá sản phẩm.
Đối tượng hưởng lợi
- Sinh viên & Học viên kỹ thuật: Tài liệu tham khảo toàn diện về tích hợp hệ thống IoT hoàn chỉnh từ Schematic, Layout PCB, xử lý tín hiệu analog/nguồn, lập trình vi điều khiển ESP8266, bus I2C đến lập trình Web/Database.
- Kỹ sư phát triển hệ thống nhúng (Embedded Developers): Nắm bắt kiến thức thực tiễn về kỹ thuật bóc tách chuỗi (string parsing) tối ưu trên MCU và phương pháp dồn kênh địa chỉ I2C để tiết kiệm chân GPIO.
- Doanh nghiệp bán lẻ (Retailers): Mô hình tham chiếu tin cậy để tự động hóa quy trình quản lý giá, giảm thiểu sai sót do con người và gia tăng trải nghiệm khách hàng tại điểm bán.
- Nhà nghiên cứu (Researchers): Cung cấp số liệu đo kiểm thực tế về độ ổn định nguồn LM7805, trễ mạng Wi-Fi và hiệu suất bus I2C trong môi trường ứng dụng thực tế.
Câu hỏi thường gặp
1. Yêu cầu phần cứng và phần mềm tối thiểu để triển khai hệ thống là gì?
- Phần cứng: 01 kit ESP8266 NodeMCU V1.0, 03 module I2C PCF8574, 03 LCD 20x4, biến áp 220V/12V, IC LM7805, tụ 2200µF và các linh kiện thụ động.
- Phần mềm: Máy tính cài đặt Arduino IDE (đã tích hợp ESP8266 Core v2.4+), Web Server chạy Apache 2.4, PHP 5.6/7.x và MySQL 5.7.
2. Giới hạn số lượng màn hình kết nối trên cùng một bus I2C là bao nhiêu?
Với IC PCF8574T chuẩn có 3 chân chọn địa chỉ ($A_0, A_1, A_2$), hệ thống có thể cấu hình tối đa $2^3 = 8$ địa chỉ khác nhau (từ 0x20 đến 0x27) trên cùng một bus I2C mà không cần IC dồn kênh. Nếu kết hợp thêm dòng chip PCF8574A (dải địa chỉ 0x38 đến 0x3F), số lượng màn hình có thể nâng lên 16 màn hình trên cùng 2 chân GPIO.
3. Hệ thống có thể tích hợp với các phần mềm quản lý bán hàng (POS) hiện có không?
Có. Do Web Server sử dụng kiến trúc cơ sở dữ liệu quan hệ MySQL chuẩn, các hệ thống POS (như KiotViet, Sapo, Odoo) có thể dễ dàng đồng bộ bảng dữ liệu sản phẩm qua RESTful API hoặc Trigger SQL trong cơ sở dữ liệu để tự động cập nhật giá xuống màn hình.
4. Khi mất điện hoặc mất kết nối Wi-Fi, hệ thống xử lý như thế nào?
- Khi mất kết nối Wi-Fi, màn hình LCD vẫn duy trì nội dung hiển thị gần nhất nhờ bộ nhớ DDRAM nội của LCD, đồng thời vi điều khiển ESP8266 chạy vòng lặp ngầm liên tục thử kết nối lại mạng mà không làm treo hệ thống.
- Khi có điện trở lại, ESP8266 tự động boot, kết nối Wi-Fi và gửi HTTP GET Request để kéo dữ liệu mới nhất từ máy chủ về hiển thị.
5. Chi phí triển khai và thời gian thu hồi vốn (ROI) được tính toán ra sao?
Tổng chi phí linh kiện phần cứng cho một cụm 3 sản phẩm chỉ khoảng 350.000 – 400.000 VND. Với cửa hàng quy mô trung bình, việc loại bỏ hoàn toàn chi phí in ấn giấy nhãn và giảm 80% thời gian kiểm tra giá của nhân viên giúp hệ thống hoàn vốn đầu tư trong vòng dưới 6 tháng hoạt động.
Kết luận
Đồ án tốt nghiệp "Hệ thống hiển thị báo giá và thông tin sản phẩm" đã nghiên cứu, thiết kế và chế tạo thành công một giải pháp nhãn điện tử thông minh hoàn chỉnh, kết hợp hài hòa giữa kỹ thuật phần cứng nhúng (ESP8266, I2C, LCD20x4) và công nghệ phần mềm quản trị web (PHP, MySQL). Hệ thống giải quyết trọn vẹn bài toán tự động hóa niêm yết giá tại điểm bán với tốc độ cập nhật dưới 1.5 giây, tiết kiệm 88% chân GPIO vi điều khiển và chi phí phần cứng siêu tối ưu. Đây là nền tảng thực tiễn vững chắc mở ra hướng tiếp cận mới trong việc số hóa chuỗi bán lẻ thông minh (Smart Retail), kho vận tự động và các ứng dụng IoT dân dụng trong tương lai.