CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.3. MODULE ĐỒNG HỒ THỜI GIAN THỰC RTC DS3231
Hình 2.6 Module DS3231
Module Thời Gian Thực RTC DS3231 là đồng hồ thời gian thực, rất chính xác với thạch anh tích hợp sẵn có khả năng điều chỉnh nhiệt. Có đầu vào cho pin riêng, tách biệt khỏi nguồn chính đảm bảo cho việc giữ thời gian chính xác. Thạch anh tích hợp sẵn giúp tăng độ chính xác trong thời gian dài hoạt động và giảm số lượng linh kiện cần thiết khi làm board.
Thời gian trong module được giữ ở dạng: giờ, phút, giây, ngày, thứ, tháng, năm.
Các tháng có ít hơn 31 ngày sẽ tự động được điều chỉnh, các năm Nhuận cũng được chỉnh đúng số ngày. Thời gian có thể hoạt động ở chế độ 24h hoặc 12h am hoặc pm.
module còn có chức năng báo động, có thể cài đặt 2 thời gian báo và lịch, có tín hiệu ra là xung vuông. Giao tiếp với module được thực hiện thông qua chuẩn I2C.
Thông số module RTC DS3231
Size: dài 38mm, rộng 22mm, cao 14mm
Khối lượng 8g
Cảm biến nhiệt trên IC có độ chính xác ± 3 ℃
I2C bus có tốc độ tối đa 400Khz
Kèm thêm pin sạc được CR2032
Kèm thêm memory IC AT24C32 (32k bits) 2.4. MODULE LCD
Màn hình LCD (Liquid Crystal Display) hay màn hình tinh thể lỏng được khá nhiều thiết bị điện tử sử dụng. Màn hình công nghệ này dùng đèn nền để tạo ánh sáng chứ không tự phát sáng được.
LCD 20x4 gồm 4 hàng, mỗi hàng có 20 kí tự.
Hình 2.7 LCD 20x4
Sơ đồ chân
LCD với 16 chân được chia làm 4 dạng tín hiệu:
Các chân cấp nguồn: chân số 1 là chân nối mass(0v), chân 2 là Vdd nối với nguồn +5v. Chân thứ 3 dùng để chỉnh contrast và thường được nối với biến trở.
Các chân điều khiển: chân số 4 là chân RS, dùng để điều khiển lựa chọn thanh ghi. Chân R/W dùng để điều khiển quá trình đọc và ghi. Chân E là chân cho phép ở dạng xung chốt.
Các chân dữ liệu D7 đến D0: dùng để trao đổi dữ liệu giữa thiết bị điều khiển và LCD.
Các lệnh điều khiển
Lệnh xoá màn hình “Clear Display”: khi thực hiện lệnh này thì LCD sẽ bị xoá và bộ đếm địa chỉ được xoá về 0.
Lệnh di chuyển con trỏ về đầu màn hình “Cursor Home”: khi thực hiện lệnh này thì bộ đếm địa chỉ đƣợc xoá về 0, phần hiển thị trở về vị trí gốc đã bị dịch trước đó. Nội dung bộ nhớ RAM hiển thị DDRAM không bị thay đổi.
Lệnh thiết lập lối vào “Entry mode set”: lệnh này dùng để thiết lập lối vào cho các kí tự hiển thị, bit ID = 1 thì con trỏ tự động tăng lên 1 mỗi khi có 1 byte dữ liệu ghi vào bộ hiển thị, khi ID = 0 thì con trỏ sẽ không tăng: dữ liệu mới sẽ ghi đè lên dữ liệu cũ. Bit S = 1 thì cho phép dịch chuyển dữ liệu mỗi khi nhận 1 byte hiển thị.
Lệnh điều khiển con trỏ hiển thị “Display Control”: lệnh này dùng để điều khiển con trỏ (cho hiển thị thì bit D = 1, tắt hiển thị thì bit D = 0), tắt mở con trỏ (mở con trỏ thì bit C = 1, tắt con trỏ thì bit C = 0), và nhấp nháy con trỏ (cho nhấp
nháy thì bit B = 1, tắt thì bit B = 0).
Bảng 2.1. Chức năng các chân LCD Stt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
12
không cho phép), hướng dịch chuyển(RL = 1 thì dịch phải, RL = 0 thì dịch trái).
Nội dung bộ nhớ DDRAM vẫn không đổi.
Lệnh thiết lập địa chỉ cho bộ nhớ RAM phát kí tự “Set CGRAM Addr”:
lệnh này dùng để thiết lập địa chỉ cho bộ nhớ RAM phát kí tự.
Lệnh thiết lập địa chỉ cho bộ nhớ RAM hiển thị “Set DDRAM Addr”: lệnh này dùng để thiết lập địa chỉ cho bộ nhớ RAM lưu trữ các dữ liệu hiển thị.
Lệnh đọc dữ liệu LCD.
Lệnh ghi dữ liệu LCD 2.5.MODULE UART-TDS-V1 2.5.1. Tìm hiểu về TDS
Chỉ số TDS là viết tắt của từ "Total Dissolved Solids" hay còn tạm dịch là "Tổng chất rắn hòa tan" hay bạn cũng có thể hiểu TDS là tổng lượng ion tích điện, bao gồm khoáng chất hoặc kim loại hòa tan trong một đơn vị thể tích nước (mg/ L), cũng được gọi là một phần một triệu ppm (1 mg/L = 1ppm).
Hàm lượng TDS sẽ liên quan trực tiếp đến độ tinh khiết của nước và chất lượng của hệ thống lọc nước. Nó được định nghĩa là một chất ảnh hưởng đến sức khỏe con người, hay ảnh hưởng đến mọi thứ tiêu thụ, hấp thu nó.
Giải thích ppm: ppm là viết tắt của cụm từ Parts Per Million hay còn gọi là các phần trên một triệu. Ppm là tỉ lệ trọng lượng của bất kỳ ion nào đối với nước.
Theo các quy định hiện hành của US EPA (Cơ quan bảo vệ môi trường Hoa Kỳ), WHO (Tổ chức y tế thế giới) và cả Việt Nam:
TDS < 5ppm: là nước tinh khiết, không có chất rắn hòa tan. Nước này không bổ sung khoáng chất chỉ cung cấp nước sạch cho cơ thể khi chúng ta sử dụng.
TDS > 5ppm: Là các loại nước có chất rắn hòa tan. Chỉ số TDS cao không có nghĩa nước đó có hại mà tròn thành phần các chất rắn đó có chất rắn được coi là có lợi hoặc có hại
Nước có TDS trong khoảng 170 ppm – 400 ppm được gọi là nước cứng chỉ được sử dụng trong sinh hoạt. Độ cứng của nước được tính bằng tổng hàm lượng Mg2+ và Ca2+.
cho thấy độ mặn sẽ cao. Các loại máy đo độ dẫn điện cầm tay, tiện dụng, còn gọi là
‘EC meter’ giống như trong hình có thể mua rất dễ dàng. Máy đo độ mặn dùng nhiều đơn vị khác nhau, tuy nhiên, chỉ có một đơn vị tiêu chuẩn được quốc tế sử dụng: deci-Siemens cho mỗi meter hay viết tắt là dS/m.
Khi lấy TDS đo được chia cho 640 sẽ ra đơn vị đo dẫn điện đơn vị mili- Siemens mỗi centi-mét (mS/cm) tương ứng với đơn vị độ mặn của nước.
Mối liên hệ giữa các đơn vị đo lường:
1% =10ppt
1ppt =1000ppm
1ppm = 640ds/m Với :
Tỉ lệ phần tram (%): nước muối sinh lý có tên hóa học là Natri Clorid hay nước muối sinh lý natri clorid. Dung dịch được pha chế theo tỷ lệ 0,9%. Có nghĩa là 1 lít nước được pha với 9 gam muối tinh khiết.
ppt: đơn vị đo ở dạng phần ngàn (ppt)
ppm: đã đề cập ở trên.
Ds/m: đã đề cập ở trên.
2.5.3. Tìm hiểu về Module UART-TDS-V1
Chức năng:
Module chuyển đổi tín hiệu TDS sang UART
Ứng dụng trong các thiết bị kiểm soát chất lượng nước, lọc nước...
Thông số:
Điện áp làm việc: DC5V
Dải đo: 0-1000ppm (tương đương 0-0.1%)
Chuẩn UART TTL
Tốc Độ Mặc Định 9600
Hình 2.8 module TDS-UART-V1
Một số lệnh AT với Module
Bảng 2.2 Một số lệnh AT cơ bản có sử dụng
STT 1 2 3 4
Bảng 2.3 Kiểu nước mặn và hàm lượng
Theo hình trên ta có thể thấy, độ mặn với hàm lượng từ 0.75ppt, tức từ 0.075% thì nước bắt đầu mặn hóa. Với giới hạn đo của cảm biến(0-0.1%), ta vẫn có thể đo được mức độ mặn hóa của nước để phục vụ cho nông nghiệp.
Công thức tính độ mặn:
d = a/640
dm = (d*1000*0.7)/10000 Trong đó:
a: giá trị TDS trả về
d: độ dẫn điện (mS/cm)
dm: độ mặn(%) 2.6. CẢM BIẾN ĐỘ ĐỤC
Cảm biến độ đục phát hiện chất lượng nước bằng cách đo mức độ đục. Nó sử dụng ánh sáng để phát hiện các hạt lơ lửng trong nước bằng cách truyền ánh sáng và đo tốc độ tán xạ, thay đổi với tổng lượng chất rắn lơ lửng TSS(Total suspended solids) trong nước. Khi TSS tăng lên mức độ đục của nước cũng tăng lên.
Cảm biến đo độ đục của nước đọc và xuất ra giá trị analog tương ứng với giá trị của độ đục. Độ đục này cần hiệu chỉnh về giá trị chuẩn thông qua biến trở để so sánh.
Điện áp càng nhỏ thì độ đục của nước càng lớn.
Cảm biến thường được dùng để đo chất lượng nước ở sông suối, ao hồ, đo nước thải các nguồn nước gần nhà máy hay khu công nghiệp.
Hình 2.9 Cảm biến độ đục
Thông số kĩ thuật
Đầu vào: 3.3-5V (với mạch chống ngược)
Đầu ra: tương tự mặc định (có thể thiết lập đầu ra cao và thấp)
Dải đo độ đục: 0-1000 NTU
Analog Out : 0-4.5V
Công thức tính độ đục:
V=value*(5.0/32767) (4)
Trong đó:
V là hiệu điện thế( tương ứng với độ đục mà cảm biến xuất ra)
value: giá trị trả về của cảm biến qua ADC
5.0: điện áp sử dụng
2.7. CẢM BIẾN MƯA
Cảm biến nước mưa (Rain Water Sensor ) được sử dụng để phát hiện mưa, nước hoặc các dung dịch dẫn điện tiếp xúc với bề mặt cảm biến sẽ phát ra tín hiệu để làm các ứng dụng tự động: phát hiện mưa, báo mực nước tự động,...
Hình 2.10 Cảm biến mưa
Kích thước tấm cảm biến mưa: 54 x 40mm
Kích thước board PCB: 30 x 16mm
Điện áp: 5V
Đầu ra: đầu ra kỹ thuật số (0 và 1) và đầu ra tương tự điện áp A0 ;
Lỗ cố định bu lông dễ dàng để cài đặt
Có đèn báo hiệu nguồn và đầu ra
Đầu ra TTL, tín hiệu đầu ra TTL có giá trị thấp. Có thể điều khiển trực tiếp relay, buzzer, a small fan...
Độ nhạy có thể được điều chỉnh thông qua chiết áp
LED sáng lên khi không có mưa đầu ra cao, có mưa, đầu ra thấp LED tắt.
Chế độ kết nối:
VCC: Nguồn
GND: Đất
D0: Đầu ra tín hiệu TTL chuyển đổi
A0: Đầu ra tín hiệu Analog
2.8. CÁC CHUẨN TRUYỀN SỬ DỤNG TRONG ĐỀ TÀI 2.8.1. Chuẩn I2C
I2C là tên viết tắt của cụm từ tiếng anh “Inter-Integrated Circuit”. Nó là một giao thức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa một bộ xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đường truyền tín hiệu.
Do tính đơn giản của nó nên loại giao thức này được sử dụng rộng rãi cho giao tiếp giữa vi điều khiển và mảng cảm biến, các thiết bị hiển thị, thiết bị IoT, EEPROMs, v.v …
Đây là một loại giao thức giao tiếp nối tiếp đồng bộ. Nó có nghĩa là các bit dữ liệu được truyền từng bit một theo các khoảng thời gian đều đặn được thiết lập bởi một tín hiệu đồng hồ tham chiếu.
Sau đây là một số đặc điểm quan trọng của giao thức giao tiếp I2C:
Chỉ cần có hai đường bus (dây) chung để điều khiển bất kỳ thiết bị / IC nào trên mạng I2C
Không cần thỏa thuận trước về tốc độ truyền dữ liệu như trong giao tiếp UART. Vì vậy, tốc độ truyền dữ liệu có thể được điều chỉnh bất cứ khi nào cần thiết
Cơ chế đơn giản để xác thực dữ liệu được truyền
Sử dụng hệ thống địa chỉ 7 bit để xác định một thiết bị / IC cụ thể trên bus I2C
Các mạng I2C dễ dàng mở rộng. Các thiết bị mới có thể được kết nối đơn giản với hai đường bus chung I2C
Bus I2C (dây giao tiếp) chỉ gồm hai dây và được đặt tên là Serial Clock Line (SCL) và Serial Data Line (SDA). Dữ liệu được truyền đi được gửi qua dây SDA và được đồng bộ với tín hiệu đồng hồ (clock) từ SCL. Tất cả các thiết bị / IC trên mạng I2C được kết nối với cùng đường SCL và SDA
Hình 2.11 Sơ đồ kết nối I2C
Thiết bị chủ tớ
Các thiết bị kết nối với bus I2C được phân loại hoặc là thiết bị Chủ (Master) hoặc là thiết bị Tớ (Slave). Ở bất cứ thời điểm nào thì chỉ có duy nhất một thiết bị Master ở trang thái hoạt động trên bus I2C. Nó điều khiển đường tín hiệu đồng hồ SCL và quyết định hoạt động nào sẽ được thực hiện trên đường dữ liệu SDA.
Tất cả các thiết bị đáp ứng các hướng dẫn từ thiết bị Master này đều là Slave.
Để phân biệt giữa nhiều thiết bị Slave được kết nối với cùng một bus I2C, mỗi thiết bị Slave được gán một địa chỉ vật lý 7-bit cố định.
Khi một thiết bị Master muốn truyền dữ liệu đến hoặc nhận dữ liệu từ một thiết bị Slave, nó xác định địa chỉ thiết bị Slave cụ thể này trên đường SDA và sau đó tiến hành truyền dữ liệu. Vì vậy, giao tiếp có hiệu quả diễn ra giữa thiết bị Master và một thiết bị Slave cụ thể.
Tất cả các thiết bị Slave khác không phản hồi trừ khi địa chỉ của chúng được chỉ định bởi thiết bị Master trên dòng SDA.
Hình 2.12 Thiết bị chủ tớ 2.8.2. Chuẩn UART
UART có tên đầy đủ là Universal Asynchronous Receiver – Transmitter. Nó là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi.
UART có chức năng chính là truyền dữ liệu nối tiếp. Trong UART, giao tiếp giữa hai thiết bị có thể được thực hiện theo hai phương thức là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song.
Hình 2.13 Giao tiếp UART
Trong giao tiếp UART có các thông số chính:
Baud rate (tốc độ baud ): Khoảng thời gian để 1 bit được truyền đi.
Phải được cài đặt giống nhau ở cả phần gửi và nhận
Frame (khung truyền): Khung truyền quy định về mỗi lần truyền bao nhiêu bit
Start bit: là bit đầu tiên được truyền trong 1 Frame. Báo hiệu cho thiết bị nhận có một gói dữ liệu sắp đc truyền đến. Đây là bit bắt buộc
Data: dữ liệu cần truyền. Bit có trọng số nhỏ nhất LSB được truyền trước sau đó đến bit MSB.
Parity bit: kiểm tra dữ liệu truyền có đúng không
Stop bit : là 1 hoặc các bit báo cho thiết bị rằng các bit đã được gửi xong. Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm bảo tính đúng đắn của dữ liệu. Đây là bit bắt buộc
CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 3.1. YÊU CẦU VÀ SƠ ĐỒ KHỐI HỆ THỐNG
3.1.1. Yêu cầu của hệ thống
Hệ thống có các chức năng sau:
Giám sát độ mặn, độ đục và mực nước trong hồ.
Gửi cảnh báo khi các thông số của các cảm biến vượt ngưỡng.
Nhận biết ngập lụt do thượng nguồn hay mưa qua cảm biến mưa.
Có nút nhấn để điều chỉnh, cài đặt ngưỡng do người dùng chọn.
Qua các dữ liệu được gửi về, hệ thống sẽ xử lí và hiển thị trên màn hình LCD giao diện Wed, người dùng có thể tùy ý điều chỉnh, cài đặt ngưỡng cảnh báo tùy theo đặc trưng của từng địa phương. Dữ liệu được cập nhật liên tục để người dùng có thể giám sát và có biện pháp kịp thời và phù hợp khi nhận thấy độ mặn hóa, ngập lụt hay hạn hán.
3.1.2. Sơ đồ khối và chức năng mỗi khối
Chức năng từng khối:
Khối xử lý trung tâm: Nhận dữ liệu từ các cảm biến, xử lí và gửi cho các thiết bị hiển thị LCD, Web.
Khối thời gian thực: Cập nhật thời gian hiện tại, gửi đến khối xử lí trung tâm để hiển thị LCD.
Khối cảm biến đo mực nước: Đọc dữ liệu từ cảm biến siêu âm và gửi về khối xử lí trung tâm để hiển thị.
Khối cảm biến độ đục: Đọc dữ liệu từ cảm biến đo độ đục và gửi về khối xử lí trung tâm để hiển thị.
Khối cảm biến độ mặn: Đọc dữ liệu từ cảm biến đo độ mặn và gửi về khối xử lí trung tâm để hiển thị.
Khối cảm biến mưa: Đọc dữ liệu từ cảm biến mưa và gửi về khối xử lí trung tâm để xử lí.
Khối Web server: Lưu trữ và hiển thị dự liệu từ khối trung tâm.
Khối Wifi: Phương thức truyền dữ liệu lên khối Web server.
Khối nguồn: Cung cấp nguồn cho toàn hệ thống hoạt động.
Hình 3.1 Sơ đồ khối của hệ thống 3.1.3. Hoạt động của hệ thống
Khi hệ thống được cấp nguồn, các khối cảm biến gồm khối thời gian thực, khối cảm biến độ mặn, khối cảm biến độ đục, khối cảm biến đo mực nước sẽ gửi dữ liệu đến khối xử lí trung tâm. Khối này sẽ so sánh số liệu nhận được với số liệu được người dùng cài đặt sẵn, để hiển thị cảnh báo hoặc hiện thị dữ liệu lên Web và LCD.
Các khối hiển thị bao gồm Web và LCD sẽ lưu trữ và hiện thị số liệu được gửi đến. Người dùng đăng nhập vào thingspeak qua tài khoản để theo dõi và giám sát số liệu được gửi về. Dữ liệu hiển thị trực quan dưới dạng đồ thị có thể tùy chỉnh, biểu đồ với sự phân biệt theo màu sắc được thiết lập từ trước.
Người dùng có thể thay đổi cài đặt trực tiếp bằng nút nhấn trên phần cứng của hệ thống
Hệ thống có chuông báo khi giá trị vượt ngưỡng cài đặt, người dùng có thể có các biện pháp khắc phục kịp thời.
3.2. THIẾT KẾ HỆ THỐNG PHẦN CỨNG 3.2.1. Khối thời gian thực
Với thị trường hiện nay, có rất nhiều loại module về thời gian thực như DS1302, DS1307, DS3231,… chúng khá giống nhau về chức năng và thiết kế.
Với nhiều tính năng phù hợp với thiết kế của hệ thống, nhóm chúng em đã chon module DS3231 cho hệ thống.
DS3231 là IC thời gian thực giá rẻ, rất chinh xác với thạch anh tich hợp sẵn có khả năng điêu chỉnh nhiệt. IC có đầu vào cho pin riêng, tách biệt khỏi nguồn chinh đảm bảo cho việc giữ thời gian chinh xác.
Chân SCL của module DS3231 nối với chân SCL của Raspberry pi 3(U1).
Chân SDA của module DS3231 nối với chân SDA của Raspberry pi 3(U1).
Kết nối Raspberry Pi với DS3231 được thể hiện như hình 3.2
DS3231
32K SQW
SCL (U1)
SCL
SDA (U1)
SDA 5V
VDD GND
Hình 3.2 Kết nối Raspberry Pi với DS3231
3.2.2. Khối cảm biến đo mực nước
Cảm biến chuyên dụng để đo mực nước trên thị trường không có nhiều. Nên nhóm đã dùng cảm biến siêu âm SRF05 để đo mực nước bằng cách đo khoảng cách tới mặt nước để biết được mực nước hiện tại.
Với giá thành thấp, hoạt động ổn định và vì yêu cầu của hệ thống không cần độ chính xác cao nên nhóm đã dùng cảm biến này.
Chân Trig của cảm biến SRF05 nối với chân 23 của raspberry pi 3(U1)
Chân Echo của cảm biến SRF05 nối với chân 24 của raspberry pi 3(U1) Sơ đồ kết nối SRF05 với Raspberry pi 3 được thể hiện theo hình 3.3