Bối cảnh và vấn đề nghiên cứu

Trong công tác quản lý tài nguyên và bảo vệ môi trường, việc giám sát chất lượng nước đóng vai trò then chốt nhằm phát hiện sớm các nguy cơ ô nhiễm, bảo vệ hệ sinh thái và sức khỏe cộng đồng. Báo cáo đồ án môn học "Thiết kế thiết bị ứng dụng vi điều khiển và cảm biến" (PBL3) của sinh viên ngành Kỹ thuật Cơ điện tử, Khoa Cơ khí - Trường Đại học Bách khoa, Đại học Đà Nẵng (năm 2024) tập trung giải quyết bài toán kỹ thuật: xây dựng hệ thống đo đạc các thông số chất lượng nước theo thời gian thực và truyền tải dữ liệu giám sát từ xa qua nền tảng Internet vạn vật (IoT).

Phương pháp kiểm tra chất lượng nguồn nước truyền thống chủ yếu dựa vào việc thu thập mẫu thủ công tại hiện trường rồi vận chuyển về phòng thí nghiệm chuyên dụng để phân tích hóa lý. Quy trình này bộc lộ nhiều hạn chế: tiêu tốn nhiều thời gian, phát sinh chi phí nhân lực và hóa chất, đặc biệt là không thể đáp ứng yêu cầu theo dõi liên tục theo từng giờ hoặc cảnh báo tức thời khi xảy ra sự cố đột biến. Do đó, việc xây dựng một hệ thống phần cứng nhúng kết hợp mạng truyền thông không dây để thu thập dữ liệu định kỳ và truyền về máy chủ giám sát là một nhu cầu cấp thiết.

Hệ thống được thiết kế hướng tới các mục tiêu và nhiệm vụ kỹ thuật cụ thể:

  1. Nghiên cứu nguyên lý hoạt động, cấu trúc chân, tập lệnh và phương thức ghép nối của các linh kiện phần cứng chính, bao gồm vi điều khiển PIC16F877A, mô-đun Wi-Fi ESP8266, màn hình hiển thị LCD 20x4, cảm biến đo tổng chất rắn hòa tan (TDS Sensor) và cảm biến nhiệt độ môi trường nước DS18B20.
  2. Thiết kế hoàn chỉnh sơ đồ nguyên lý mạch điện tử (schematic) và bản vẽ mạch in (layout PCB) gồm các khối: khối nguồn hạ áp ổn định (12VDC sang 5VDC và 3.3VDC), khối xử lý trung tâm, khối cảm biến và khối truyền thông.
  3. Lập trình vi điều khiển PIC16F877A bằng ngôn ngữ C (trình biên dịch CCS C) để thực hiện đọc tín hiệu tương tự (ADC 10-bit) từ cảm biến TDS, giao tiếp chuẩn 1-Wire với cảm biến số DS18B20, chuyển đổi dữ liệu, hiển thị giá trị đo lên màn hình LCD và xuất dữ liệu định dạng chuỗi qua giao thức nối tiếp UART.
  4. Lập trình mô-đun Wi-Fi ESP8266 để tiếp nhận chuỗi ký tự qua cổng UART từ PIC16F877A, phân tách hai trường dữ liệu nhiệt độ và TDS, sau đó thiết lập kết nối Wi-Fi cục bộ và gửi dữ liệu lên nền tảng đám mây ThingSpeak qua giao thức HTTP POST để trực quan hóa đồ thị.

Đối tượng nghiên cứu của đề tài là các đại lượng vật lý và hóa lý cơ bản biểu diễn chất lượng nước, trọng tâm là tổng chất rắn hòa tan (TDS, đơn vị ppm), độ dẫn điện (EC) và nhiệt độ (°C). Phạm vi nghiên cứu giới hạn ở mô hình thiết kế thử nghiệm trong phòng thí nghiệm, thực hiện mô phỏng chức năng trên phần mềm Proteus, gia công mạch phần cứng thực tế và truyền dữ liệu lên Webserver ThingSpeak trong điều kiện mạng nội bộ tại thời điểm thực hiện đề tài (năm 2024).


Cơ sở lý thuyết và phương pháp

Đề tài kết hợp kiến thức liên ngành giữa kỹ thuật vi điều khiển, kỹ thuật cảm biến công nghiệp, thiết kế mạch điện tử và lập trình truyền thông IoT.

Nền tảng lý thuyết và công nghệ sử dụng trong hệ thống gồm:

  • Kiến trúc vi điều khiển RISC: Vi điều khiển PIC16F877A của hãng Microchip Technology được chọn làm bộ xử lý trung tâm. Vi điều khiển này sở hữu tập lệnh rút gọn gồm 35 lệnh độ dài 14 bit, tần số hoạt động danh định hỗ trợ đến 20 MHz (trong đồ án thiết lập thạch anh dao động 8 MHz), tích hợp 8 kênh chuyển đổi tín hiệu tương tự sang số (ADC) độ phân giải 10-bit, cùng 8 nguồn ngắt độc lập phục vụ việc xử lý ngoại vi.
  • Chuẩn truyền thông 1-Wire: Giao thức truyền thông một dây độc quyền của Maxim Integrated được áp dụng để giao tiếp với cảm biến nhiệt độ DS18B20. Chuẩn này cho phép truyền nhận dữ liệu số hai chiều và cấp nguồn ký sinh chỉ qua một dây tín hiệu duy nhất kèm một điện trở kéo lên (pull-up resistor), nhờ mã định danh ROM 64-bit độc bản khắc bằng laser trên từng cảm biến.
  • Chuẩn truyền thông nối tiếp bất đồng bộ (UART): Giao tiếp giữa PIC16F877A và ESP8266 được cấu hình với tốc độ truyền 9600 bps, khung truyền 8-bit dữ liệu, không sử dụng bit kiểm tra chẵn lẻ (parity none) và 1 bit dừng (stop bit).
  • Mô hình toán học chuyển đổi chỉ số chất lượng nước: Quan hệ giữa tổng chất rắn hòa tan và độ dẫn điện tuân theo công thức: $$\text{TDS}\ (\text{mg/L}) = k_e \times \text{EC}$$ Trong đó $k_e$ là hệ số dao động thực nghiệm (thường chọn $0{,}67$). Trong mã nguồn lập trình, hàm phi tuyến bậc 3 được ứng dụng để quy đổi điện áp đo được từ bộ ADC sang giá trị TDS: $$\text{tds} = 133{,}42 \times \text{ec}^3 - 255{,}5$$
  • Kiến trúc truyền thông IoT đám mây: Sử dụng mô hình Client-Server thông qua giao thức HTTP Client. Mô-đun ESP8266 đóng vai trò máy trạm (HTTP Client) gửi bản tin cập nhật tham số lên API Server của ThingSpeak qua địa chỉ định tuyến tĩnh kèm mã khóa xác thực (Write API Key).

Phương pháp nghiên cứu thực nghiệm được triển khai tuần tự:

  • Phương pháp phân tích tài liệu kỹ thuật (datasheet) để trích xuất sơ đồ chân, giản đồ xung định thời và thông số vận hành điện áp của linh kiện.
  • Phương pháp mô phỏng mạch điện tử trên môi trường Proteus nhằm kiểm chứng thuật ngữ logic điều khiển và lưu đồ thuật toán trước khi triển khai phần cứng.
  • Phương pháp thiết kế phần cứng CAD/CAM để vẽ layout mạch in, xuất file gia công và hàn lắp linh kiện.
  • Phương pháp thực nghiệm đo đạc để hiệu chuẩn các biến số tính toán giữa tín hiệu ADC và đại lượng vật lý hiển thị.
Thành phần hệ thống Thông số kỹ thuật danh định Chức năng trong hệ thống
PIC16F877A Đóng gói PDIP 40 chân, 33 chân I/O, ADC 10-bit, xung nhịp 8 MHz Thu thập dữ liệu cảm biến, tính toán, xuất LCD và gửi UART
ESP8266 V01 Nhân ESP8266EX, chuẩn Wi-Fi 802.11 b/g/n, điện áp 3.3V, dòng 80-170 mA Nhận dữ liệu UART, xử lý chuỗi và gửi HTTP POST lên ThingSpeak
DS18B20 Dải đo -55°C đến +125°C, sai số ±0.5°C (-10°C đến +85°C), phân giải 9-12 bit Đo nhiệt độ môi trường chất lỏng qua giao thức 1-Wire
TDS Sensor Module Điện áp 3.3V, dòng 3-6 mA, dải đo 0-1000 ppm, sai số ±10% F.S (25°C) Cảm biến độ dẫn điện để xác định tổng chất rắn hòa tan
LCD 20x4 Ma trận ký tự 4 dòng x 20 cột, giao tiếp bus dữ liệu song song 4-bit Hiển thị trực tiếp giá trị nhiệt độ và TDS tại trạm đo
Khối nguồn hạ áp Đầu vào 12VDC qua Adapter, điều áp LM7805 (5V) và LM117/LM317 (3.3V) Cung cấp nguồn ổn định cách ly cho khối số và khối Wi-Fi

Thiết kế và triển khai hệ thống

Hệ thống được tổ chức thành cấu trúc module hóa phân tầng rõ rệt, kết hợp chặt chẽ giữa phần cứng nhúng và phần mềm điều khiển.

1. Kiến trúc phần cứng và thiết kế mạch

Mạch phần cứng bao gồm các khối chức năng liên kết chặt chẽ:

  • Khối nguồn: Tiếp nhận nguồn điện một chiều từ Adapter thông qua đầu nối DC. Dòng điện đi qua diode D3 với chức năng bảo vệ chống ngược cực nguồn. Mạng lọc gợn sóng gồm hai tụ điện C3 và C6 ổn định điện áp vào cho IC điều áp LM7805 để tạo ra mức logic 5VDC cung cấp cho vi điều khiển PIC16F877A, cảm biến và màn hình LCD. Ở tầng tiếp theo, IC ổn áp tuyến tính LM117-3.3 (hoặc LM317) hạ mức điện áp từ 5VDC xuống 3.3VDC để cấp nguồn riêng cho mô-đun ESP8266 – vốn yêu cầu dòng tức thời cao lên tới 800 mA khi phát sóng radio và mức điện áp vận hành nghiêm ngặt 3.3V.
  • Khối vi điều khiển trung tâm: Sử dụng PIC16F877A với cấu hình dao động thạch anh ngoại 8 MHz nối vào chân 13 (OSC1) và chân 14 (OSC2) kèm hai tụ gốm ổn định dao động C1, C2 (30 pF). Chân 1 (MCLR) kết nối mạch nút nhấn Reset tích cực mức thấp. Mạch nạp chương trình chuẩn ICSP được tách ra thông qua các chân MCLR, PGM (chân 36), PGC (chân 39) và PGD (chân 40).
  • Khối phối hợp tín hiệu cảm biến và hiển thị:
    • Cảm biến DS18B20 giao tiếp qua chân dữ liệu DQ kết nối trực tiếp với chân RB1 của PIC16F877A, có điện trở kéo lên nguồn 5V.
    • Tín hiệu tương tự từ mạch tiền xử lý của TDS Sensor đưa về chân RA0/AN0 của PIC16F877A để bộ ADC 10-bit thực hiện lấy mẫu.
    • Màn hình LCD 20x4 được ghép nối theo chế độ 4-bit dữ liệu nhằm tiết kiệm chân vào/ra của vi điều khiển: các chân dữ liệu D4, D5, D6, D7 nối lần lượt với RD4, RD5, RD6, RD7; chân chọn thanh ghi RS nối với RD2; chân chọn chế độ đọc/ghi R/W nối với RD3; và chân cho phép chốt tín hiệu E nối với RC4.
  • Khối truyền thông nối tiếp và chuyển đổi mức logic: Cổng truyền nhận dữ liệu nối tiếp USART phần cứng của PIC16F877A sử dụng chân RC6 (TX) và RC7 (RX). Do PIC16F877A hoạt động ở điện áp 5V trong khi ESP8266 hoạt động ở ngưỡng 3.3V, đường truyền TX của PIC sang RX của ESP được trang bị mạch chia điện áp dùng điện trở để hạ mức logic từ 5V xuống 3.3V, ngăn ngừa nguy cơ đánh thủng cổng I/O của chip ESP8266EX.

2. Thiết kế phần mềm và lưu đồ thuật toán

Phần mềm điều khiển được phân chia thành hai chương trình độc lập chạy trên hai vi xử lý:

  • Chương trình điều khiển trên PIC16F877A (trình biên dịch CCS C):

    • Cấu hình phần cứng: Cấm Timer Watchdog (NOWDT), bật cầu chì dao động tốc độ cao (HS), tắt chế độ lập trình điện áp thấp (NOLVP). Thiết lập bộ biến đổi ADC: tần số lấy mẫu ADC_CLOCK_DIV_32, cấu hình cổng tương tự ALL_ANALOG, độ phân giải khai báo 10-bit (#device ADC=10).
    • Giao thức 1-Wire định thời phần mềm: Hàm ds18b20_start() phát xung reset mức thấp kéo dài $500,\mu\text{s}$, chuyển chân cấu hình sang đầu vào và chờ $100,\mu\text{s}$ để bắt xung phản hồi (presence pulse) mức thấp ($60-240,\mu\text{s}$) từ cảm biến. Quá trình đọc nhiệt độ gồm chuỗi lệnh: gửi lệnh bỏ qua nhận diện ROM 0xCC (Skip ROM), phát lệnh khởi động biến đổi nhiệt độ 0x44 (Convert T), đợi quá trình chuyển đổi hoàn tất, lặp lại xung reset, gửi lại lệnh 0xCC, phát lệnh đọc bộ nhớ nháp 0xBE (Read Scratchpad) để nhận 2 byte dữ liệu nhiệt độ (LSB và MSB). Giá trị nguyên thô raw_temp được dịch và chia cho 16 để quy đổi ra nhiệt độ thực tế độ C theo chuẩn số bù hai.
    • Lấy mẫu TDS: Đọc giá trị ADC tại kênh 0, chuyển đổi sang điện áp tương ứng và tính toán ra chỉ số chất rắn hòa tan tds (ppm).
    • Đóng gói dữ liệu truyền thông: Các thông số sau khi hiển thị lên LCD 20x4 được gói thành chuỗi ký tự định dạng: A<temp>B<tds>C\n. Chuỗi này được truyền ra cổng nối tiếp mỗi khi biến đếm chu kỳ count >= 2.
  • Chương trình truyền thông trên ESP8266 (môi trường Arduino Core):

    • Khởi tạo kết nối trạm Wi-Fi (Station Mode) với mạng cục bộ thông qua SSID "HUY PHUONG V3" và mật khẩu bảo mật "25301905@".
    • Quá trình đọc dữ liệu UART: Liên tục quét cổng Serial.read() ở tốc độ 9600 bps. Khi phát hiện ký tự bắt đầu 'A', cờ nhận dạng Start được kích hoạt để gom các ký tự kế tiếp vào chuỗi DataPic cho đến khi gặp ký tự kết thúc dòng '\n'.
    • Tách chuỗi và định tuyến HTTP: Tìm vị trí chỉ mục của các ký tự định danh 'A', 'B', 'C'. Trích xuất chuỗi con nằm giữa 'A' và 'B' để chuyển đổi thành số thực temp, trích xuất chuỗi con giữa 'B' và 'C' để chuyển thành số thực tds.
    • Đẩy dữ liệu lên Cloud: Thiết lập đối tượng HTTPClient, gửi yêu cầu HTTP POST đến địa chỉ http://api.thingspeak.com/update với tiêu đề Content-Type: application/x-www-form-urlencoded và phần thân dữ liệu: api_key=RW17QWFTWV343AZN&field1=<temp>&field2=<tds>.

Nội dung chính theo từng chương

Báo cáo đồ án được cấu trúc thành 4 phần chính phản ánh toàn bộ tiến trình từ cơ sở lý thuyết, lựa chọn phần cứng đến triển khai mạch in và lập trình hệ thống.

PHẦN 1: GIỚI THIỆU ĐỀ TÀI

Phần này làm rõ tính cấp thiết của việc tự động hóa quá trình giám sát nước thay thế cho phương pháp lấy mẫu thủ công tốn thời gian. Tác giả trình bày nguyên lý chung của mô hình giám sát đa thông số: chất lượng nước phụ thuộc vào độ dẫn điện, tổng chất rắn hòa tan, nhiệt độ và độ ẩm; hệ thống gồm mô-đun thu thập thông tin (PIC16F877A) và mô-đun truyền dữ liệu (ESP8266 V01). Phần này đưa ra sơ đồ khối hệ thống và thuyết minh lý do lựa chọn từng linh kiện:

  • Lựa chọn PIC16F877A nhờ 40 chân cắm, 33 đường xuất nhập I/O, tích hợp sẵn module ADC và bộ nhớ chương trình đủ lớn cho các tác vụ nhúng.
  • Lựa chọn mô-đun Wi-Fi ESP8266 với chip SoC ESP8266EX có kích thước nhỏ gọn (24mm x 14mm x 3mm), hỗ trợ chuẩn 802.11 b/g/n, giá thành rẻ.
  • Chọn cảm biến TDS đo độ dẫn điện quy đổi ra tổng chất rắn hòa tan (sai số 10%) và cảm biến nhiệt độ vỏ bọc chống nước DS18B20 giao tiếp 1-Wire.
  • Chọn màn hình hiển thị LCD 20x4 hiển thị đồng thời 4 dòng chữ số phục vụ quan sát trực quan tại chỗ.

PHẦN 2: GIỚI THIỆU LINH KIỆN

Chương này đi sâu vào chi tiết kỹ thuật phần cứng và phương thức ghép nối của từng linh kiện:

  • Phân tích chi tiết sơ đồ chân vi điều khiển PIC16F877A ở dạng đóng vỏ PDIP: cấu trúc cổng A (6 chân), cổng B (8 chân), cổng C (8 chân), cổng D (8 chân), cổng E (3 chân) và 8 nguồn ngắt hệ thống.
  • Trình bày đặc tính điện áp và sơ đồ đấu nối giữa PIC16F877A (5V) với ESP8266 (3.3V) thông qua IC ổn áp LM7805, LM317 và mạch phân áp chia điện thế tín hiệu logic.
  • Khảo sát nguyên lý hoạt động của khối truyền thông nối tiếp USART trên PIC16F877A: vai trò của các thanh ghi điều khiển TXSTA, RCSTA, thanh ghi đệm dữ liệu TXREG, RCREG và thanh ghi dịch truyền/nhận TSR, RSR; mô tả cơ chế hoạt động theo bộ đệm FIFO và phát hiện lỗi tràn dữ liệu (OERR), lỗi khung truyền (FERR).
  • Khảo sát bảng chức năng 16 chân của LCD 20x4, phân biệt chế độ truyền dữ liệu 8-bit và 4-bit, vai trò của các chân điều khiển RS, R/W, E.
  • Khảo sát cảm biến TDS: định nghĩa chỉ số TDS (nước tinh khiết dưới 5 ppm), nguồn gốc chất rắn hòa tan (hữu cơ, vô cơ, tác động hạ tầng) và các thông số hoạt động của board phát tín hiệu (nguồn 3.3V, dòng 3-6mA, dải đo 0-1000 ppm, que đo 2 kim dài 83cm chuẩn chống nước).
  • Hướng dẫn cấu hình bộ chuyển đổi ADC trên vi điều khiển PIC bằng trình biên dịch CCS C thông qua các chỉ thị tiền xử lý #device ADC=x, hàm SETUP_ADC(), SETUP_ADC_PORTS(), SET_ADC_CHANNEL() và READ_ADC().
  • Phân tích chi tiết cảm biến DS18B20: cấu trúc thanh ghi Scratchpad 9 byte, bộ nhớ EEPROM chứa ngưỡng cảnh báo $T_H$, $T_L$, thanh ghi cấu hình phân giải (9, 10, 11, 12 bit tương ứng bước nhảy 0.5°C, 0.25°C, 0.125°C và 0.0625°C). Liệt kê chi tiết 9 lệnh giao tiếp bus 1-Dây: READ ROM (33h), MATCH ROM (55h), SKIP ROM (CCh), SEARCH ROM (F0h), ALARM SEARCH (ECh), WRITE SCRATCHPAD (4Eh), READ SCRATCHPAD (BEh), COPYSCRATCHPAD (48h), READ POWER SUPPLY (B4h). Đồng thời vẽ giản đồ xung định thời của các khe thời gian khởi tạo (reset pulse $480,\mu\text{s}$), khe ghi bit 0/bit 1 và khe đọc dữ liệu (tối thiểu $60,\mu\text{s}$).

PHẦN 3: TỔNG HỢP KẾT QUẢ

Phần này trình bày kết quả hiện thực hóa thiết kế trên công cụ mô phỏng và phần cứng thực tế:

  • Sơ đồ nguyên lý từng khối thành phần trong Proteus: khối mạch nguồn hạ áp (biến áp adapter $12\sqrt{2}\sin\omega t$, diode chỉnh lưu, tụ lọc C3, C6, C7, C8, IC 7805 và LM117-3.3); khối cảm biến và kết nối module Wi-Fi; khối vi điều khiển PIC16F877A phân bổ chân I/O; khối hiển thị LCD 20x4.
  • Bản vẽ thiết kế mạch in (Layout PCB): Layout phân khối rõ ràng gồm bo mạch nguồn, bo mạch trung gian gắn module ESP8266 và bo mạch điều khiển trung tâm chứa vi điều khiển PIC16F877A.
  • Xây dựng lưu đồ thuật toán chi tiết cho chương trình chạy trên PIC16F877A và lưu đồ thuật toán phân tích chuỗi ký tự trên ESP8266 V01.
  • Công bố toàn bộ mã nguồn chương trình hệ thống viết cho PIC16F877A (trên CCS C Compiler) và mã nguồn nạp cho ESP8266 (trên Arduino IDE).
  • Minh chứng giao diện ThingSpeak hiển thị kết quả đo lường trực quan theo thời gian thực dưới dạng hai biểu đồ sóng tương ứng với hai kênh dữ liệu: Field 1 (Nhiệt độ) và Field 2 (TDS).

PHẦN 4: BÀI HỌC VÀ KẾT LUẬN

Tổng kết quá trình triển khai đồ án kỹ thuật: sinh viên hoàn thành mục tiêu chế tạo mô hình thiết bị đo chất lượng nước thời gian thực, liên kết thành công kiến thức lý thuyết giữa hai môn học cốt lõi là "Vi điều khiển" và "Cảm biến công nghiệp". Đồ án trang bị kỹ năng thiết kế phần cứng, kỹ năng gia công mạch in, kỹ thuật phân tích tập lệnh vi điều khiển và lập trình kết nối mạng IoT.


Kết quả và đóng góp

Đồ án đã chế tạo thành công mô hình phần cứng nhúng hoàn chỉnh và thiết lập chu trình truyền thông khép kín từ cảm biến vật lý đến giao diện đám mây.

Các kết quả kỹ thuật cụ thể được ghi nhận trong văn bản:

  • Hệ thống đo đạc đồng thời hai thông số quan trọng của nước:
    • Giá trị tổng chất rắn hòa tan (TDS) trong dải đo 0 đến 1000 ppm, độ chính xác danh định $\pm 10%$ F.S tại nhiệt độ chuẩn 25°C.
    • Giá trị nhiệt độ môi trường nước trong dải đo $-55^\circ\text{C}$ đến $+125^\circ\text{C}$, độ chính xác đạt $\pm 0{,}5^\circ\text{C}$ trong khoảng nhiệt độ thông dụng từ $-10^\circ\text{C}$ đến $+85^\circ\text{C}$.
  • Thiết kế và chế tạo thành công mạch in phần cứng tích hợp 2 cấp điện áp nguồn độc lập (5VDC qua LM7805 và 3.3VDC qua LM117/LM317), đáp ứng yêu cầu cung cấp dòng làm việc lớn cho mô-đun Wi-Fi ESP8266 và lọc nhiễu cho bộ vi điều khiển.
  • Xây dựng thành công thuật toán đọc cảm biến 1-Wire định thời micro-giây trên PIC16F877A mà không dùng thư viện có sẵn của nhà sản xuất chip, xử lý tín hiệu ADC 10-bit nội suy giá trị TDS qua công thức toán học.
  • Thiết lập giao thức truyền thông liên vi điều khiển qua cổng nối tiếp UART ở tốc độ 9600 bps với định dạng gói tin ký tự tự thiết kế (A<temp>B<tds>C\n), hạn chế xung đột truyền dữ liệu nhờ cơ chế đệm chuỗi và nhận dạng ký tự phân cách trên ESP8266.
  • Kết nối thành công với máy chủ đám mây ThingSpeak thông qua giao diện lập trình ứng dụng HTTP API (http://api.thingspeak.com/update), cập nhật thành công dữ liệu nhiệt độ vào Field 1 và dữ liệu TDS vào Field 2 để theo dõi biểu đồ diễn biến chất lượng nước từ xa.

Đóng góp của đồ án thể hiện ở việc tích hợp thành công hai dòng chip thuộc hai thế hệ công nghệ khác nhau: vi điều khiển cổ điển 8-bit PIC16F877A chuyên trách xử lý ngoại vi, cảm biến chính xác và mô-đun SoC ESP8266 chuyên trách kết nối mạng không dây. Giải pháp này giúp tối ưu hóa chi phí phần cứng, tận dụng được số lượng chân I/O dồi dào của PIC16F877A kết hợp với khả năng kết nối mạng diện rộng của ESP8266.


Hạn chế và hướng nghiên cứu tiếp

Dựa trên các thông số kỹ thuật và nội dung trình bày trong báo cáo, đồ án tồn tại một số điểm hạn chế kỹ thuật:

  • Số lượng thông số quan trắc: Mặc dù phần đặt vấn đề đề cập đến nhiều tiêu chuẩn chất lượng nước bao gồm pH, độ dẫn điện, độ ẩm, nhiệt độ và tổng chất rắn hòa tan, tuy nhiên mô hình phần cứng thực tế mới chỉ lắp đặt và vận hành hai cảm biến là TDS và nhiệt độ DS18B20.
  • Phối hợp trở kháng và mức logic: Việc chuyển đổi mức điện thế logic từ 5V (PIC16F877A) sang 3.3V (ESP8266) trên đường truyền UART mới chỉ áp dụng mạch phân áp thụ động bằng điện trở, chưa sử dụng IC chuyển đổi mức logic hai chiều chuyên dụng (Logic Level Shifter), có thể tiềm ẩn rủi ro méo xung ở các dải tần số truyền thông cao hơn.
  • Tính linh hoạt trong kết nối mạng: Thông tin về điểm truy cập Wi-Fi (SSID và Password) cũng như khóa API ThingSpeak được viết cố định (hardcode) trong chương trình nhúng của ESP8266, chưa có cơ chế cấu hình động qua giao diện Captive Portal (SmartConfig/WiFiManager) khi thay đổi môi trường mạng.
  • Khả năng lưu trữ nội bộ: Thiết bị chưa trang bị bộ nhớ đệm ngoại vi (thẻ nhớ SD hoặc chip nhớ EEPROM dung lượng lớn) để lưu trữ dữ liệu quan trắc khi xảy ra sự cố mất kết nối mạng Wi-Fi (offline logging).

Các hướng phát triển kỹ thuật được đề xuất mở rộng:

  • Tích hợp bổ sung các cảm biến chuyên dụng phục vụ đánh giá toàn diện nguồn nước: đầu đo độ pH công nghiệp, cảm biến đo độ đục (Turbidity Sensor) và cảm biến oxy hòa tan (DO).
  • Nâng cấp mạch điều khiển sang các dòng vi điều khiển thế hệ mới tích hợp sẵn bộ phát Wi-Fi/Bluetooth hoặc sử dụng các vi điều khiển ARM 32-bit nhằm tinh giản phần cứng, loại bỏ nhu cầu ghép nối hai chip vi xử lý riêng biệt.
  • Xây dựng thuật toán bù trừ nhiệt độ tự động cho phép đo TDS theo chuẩn thời gian thực, bởi độ dẫn điện của dung dịch thay đổi rõ rệt theo biến thiên của nhiệt độ môi trường.
  • Mở rộng ứng dụng trên thiết bị di động (Blynk hoặc ứng dụng web riêng) kết hợp hệ thống còi/đèn cảnh báo cục bộ khi các chỉ số vượt ngưỡng an toàn quy định.

Giá trị tham khảo

Báo cáo đồ án là tài liệu tham khảo hữu ích cho sinh viên và kỹ sư kỹ thuật trong các lĩnh vực cụ thể:

  • Sinh viên ngành Kỹ thuật Cơ điện tử, Kỹ thuật Điều khiển và Tự động hóa, Kỹ thuật Điện tử: Tài liệu cung cấp quy trình thiết kế hoàn chỉnh một thiết bị nhúng ứng dụng (PBL), từ việc phân tích datasheet, phân bổ chân cổng vào/ra, tính toán mạch nguồn ổn áp, vẽ mạch in Layout đến lập trình điều khiển phần cứng.
  • Lập trình viên hệ thống nhúng PIC: Các đoạn mã nguồn và lưu đồ thuật toán điều khiển cảm biến DS18B20 thông qua giao thức 1-Wire và cấu hình bộ chuyển đổi ADC 10-bit bằng trình biên dịch CCS C trong báo cáo là mẫu tham chiếu rõ ràng, chi tiết cho các bài toán ghép nối ngoại vi tương tự.
  • Các đề tài ứng dụng IoT giám sát môi trường: Phương thức giao tiếp nối tiếp UART giữa vi điều khiển chính và mô-đun Wi-Fi ESP8266 để gửi dữ liệu dạng gói ký tự lên các nền tảng mở như ThingSpeak là cấu trúc nền tảng dễ ứng dụng, chi phí thấp cho các dự án quan trắc nông nghiệp, thủy sản hoặc trạm đo thời tiết quy mô vừa và nhỏ.

Câu hỏi thường gặp

1. Hệ số quy đổi từ tổng chất rắn hòa tan (TDS) sang độ dẫn điện (EC) được tác giả xác định như thế nào và công thức toán học tính TDS trong mã nguồn PIC16F877A là gì?
Trong phần lý thuyết, tác giả chỉ ra rằng độ dẫn điện (EC) được xác định bằng cách chia tổng chất rắn hòa tan cho một hệ số thực nghiệm, thông thường hệ số này được lấy bằng $0{,}67$. Tuy nhiên, trong mã nguồn thực tế viết trên CCS C cho PIC16F877A, điện áp đọc về từ bộ ADC (rawEc) được bù nhiệt và nhân hệ số hiệu chuẩn (ecCalibration = 1), sau đó giá trị TDS (đơn vị ppm) được tính theo phương trình thực nghiệm phi tuyến:

tds = 133.42 * ec * ec * ec - 255.5;

2. Khung truyền dữ liệu nối tiếp UART giữa vi điều khiển PIC16F877A và mô-đun ESP8266 được quy định theo cấu trúc nào?
Dữ liệu được vi điều khiển PIC16F877A đóng gói thành một chuỗi ký tự ASCII theo định dạng: A<giá trị nhiệt độ>B<giá trị TDS>C\n (ví dụ: A28.50B145.20C\n). Trong đó ký tự 'A', 'B', 'C' đóng vai trò là các cờ định danh phân cách trường dữ liệu nhiệt độ và TDS, còn ký tự '\n' đánh dấu kết thúc một bản tin truyền nối tiếp ở tốc độ 9600 bps.

3. Tại sao hệ thống phải sử dụng hai cấp nguồn 5V và 3.3V riêng biệt và biện pháp xử lý chênh lệch điện áp logic giữa PIC16F877A và ESP8266 là gì?
Vi điều khiển PIC16F877A và màn hình LCD 20x4 hoạt động ở mức điện áp chuẩn 5VDC, được cấp bởi IC ổn áp LM7805. Trong khi đó, mô-đun Wi-Fi ESP8266 hoạt động ở điện thế định mức 3.3VDC và tiêu thụ dòng đỉnh lớn (lên tới khoảng 800 mA), nếu cấp 5V sẽ gây hỏng chip vĩnh viễn, do đó hệ thống phải tích hợp thêm tầng hạ áp thứ hai dùng IC LM117-3.3 (hoặc LM317). Để bảo vệ chân đầu vào RX của ESP8266 trước mức tín hiệu 5V phát ra từ chân TX (RC6) của PIC16F877A, nhóm tác giả sử dụng một mạch chia điện áp bằng điện trở để hạ mức logic xuống ngưỡng an toàn 3.3V.

4. Trình tự vi điều khiển PIC16F877A giao tiếp với cảm biến nhiệt độ DS18B20 qua giao thức 1-Wire gồm những bước và mã lệnh cụ thể nào?
Quy trình thực hiện tuần tự qua các bước:

  1. Phát xung Reset mức thấp ($500,\mu\text{s}$) và nhận xung phản hồi hiện diện từ DS18B20 qua hàm ds18b20_start().
  2. Gửi mã lệnh 0xCC (Skip ROM) để bỏ qua việc so khớp địa chỉ 64-bit ROM (áp dụng cho bus chỉ gắn một cảm biến).
  3. Gửi mã lệnh 0x44 (Convert T) để yêu cầu cảm biến bắt đầu quá trình đo và chuyển đổi nhiệt độ sang số.
  4. Chờ cảm biến hoàn tất chuyển đổi, sau đó phát lại xung Reset và lệnh 0xCC (Skip ROM).
  5. Gửi mã lệnh 0xBE (Read Scratchpad) để đọc nội dung bộ nhớ nháp. Vi điều khiển đọc liên tiếp 2 byte dữ liệu nhiệt độ (byte thấp LSB và byte cao MSB), ghép thành số nguyên có dấu 16-bit rồi chia cho 16 để tính ra giá trị nhiệt độ theo độ C.

5. Gói tin truyền lên nền tảng đám mây ThingSpeak từ ESP8266 được cấu hình với các tham số kỹ thuật nào?
Mô-đun ESP8266 sử dụng thư viện HTTPClient để gửi một yêu cầu HTTP POST đến địa chỉ máy chủ API: http://api.thingspeak.com/update. Phần tiêu đề HTTP được gán định dạng Content-Type: application/x-www-form-urlencoded. Phần thân của gói tin mang chuỗi dữ liệu chứa mã xác thực ghi: api_key=RW17QWFTWV343AZN&field1=<temp>&field2=<tds> Trong đó, tham số field1 lưu trữ số liệu nhiệt độ nước và field2 lưu trữ chỉ số tổng chất rắn hòa tan (TDS).


Kết luận

Báo cáo đồ án môn học PBL3 của nhóm sinh viên Khoa Cơ khí, Trường Đại học Bách khoa - Đại học Đà Nẵng đã xây dựng thành công mô hình hệ thống đo lường chất lượng nước theo thời gian thực ứng dụng công nghệ vi điều khiển và IoT. Bằng việc kết hợp vi điều khiển PIC16F877A làm bộ thu thập trung tâm từ các cảm biến TDS và DS18B20 với mô-đun Wi-Fi ESP8266, hệ thống đã giải quyết hiệu quả bài toán quan trắc và hiển thị song song tại trạm đo (màn hình LCD 20x4) cũng như giám sát từ xa qua đồ thị trực tuyến trên nền tảng đám mây ThingSpeak. Mặc dù còn hạn chế về số lượng cảm biến vật lý triển khai và giải pháp kết nối mạng cố định, đồ án đã thể hiện đầy đủ quy trình kỹ thuật chuẩn mực từ tính toán lý thuyết, thiết kế sơ đồ nguyên lý, vẽ mạch in PCB đến lập trình nhúng phần cứng, cung cấp tài liệu tham khảo giá trị cho sinh viên ngành Kỹ thuật Cơ điện tử và Kỹ thuật Điều khiển.