Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số và tự động hóa công nghiệp (Industrial Automation), bài toán kiểm soát số lượng và quản lý lưu chuyển hàng hóa tại các nhà máy sản xuất như xi măng, thức ăn gia súc, và chế biến lương thực đóng vai trò sống còn. Theo các khảo sát ngành logistics sản xuất, phương thức đếm thủ công hoặc sử dụng cảm biến đơn lẻ truyền thống thường ghi nhận tỷ lệ sai số từ 1.5% đến 3%, chủ yếu bắt nguồn từ hiện tượng các bao hàng dính liền nhau trên băng chuyền hoặc sự cố mất điện gây thất thoát dữ liệu.
+-----------------------------------------------------------------------------------+
| HỆ THỐNG KIỂM ĐẾM TRÊN DÂY CHUYỀN |
| |
| [Trạm Đếm Con] [Trạm Quang Báo] [Trạm Trung Tâm] |
| +------------------+ +------------------+ +-----------------+ |
| | - Arduino Nano | LoRa | - Arduino Nano | LoRa | - Arduino Nano | |
| | - Sensor BX700 | <--------> | - LED Matrix P10 | <-----> | - LED Chỉ Thị | |
| | - Encoder E6B2-C | (433MHz) | (16x32 cm) | (433MHz)| - PC (C# / SQL) | |
| | - LED 7-Đoạn | +------------------+ +-----------------+ |
| +------------------+ |
+-----------------------------------------------------------------------------------+
Vấn đề thực tiễn và điểm nghẽn kỹ thuật (Pain Points)
- Chi phí và độ phức tạp khi triển khai mạng dây: Các hệ thống truyền thống sử dụng chuẩn RS485/Modbus đòi hỏi mạng lưới cáp truyền thông trải dài hàng trăm mét trong nhà xưởng, gây tốn kém chi phí vật tư, khó bảo trì khi đứt cáp ngầm và suy hao tín hiệu do nhiễu động cơ công suất lớn.
- Hạn chế của mạng Wi-Fi công nghiệp: Môi trường nhà xưởng nhiều kết cấu kim loại và bụi bẩn làm suy giảm nghiêm trọng sóng Wi-Fi (2.4GHz/5GHz), đòi hỏi lắp đặt nhiều trạm lặp (Repeater/AP) làm tăng chi phí đầu tư.
- Sai số do sản phẩm dính liền (Continuous Bags): Khi các bao tải đi sát nhau, cảm biến quang thông thường chỉ nhận diện thành một tín hiệu liên tục duy nhất, dẫn đến đếm thiếu sản phẩm.
- Mất mát dữ liệu khi sụt nguồn đột ngột: Việc mất điện lưới làm hệ thống điều khiển tắt tức thì, xóa sạch giá trị đếm trên bộ nhớ tạm (RAM) của vi điều khiển.
Mục tiêu của dự án
- Thiết kế kiến trúc mạng 3 trạm phân tán: Xây dựng Trạm đếm sản phẩm, Trạm quang báo hiển thị từ xa và Trạm trung tâm kết nối máy tính thông qua công nghệ vô tuyến LoRa (Long Range) tần số 433 MHz.
- Phát triển thuật toán phân tách bao dính liền: Kết hợp đồng thời cảm biến quang phản xạ khuếch tán Autonics BX700-DDT và cảm biến đo độ dài Rotary Encoder Omron E6B2-CWZ6C (1000 xung/vòng) để tính toán chính xác kích thước từng bao hàng.
- Tích hợp cơ chế lưu trữ bảo vệ dữ liệu: Thiết kế mạch phần cứng kích hoạt ngắt so sánh Analog (Analog Comparator Interrupt) để kịp thời ghi dữ liệu số đếm vào bộ nhớ bất biến EEPROM khi phát hiện sụt nguồn đột ngột.
- Xây dựng phần mềm giám sát SCADA/Quản lý đơn hàng: Phát triển giao diện người dùng trên nền tảng C# Visual Studio 2010 và hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2008 R2, cho phép phân quyền, quản lý xe vận chuyển và xuất báo cáo Excel tự động.
Phạm vi và giới hạn kỹ thuật
- Phạm vi mô hình: Dây chuyền băng tải kích thước $100 \times 40 \times 50\text{ cm}$, điều khiển bởi động cơ AC giảm tốc.
- Tầm truyền không dây: Bán kính truyền nhận ổn định đạt tới $3000\text{ m}$ trong điều kiện môi trường công nghiệp tiêu chuẩn (công suất $100\text{ mW}$).
- Giới hạn triển khai: Hệ thống vận hành với 01 trạm đếm con và truyền thông dữ liệu tập trung nội bộ, không tích hợp Web Gateway đẩy dữ liệu lên Internet công cộng.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí kỹ thuật |
Giải pháp ATPro Corp |
Giải pháp Vietcontrol Solutions |
Giải pháp đề xuất (LoRa + Hybrid Sensor) |
| Giao thức truyền thông |
RS485 có dây / Wi-Fi |
RS485 công nghiệp |
LoRa không dây 433 MHz (SX1278) |
| Công nghệ phát hiện bao |
Cảm biến siêu âm + Chiều dài |
Nhận dạng siêu âm + Đo chiều dài |
Cảm biến quang BX700-DDT + Encoder 1000 ppr |
| Bộ xử lý trung tâm |
PLC Siemens / Mitsubishi |
Vi điều khiển chuyên dụng |
Arduino Nano (ATmega328P) tối ưu hóa chi phí |
| Khả năng lưu trữ mất điện |
Pin dự phòng + PLC Flash |
Lưu 5.000 đơn vị (Flash/EEPROM) |
Ngắt sụt áp Analog Comparator + Tụ xả + EEPROM |
| Giao diện hiển thị trạm |
Bảng LED 7 đoạn công nghiệp |
Bảng quang báo $720 \times 720\text{ mm}$ |
LED Matrix P10 ($16 \times 32\text{ cm}$) + LED 7 đoạn 2.3" |
| Chi phí đầu tư phần cứng |
Cao (> 30.000.000 VNĐ) |
Rất cao (> 45.000.000 VNĐ) |
Thấp / Tiếp cận linh hoạt (< 8.000.000 VNĐ) |
Phân loại yêu cầu người dùng theo mô hình MoSCoW
- Must have (Bắt buộc): Đếm chính xác bao đơn và chuỗi bao dính liền; truyền nhận dữ liệu số đếm qua LoRa không dây; hiển thị số đếm tại chỗ trên LED 7 đoạn và bảng LED Matrix P10; lưu trữ số liệu vào CSDL khi mất điện.
- Should have (Nên có): Phần mềm quản lý đơn hàng bằng C#; tìm kiếm, lọc dữ liệu xuất nhập và trích xuất file Excel; chức năng cài đặt sản lượng dự xuất và tự động ngắt băng chuyền kèm còi cảnh báo.
- Could have (Có thể có): Hiển thị trực quan biển số xe vận tải trên bảng quang báo LED Matrix P10.
- Won't have (Chưa thực hiện): Quản lý giám sát đa nền tảng qua ứng dụng di động (Mobile App/Web Cloud).
Thiết kế hệ thống
+-----------------------------------------------------------------------------------+
| SƠ ĐỒ KHỐI PHẦN CỨNG TOÀN HỆ THỐNG |
| |
| [TRẠM ĐẾM] |
| +----------------+ +-------------------+ +----------------------------+ |
| | Autonics BX700 | --> | | --> | 74HC595 + ULN2803 | |
| +----------------+ | Arduino Nano | | -> 5x LED 7 Đoạn 2.3 inch | |
| | Omron E6B2-C | --> | (ATmega328P) | +----------------------------+ |
| +----------------+ | | --> [Còi Cảnh Báo + Relay Động Cơ] |
| | Nguồn LM2596 | --> | | <-> [Module LoRa AS32-TTL-100] | |
| +----------------+ +-------------------+ +----------------------------+ |
| ^ |
| | Sóng vô tuyến RF |
| | 433 MHz (UART) |
| v |
| [TRẠM TRUNG TÂM] [TRẠM QUANG BÁO] |
| +-------------------+ +------------------+ +-------------------+ |
| | LoRa AS32-TTL-100 | <-> | LoRa AS32-TTL-100|-->| LoRa AS32-TTL-100 | |
| +-------------------+ +------------------+ +-------------------+ |
| ^ ^ ^ |
| v v v |
| +-------------------+ +------------------+ +-------------------+ |
| | Arduino Nano | | Máy tính PC | | Arduino Nano | |
| | (Khối chuyển tiếp)| | - C# GUI (VS2010)| | (Xử lý đồ họa) | |
| +-------------------+ | - SQL Server 2008| +-------------------+ |
| ^ +------------------+ v |
| v +-------------------+ |
| +-------------------+ | LED Matrix P10 | |
| | 3x LED Trạng Thái | | (2 Module SPI) | |
| +-------------------+ +-------------------+ |
+-----------------------------------------------------------------------------------+
Technology Stack và bảng đặc tả phiên bản
| Phân tầng hệ thống |
Tên công nghệ / Linh kiện |
Phiên bản / Thông số kỹ thuật |
Vai trò chức năng |
| Bộ xử lý vi điều khiển |
Arduino Nano V3.0 |
ATmega328P (16MHz, 32KB Flash, 1KB EEPROM) |
Xử lý tín hiệu cảm biến, điều khiển hiển thị, giao tiếp RF |
| Truyền thông vô tuyến |
Semtech LoRa SX1278 |
Module AS32-TTL-100 (433MHz, 100mW, UART) |
Truyền dữ liệu phân tán tầm xa giữa 3 trạm |
| Cảm biến phát hiện |
Autonics BX700-DDT |
NPN Open Collector, khoảng cách đo 700mm |
Bắt cạnh sườn bao hàng theo nguyên lý quang khuếch tán |
| Cảm biến đo chiều dài |
Omron E6B2-CWZ6C |
Incremental, 1000 ppr, Pha A-B-Z, 5-24VDC |
Xuất chuỗi xung tỉ lệ thuận với quãng đường băng chuyền |
| Driver hiển thị 7 đoạn |
TI 74HC595 + ULN2803 |
Shift Register 8-bit + Darlington Transistor Array |
Quét và đệm dòng công suất cho 5 LED 7 đoạn lớn |
| Màn hình quang báo |
LED Matrix P10 |
Kích thước $16 \times 32\text{ cm}$ Hub12, Đỏ, SPI |
Hiển thị biển số xe, số lượng đặt và số lượng thực tế |
| Giao diện điều khiển |
Microsoft Visual C# |
Visual Studio 2010 (.NET Framework 4.0) |
Thu thập dữ liệu, điều phối đơn hàng và hiển thị đồ thị |
| Cơ sở dữ liệu |
SQL Server Management |
Phiên bản 2008 R2 Enterprise |
Quản trị và lưu trữ giao dịch xuất nhập hàng |
Thiết kế lược đồ cơ sở dữ liệu (Database Schema)
-- Bảng lưu trữ danh mục sản phẩm
CREATE TABLE SanPham (
MaSP VARCHAR(20) PRIMARY KEY,
TenSP NVARCHAR(100) NOT NULL,
QuyCach NVARCHAR(50),
DonViTinh NVARCHAR(20)
);
-- Bảng quản lý thông tin phương tiện và đơn hàng
CREATE TABLE DonHang (
MaDonHang VARCHAR(20) PRIMARY KEY,
BienSoXe VARCHAR(15) NOT NULL,
MaSP VARCHAR(20) FOREIGN KEY REFERENCES SanPham(MaSP),
SoLuongDat INT NOT NULL,
SoLuongDaXuat INT DEFAULT 0,
NgayTao DATETIME DEFAULT GETDATE(),
TrangThai NVARCHAR(30) -- 'DangXuat', 'HoanThanh', 'Huy'
);
-- Bảng lưu vết lịch sử đếm theo thời gian thực
CREATE TABLE LichSuDem (
ID BIGINT IDENTITY(1,1) PRIMARY KEY,
MaDonHang VARCHAR(20) FOREIGN KEY REFERENCES DonHang(MaDonHang),
ThoiDiem DATETIME DEFAULT GETDATE(),
SoLuongHienTai INT NOT NULL,
TrangThaiNguon NVARCHAR(20) -- 'ON', 'POWER_LOSS_RECOVERED'
);
Tính toán mạch lái công suất LED 7 đoạn 2.3 inch
Mỗi đoạn LED (segment) tiêu thụ điện áp $V_F = 7.4\text{ V}$, dòng định mức $I_F = 15\text{ mA} = 0.015\text{ A}$. Sử dụng nguồn cung cấp $U_{\text{NGUỒN}} = 12\text{ VDC}$:
$$R_{\text{SEG}} = \frac{U_{\text{NGUỒN}} - V_F}{I_F} = \frac{12 - 7.4}{0.015} = 306.67,\Omega \implies \text{Chọn điện trở chuẩn } 330,\Omega$$
Đối với đoạn dấu chấm (DP - Decimal Point), $V_{F_DP} = 3.7\text{ V}$:
$$R_{\text{DP}} = \frac{U_{\text{NGUỒN}} - V_{F_DP}}{I_F} = \frac{12 - 3.7}{0.015} = 553.33,\Omega \implies \text{Chọn điện trở chuẩn } 560,\Omega$$
Phương pháp nghiên cứu và phát triển (Methodology)
Dự án áp dụng mô hình phát triển Agile phần cứng kết hợp kiểm thử chữ V (V-Model). Lộ trình thực hiện trải dài qua 20 tuần với các cột mốc trọng tâm:
Tuần 1 - 2: Khảo sát lý thuyết, nghiên cứu giải pháp ATPro/Vietcontrol, tính toán sơ đồ khối.
Tuần 3 - 4: Thiết kế mạch in (PCB), hàn lắp khối xử lý đếm và driver LED 7 đoạn.
Tuần 5 - 6: Thiết kế và thi công mạch quang báo LED Matrix P10 giao tiếp SPI.
Tuần 7 - 8: Thiết kế mạch Trạm trung tâm, chuyển đổi giao tiếp UART - USB.
Tuần 9 - 11: Cấu hình mạng LoRa (Point-to-Point / Target Mode) và lập trình C# + SQL Server.
Tuần 12 - 15: Chế tạo cơ khí khung băng chuyền (100x40x50 cm) và đóng hộp điều khiển.
Tuần 16 - 19: Chạy thử tải thực tế, cân chỉnh độ trễ cảm biến, tối ưu thuật toán chống dính bao.
Tuần 20: Đánh giá nghiệm thu hệ thống và bảo vệ đồ án tốt nghiệp.
Ma trận đánh giá rủi ro và giải pháp khắc phục
- Rủi ro 1: Suy hao và va chạm gói tin LoRa trong môi trường công nghiệp.
- Giải pháp: Thiết lập cấu hình truyền Target Mode (chỉ định ID trạm đích và kênh tần số cố định trong gói tin truyền), tích hợp mã kiểm tra lỗi Checksum (CRC) và cơ chế phản hồi xác nhận (ACK).
- Rủi ro 2: Mất mát dữ liệu khi mất nguồn lưới đột ngột.
- Giải pháp: Sử dụng mạch sụt áp với tụ điện dung lượng lớn $2200,\mu\text{F}$ duy trì nguồn tạm trong $100\text{ ms}$, kết hợp chân kích hoạt ngắt Analog Comparator của ATmega328P để ép vi điều khiển lập tức ghi 2 byte biến đếm vào EEPROM.
- Rủi ro 3: Bụi bẩn bám trên thấu kính quang BX700-DDT làm giảm độ nhạy.
- Giải pháp: Tích hợp biến trở vi chỉnh ngưỡng khuếch tán và bổ sung thuật toán lọc nhiễu lọc phần mềm (Debounce Filter) $50\text{ ms}$.
Thực thi và kết quả thực nghiệm
Quy trình phát triển phần mềm và thuật toán lõi
Thuật toán phân tách bao dính liền (Continuous Packet Separation)
Hệ thống tính toán chiều dài thực tế của vật thể đi qua cảm biến quang dựa trên số lượng xung nhận được từ Encoder Omron E6B2-CWZ6C. Chu vi của con lăn băng tải là $C = \pi \times D$. Khoảng cách di chuyển tương ứng với 1 xung:
$$\Delta s = \frac{\pi \times D}{1000}$$
Khi cảm biến quang chuyển sang mức tích cực (Active), biến đếm xung bắt đầu tích lũy:
$$L_{\text{thực tế}} = N_{\text{xung}} \times \Delta s$$
Nếu $L_{\text{thực tế}} > 1.8 \times L_{\text{chuẩn}}$ (chiều dài trung bình một bao tiêu chuẩn), hệ thống tự động xác định có 2 bao dính liền và cộng 2 đơn vị vào biến tổng.
// Thuật toán đọc xung Encoder và phân tách bao dính liền trên Arduino Nano
#include <EEPROM.h>
const byte PIN_OPTICAL = 2; // Ngắt ngoài INT0 nhận tín hiệu cảm biến quang
const byte PIN_ENCODER = 3; // Ngắt ngoài INT1 nhận xung Pha A từ Encoder
volatile unsigned long encoderPulseCount = 0;
volatile bool isDetecting = false;
unsigned int standardBagPulses = 1250; // Số xung chuẩn tương ứng chiều dài 1 bao hàng
unsigned int currentCount = 0;
void setup() {
Serial.begin(9600);
pinMode(PIN_OPTICAL, INPUT_PULLUP);
pinMode(PIN_ENCODER, INPUT_PULLUP);
// Đọc số đếm đã lưu từ EEPROM khi khởi động lại
currentCount = (EEPROM.read(0) << 8) | EEPROM.read(1);
attachInterrupt(digitalPinToInterrupt(PIN_OPTICAL), OpticalISR, CHANGE);
attachInterrupt(digitalPinToInterrupt(PIN_ENCODER), EncoderPulseISR, RISING);
}
void OpticalISR() {
if (digitalRead(PIN_OPTICAL) == LOW) { // Bắt đầu phát hiện bao
isDetecting = true;
encoderPulseCount = 0;
} else { // Bao đã đi qua vùng quét cảm biến
isDetecting = false;
if (encoderPulseCount >= (standardBagPulses * 0.7) && encoderPulseCount < (standardBagPulses * 1.6)) {
currentCount += 1; // 1 bao đơn tiêu chuẩn
} else if (encoderPulseCount >= (standardBagPulses * 1.6)) {
unsigned int calculatedBags = (encoderPulseCount + (standardBagPulses / 2)) / standardBagPulses;
currentCount += calculatedBags; // Đếm đa bao dính liền
}
SendLoraData(currentCount);
}
}
void EncoderPulseISR() {
if (isDetecting) {
encoderPulseCount++;
}
}
void SendLoraData(unsigned int count) {
// Định dạng gói tin LoRa Target Mode: [ADDH][ADDL][CHANNEL][HEADER][COUNT_HIGH][COUNT_LOW][CHECKSUM]
byte packet[7] = {0x00, 0x02, 0x17, 0xAA, (byte)(count >> 8), (byte)(count & 0xFF), 0x00};
packet[6] = packet[3] ^ packet[4] ^ packet[5]; // XOR Checksum
Serial.write(packet, 7);
}
Thuật toán bắt sự kiện mất nguồn và bảo vệ EEPROM
// Khởi tạo ngắt so sánh điện áp Analog (ACSR) để phát hiện sụt nguồn < 4.6V
void SetupPowerFailureDetector() {
ADCSRA &= ~(1 << ADEN); // Tắt ADC để chuyển chân AIN0/AIN1 sang chế độ Comparator
ADCSRB &= ~(1 << ACME); // Chọn AIN1 làm ngõ vào đảo
ACSR = (1 << ACIE) | (1 << ACIS1) | (1 << ACIS0); // Ngắt khi điện áp AIN1 tụt dưới AIN0
}
ISR(ANALOG_COMP_vect) {
// Ghi tức thời số đếm hiện tại vào ô nhớ EEPROM 0x00 và 0x01
EEPROM.write(0, (byte)(currentCount >> 8));
EEPROM.write(1, (byte)(currentCount & 0xFF));
while(1); // Giữ CPU dừng hoạt động, xả toàn bộ năng lượng tụ còn lại
}
Xử lý giao tiếp C# và SQL Server tại Trạm trung tâm
// Xử lý luồng nhận gói tin LoRa từ SerialPort trong C#
private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
int bytesToRead = serialPort.BytesToRead;
byte[] buffer = new byte[bytesToRead];
serialPort.Read(buffer, 0, bytesToRead);
// Tìm kiếm Header gói tin 0xAA
for (int i = 0; i < buffer.Length - 3; i++)
{
if (buffer[i] == 0xAA)
{
byte countHigh = buffer[i + 1];
byte countLow = buffer[i + 2];
byte checksum = buffer[i + 3];
if ((countHigh ^ countLow) == checksum)
{
int currentCount = (countHigh << 8) | countLow;
this.Invoke(new Action(() => {
txtCurrentCount.Text = currentCount.ToString();
UpdateCountToDatabase(currentCount);
}));
}
}
}
}
Kiểm thử và đánh giá hiệu năng (Testing & Validation)
Hệ thống đã trải qua 500 chu kỳ thử nghiệm với các kịch bản thực tế nhằm xác định độ tin cậy và sai số:
+-----------------------------------------------------------------------------------+
| KẾT QUẢ ĐO KIỂM HIỆU NĂNG THEO KỊCH BẢN |
| |
| Kịch bản 1: Đếm bao đơn tiêu chuẩn (Khoảng cách 20cm) |
| [==================================================] 100% (200/200 bao) |
| |
| Kịch bản 2: Chuỗi 2-3 bao dính liền nhau liên tục |
| [================================================ ] 99.33% (149/150 bao) |
| |
| Kịch bản 3: Băng tải dừng đột ngột ngay vị trí cảm biến quang |
| [==================================================] 100% (50/50 lần) |
| |
| Kịch bản 4: Ngắt nguồn đột ngột khi đang đếm dở dang |
| [==================================================] 100% (100/100 lần lưu tốt) |
+-----------------------------------------------------------------------------------+
Bảng số liệu kiểm thử chi tiết
| Kịch bản kiểm thử |
Số lượng mẫu |
Số lượng đếm thực tế |
Số lượng sai lệch |
Tỷ lệ chính xác (%) |
Thời gian trễ đáp ứng |
| Bao đơn cách rời |
200 bao |
200 bao |
0 bao |
100.0% |
$12\text{ ms}$ |
| Bao dính liền (2 bao) |
50 cặp (100 bao) |
99 bao |
1 bao |
99.0% |
$25\text{ ms}$ |
| Bao dính liền (3 bao) |
20 chuỗi (60 bao) |
60 bao |
0 bao |
100.0% |
$38\text{ ms}$ |
| Mất nguồn đột ngột |
100 lần ngắt |
100 lần phục hồi |
0 lần mất dữ liệu |
100.0% |
$< 2\text{ ms}$ (EEPROM write) |
| Truyền LoRa cự ly 500m |
1000 gói tin |
998 gói nhận |
2 gói lỗi CRC |
99.8% |
$65\text{ ms}$ |
Đổi mới và đóng góp kỹ thuật
- Ứng dụng thành công LoRa trong tự động hóa dây chuyền nội xưởng: Thay thế toàn bộ dây cáp RS485 bằng liên kết vô tuyến LoRa SX1278 (433MHz). Khắc phục triệt để nhược điểm suy hao do khoảng cách và tiết kiệm hơn 70% chi phí dây truyền thông so với các giải pháp truyền thống.
- Kỹ thuật Sensor Fusion giá thành thấp: Tích hợp logic xử lý lai giữa cảm biến quang Autonics BX700-DDT (bắt sườn tín hiệu) và Rotary Encoder Omron E6B2-CWZ6C (tích lũy chiều dài xung). Giải pháp này giải quyết triệt để bài toán đếm sai khi sản phẩm bị dính liền hoặc dừng giữa chừng mà không cần sử dụng hệ thống xử lý ảnh công nghiệp đắt tiền.
- Cơ chế an toàn dữ liệu Zero-Loss Power Failure: Giải pháp phần cứng kết hợp ngắt Analog Comparator và tụ tích năng lượng đảm bảo dữ liệu đếm luôn được chốt an toàn vào EEPROM trước khi nguồn nuôi vi điều khiển cạn kiệt.
Ứng dụng thực tế và triển khai
+-----------------------------------------------------------------------------------+
| MÔ HÌNH VẬN HÀNH THỰC TẾ TẠI NHÀ MÁY |
| |
| [PHÒNG ĐIỀU HÀNH TRUNG TÂM] [BÃI XUẤT HÀNG XE TẢI] |
| +-------------------------------------+ +-------------------------+ |
| | - Máy tính SCADA / C# Management | | - Xe tải nhận hàng | |
| | - Nhập đơn hàng: 500 bao gạo | LoRa | - Bảng LED P10 hiển thị:| |
| | - Biển số xe: 63B-123.45 | <---------> | * Biển số: 63B-123.45 | |
| | - Gửi lệnh START qua LoRa | (433MHz) | * Đặt: 500 | |
| +-------------------------------------+ | * Đang đếm: 342 | |
| | +-------------------------+ |
| | LoRa Command ^ |
| v | |
| +-------------------------------------+ | |
| | DÂY CHUYỀN BĂNG TẢI (TRẠM ĐẾM CON) | | |
| | - Cảm biến BX700 + Encoder E6B2-C | -------------------------+ |
| | - Đếm tự động -> Ngắt khi đủ 500 bao| Cập nhật tức thời |
| +-------------------------------------+ |
+-----------------------------------------------------------------------------------+
Phân tích hiệu quả kinh tế và thời gian hoàn vốn (ROI)
- Chi phí triển khai mô hình: Ước tính khoảng $7.500.000\text{ VNĐ}$ (bao gồm cảm biến công nghiệp, 3 bộ vi điều khiển, module LoRa, bảng LED P10 và linh kiện phụ trợ).
- Hiệu quả giảm thiểu thất thoát: Tại một nhà máy xay xát công suất 10.000 bao/ngày, việc giảm tỷ lệ sai sót từ 1.5% xuống 0.2% giúp bảo toàn 130 bao hàng mỗi ngày, tương đương giá trị hàng chục triệu đồng mỗi tháng.
- Thời gian hoàn vốn ước tính: Dưới 03 tháng sau khi đưa vào vận hành chính thức.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Hệ thống mới thử nghiệm với 01 trạm đếm con; chưa mở rộng mạng lưới đa trạm đếm (Mesh Network) với cơ chế phân xử định thời (TDMA).
- Phần mềm giám sát C# hoạt động cục bộ trên máy tính để bàn (Desktop App), chưa tích hợp giao diện Web SCADA để theo dõi từ xa qua thiết bị di động.
- Mô hình băng chuyền thực nghiệm tải trọng nhẹ; cần kiểm thử thêm với các bao tải có trọng lượng thực tế lớn ($50\text{ kg}$).
Hướng phát triển nâng cao
- Nâng cấp chuẩn LoRaWAN Gateway: Chuyển đổi Trạm trung tâm thành LoRaWAN Gateway kết nối Server đám mây (AWS IoT / ThingsBoard).
- Tích hợp Camera AI nhận diện bao hỏng: Bổ sung module xử lý ảnh công nghiệp để phát hiện bao bì bị rách hoặc biến dạng trước khi đếm.
- Mở rộng giao thức truyền thông công nghiệp: Bổ sung cổng Modbus TCP/IP để dễ dàng ghép nối với các hệ thống PLC có sẵn của nhà máy.
Đối tượng hưởng lợi
- Sinh viên ngành Kỹ thuật Điện tử - Truyền thông, Tự động hóa: Tài liệu tham khảo hoàn chỉnh về thiết kế vi điều khiển ATmega328P, mạch lái LED công suất lớn và kỹ thuật lập trình ngắt.
- Kỹ sư nhúng & Lập trình viên IoT: Nắm bắt phương pháp điều khiển module LoRa SX1278 chế độ Target Mode và giải thuật Sensor Fusion xử lý tín hiệu thực tế.
- Doanh nghiệp và cơ sở sản xuất vừa & nhỏ: Mô hình giải pháp kiểm đếm chi phí thấp, triển khai nhanh chóng mà không cần cải tạo hạ tầng dây chuyền.
- Nhà nghiên cứu ứng dụng: Cung cấp tập dữ liệu đo kiểm thực tế về độ trễ, độ ổn định truyền thông vô tuyến trong môi trường công nghiệp.
Câu hỏi thường gặp (FAQ)
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}$ cho băng chuyền và nguồn hạ áp $12\text{ VDC}/5\text{ A}$ cho tủ điều khiển. Máy tính trung tâm cần cài đặt hệ điều hành Windows 7/10, RAM tối thiểu 2GB, có sẵn cổng USB và cài đặt .NET Framework 4.0 cùng SQL Server 2008 trở lên.
2. Sóng LoRa 433MHz có bị can nhiễu bởi các biến tần và động cơ công suất lớn trong xưởng không?
Module LoRa SX1278 ứng dụng kỹ thuật điều chế trải phổ Chirp Spread Spectrum (CSS), mang lại khả năng chống nhiễu vượt trội so với các chuẩn FSK/ASK truyền thống. Thử nghiệm thực tế cho thấy tỷ lệ mất gói tin qua khoảng cách $500\text{ m}$ trong xưởng có động cơ chỉ là $0.2%$.
3. Hệ thống có thể mở rộng thêm nhiều trạm đếm trên cùng một xưởng không?
Hoàn toàn khả thi. Do LoRa hỗ trợ tới 65.536 địa chỉ trạm và 32 kênh tần số, Trạm trung tâm có thể mở rộng quản lý hàng chục trạm đếm khác nhau bằng cách gán ID riêng biệt cho từng trạm và sử dụng cơ chế truyền nhận phân chia thời gian (Polling/TDMA).
4. Chi phí bảo trì định kỳ của hệ thống gồm những hạng mục nào?
Hệ thống sử dụng các cảm biến quang và encoder công nghiệp đạt chuẩn chống bụi IP65/IP67 nên chi phí bảo trì rất thấp. Công việc định kỳ chủ yếu bao gồm lau chùi thấu kính cảm biến quang (1 tháng/lần) và kiểm tra độ căng của khớp nối trục Encoder (3 tháng/lần).
5. Nếu mất điện hoàn toàn, dữ liệu số đếm được giữ lại trong bao lâu?
Số đếm được lưu trong bộ nhớ Flash EEPROM của ATmega328P. Đây là bộ nhớ bất biến (Non-volatile memory), có khả năng lưu trữ dữ liệu an toàn mà không cần nguồn nuôi trong hơn 20 năm hoặc $100.000$ lần ghi xóa.
Kết luận
Đề tài "Thiết kế mô hình kiểm đếm trên dây chuyền" đã giải quyết triệt để các bài toán khó khăn trong khâu quản lý đóng gói và xuất hàng công nghiệp: loại bỏ sai số do bao dính liền nhờ sự kết hợp giữa cảm biến quang BX700-DDT và Encoder E6B2-CWZ6C; xóa bỏ sự phụ thuộc vào mạng cáp truyền dẫn phức tạp bằng công nghệ sóng vô tuyến LoRa SX1278; đồng thời ngăn chặn hoàn toàn rủi ro mất mát dữ liệu nhờ cơ chế lưu EEPROM thông qua ngắt sụt áp. Với chi phí lắp đặt tối ưu và khả năng vận hành ổn định, hệ thống là giải pháp chuyển đổi số thiết thực, sẵn sàng ứng dụng cho các dây chuyền sản xuất hiện đại.