Giới thiệu dự án
Trong kỷ nguyên chuyển đổi số và công nghiệp hóa hiện đại, nhu cầu giám sát và điều khiển thiết bị từ xa (Telemetry & Remote Control) đóng vai trò then chốt trong các lĩnh vực nông nghiệp công nghệ cao, quan trắc môi trường và tự động hóa công nghiệp. Theo các báo cáo viễn thông, mạng di động không dây (Cellular Network) phủ sóng hơn 90% diện tích dân cư, tạo tiền đề hoàn hảo cho việc truyền dẫn dữ liệu telemetry ở những vị trí địa lý hiểm trở mà mạng có dây (LAN/RS-485) hoặc sóng tầm ngắn (ZigBee, Wi-Fi, Bluetooth) không thể đáp ứng.
Vấn đề thực tế đặt ra là các hệ thống giám sát từ xa truyền thống thường gặp nhiều hạn chế:
- Chi phí vận hành cao: Sử dụng tin nhắn SMS thông thường gây tốn kém cước phí lớn khi tần suất gửi bản tin dày đặc (hàng nghìn SMS mỗi tháng).
- Hạn chế giao diện tương tác: Phụ thuộc vào máy tính cá nhân (PC) cồng kềnh đặt tại trung tâm điều khiển, thiếu tính cơ động cho người vận hành tại hiện trường.
- Rủi ro gián đoạn mạng: Thiếu cơ chế đồng bộ thời gian thực và tự phục hồi kết nối khi module vô tuyến gặp sự cố mất sóng tạm thời.
Đề tài "Thiết kế hệ thống thu thập dữ liệu qua mạng 3G" (thực hiện bởi sinh viên Trần Quyết Lãm, Ngô Triệu Vinh – Khoa Đào tạo Chất lượng cao, Trường Đại học Sư phạm Kỹ thuật TP.HCM; GVHD: ThS. Nguyễn Văn Hiệp) được nghiên cứu nhằm giải quyết trọn vẹn bài toán trên.
Hệ thống hướng đến 5 mục tiêu kỹ thuật cụ thể:
- Thiết kế và thi công phần cứng module đo lường, điều khiển trung tâm dựa trên vi điều khiển Microchip PIC18F2550, tích hợp cảm biến nhiệt độ - độ ẩm DHT11 và đồng hồ thời gian thực RTC DS1307 qua giao tiếp I2C.
- Tích hợp module truyền thông GSM/GPRS/3G SIMCom SIM900 truyền tải dữ liệu cảm biến trực tiếp lên Web Server thông qua giao thức HTTP (thay thế giải pháp SMS).
- Xây dựng hệ thống máy chủ cơ sở dữ liệu trên nền tảng LAMP (Linux, Apache, MySQL 5.5, PHP 5.6) để tiếp nhận, lưu trữ và đồng bộ hóa hai chiều (Two-way Data Sync) giữa phần cứng và ứng dụng di động.
- Phát triển ứng dụng Native Android (Android SDK API level 14 - 21) cho phép người dùng đăng nhập bảo mật, theo dõi trực quan các thông số môi trường theo thời gian thực và phát lệnh điều khiển bật/tắt thiết bị điện 220V AC qua Relay.
- Kiểm thử độ trễ truyền thông toàn trình (End-to-End Latency < 3 giây), tỷ lệ truyền gói tin thành công (> 98%) và tính ổn định của mạch điều khiển trong môi trường làm việc liên tục 24/7.
+-----------------------------------------------------------------------------------+
| KIẾN TRÚC TỔNG THỂ HỆ THỐNG |
+-----------------------------------------------------------------------------------+
| [Cảm biến DHT11] --(1-Wire)--> [MCU PIC18F2550] <--(UART 9600)--> [SIM900 GPRS] |
| [DS1307 RTC] <--(I2C)----/ | | |
| [Relay 220VAC] <--(GPIO)-----------/ (GPRS/3G IP) |
| | |
| v |
| [Android App] <--(HTTP GET/POST)--> [Web Server: Apache + PHP] <--> [MySQL DB] |
+-----------------------------------------------------------------------------------+
Phạm vi nghiên cứu tập trung vào hệ sinh thái Android 4.0 trở lên, mạng di động GPRS/3G (GSM 850/900/1800/1900 MHz) và các thiết bị chấp hành công suất trung bình.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Trước khi đề xuất kiến trúc mới, nhóm nghiên cứu đã tiến hành đánh giá chi tiết các giải pháp truyền thông telemetry hiện có trên thị trường:
| Tiêu chí |
Hệ thống Telemetry qua SMS |
Mạng cảm biến không dây ZigBee / Wi-Fi |
Giải pháp GPRS/3G kết hợp Web Server (Đề tài) |
| Phạm vi truyền dẫn |
Toàn cầu (theo sóng GSM) |
Cục bộ (< 100m với Wi-Fi, < 1.5km với ZigBee Mesh) |
Toàn cầu (bất kỳ nơi nào có sóng di động 2.5G/3G) |
| Chi phí truyền dữ liệu |
Rất cao (~100 - 300 VNĐ/tin nhắn SMS) |
Miễn phí cước mạng (tốn chi phí hạ tầng Gateway) |
Rất thấp (tính theo gói Data GPRS/3G, ~5.000 VNĐ/tháng) |
| Băng thông & Giao thức |
140 byte/SMS (text-only) |
250 kbps (ZigBee) / 54+ Mbps (Wi-Fi) |
56 - 114 kbps (GPRS Class 10) / HSDPA 7.2 Mbps (3G) |
| Độ trễ phản hồi |
5 - 15 giây (phụ thuộc SMSC) |
Dưới 200 ms |
1.5 - 3 giây qua HTTP Request |
| Khả năng mở rộng Client |
Giới hạn 1 số điện thoại nhận |
Cần kết nối cùng mạng LAN hoặc cấu hình NAT Port |
Đa điểm (hàng trăm Client Android truy cập cùng lúc) |
Phân tích yêu cầu chức năng theo phương pháp MoSCoW:
- Must Have: Thu thập nhiệt độ, độ ẩm; gửi dữ liệu qua GPRS HTTP; lưu trữ vào MySQL; hiển thị và điều khiển relay từ Android App; bảo vệ quá dòng/quá áp mạch nguồn SIM900.
- Should Have: Đồng bộ thời gian thực DS1307 hiển thị LCD 16x2 cục bộ; lưu vết lịch sử vận hành (Logging history); tự động kết nối lại khi mất sóng mạng.
- Could Have: Cảnh báo ngưỡng nhiệt độ/độ ẩm qua Notification trên Android; xuất dữ liệu CSV.
- Won't Have: Giao tiếp mã hóa đầu cuối TLS/HTTPS (phiên bản thử nghiệm dùng HTTP tiêu chuẩn để tối ưu tài nguyên MCU 8-bit).
Thiết kế hệ thống
Hệ thống gồm 3 tầng kiến trúc chính:
- Tầng Thiết bị (Edge/Hardware Layer):
- MCU trung tâm: Microchip PIC18F2550 (Kiến trúc Harvard 8-bit, xung nhịp 20 MHz, bộ nhớ Flash 32KB, SRAM 2048 Bytes, tích hợp module phần cứng EUSART, I2C/SPI).
- Module mạng: SIMCom SIM900 Quad-band kết nối vi điều khiển qua kênh UART (Universal Asynchronous Receiver/Transmitter) mức logic TTL với tốc độ truyền 9600 baud, định dạng khung truyền 8-N-1 (8 Data bits, No Parity, 1 Stop bit).
- Cảm biến: DHT11 (đo nhiệt độ 0°C – 50°C sai số ±2°C, độ ẩm 20% – 90% RH sai số ±5%) sử dụng giao tiếp Single-Bus (1 dây tín hiệu).
- Khối RTC: IC DS1307 giao tiếp qua chuẩn I2C (Inter-Integrated Circuit) với 2 đường SDA (Serial Data) và SCL (Serial Clock), có điện trở kéo lên 4.7 kΩ lên nguồn 5V.
- Khối nguồn cấp: Bộ chỉnh lưu hạ áp sử dụng LM2576-5.0 / LM2596 (nguồn xung Buck Converter DC-DC) đáp ứng dòng đỉnh tức thời 2.0A cho SIM900 khi phát xung sóng vô tuyến (Burst transmission).
+-----------------------------------------------------------------------+
| SƠ ĐỒ NGUYÊN LÝ KHỐI PHẦN CỨNG |
+-----------------------------------------------------------------------+
| +--------------------+ |
| | Nguồn Adapter 12V |---> [LM2576/LM2596] ---> 5V VCC (2A Peak) |
| +--------------------+ | |
| +--> SIM900 |
| +--> PIC18F2550 |
| +--> LCD 16x2 |
| |
| [DHT11 Data] -------> Pin RB0 (GPIO) [PIC18F2550] |
| [DS1307 SCL/SDA] ---> Pin RC3/RC4 (I2C) - Xung: 20MHz |
| [LCD16x2 D4-D7] ----> Pin RB4-RB7 (4-bit) - Flash: 32KB |
| [Relay Out] --------> Pin RC0 (Transistor Driver) |
| [SIM900 TX/RX] <----> Pin RC6/RC7 (Hardware UART - 9600 bps) |
+-----------------------------------------------------------------------+
- Tầng Máy chủ Trung gian (Server/Database Layer):
- Hạ tầng: Web Hosting chạy Apache 2.4 trên nền tảng Linux OS.
- Ngôn ngữ xử lý: PHP 5.6 biên dịch script dạng RESTful API đơn giản để nhận tham số HTTP GET từ module SIM900 và trả JSON/Plaintext về cho Android.
- Cơ sở dữ liệu MySQL 5.5: Lưu trữ bảng
sensor_data (ID, Nhiệt độ, Độ ẩm, Thời gian ghi nhận) và bảng device_status (ID, Tên thiết bị, Trạng thái Relay 0/1, Thời điểm cập nhật cuối).
-- Cấu trúc bảng lưu dữ liệu cảm biến
CREATE TABLE `tb_sensor_data` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`temperature` FLOAT NOT NULL,
`humidity` FLOAT NOT NULL,
`timestamp` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- Cấu trúc bảng điều khiển thiết bị
CREATE TABLE `tb_device_control` (
`device_id` INT(11) NOT NULL,
`relay_state` TINYINT(1) NOT NULL DEFAULT 0,
`last_updated` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`device_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- Tầng Ứng dụng Di động (Client Application Layer):
- Xây dựng bằng ngôn ngữ Java trên môi trường phát triển Android Studio.
- Luồng kiến trúc sử dụng
AsyncTask thực hiện các tác vụ mạng HttpURLConnection ở chế độ bất đồng bộ, tránh hiện tượng nghẽn luồng giao diện chính (Application Not Responding - ANR).
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 Prototyping) trong tổng thời gian 16 tuần:
| Tuần |
Giai đoạn |
Nội dung công việc & Deliverables |
| W1 - W3 |
Khảo sát & Thiết kế sơ bộ |
Thu thập tài liệu tập lệnh AT Command SIM900, thiết kế sơ đồ nguyên lý Altium Designer cho PIC18F2550. |
| W4 - W7 |
Phát triển Phần cứng & Firmware |
Thi công mạch in PCB một lớp, lập trình giao thức DHT11/DS1307/UART trên trình biên dịch CCS C Compiler. |
| W8 - W11 |
Xây dựng Server & App Android |
Thiết lập MySQL DB trên Web Host, viết script PHP xử lý Request, thiết kế giao diện UI XML trên Android Studio. |
| W12 - W14 |
Tích hợp hệ thống toàn trình |
Ghép nối phần cứng với Server qua GPRS, kiểm thử lệnh điều khiển phản hồi từ Android về Relay. |
| W15 - W16 |
Kiểm thử tải, đánh giá & Báo cáo |
Đo lường độ trễ mạng, hiệu chỉnh thuật toán phục hồi lỗi mất kết nối GPRS, hoàn thiện luận văn. |
Bảng đánh giá rủi ro kỹ thuật và biện pháp giảm thiểu:
- Sụt áp khi SIM900 phát sóng vô tuyến: Bổ sung tụ điện hóa Low-ESR dung lượng lớn (1000µF – 2200µF) gắn sát chân VCC của module SIM.
- Mất kết nối GPRS (Packet Drop): Firmware thiết lập Timeout và bộ đếm thử lại (Retry Mechanism, tối đa 3 lần), nếu không phản hồi sẽ gửi lệnh
AT+CIPSHUT để khởi động lại phiên truyền dữ liệu gói.
- Xung đột truy xuất cơ sở dữ liệu: Tối ưu hóa chỉ mục (Index) trên MySQL và giới hạn tần suất truy vấn Polling từ ứng dụng Android.
Implementation và kết quả
Development process
1. Lập trình nhúng Firmware cho PIC18F2550 (CCS C Compiler)
Firmware được viết bằng ngôn ngữ C trên trình biên dịch CCS C (PCH Compiler cho dòng vi điều khiển 16-bit / 18-bit opcode của Microchip).
Đoạn mã cấu hình UART và gửi tập lệnh AT Command kích hoạt phiên HTTP GET qua GPRS của SIM900:
#include <18F2550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000) // Thạch anh 20 MHz
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7, stream=SIM900)
void send_data_to_server(float temp, float hum) {
// 1. Kiểm tra trạng thái mạng GPRS
fprintf(SIM900, "AT+CGATT=1\r\n");
delay_ms(2000);
// 2. Cấu hình Profile mạng không dây (APN Viettel: v-internet)
fprintf(SIM900, "AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n");
delay_ms(1000);
fprintf(SIM900, "AT+SAPBR=3,1,\"APN\",\"v-internet\"\r\n");
delay_ms(1000);
fprintf(SIM900, "AT+SAPBR=1,1\r\n"); // Mở kết nối GPRS Bearer
delay_ms(3000);
// 3. Khởi tạo dịch vụ HTTP Client
fprintf(SIM900, "AT+HTTPINIT\r\n");
delay_ms(1000);
fprintf(SIM900, "AT+HTTPPARA=\"CID\",1\r\n");
delay_ms(500);
// 4. Thiết lập đường dẫn URL kèm tham số cảm biến
fprintf(SIM900, "AT+HTTPPARA=\"URL\",\"http://vinhspkt.byethost.com/update_data.php?temp=%.1f&hum=%.1f\"\r\n", temp, hum);
delay_ms(1000);
// 5. Thực thi HTTP GET Method (0 = GET, 1 = POST, 2 = HEAD)
fprintf(SIM900, "AT+HTTPACTION=0\r\n");
delay_ms(3000);
// 6. Đóng phiên HTTP để giải phóng bộ nhớ đệm
fprintf(SIM900, "AT+HTTPTERM\r\n");
delay_ms(500);
fprintf(SIM900, "AT+SAPBR=0,1\r\n"); // Ngắt Bearer Profile
delay_ms(1000);
}
2. Xử lý kịch bản Backend trên Server (update_data.php)
Kịch bản PHP tiếp nhận Request, làm sạch dữ liệu đầu vào (Input Sanitization) và thực hiện truy vấn INSERT vào bảng tb_sensor_data:
<?php
$servername = "localhost";
$username = "sql_vinhspkt";
$password = "SecretPass123";
$dbname = "db_telemetry";
// Tạo kết nối MySQLi
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
if (isset($_GET['temp']) && isset($_GET['hum'])) {
$temp = floatval($_GET['temp']);
$hum = floatval($_GET['hum']);
$stmt = $conn->prepare("INSERT INTO tb_sensor_data (temperature, humidity) VALUES (?, ?)");
$stmt->bind_param("dd", $temp, $hum);
if ($stmt->execute()) {
echo "SUCCESS";
} else {
echo "ERROR: " . $stmt->error;
}
$stmt->close();
}
$conn->close();
?>
3. Xử lý đồng bộ dữ liệu trên Android Client (Java)
Class FetchDataTask kế thừa AsyncTask để gửi yêu cầu lấy dữ liệu cảm biến mới nhất từ Web Server mà không khóa luồng UI:
public class FetchDataTask extends AsyncTask<String, Void, String> {
private TextView tvTemp, tvHum;
public FetchDataTask(TextView tvTemp, TextView tvHum) {
this.tvTemp = tvTemp;
this.tvHum = tvHum;
}
@Override
protected String doInBackground(String... urls) {
StringBuilder result = new StringBuilder();
try {
URL url = new URL(urls[0]);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000); // 5s timeout
conn.setReadTimeout(5000);
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
reader.close();
return result.toString();
} catch (Exception e) {
return null;
}
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
try {
JSONObject json = new JSONObject(result);
tvTemp.setText(String.format("%s °C", json.getString("temperature")));
tvHum.setText(String.format("%s %%", json.getString("humidity")));
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
Testing và validation
Hệ thống đã trải qua quá trình kiểm thử nghiêm ngặt tại phòng thí nghiệm Viễn thông:
- Kiểm thử chu kỳ truyền nhận (Data Cycle Benchmark): Thực hiện chu kỳ gửi dữ liệu cảm biến mỗi 30 giây liên tục trong 48 giờ.
- Tổng số gói tin gửi: 5.760 gói.
- Số gói tin ghi nhận thành công tại MySQL: 5.679 gói.
- Tỷ lệ gửi thành công (Packet Delivery Ratio): 98.59%.
- Lỗi phát sinh chủ yếu: Do nhà mạng rớt sóng GPRS tạm thời vào giờ cao điểm, firmware đã tự động phục hồi kết nối sau 3 lần retry mà không cần reset nguồn vi điều khiển.
- Kiểm thử độ trễ phản hồi (Latency Testing):
- Thời gian khởi tạo phiên GPRS Bearer và HTTP GET từ SIM900: 1.8 – 2.5 giây.
- Thời gian trễ phát lệnh điều khiển từ Android App đến khi Relay đảo trạng thái: 1.5 – 3.2 giây.
- Tiêu thụ dữ liệu mạng (Data Consumption): Mỗi bản tin HTTP GET tiêu tốn ~420 bytes payload + TCP header. Với tần suất gửi 1 phút/lần, lưu lượng mạng hàng tháng chỉ khoảng 18.5 MB, hoàn toàn nằm trong các gói cước Data 3G/GPRS cơ bản.
+-----------------------------------------------------------------------+
| KẾT QUẢ BENCHMARK HỆ THỐNG |
+-----------------------------------------------------------------------+
| Tiêu chí kiểm thử | Kết quả thực tế đạt được |
| -------------------------------- | --------------------------------- |
| Tỷ lệ gửi gói tin thành công | 98.59% (5.679 / 5.760 gói) |
| Độ trễ điều khiển bật/tắt Relay | 1.5 - 3.2 giây |
| Độ chính xác nhiệt độ (DHT11) | ± 1.5 °C (so chuẩn nhiệt kế thủy) |
| Độ chính xác độ ẩm (DHT11) | ± 4.2 % RH |
| Lưu lượng Data tiêu thụ/tháng | ~ 18.5 MB / SIM (Chu kỳ 60s) |
+-----------------------------------------------------------------------+
Kết quả đạt được
Hệ thống phần cứng và phần mềm đã hoàn thành đúng 100% các mục tiêu đề ra ban đầu:
- Phần cứng: Mạch PCB hoạt động ổn định, LCD 16x2 hiển thị rõ ràng thông số môi trường và thời gian thực từ DS1307; Relay đóng cắt êm thuận, an toàn với tải xoay chiều 220V AC / 5A.
- Phần mềm di động: Ứng dụng Android chạy mượt mà trên các thiết bị Android 4.4 KitKat và Android 5.0 Lollipop; hỗ trợ đầy đủ 3 Tab chức năng: Giám sát thời gian thực, Điều khiển thiết bị trực quan và Xem lịch sử dữ liệu.
Đổi mới và đóng góp
- Chuyển dịch giao thức từ SMS sang HTTP/GPRS:
Thay vì sử dụng SMS truyền thống tốn kém (~150 VNĐ/bản tin), đề tài tiên phong ứng dụng giao thức mạng gói HTTP qua GPRS/3G trên vi điều khiển 8-bit PIC18F, giúp giảm 95% chi phí viễn thông hàng tháng trong khi tăng khả năng cập nhật dữ liệu liên tục.
- Kiến trúc đồng bộ dữ liệu tập trung qua Cloud Database:
Thiết lập mô hình trung gian máy chủ LAMP giúp tách rời phần cứng nhúng và thiết bị người dùng. Bất kỳ lúc nào, nhiều người quản lý có thể cùng truy cập vào cơ sở dữ liệu MySQL thông qua App Android mà không gây nghẽn phần cứng của trạm đo tại hiện trường.
- Thuật toán tự phục hồi kết nối (Auto-Recovery State Machine):
Firmware vi điều khiển được cài đặt cỗ máy trạng thái (FSM - Finite State Machine) với cơ chế giải phóng bộ đệm mạng và tái kích hoạt
AT+CIPSHUT -> AT+SAPBR, triệt tiêu hoàn toàn nguy cơ "treo module" khi gặp sự cố sóng di động.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng thực tế
- Nông nghiệp công nghệ cao: Giám sát vi khí hậu (nhiệt độ, độ ẩm) trong các nhà kính trồng lan, dưa lưới tại Lâm Đồng, tự động hoặc điều khiển từ xa hệ thống phun sương, quạt thông gió qua mạng di động.
- Trạm quan trắc trạm biến áp điện lực: Đặt tại các trạm biến áp vùng sâu, vùng xa để theo dõi nhiệt độ môi trường quanh máy biến áp và điều khiển quạt làm mát khẩn cấp từ trung tâm điều hành.
- Kho bảo quản dược phẩm, thực phẩm đông lạnh: Cập nhật liên tục trạng thái kho lạnh về ứng dụng di động của quản kho, ghi log dữ liệu phục vụ tiêu chuẩn kiểm định GSP/GMP.
Phân tích hiệu quả kinh tế (Cost-Benefit Analysis)
- Chi phí phần cứng trạm đo: ~850.000 VNĐ/module (bao gồm PIC18F2550, SIM900 Mini, DHT11, DS1307, nguồn Buck và Relay).
- Chi phí vận hành cước viễn thông: ~10.000 VNĐ/tháng (gói cước Data 3G dung lượng thấp).
- Thời gian hoàn vốn (ROI): Ước tính trong vòng 3 - 6 tháng so với chi phí thuê nhân công trực tiếp ghi chép chỉ số tại các vị trí xa xôi.
Hạn chế và hướng phát triển
Hạn chế kỹ thuật hiện tại
- Cảm biến DHT11 có dải đo hẹp và độ chính xác ở mức phổ thông (không phù hợp cho môi trường công nghiệp khắc nghiệt dưới 0°C hoặc trên 50°C).
- Module SIM900 chỉ hỗ trợ mạng 2G/2.5G GPRS; khi các nhà mạng viễn thông tiến hành tắt sóng 2G/3G trong tương lai, module cần được nâng cấp.
- Cơ chế truyền nhận dựa trên Polling HTTP định kỳ gây hao phí tài nguyên mạng so với các giao thức chuyên dụng cho IoT (như MQTT hoặc CoAP).
Hướng phát triển tiếp theo
- Nâng cấp phần cứng sang vi điều khiển 32-bit (ESP32 hoặc STM32) kết hợp module 4G LTE Cat-1 / NB-IoT (như SIM7600E hoặc SIM7020E) để đón đầu xu thế viễn thông mới.
- Thay thế cảm biến DHT11 bằng dòng cảm biến số công nghiệp SHT30 / SHT35 hoặc DS18B20 chuẩn chống nước IP67.
- Chuyển đổi kiến trúc giao tiếp sang giao thức MQTT (Message Queuing Telemetry Transport) có mã hóa bảo mật TLS/SSL, kết hợp dịch vụ đẩy thông báo khẩn cấp Firebase Cloud Messaging (FCM) lên smartphone.
- Bổ sung bộ nguồn phụ trợ năng lượng mặt trời (Solar Panel + Pin sạc LiFePO4) để trạm đo hoạt động hoàn toàn độc lập với lưới điện.
Đối tượng hưởng lợi
- Sinh viên & Học viên chuyên ngành: Cung cấp tài liệu tham khảo chi tiết từ thiết kế sơ đồ mạch phần cứng, tập lệnh vi điều khiển AT Command cho đến lập trình ứng dụng Android và kiến trúc Database.
- Kỹ sư nhúng & IoT Developer: Tham khảo quy trình tích hợp module vô tuyến GSM/GPRS với vi điều khiển Microchip PIC qua chuẩn giao tiếp UART, kỹ thuật xử lý nguồn dòng cao cho module viễn thông.
- Chủ trang trại & Doanh nghiệp: Nắm bắt mô hình tự động hóa giám sát từ xa với chi phí đầu tư ban đầu thấp, nâng cao năng suất quản lý và giảm thiểu rủi ro vận hành.
- Nhà nghiên cứu khoa học: Cung cấp dữ liệu thực nghiệm về độ trễ, lưu lượng và độ tin cậy của mạng gói di động trong các bài toán đo lường từ xa.
Câu hỏi thường gặp
-
Tại sao hệ thống sử dụng module SIM900 thay vì kết nối Wi-Fi thông thường?
Trả lời: Wi-Fi bị giới hạn phạm vi phát sóng (khoảng 50 – 100m) và đòi hỏi phải có hạ tầng Access Point cố định. Module SIM900 sử dụng sóng mạng di động GSM/GPRS, cho phép hệ thống triển khai ở bất kỳ địa điểm nào có sóng điện thoại (rừng, đồi núi, cánh đồng rộng lớn).
-
Nguồn điện cấp cho module SIM900 cần đáp ứng yêu cầu kỹ thuật gì đặc biệt?
Trả lời: Module SIM900 yêu cầu điện áp định mức 3.4V – 4.5V (hoặc 5V đối với board phát triển tích hợp) và phải có khả năng chịu được dòng đỉnh tức thời (Peak Current) lên tới 2.0A trong vài mili-giây khi phát sóng RF. Do đó, hệ thống sử dụng IC nguồn xung Buck LM2576/LM2596 kết hợp tụ lọc 2200µF để ngăn ngừa hiện tượng sụt áp làm reset module.
-
Làm thế nào để ứng dụng Android nhận biết trạng thái relay thay đổi khi có nhiều người cùng điều khiển?
Trả lời: Ứng dụng Android định kỳ gửi HTTP GET Request đến Web Server để truy vấn trạng thái mới nhất từ bảng tb_device_control trong cơ sở dữ liệu MySQL. Mọi lệnh điều khiển từ bất kỳ máy nào đều cập nhật trực tiếp vào cơ sở dữ liệu trung tâm này.
-
Khi mạng di động bị mất sóng tạm thời, dữ liệu cảm biến có bị mất không?
Trả lời: Ở phiên bản hiện tại, dữ liệu trong chu kỳ bị rớt mạng sẽ bị bỏ qua sau khi vượt quá 3 lần gửi lại. Hướng nâng cấp đề xuất là sử dụng bộ nhớ ngoài EEPROM (như 24C32 tích hợp sẵn trên module RTC DS1307) để lưu đệm dữ liệu (Data Logging) và đồng bộ lên server ngay khi kết nối mạng được khôi phục.
-
Chi phí duy trì hệ thống máy chủ và cước SIM hàng tháng là bao nhiêu?
Trả lời: Hệ thống có thể chạy trên các gói Web Hosting cơ bản (~30.000 – 50.000 VNĐ/tháng hoặc gói miễn phí khi học tập). Cước phí duy trì SIM di động gói cước Data M2M chỉ khoảng 10.000 – 20.000 VNĐ/tháng do dung lượng truyền dữ liệu mỗi chu kỳ rất nhỏ (~18.5 MB/tháng).
Kết luận
Đồ án tốt nghiệp "Thiết kế hệ thống thu thập dữ liệu qua mạng 3G" của nhóm sinh viên Trường Đại học Sư phạm Kỹ thuật TP.HCM đã giải quyết thành công bài toán giám sát và điều khiển thiết bị từ xa không giới hạn khoảng cách địa lý. Bằng việc kết hợp hài hòa giữa phần cứng vi điều khiển PIC18F2550, module viễn thông SIMCom SIM900, hệ quản trị máy chủ LAMP và ứng dụng di động Android, đề tài đã chứng minh tính khả thi vượt trội về mặt kỹ thuật lẫn hiệu quả kinh tế.
Hệ thống đạt tỷ lệ truyền gói tin thành công ấn tượng 98.59%, độ trễ điều khiển thời gian thực dưới 3.2 giây, đồng thời tiết kiệm hơn 95% chi phí viễn thông so với giải pháp SMS truyền thống. Đây là nền tảng kỹ thuật vững chắc, mở ra tiềm năng ứng dụng sâu rộng trong các giải pháp Smart Agriculture, Smart Factory và thành phố thông minh trong tương lai. Bạn đọc và các nhà phát triển quan tâm có thể ứng dụng trực tiếp mô hình kiến trúc này để triển khai các dự án IoT thực tế của mình.