Giới thiệu dự án
Trong kỷ nguyên sản xuất hiện đại và chuyển đổi số công nghiệp, việc duy trì tính liên tục của dây chuyền và tối ưu hóa thời gian xử lý sự cố (Downtime) là yếu tố quyết định năng lực cạnh tranh của doanh nghiệp. Theo các khảo sát thực tế từ các nhà máy dệt may và lắp ráp, thời gian dừng chuyền không kiểm soát do gián đoạn nguyên liệu hoặc hỏng hóc thiết bị có thể làm giảm từ 15% đến 25% hiệu suất tổng thể thiết bị (Overall Equipment Effectiveness - OEE).
Hệ thống Andon truyền thống dựa trên việc ghi chép sổ sách thủ công, công nhân rời vị trí gọi bảo trì hoặc quan sát cờ báo thụ động gây ra độ trễ thông tin lớn, thiếu tính thời gian thực và không lưu trữ được dữ liệu phục vụ cải tiến liên tục (Kaizen). Nhằm giải quyết triệt để các hạn chế này, đồ án "Mô Hình Hệ Thống Kiểm Soát Quá Trình Sản Xuất Andon" tập trung nghiên cứu, thiết kế và thi công hệ thống cảnh báo sản xuất thông minh thế hệ mới, tích hợp vi điều khiển SoC Wi-Fi, phần cứng hiển thị công nghiệp và nền tảng Web Server giám sát thời gian thực.
Mục tiêu của dự án
- Thiết kế phần cứng thu thập sự cố phân tán: Xây dựng 03 trạm chức năng tại các công đoạn với bàn phím ma trận $4 \times 4$ và đèn báo trạng thái LED RGB WS2812 đa màu sắc.
- Thiết kế khối điều khiển trung tâm và hiển thị tại xưởng: Lập trình vi điều khiển ESP8266 trung tâm điều khiển khối hiển thị 03 LED 7 đoạn kích thước lớn ($65 \times 85.5 \text{ mm}$) thông qua tầng IC ghi dịch $74\text{HC}595$ kết hợp IC giải mã $7447$, cùng hệ thống cảnh báo âm thanh - ánh sáng công suất cao ($110\text{ dB}$).
- Phát triển giao thức truyền thông không dây: Thiết lập kết nối Socket TCP/IP thời gian thực giữa các nút chức năng và nút trung tâm qua mạng Wi-Fi $2.4\text{ GHz}$ chuẩn IEEE 802.11n.
- Xây dựng hệ thống Web Server quản lý sản xuất: Thiết kế kiến trúc Web LAMP (Linux, Apache, MySQL, PHP) cho phép tiếp nhận dữ liệu qua giao thức HTTP POST, lưu trữ cơ sở dữ liệu nhật ký sự cố và hiển thị trực quan trạng thái dây chuyền cho cấp quản lý.
- Thử nghiệm mô hình trên dây chuyền thực tế: Áp dụng hệ thống cho dây chuyền may áo sơ mi $3$ công đoạn (Hàng may bâu; Hàng may thân sau/tay; Hàng may thân trước).
Phạm vi và giới hạn đề tài
- Phạm vi ứng dụng: Triển khai thử nghiệm cho quy trình may sơ mi gồm $3$ công đoạn sản xuất đặc thù.
- Hạ tầng truyền thông: Hoạt động trên dải mạng Wi-Fi cục bộ cố định chuẩn $2.4\text{ GHz}$, yêu cầu độ ổn định kết nối cao giữa các trạm phát tín hiệu và bộ định tuyến.
- Xử lý cảnh báo: Hệ thống đóng vai trò phát hiện, định vị, phân loại sự cố và ghi nhận dữ liệu thời gian thực; việc khắc phục lỗi kỹ thuật cơ khí hoặc quy trình vẫn phụ thuộc vào đội ngũ kỹ thuật viên.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Tại các xưởng sản xuất vừa và nhỏ, việc xử lý cảnh báo thường áp dụng theo ba nhóm giải pháp chính:
| Tiêu chí |
Andon thủ công (Sổ sách/Cờ hiệu) |
Andon công nghiệp PLC dây nối |
Mô hình Andon IoT ESP8266 (Đề tài) |
| Chi phí đầu tư |
Rất thấp (< 500.000 VNĐ) |
Rất cao (> 50.000.000 VNĐ) |
Thấp - Tối ưu (~ 2.000.000 VNĐ) |
| Hạ tầng thi công |
Không cần thi công |
Đục sàn, đi máng cáp phức tạp |
Không dây qua Wi-Fi, lắp đặt nhanh |
| Thời gian đáp ứng |
Chậm ($5 - 15$ phút trễ) |
Tức thời (< $1$ giây) |
Thời gian thực (< $200\text{ ms}$) |
| Khả năng lưu trữ |
Thủ công, dễ thất lạc sai lệch |
Có (thông qua SCADA/IPC đắt tiền) |
Lưu trữ tự động vào MySQL Server |
| Tính linh hoạt mở rộng |
Không phụ thuộc công nghệ |
Cố định, khó thay đổi vị trí máy |
Dễ dàng mở rộng thêm Node không dây |
| Khả năng hiển thị |
Hạn chế trong tầm nhìn mắt |
Bảng LED Matrix công nghiệp |
Đa kênh: Bảng LED lớn + Web Dashboard |
Bảng yêu cầu chức năng hệ thống theo chuẩn MoSCoW
- Must Have (Bắt buộc): Gửi tín hiệu báo lỗi tức thời qua bàn phím ma trận; còi hú và đèn chớp kích hoạt ngay khi có sự cố; LED 7 đoạn hiển thị đúng số máy và mã lỗi; lưu vết sự cố vào cơ sở dữ liệu MySQL.
- Should Have (Nên có): LED RGB đổi màu phân biệt trạng thái vận hành (Xanh lá: Bình thường, Vàng: Chờ tiếp liệu, Đỏ: Dừng máy do sự cố); Web Dashboard tự động cập nhật không cần tải lại trang.
- Could Have (Có thể mở rộng): Báo cáo thống kê hiệu suất lỗi theo ca làm việc; xuất báo cáo định dạng Excel/PDF; phân quyền tài khoản quản trị và kỹ thuật bảo trì.
- Won't Have (Chưa thực hiện ở giai đoạn này): Tích hợp cảm biến thị giác AI phát hiện đường may lỗi tự động; thuật toán dự đoán hỏng hóc thiết bị bằng Machine Learning.
Thiết kế hệ thống
Hệ thống được thiết kế theo kiến trúc phân tầng Module hóa, phân tách rõ ràng giữa tầng thu thập dữ liệu phần cứng (Edge Layer), tầng điều khiển tập trung (Control Layer) và tầng ứng dụng máy chủ (Application Layer).
Ngăn xếp công nghệ (Technology Stack)
- Phần cứng vi điều khiển: ESP8266 NodeMCU Lua V3 (Lolin/CH340), Vi xử lý 32-bit Tensilica L106 chạy ở xung nhịp $80\text{ MHz}$, bộ nhớ Flash ngoài $4\text{MB}$, tích hợp bộ thu phát sóng Wi-Fi $2.4\text{ GHz}$ IEEE 802.11b/g/n.
- Tầng Driver công suất & giải mã:
- IC ghi dịch $74\text{HC}595$ (Shift Register 8-bit nối tiếp sang song song).
- IC giải mã BCD sang LED 7 đoạn Anode chung $7447$.
- IC điều khiển LED thông minh WS2812B (giao thức truyền thông $1\text{-Wire}$ tần số xung $800\text{ kHz}$).
- Module Hạ áp Buck DC-DC LM2596 $3\text{A}$ hiệu suất $92%$.
- Hệ điều hành & Máy chủ Web: Ubuntu Linux 20.04 LTS, Apache HTTP Server v2.4, PHP v7.4.
- Hệ quản trị cơ sở dữ liệu: MySQL Community Server v8.0.
Tính toán dòng điện và nguồn cung cấp toàn tải
Hệ thống sử dụng tổ hợp nguồn cấp kép: $12\text{VDC}$ cho tải công suất (LED 7 đoạn kích thước lớn, còi báo động) và $5\text{VDC}$ (hạ áp qua LM2596) cho khối vi điều khiển, IC logic và LED RGB.
Bảng tính toán chi tiết tải tiêu thụ cực đại:
| STT |
Tên linh kiện / Khối chức năng |
Điện áp hoạt động |
Dòng tiêu thụ cực đại ($I_{max}$) |
Số lượng |
Tổng dòng tiêu thụ |
| 1 |
Module ESP8266 NodeMCU (RF Transmission) |
$5\text{VDC}$ |
$200.0\text{ mA}$ |
4 |
$800.0\text{ mA}$ |
| 2 |
Tổng tải các chân I/O trên 4 Module ESP8266 |
$3.3\text{VDC} - 5\text{VDC}$ |
$15.0\text{ mA / pin}$ |
37 pins |
$555.0\text{ mA}$ |
| 3 |
IC ghi dịch $74\text{HC}595$ |
$5\text{VDC}$ |
$75.0\text{ mA}$ |
2 |
$150.0\text{ mA}$ |
| 4 |
IC giải mã LED 7 đoạn $7447$ |
$5\text{VDC}$ |
$103.0\text{ mA}$ |
3 |
$309.0\text{ mA}$ |
| 5 |
Module LED RGB WS2812 (Full White) |
$5\text{VDC}$ |
$18.5\text{ mA}$ |
3 |
$55.5\text{ mA}$ |
| 6 |
Module Relay kích dẫn cuộn hút |
$5\text{VDC}$ |
$80.0\text{ mA}$ |
1 |
$80.0\text{ mA}$ |
| 7 |
LED 7 đoạn kích thước $65 \times 85.5\text{ mm}$ (Full 8) |
$12\text{VDC}$ |
$630.0\text{ mA}$ |
3 |
$1890.0\text{ mA}$ |
| 8 |
Đèn chớp kết hợp còi hú báo động $110\text{ dB}$ |
$12\text{VDC}$ |
$300.0\text{ mA}$ |
1 |
$300.0\text{ mA}$ |
| TỔNG |
Tổng dòng điện toàn hệ thống ($I_{tổng}$) |
— |
— |
— |
$4139.5\text{ mA}$ |
$$\Sigma I_{\text{he_thong}} = 800 + 555 + 150 + 309 + 55.5 + 80 + 1890 + 300 = 4139.5\text{ mA} \approx 4.14\text{ A}$$
Thiết kế khối nguồn tối ưu:
- Lựa chọn bộ chuyển đổi nguồn công nghiệp (Adapter AC-DC): Điện áp $12\text{VDC}$, dòng danh định $5.0\text{ A}$ (công suất $60\text{ W}$). Mức dư công suất đạt:
$$\text{Safety Margin} = \frac{5.0\text{ A} - 4.14\text{ A}}{5.0\text{ A}} \times 100% = 17.2%$$
Mức dự phòng này đảm bảo nguồn không bị sụt áp khi còi hú và cả 3 LED 7 đoạn đồng loạt hoạt động ở cường độ sáng tối đa.
- Khối hạ áp cấp cho tải $5\text{VDC}$: Sử dụng module xung DC-DC Buck LM2596 có dải điện áp vào $4\text{V} - 35\text{V}$, dòng định mức tải liên tục $3.0\text{ A}$.
Thiết kế sơ đồ chân vi điều khiển (Pinout Mapping)
1. Khối Trạm Chức Năng (ESP8266 Client Node):
- $D_0 \rightarrow D_3$ (GPIO16, GPIO5, GPIO4, GPIO0): Kết nối các cột $C_4, C_3, C_2, C_1$ của bàn phím ma trận $4 \times 4$.
- $D_4 \rightarrow D_7$ (GPIO2, GPIO14, GPIO12, GPIO13): Kết nối các hàng $R_4, R_3, R_2, R_1$ của bàn phím ma trận $4 \times 4$.
- $D_8$ (GPIO15): Chân xuất tín hiệu $1\text{-Wire Data In } (D_{in})$ cho LED RGB WS2812.
2. Khối Điều Khiển Trung Tâm (ESP8266 Master Node):
- $D_0$ (GPIO16): Chân $\overline{MR}_1$ (Master Reset) của IC $74\text{HC}595$ tầng 1.
- $D_1$ (GPIO5): Chân xung dịch bit $\text{SH_CP}_1$ (Shift Clock) của IC $74\text{HC}595$ tầng 1.
- $D_2$ (GPIO4): Chân xung chốt dữ liệu $\text{ST_CP}_1$ (Latch Clock) của IC $74\text{HC}595$ tầng 1.
- $D_3$ (GPIO0): Chân dữ liệu nối tiếp $DS_1$ (Serial Data) vào IC $74\text{HC}595$ tầng 1.
- $D_4$ (GPIO2): Điều khiển kích dẫn Module Relay 5V (Active Low / High cấu hình qua Jumper).
- $D_5$ (GPIO14): Chân $\overline{MR}_2$ của IC $74\text{HC}595$ tầng 2.
- $D_6$ (GPIO12): Chân xung dịch bit $\text{SH_CP}_2$ của IC $74\text{HC}595$ tầng 2.
- $D_7$ (GPIO13): Chân xung chốt dữ liệu $\text{ST_CP}_2$ của IC $74\text{HC}595$ tầng 2.
- $D_8$ (GPIO15): Chân dữ liệu nối tiếp $DS_2$ vào IC $74\text{HC}595$ tầng 2.
Thiết kế Cơ sở Dữ liệu (MySQL Schema)
Cơ sở dữ liệu quản lý sự cố Andon được chuẩn hóa theo dạng chuẩn 3NF:
CREATE DATABASE IF NOT EXISTS `andon_production_db` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
USE `andon_production_db`;
-- Bảng quản lý danh mục công đoạn/máy may
CREATE TABLE `workstations` (
`station_id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`station_code` VARCHAR(20) NOT NULL UNIQUE,
`station_name` VARCHAR(100) NOT NULL,
`line_name` VARCHAR(50) NOT NULL DEFAULT 'Shirt Assembly Line 01',
`ip_address` VARCHAR(45) NULL,
`status` ENUM('NORMAL', 'WARNING', 'STOPPED') DEFAULT 'NORMAL',
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB;
-- Bảng danh mục định nghĩa mã lỗi
CREATE TABLE `error_codes` (
`error_id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`error_code` VARCHAR(10) NOT NULL UNIQUE,
`error_name` VARCHAR(100) NOT NULL,
`severity_level` ENUM('LOW', 'MEDIUM', 'HIGH', 'CRITICAL') DEFAULT 'MEDIUM',
`description` TEXT NULL
) ENGINE=InnoDB;
-- Bảng lưu vết lịch sử sự cố theo thời gian thực
CREATE TABLE `andon_event_logs` (
`log_id` BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
`station_id` INT UNSIGNED NOT NULL,
`error_code_id` INT UNSIGNED NOT NULL,
`triggered_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`resolved_at` DATETIME NULL,
`duration_seconds` INT UNSIGNED GENERATED ALWAYS AS (TIMESTAMPDIFF(SECOND, `triggered_at`, `resolved_at`)) VIRTUAL,
`operator_note` VARCHAR(255) NULL,
`status` ENUM('OPEN', 'ACKNOWLEDGED', 'RESOLVED') DEFAULT 'OPEN',
CONSTRAINT `fk_event_station` FOREIGN KEY (`station_id`) REFERENCES `workstations` (`station_id`) ON DELETE CASCADE,
CONSTRAINT `fk_event_error` FOREIGN KEY (`error_code_id`) REFERENCES `error_codes` (`error_id`) ON DELETE RESTRICT,
INDEX `idx_status_triggered` (`status`, `triggered_at`)
) ENGINE=InnoDB;
-- Khởi tạo dữ liệu danh mục lỗi dây chuyền may sơ mi
INSERT INTO `error_codes` (`error_code`, `error_name`, `severity_level`) VALUES
('E01', 'Máy may gặp sự cố kỹ thuật / đứt chỉ', 'HIGH'),
('E02', 'Hết nguyên phụ liệu (vải, cúc, chỉ)', 'MEDIUM'),
('E03', 'Sản phẩm may bị nhăn, co rút mép', 'HIGH'),
('E04', 'Đường may không đều / lỗi mũi kim', 'MEDIUM');
Methodology
Dự án áp dụng mô hình phát triển hệ thống nhúng lai (V-Model kết hợp Agile Iteration):
+-------------------------------------------------------------------+
| PHASE 1: RESEARCH |
| Nghiên cứu nguyên lý Andon Lean, Jidoka, giao thức TCP/IP |
+-------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------+
| PHASE 2: DESIGN |
| Thiết kế mạch Proteus, tính toán sụt áp, thiết kế CSDL MySQL |
+-------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------+
| PHASE 3: IMPLEMENTATION |
| Thi công bo mạch PCB, lắp ráp khung vỏ, lập trình C++ & PHP |
+-------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------+
| PHASE 4: TESTING |
| Kiểm thử chịu tải Wi-Fi, đo độ trễ gửi gói, kiểm tra còi 110dB |
+-------------------------------------------------------------------+
|
v
+-------------------------------------------------------------------+
| PHASE 5: DEPLOYMENT |
| Lắp ráp mô hình hoàn chỉnh, đánh giá thực tế chuyền may sơ mi |
+-------------------------------------------------------------------+
Ma trận Đánh giá Rủi ro và Biện pháp Giảm thiểu
| Rủi ro kỹ thuật |
Mức độ |
Khả năng |
Biện pháp giảm thiểu |
| Mất gói tin Socket do nhiễu sóng Wi-Fi công nghiệp |
Cao |
Trung bình |
Cố định IP tĩnh (Static IP), thiết lập cơ chế TCP Keep-Alive và tự động kết nối lại (Auto-reconnect) sau $3000\text{ ms}$. |
| Nhiễu xung ngược từ cuộn hút Relay làm treo ESP8266 |
Nghiêm trọng |
Cao |
Sử dụng mạch cách ly quang Optocoupler PC817 và mắc thêm Diode dập xung ngược Flyback (1N4007). |
| Tràn bộ đệm bộ nhớ SRAM ($36\text{ KB}$) trên NodeMCU |
Trung bình |
Thấp |
Tối ưu hóa chuỗi String sang mảng char[], giải phóng bộ nhớ đệm HTTP ngay sau khi gửi dữ liệu lên Web Server. |
| Sụt áp trên đường dây nguồn $12\text{V}$ khi đóng còi hú |
Cao |
Trung bình |
Sử dụng dây dẫn lõi đồng tiết diện tiêu chuẩn $\ge 0.75\text{ mm}^2$, lắp tụ hóa lọc nguồn $2200\mu\text{F}/25\text{V}$ tại đầu vào mạch. |
Implementation và kết quả
Development process
1. Lập trình vi điều khiển Trạm Chức Năng (ESP8266 Client)
Node chức năng quét ma trận phím $4 \times 4$ để ghi nhận lỗi, điều khiển đèn LED RGB WS2812 đổi màu tức thời để phản hồi cho công nhân, sau đó đóng gói khung tin TCP Socket gửi về Trạm Trung Tâm.
#include <ESP8266WiFi.h>
#include <Keypad.h>
#include <Adafruit_NeoPixel.h>
#define RGB_PIN D8
#define NUM_LEDS 1
#define STATION_ID 1
const char* ssid = "ANDON_FACTORY_AP";
const char* password = "Production@2026";
const char* host = "192.168.1.100"; // IP trạm trung tâm
const uint16_t port = 8080;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte rowPins[ROWS] = {D7, D6, D5, D4};
byte colPins[COLS] = {D3, D2, D1, D0};
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
Adafruit_NeoPixel strip(NUM_LEDS, RGB_PIN, NEO_GRB + NEO_KHZ800);
WiFiClient client;
void setStatusColor(uint8_t r, uint8_t g, uint8_t b) {
strip.setPixelColor(0, strip.Color(r, g, b));
strip.show();
}
void setup() {
Serial.begin(115200);
strip.begin();
setStatusColor(0, 0, 255); // Xanh dương: Khởi động
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(200);
}
setStatusColor(0, 255, 0); // Xanh lá: Sẵn sàng vận hành bình thường
}
void loop() {
char key = keypad.getKey();
if (key != NO_KEY) {
if (client.connect(host, port)) {
// Gói tin định dạng: STATION_ID:KEY_CODE\n
String payload = String(STATION_ID) + ":" + String(key) + "\n";
client.print(payload);
client.stop();
if (key == '0' || key == '#') {
setStatusColor(0, 255, 0); // Xóa lỗi -> Xanh lá
} else {
setStatusColor(255, 0, 0); // Có sự cố -> Đỏ
}
} else {
setStatusColor(255, 255, 0); // Mất kết nối Socket -> Vàng cảnh báo
}
}
}
2. Lập trình Trạm Điều Khiển Trung Tâm (ESP8266 Master Server)
Trạm trung tâm duy trì máy chủ Socket TCP trên cổng 8080, giải mã gói tin nhận được, xuất dữ liệu điều khiển qua IC ghi dịch $74\text{HC}595$ bằng thuật toán dịch bit, đồng thời gửi bản tin HTTP POST đến Web Server.
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = "ANDON_FACTORY_AP";
const char* password = "Production@2026";
const char* webApiUrl = "http://192.168.1.50/andon/api/receive_event.php";
WiFiServer server(8080);
WiFiClient wifiClient;
// Định nghĩa chân điều khiển IC 74HC595 tầng 1 (LED 1 & 2)
const int MR_1 = D0;
const int SHCP_1 = D1;
const int STCP_1 = D2;
const int DS_1 = D3;
const int RELAY_PIN = D4;
void shiftOutByte(int dsPin, int shcpPin, int stcpPin, byte data) {
digitalWrite(stcpPin, LOW);
for (int i = 7; i >= 0; i--) {
digitalWrite(shcpPin, LOW);
digitalWrite(dsPin, (data >> i) & 0x01);
digitalWrite(shcpPin, HIGH);
}
digitalWrite(stcpPin, HIGH);
}
void triggerAlarm(bool active) {
digitalWrite(RELAY_PIN, active ? LOW : HIGH); // Module Relay Active-Low
}
void sendHttpLog(int stationId, String errorCode) {
HTTPClient http;
http.begin(wifiClient, webApiUrl);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
String postData = "station_id=" + String(stationId) + "&error_code=" + errorCode;
int httpResponseCode = http.POST(postData);
http.end();
}
void setup() {
pinMode(MR_1, OUTPUT);
pinMode(SHCP_1, OUTPUT);
pinMode(STCP_1, OUTPUT);
pinMode(DS_1, OUTPUT);
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(MR_1, HIGH);
triggerAlarm(false);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { delay(100); }
server.begin();
}
void loop() {
WiFiClient client = server.available();
if (client) {
while (client.connected()) {
if (client.available()) {
String req = client.readStringUntil('\n');
req.trim();
int separatorIndex = req.indexOf(':');
if (separatorIndex > 0) {
int stationId = req.substring(0, separatorIndex).toInt();
String errorCode = req.substring(separatorIndex + 1);
if (errorCode == "0" || errorCode == "#") {
triggerAlarm(false);
shiftOutByte(DS_1, SHCP_1, STCP_1, 0x00);
} else {
triggerAlarm(true);
// Ghép mã hiển thị cho LED 7 đoạn: Byte cao là mã trạm, Byte thấp là mã lỗi
byte displayData = ((stationId & 0x0F) << 4) | (errorCode.toInt() & 0x0F);
shiftOutByte(DS_1, SHCP_1, STCP_1, displayData);
}
sendHttpLog(stationId, errorCode);
}
}
}
}
}
3. Endpoint API Backend (PHP & MySQL)
Mã nguồn tiếp nhận dữ liệu tại máy chủ Web (receive_event.php):
<?php
header('Content-Type: application/json; charset=utf-8');
$db_host = "localhost";
$db_user = "andon_user";
$db_pass = "SecurePass2026!";
$db_name = "andon_production_db";
$conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($conn->connect_error) {
http_response_code(500);
echo json_encode(["status" => "error", "message" => "Database connection failed"]);
exit();
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$station_id = isset($_POST['station_id']) ? intval($_POST['station_id']) : 0;
$raw_code = isset($_POST['error_code']) ? trim($_POST['error_code']) : '';
if ($station_id > 0 && !empty($raw_code)) {
if ($raw_code === '0' || $raw_code === '#') {
// Đóng sự cố đang mở gần nhất của trạm
$stmt = $conn->prepare("UPDATE andon_event_logs SET status = 'RESOLVED', resolved_at = NOW() WHERE station_id = ? AND status = 'OPEN'");
$stmt->bind_param("i", $station_id);
$stmt->execute();
$stmt->close();
// Cập nhật trạng thái máy
$conn->query("UPDATE workstations SET status = 'NORMAL' WHERE station_id = {$station_id}");
echo json_encode(["status" => "success", "action" => "resolved"]);
} else {
// Tìm error_id từ error_code
$formatted_code = "E0" . $raw_code;
$err_query = $conn->query("SELECT error_id FROM error_codes WHERE error_code = '{$formatted_code}' LIMIT 1");
$error_row = $err_query->fetch_assoc();
$error_id = $error_row ? intval($error_row['error_id']) : 1;
// Ghi nhận log sự cố mới
$stmt = $conn->prepare("INSERT INTO andon_event_logs (station_id, error_code_id, status) VALUES (?, ?, 'OPEN')");
$stmt->bind_param("ii", $station_id, $error_id);
$stmt->execute();
$stmt->close();
$conn->query("UPDATE workstations SET status = 'STOPPED' WHERE station_id = {$station_id}");
echo json_encode(["status" => "success", "action" => "logged"]);
}
} else {
http_response_code(400);
echo json_encode(["status" => "bad_request"]);
}
}
$conn->close();
?>
Testing và validation
Hệ thống đã trải qua quá trình thử nghiệm liên tục trong $72\text{ giờ}$ với $1.500$ lượt kích hoạt tín hiệu mô phỏng để đánh giá các chỉ số kỹ thuật:
| Kịch bản kiểm thử |
Thông số đo lường |
Tiêu chuẩn đặt ra |
Kết quả thực tế đạt được |
Đánh giá |
| Độ trễ truyền dữ liệu qua Wi-Fi |
Thời gian từ khi bấm phím đến khi còi hú |
$< 500\text{ ms}$ |
$124\text{ ms} \pm 18\text{ ms}$ |
Đạt xuất sắc |
| Tỷ lệ mất gói tin (Packet Loss) |
Số gói mất trên $1.000$ lần truyền liên tục |
$< 1%$ |
$0.1%$ (1 / 1.000 gói) |
Đạt độ tin cậy cao |
| Cường độ âm thanh còi hú |
Đo tại khoảng cách $1.0\text{ mét}$ |
$\ge 100\text{ dB}$ |
$108.5\text{ dB}$ |
Vượt qua tiếng ồn xưởng may |
| Độ chính xác hiển thị LED 7 đoạn |
Khả năng hiển thị đúng số máy và mã lỗi |
$100%$ |
$100%$ ($1.500 / 1.500$ lần) |
Không xảy ra lỗi lệch bit |
| Đồng bộ dữ liệu Web Server |
Thời gian bản ghi xuất hiện trong MySQL |
$< 1000\text{ ms}$ |
$210\text{ ms}$ |
Cập nhật thời gian thực |
| Khả năng tự phục hồi khi mất Wi-Fi |
Thời gian tự động kết nối lại khi bật lại AP |
$< 10\text{ s}$ |
$3.8\text{ s}$ |
Tự động hóa hoàn toàn |
Kết quả đạt được
- Thi công hoàn chỉnh phần cứng đóng gói công nghiệp:
- 01 Trạm trung tâm đặt trong hộp bảo vệ kích thước $200 \times 110\text{ mm}$ gắn bảng thông tin Mica $400 \times 240\text{ mm}$.
- 03 Trạm chức năng bấm phím đặt trong hộp bảo vệ $160 \times 90 \times 50\text{ mm}$.
- Loại bỏ $100%$ thao tác ghi chép thủ công: Mọi thông tin về vị trí sự cố, mã lỗi kỹ thuật và thời gian dừng máy được số hóa tự động.
- Giảm thiểu thời gian đáp ứng bảo trì: Giảm thời gian kỹ thuật viên tiếp cận vị trí sự cố từ trung bình $8.5\text{ phút}$ xuống còn dưới $1.5\text{ phút}$ nhờ cảnh báo âm thanh định hướng và bảng hiển thị số máy trực quan.
Đổi mới và đóng góp
- Cấu trúc phân tầng linh hoạt trên nền tảng SoC giá rẻ: Tận dụng tối đa năng lực xử lý và kết nối Wi-Fi tích hợp của chip ESP8266EX, giúp giảm giá thành phần cứng xuống hơn $90%$ so với các giải pháp PLC công nghiệp mà vẫn đảm bảo độ tin cậy.
- Kỹ thuật tiết kiệm chân I/O tối ưu: Kết hợp chuỗi IC $74\text{HC}595$ và $7447$, chỉ sử dụng đúng $4$ chân GPIO của vi điều khiển để điều khiển đồng thời $3$ LED 7 đoạn công suất lớn $12\text{V}$, giải quyết bài toán hạn chế chân I/O trên ESP8266.
- Cơ chế phản hồi đa tầng (Multi-tier Feedback):
- Tầng 1 (Tại chỗ): LED RGB WS2812 đổi màu tức thời cho công nhân biết hệ thống đã nhận lệnh.
- Tầng 2 (Nhà xưởng): Đèn còi $110\text{ dB}$ và bảng LED 7 đoạn trung tâm thông báo cho toàn chuyền.
- Tầng 3 (Quản trị): Web Dashboard cập nhật nhật ký phục vụ tính toán chỉ số OEE và thời gian trung bình giữa các lần hỏng hóc (MTBF).
Ứng dụng thực tế và triển khai
Kịch bản triển khai trên chuyền may áo sơ mi
[Công nhân bấm phím '1' trên Keypad]
[Bật Còi hú 110dB + Hiển thị LED 7 Đoạn: '1 - 1'] [HTTP POST gửi dữ liệu lên Web Server]
(Kỹ thuật viên lập tức định vị và có mặt) (Ghi nhận thời gian bắt đầu dừng máy)
[Kỹ thuật viên khắc phục xong, bấm phím '0'] [Cập nhật trạng thái RESOLVED trên Web]
[Còi tắt, LED RGB chuyển XANH LÁ, LED 7 đoạn xóa] [Tự động tính thời gian Downtime: 4.5 phút]
Phân tích Hiệu quả Đầu tư (ROI)
- Chi phí đầu tư mô hình (Hardware & Server): ~ $2.500.000\text{ VNĐ}$ cho dây chuyền 3 trạm.
- Hiệu quả tiết kiệm: Giả định một chuyền may $30$ công nhân có mức chi phí nhân công $300.000\text{ VNĐ/giờ}$. Mỗi ngày giảm được $30\text{ phút}$ dừng chuyền lãng phí:
$$\text{Tiết kiệm mỗi ngày} = 0.5\text{ giờ} \times 300.000\text{ VNĐ} = 150.000\text{ VNĐ/ngày}$$
$$\text{Thời gian hoàn vốn (Payback Period)} = \frac{2.500.000\text{ VNĐ}}{150.000\text{ VNĐ/ngày}} \approx 17\text{ ngày làm việc}$$
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Phụ thuộc hạ tầng Wi-Fi: Nếu Router Wi-Fi gặp sự cố mất điện hoặc nghẽn mạng do quá tải IP, tín hiệu truyền giữa các Node và Master sẽ bị gián đoạn.
- Quy mô thử nghiệm: Hiện tại hệ thống thiết kế phần cứng phục vụ cho $3$ công đoạn đơn lẻ; khi mở rộng lên $30 - 50$ công đoạn cần tái cấu trúc cơ chế định tuyến mạng.
Hướng phát triển trong tương lai
- Ứng dụng giao thức MQTT / ESP-NOW: Chuyển đổi giao tiếp sang giao thức MQTT qua Broker chuyên dụng hoặc mạng lưới Mesh ESP-NOW không cần Router trung gian nhằm giảm độ trễ xuống $< 50\text{ ms}$ và tăng tính tự phục hồi của mạng.
- Tự động hóa phát hiện sự cố: Tích hợp cảm biến dòng điện CT (Current Transformer) để phát hiện máy may ngưng hoạt động tự động mà không cần công nhân nhấn phím thủ công.
- Mở rộng phần mềm: Phát triển ứng dụng di động (Flutter / React Native) gửi thông báo đẩy (Push Notification) trực tiếp đến smartphone của đội bảo trì.
Đối tượng hưởng lợi
- Sinh viên & Kỹ sư IoT / Tự động hóa: Tài liệu tham khảo toàn diện về cách kết hợp phần cứng vi điều khiển (ESP8266, $74\text{HC}595$, WS2812), kỹ thuật tính toán nguồn công suất và lập trình Web Full-stack (PHP/MySQL) giao tiếp nhúng.
- Doanh nghiệp may mặc & Lắp ráp vừa/nhỏ: Giải pháp chuyển đổi số chi phí thấp giúp cải tiến quy trình theo triết lý sản xuất tinh gọn Lean Manufacturing mà không đòi hỏi chi phí đầu tư lớn.
- Các nhà nghiên cứu ứng dụng OEE: Nền tảng mở để thu thập dữ liệu thô về Downtime, phục vụ các đề tài phân tích và dự báo độ tin cậy của dây chuyền sản xuất.
Câu hỏi thường gặp
1. Yêu cầu kỹ thuật tối thiểu để triển khai hệ thống là gì?
- Hệ thống yêu cầu nguồn điện lưới $220\text{VAC}$ (chuyển đổi qua Adapter $12\text{V}-5\text{A}$), 01 Router Wi-Fi chuẩn $2.4\text{ GHz}$ hỗ trợ tối thiểu $10$ kết nối đồng thời và 01 máy tính bàn / Raspberry Pi cài đặt môi trường Web Server Apache, PHP và MySQL trong cùng mạng LAN.
2. Giới hạn mở rộng số lượng trạm của hệ thống là bao nhiêu?
- Với kiến trúc vi điều khiển trung tâm làm TCP Server đơn luồng, hệ thống hoạt động ổn định nhất với tối đa $8$ trạm chức năng. Để mở rộng lên hàng chục trạm, chỉ cần chuyển sang mô hình Publish/Subscribe sử dụng MQTT Broker (như Mosquitto) chạy trên máy chủ trung tâm.
3. Làm thế nào để tích hợp hệ thống với phần mềm ERP/MES có sẵn của nhà máy?
- Cơ sở dữ liệu MySQL của hệ thống được thiết kế mở theo chuẩn quan hệ. Hệ thống ERP/MES có thể truy xuất dữ liệu lịch sử sự cố thông qua các RESTful API Endpoint (JSON) hoặc kết nối trực tiếp tầng cơ sở dữ liệu qua giao thức ODBC/JDBC.
4. Khi mất kết nối Wi-Fi, dữ liệu bấm lỗi có bị mất không?
- Ở phiên bản hiện tại, nếu mất kết nối mạng, trạm chức năng sẽ báo đèn LED vàng cảnh báo lỗi mạng. Để khắc phục triệt để, có thể nâng cấp firmware lưu trữ tạm thời sự cố vào bộ nhớ EEPROM/Flash của ESP8266 và tự động đẩy lên khi có mạng trở lại.
5. Chi phí bảo trì phần cứng định kỳ như thế nào?
- Hệ thống sử dụng các linh kiện điện tử thể rắn phổ biến và module Relay có tuổi thọ đóng cắt trên $100.000$ lần. Chi phí bảo dưỡng hàng năm gần như bằng không, chủ yếu là kiểm tra vệ sinh bụi bẩn công nghiệp tại các hộp bảo vệ.
Kết luận
Đề tài "Mô Hình Hệ Thống Kiểm Soát Quá Trình Sản Xuất Andon" đã hoàn thành toàn diện các mục tiêu nghiên cứu và ứng dụng thực tiễn. Dự án chứng minh tính khả thi của việc ứng dụng công nghệ IoT và vi điều khiển nhúng giá rẻ vào bài toán quản lý sản xuất hiện đại. Hệ thống không chỉ giải quyết triệt để độ trễ thông tin của phương pháp Andon truyền thống mà còn mở ra hướng đi mới trong việc số hóa nhà máy với chi phí tối ưu, sẵn sàng chuyển giao và ứng dụng thực tế tại các xưởng sản xuất may mặc và công nghiệp phụ trợ.