Professional Documents
Culture Documents
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
TRƯỜNG ĐH SPKT TP. HỒ CHÍ MINH CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
KHOA ĐIỆN-ĐIỆN TỬ ĐỘC LẬP - TỰ DO - HẠNH PHÚC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH ----o0o----
Tp. HCM, ngày 25 tháng 03 năm 2020
Tuần 9 Thi công mạch, hàn linh kiện và tiến hành kiểm
(4/5 – 10/5) tra, sửa chữa lỗi.
Tuần 10 Tính toán thiết kế cho mô hình của hệ thống.
(11/5 – 17/5)
Tuần 11 Tiến hành lắp ghép mô hình hệ thống theo những
(18/5 – 24/5) thiết kế ban đầu.
Tuần 12 Hoàn thành đóng gói sản phẩm và tiến hành chạy
(25/5 – 31/5) thử nghiệm, sửa chữa các lỗi xảy ra.
Tuần 13 Tiếp tục chạy thử nghiệm hệ thống, sửa các lỗi,
(1/6 – 7/6) cân nhắc thêm bớt các chức năng.
Tiến hành viết báo cáo
Tuần 14 Tiếp tục hoàn thiện báo cáo và chạy thử nghiệm
(8/6 – 14/6) hệ thống
Tuần 15 Hoàn thành báo cáo.
(15/6 – 21/6) Thiết kế slide cho báo cáo.
Tuần 16 Báo cáo với GVHD.
(22/6 – 28/6)
GV HƯỚNG DẪN
(Ký và ghi rõ họ và tên)
LỜI CẢM ƠN
Lời đầu tiên, chúng em xin chân thành cảm ơn quý thầy cô của Trường Đại học Sư phạm Kỹ
thuật Thành phố Hồ Chí Minh nói chung và quý thầy cô trong khoa Điện - Điện tử nói riêng đã
truyền đạt, giảng dạy chúng em các kiến thức quý báo của các môn đại cương cũng như những
môn chuyên nghành cho chúng em có được những kiến thức cần thiết để thực hiện đồ án tốt nghiệp
này và là hành trang kiến thức vững chắc để vào đời.
Lời tiếp theo, chúng em xin được gửi lời cảm ơn, lòng biết ơn chân thành và sâu sắc nhất đến
thầy Nguyễn Đình Phú, người đã tận tình hướng dẫn, chỉ bảo và tạo mọi điều kiện tốt nhất để
chúng em nghiên cứu và thực hiện đồ án tốt nghiệp này để nó đạt được thành quả như hôm nay.
Lời cuối cùng, chúng em xin gửi đến lời cảm ơn đến gia đình, bạn bè, những người đã luôn bên
cạnh giúp đỡ, động viên, tạo động lực để chúng em hoàn thành tốt đồ án tốt nghiệp cũng như suốt
quá trình học tập ở trường.
Nhóm chúng em xin chân thành cảm ơn!
MỤC LỤC
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ............................................................................................ i
LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP ............................................................... iii
LỜI CAM ĐOAN.......................................................................................................................... v
LỜI CẢM ƠN .............................................................................................................................. vi
MỤC LỤC ................................................................................................................................... vii
DANH MỤC HÌNH VẼ................................................................................................................ x
DANH MỤC BẢNG .................................................................................................................. xiv
TÓM TẮT ................................................................................................................................... xv
Chương 1: GIỚI THIỆU YÊU CẦU, GIỚI HẠN ĐỀ TÀI ...................................................... 1
1.1 Đặt vấn đề ............................................................................................................................. 1
1.2 Mục tiêu đề tài ....................................................................................................................... 1
1.3 Nội dung nghiên cứu ............................................................................................................. 2
1.4 Giới hạn đề tài ....................................................................................................................... 2
1.5 Bố cục đồ án .......................................................................................................................... 3
Chương 2: CƠ SỞ LÝ THUYẾT ................................................................................................ 5
2.1 Giới thiệu về ngành nuôi trồng thuỷ sản ............................................................................... 5
2.1.1 Các loại hình nuôi trồng thuỷ sản phổ biến .................................................................... 5
2.1.2 Các chỉ tiêu sinh – hoá – lý của nước tác động đến con nuôi – lấy ví dụ cụ thể ở tôm. 6
2.2 Giới thiệu công nghệ truyền dữ liệu không dây bằng sống RF – LORA. .......................... 10
2.3 Giới thiệu về công nghệ truyền dữ liệu di động GPRS....................................................... 14
2.3.1 Khái niệm ...................................................................................................................... 14
2.3.2 Ứng dụng ...................................................................................................................... 15
2.4 Giới thiệu các chuẩn giao tiếp sử dụng ............................................................................... 17
2.4.1 Chuẩn giao tiếp SPI ...................................................................................................... 17
2.4.1.1 Giới thiệu giao thức truyền thông SPI .................................................................... 17
2.4.1.2 Cách thức hoạt động ............................................................................................... 18
2.4.2 Chuẩn truyền dữ liệu UART ......................................................................................... 20
2.4.2.1 Giới thiệu về chuẩn truyền dữ liệu UART ............................................................. 20
TÓM TẮT
Hiện nay, ngành nuôi trồng thuỷ sản là một ngành quan trọng trong hệ thống nông nghiệp của
nước ta. Hằng năm ngành thuỷ sản đóng góp vào GDP hàng trăm nghìn tỷ đồng. Từ đó đã cho
thấy tầm quan trọng của ngành thuỷ sản đối với thu nhập bình quân đầu người của nước ta. Nhưng
để nâng tầm chất lượng cảu sản phẩm xuất khẩu của nước ta cao hơn nủa thì các công đoạn từ
việc sản xuất con giống, nuôi trồng và chế biến xuất khẩu thì quá trình nuôi trồng lại cần phải
được chú trọng nhiều hơn. Do đó, trong quá trình nuôi trồng, người nông dân phải thường xuyên
kiểm tra môi trường nước nuôi để kịp thời phát hiện các dấu hiệu của nhiễm phèn, nhiễm mặn,
nồng độ oxy thấp, … Công việc này hiện nay được tiến hành thủ công và tốn nhiều thời gian,
công sức. Vì vậy nhu cầu về một hệ thống giám sát chất lượng nước từ xa thông qua Internet là
điều vô cùng cần thiết vào lúc này. Hệ thống này phải đáp ứng được yêu cầu cơ bản là giám sát
các thông số cơ bản của nước nuôi. Điều này có thể giúp tiết kiệm được ông sức, chi phí quản lý
chất lượng nước cho người dân, mở ra bước phát triển mới cho ngành thuỷ sản nước nhà.
Với mong muốn giải quyết bài toán này, nhóm chúng em quyết định thực hiện đề tài: “NGHIÊN
CỨU, THIẾT KẾ VÀ THI CÔNG MÔ HÌNH HỆ THỐNG GIÁM SÁT CHẤT LƯỢNG NƯỚC
NUÔI TRỒNG THUỶ SẢN”, ứng dụng IoT vào quản lý chất lượng nước nuôi trồng thuỷ sản.
Hiện nay, theo xu hướng sử dụng các thiết bị thông minh như điện thoại thông minh, máy tính
bảng, … trở nên rất phổ biến, nên việc truy cập và giám sát, điều khiển hệ thống từ xa luôn được
ưu tiên phát triển. Thông qua các thiết bị thông minh, người dùng có thể truy cập vào hệ thống để
xem các thông số của nước. Đồng thời người dùng còn có thể điều khiển các động cơ như máy
bơm, máy sục khí oxy, … thông qua giao diện web. Các thông số đo được sẽ được lưu trên cơ sở
dữ liệu và được hiển thị theo biểu đồ, tạo sự dễ dàng cho việc phân tích sự thay đổi các thông số
nước, từ đó có những biện pháp phù hợp để bảo vệ con nuôi, phòng các trường hợp con nuôi chết
do môi trường nước ô nhiễm.
thị lên website cho người dùng. Người dùng có thể lên trang web đã được thiết kế để xem các
thông số của nước và điều khiển các động cơ bơm từ xa thông qua các nút nhấn được thiết kế trên
trang web. Ứng dụng này sẽ giúp ích cho người nông dân nuôi trồng thuỷ sản có thể nắm được
tình hình môi trường nước nuôi mà không cần phải ra ao đo đạc thủ công. Điều này còn giúp ích
cho việc chủ động trong việc phòng tránh các loại bệnh hại do nguồn nước gây ra, hạn chế thấp
nhất tình trạng chết cá, gây thua lỗ cho bà con nông dân.
1.3 Nội dung nghiên cứu
Quá trình thực hiện đồ án gồm 10 nội dung như sau:
Nội dung 1: Nghiên cứu về các loại hình nuôi trồng thuỷ sản hiện nay ở nước ta, các chỉ số
của nước nuôi như độ pH, độ mặn, nồng độ chất rắn hoà tan, … ảnh hưởng đến chất lượng con
nuôi và thành phẩm của ngành thuỷ sản.
Nội dung 2: Tìm hiểu và nghiên cứu các cảm biến có khả năng đo pH trong nước, đo độ mặn,
nồng độ chất tan và nhiệt độ nước, cách sử dụng và đọc dữ liệu từ các cảm biến.
Nội dung 3: Tìm hiểu và nghiên cứu cách lập trình cho vi điều khiển ESP32 và
STM32F103C8T8 để giao tiếp với các cảm biến.
Nội dung 4: Tìm hiểu và nghiên cứu cách giao tiếp giữa vi điều khiển ESP32 với module
sim800C và module lora Ra2, giao tiếp giữa STM32F103C8T6 với module lora để truyền dữ
liệu không dây giữa các trạm với nhau.
Nội dung 5: Tiến hành liên kết các bộ phận lại thành một hệ thống với đầy đủ các bộ phận cần
thiết như cảm biến, bộ phận truyền nhận dữ liệu bằng lora, bộ phận truyền dữ liệu về server.
Nội dung 6: Tiến hành thiết kế và thi công mô hình hoàn thiện
Nội dung 7: Xây dựng trang web hiển thị các thông số của hệ thống đồng thời có thể điều
khiển thiết bị có trong hệ thống.
Nội dung 8: Chạy thử nghiệm hệ thống và sửa chữa các lỗi xảy ra.
Nội dung 9: Viết báo cáo đồ án tốt nghiệp
Nội dung 10: Báo cáo đồ án tốt ngiệp
1.4 Giới hạn đề tài
Module lora Ra2 có thể truyền dữ liệu tốt trong phạm vi bán kính 500 mét.
Các thông số được hiển thị trên màn hình LCD tại trạm đo và được gửi về server để hiển thị
lên website cho người dùng khi họ muốn xem thông số qua điện thoại thông minh.
Cảm biến pH ASPS2221 có thể đo độ pH từ 0 – 14 với sai số ±1%, đo nhiệt độ nước trong
phạm vi từ 0C đến 110C.
Cảm biến độ mặn có thể đo nồng độ muối từ 0 đến 100 phần triệu, hay từ 0 – 0.1 phần nghìn,
độ dẫn điện từ 0 – 200mS, có sai số nằm trong khoảng ±2% trên tất cả thông số đo sử dụng
cảm biến này.
Cảm biến nhiệt độ độ ẩm DHT22 đo được độ ẩm từ 0 – 100% với sai số ±2%, nhiệt độ đo
được trong khoảng từ -40C – 80C với sai số ±0.5C.
Module sim800C truyền dữ liệu về server dùng GPRS.
1.5 Bố cục đồ án
Với đề tài giám sát chất lượng nước trong hồ nuôi thuỷ sản có bố cục đồ án như sau:
Chương 1: Tổng quan
Chương này chủ yếu nói về phần đặt vấn đề, mục tiêu nghiên cứu, nội dung nghiên cứu, các giới
hạn thông số và bố cục của đề tài.
Chương 2: Cơ sở lý thuyết
Chương này giới thiệu về ngành nuôi trồng thuỷ sản ở nước ta, lấy ví dụ các thông số ở ngành
nuôi tôm, những lý thuyết nền tảng của các loại hình truyền thông không dây được dùng rộng rãi
trong lĩnh vực IoT và một vài chuẩn truyền thông dữ liệu nối tiếp được sử dụng trong đề tài.
Chương 3: Tính toán thiết kế
Chương này trình bày về thiết kế sơ đồ khối và giải thích chức năng từng khối, tính toán thiết kế
mạch phần cứng của các khối trong sơ đồ khối, lựa chọn linh kiện phù hợp, thiết kế sơ đồ nguyên
lý toàn mạch.
Chương 4: Thi công hệ thống
Chương này trình bày về quá trình thi công mô hình hệ thống bao gồm thiết kế layout sơ đồ mạch
hệ thống, thi công mạch, lắp ráp và kiểm tra hệ thống. Đồng thời tiến hành viết chương trình hoàn
chỉnh cho hệ thống, nạp chương trình, thiết kế website cho hệ thống và chạy kiểm tra thử. Cuối
cùng là đóng gói sản phẩm hoàn chỉnh.
Nuôi trồng thủy sản bằng nguồn giống khai thác tự nhiên: là hình thức thu gom “giống” ở
ngoài tự nhiên từ các giai đoạn con non đến con trưởng thành, sau đó nuôi tiếp đến cỡ thương
phẩm với việc sử dụng các kỹ thuật nuôi.
Nuôi trồng thủy sản quảng canh cải tiến: nuôi trong một diện tích rộng, có bổ sung thêm giống,
thức ăn, cải tạo dọn các bãi nhỏ, trông coi, bảo vệ thu hoạch.
Nuôi trồng thủy sản cao sản: là hình thức nuôi thâm canh, có năng suất cao, đạt trên 200
tấn/ha/năm, sử dụng hoàn toàn thức ăn công nghiệp có đủ các chất dinh dưỡng theo nhu cầu
của loài, thả giống ương từ các trại sản xuất giống, không sử dụng phân bón, kiểm soát hoàn
toàn địch hại và trộm cắp, có chế độ kiểm tra và điều phối cao, thường xuyên cung cấp nước
tự chảy hay bơm, hoặc nuôi trong lồng, sử dụng máy sục khí và thay nước hoàn toàn, tăng
cường kiểm soát chất lượng nước cấp trong hệ thống ao, lồng, bể và mương xây nước chảy.
Hình 2.2 Mô hình nuôi trồng thuỷ sản ứng dụng công nghệ cao
2.1.2 Các chỉ tiêu sinh – hoá – lý của nước tác động đến con nuôi – lấy ví dụ cụ thể ở tôm.
Theo số liệu được cung cấp từ Công ty TNHH Sinh hoá Môi trường Bình Lan, ta có bảng số
liệu giới hạn các đặc tính của nước đối với việc nuôi tôm.
Bảng 2.1 Các thông số sinh – lý – hoá của nước nuôi tôm
Để đảm bảo chất lượng nước thì việc đánh giá chất đất, thiết kế ao, chuẩn bị ao nuôi lẫn việc
quản lý ao, kiểm soát các thông số trong giới hạn cho phép đều rất quan trọng. Tác động của mỗi
đặc tính nước được thể hiện như sau:
Chất lượng nước và chất đất: Đất phèn có tính axit, pH rất dễ xuống thấp nên không có lợi cho
tôm cá. Do đó nếu có thể, nên tránh đất phèn nặng. Vùng đất ven biển có nước lợ và nước
mặn, thuận lợi cho nuôi tôm nhưng thường là đất phèn. Để hạn chế ảnh hưởng của phèn thì
phải thiết kế ao tôm thích hợp và chế độ quản lý nước phù hợp. Muốn vậy thì trước khi đào
ao, nên biết rõ chất lượng đất và chiều sâu các lớp đất. Việc tìm hiểu chất đất vừa giúp thiết
kế ao sao cho giảm ảnh hưởng của phèn, vừa giúp tính lượng hóa chất cần thiết để cải tạo đất,
nhờ đó tiết kiệm nhiều chi phí.
Nhiệt độ nước: Nhiệt độ nước ảnh hưởng đến tốc độ tăng trưởng và tỉ lệ sống của tôm. Nhiệt
độ tốt nhất cho tôm là 26 - 32°C. Cần chú ý khi nhiệt độ tăng trên 32°C. Ở nhiệt độ 35°C,
100% tôm dưới một tháng tuổi chết; trên 40°C thì toàn bộ tôm sẽ chết. Nhiệt độ thấp thì tôm
sẽ chậm lớn.
Độ mặn (độ muối): Độ mặn thích hợp cho tôm sú và tôm thẻ chân trắng là 5 – 35 (‰ - phần
ngàn). Tuy nhiên, hiện nay nuôi tôm thẻ chân trắng được khuyến cáo ở độ mặn 5‰ để giảm
nguy cơ bệnh gan tụy.
Độ pH: pH thích hợp cho đa số động vật thủy sinh là 6,5-9,0. pH tối ưu cho tôm là 7,5 – 8,5,
cho cá basa là 7 – 8,5. Ngoài ra, pH không được dao động quá 0,5 đơn vị trong ngày để tránh
sốc cho tôm cá.
Nồng độ oxy hoà tan: Ôxy hòa tan là dưỡng khí cho động vật dưới nước. Nước nuôi tôm phải
đảm bảo ôxy hòa tan > 3,5 mg/l, nhưng tối ưu là > 5 mg/l.
Độ kiềm: Độ kiềm là thước đo khả năng giữ pH ổn định và được tính bằng đơn vị mg/l CaCO3.
Độ kiềm cho ao tôm nên trong khoảng 100 - 150 mg/l. Độ kiềm cao thì pH ít dao động. Độ
kiềm thấp thì pH thay đổi mạnh, bất lợi cho tôm. Độ kiềm rất dễ thay đổi, do đó cần kiểm tra
độ kiềm mỗi 3 - 5 ngày.
Độ cứng tổng và khoáng chất: Độ cứng (GH) là thước đo tổng lượng các khoáng quan trọng
cho tôm là Canxi (Ca) và Magiê (Mg) trong nước. Độ cứng được tính bằng đơn vị đo là mg/l
CaCO3 tương tự như độ kiềm, nhưng độ cứng và độ kiềm là các thông số hoàn toàn khác nhau.
Với tôm nuôi trong môi trường nước lợ thì quan trọng hơn cả là tỉ lệ Mg:Ca:K. Tỉ lệ này phải
bằng với tỉ lệ trong nước biển để tôm phát triển bình thường. Độ khoáng và tỉ lệ khoáng trong
nước biển (độ mặn 35 ‰) được cho trong bảng sau:
Bảng 2.2: Tỉ lệ các khoáng chất trong nước biển có độ mặn 35‰
Độ trong: Nước trong hay đục là do phù sa lơ lửng hay quần thể vi sinh vật (tảo và vi khuẩn).
Tảo rất quan trọng, vì tảo vừa là nguồn thức ăn, vừa là nguồn cung cấp và tiêu thụ ôxy hòa
tan. Có tảo lợi nhưng cũng có tảo hại như tảo lam. Tảo nhiều thì ban ngày ôxy hòa tan cao,
nhưng đêm ôxy hòa tan lại thấp, do đó cần giữ mật độ tảo vừa phải. Đục do phù xa không có
lợi cho sự phát triển của tảo, nên cần lắng trước khi gây màu nước (gây tảo). Khi phù xa đã
lắng, thì độ trong/đục của nước đặc trưng cho nồng độ tảo. Độ trong 30 - 35 cm là tối ưu cho
nước nuôi tôm.
Hydro Sunphua (H2S): Suynphua Hyđrô là khí rất độc đối với tôm và động vật trong đó có
người. H2S hình thành do sự phân hủy yếm khí thức ăn thừa, xác cây cỏ và chất thải của vật
nuôi, hay từ iôn Sunphat nhờ vi khuẩn khử Suynphat. Bùn đáy có màu đen và có mùi trứng
thối là vì sự hiện diện của H2S. Các ao đất phèn có nguy cơ bị nhiễm Suynphua Hydrô cao.
Tôm ưa sống gần lớp bùn, nên sự tích tụ H2S trong bùn đáy và lớp nước đáy ảnh hưởng rất
lớn. Tôm mệt mỏi khi H2S 0,1 –0, 2 mg/l; chết từ từ và chìm xuống đáy khi nồng độ H2S trong
nước đáy là 0,9 mg/l, cho dù ôxy cao; và chết ngay lập tức khi H2S lên 4 mg/l. Theo TCVN
cho nước nuôi tôm, nồng độ sunphua tự do H2S không được vượt quá 0,05 mg/l.
Nitrat: Nitrat không độc và là dưỡng chất để tảo phát triển. Tôm không bị ảnh hưởng của nồng
độ NO3- ở 900 mg/l. Tuy nhiên NO3 quá cao sẽ dẫn đến hiện tượng phú dưỡng; tảo, trong đó
có tảo độc phát triển mạnh, làm giảm chất lượng nước.
Amôniac: Amôniac rất độc với tôm. Thử nghiệm trên 5 loại tôm cho thấy, NH3 0.45 mg/l làm
giảm tốc độ lớn 50%. Theo TCVN, nồng độ amôniac tự do NH3 trong nước nuôi tôm không
được vượt ngưỡng 0,3 mg/l, nhưng ngưỡng tối ưu là 0,1 mg/l.
Nitrit: Nitrit NO2- là chất độc cho con nuôi. Nitrit ngấm vào cơ thể tôm cá qua mang và da.
Nitrit tác dụng với máu, làm quá trình vận chuyển ôxy trong cơ thể trở nên khó khăn, con nuôi
èo uột, chậm lớn, dễ bị bệnh và thậm chí tử vong. Đặc biệt, cá rất nhậy cảm với nitrit. Giới
hạn nitrit cho ao tôm là 1 mg/l NO2- (hay 0,3 mg/l NO2-/N).
2.1.3 Các tiêu chuẩn cho ao nuôi thuỷ sản – nuôi tôm sú
Theo nội dung văn bản Tiêu chuẩn ngành 28TCN 171:2001 về quy trình công nghệ nuôi thâm
canh tôm sú do Tổng cục Thuỷ sản ban hành ta có các tiêu chuẩn ao nuôi như sau:
Hình dạng ao nuôi: Hình vuông hoặc hình chữ nhật có tỉ lệ kích thước dài/rộng không lớn hơn
1.5/1.0.
Diện tích ao: Từ 0,5 đến 1,0 ha.
Ðáy ao: Bằng phẵng, được đầm nén chặt; độ dốc về phía cống tiêu từ 0,5 đến 0,8 %.
Bờ ao:
Yêu cầu không rò rỉ, không sạt lở.
Chiều cao: Cao hơn mức nước lớn nhất trong ao 0,5 m.
Một phần của phổ LoRa sử dụng thể hiện ít nhiễu điện từ, do đó tín hiệu có thể kéo dài một
khoảng cách xa, thậm chí đi qua các tòa nhà, với rất ít năng lượng. Điều này phù hợp với các thiết
bị IoT với dung lượng pin hạn chế. Các tính năng khác của LoRa cũng khiến nó trở nên lý tưởng
cho IoT. LoRa sử dụng thuật toán tốc độ dữ liệu thích ứng để giúp tối đa hóa tuổi thọ pin và dung
lượng mạng của thiết bị. Các giao thức của nó bao gồm nhiều lớp mã hóa, ở cấp độ mạng, ứng
dụng và thiết bị, cho phép liên lạc an toàn. Tính hai chiều của giao thức hỗ trợ các thông điệp
quảng bá, cho phép chức năng cập nhật phần mềm.
Các ứng dụng của LoRa trong lĩnh vực IoT cụ thể như:
Ứng dụng vào việc phát triển thành phố thông minh: Thành phố thông minh bao gồm nhiều
khu vực như vậy. Quản lý giao thông và chất thải thông minh, theo dõi tiêu thụ năng lượng,
đo lường môi trường, giám sát đỗ xe và chiếu sáng, hệ thống phát hiện và báo động cháy tất
cả đều là những trụ cột của khái niệm thành phố thông minh. Khi nói đến các thành phố kỹ
thuật số, thành phố Thông Minh chỉ riêng kết nối LTE hoặc WiFi là không đủ. Trên thực tế,
thế giới hiện nay đang đối diện với vấn đề lượng thông tin cần truyền tải đi rất lớn trong các
khu vực đô thị vì chúng ngày càng đông dân cư hơn mà phổ dữ liệu thì bị hạn chế. Sự căng
thẳng ngày càng tăng đối với các mạng và tín hiệu mạng gặp khó khăn trong việc thâm nhập
các cấu trúc kín và các khu vực ngầm. Đây là một trở ngại lớn trong việc phát triển các thành
phố mà ở đó mọi thứ được kết nối với nhau chỉ thông qua mạng internet. Ngoài ra, để các cảm
biến được triển khai hoạt động một cách ồ ạt và rộng khắp, mạng mà chúng truyền dữ liệu thu
thập được phải có độ tin cậy, an toàn và bền vững trong thời gian dài. Thật không may, điều
này có thể có nghĩa là phải đối mặt với chi phí cực kỳ cao. Tuy nhiên, nơi nào có vấn đề, sẽ
luôn có giải pháp. Nhờ kết nối LoRaWAN, các thành phố hiện có thể giải quyết những thách
thức này.
Hình 2.4 Mô hình thành phố thông minh ứng dụng IoT có hỗ trợ LoRa
Ứng dụng của LoRa trong toà nhà thông minh: Tự động hóa trong tòa nhà bao gồm tất cả các
hệ thống quan trọng của tòa nhà như chiếu sáng, kiểm soát khí hậu, báo cháy, an ninh, v.v.
Chúng ta đã biết rằng LoRa cho phép các cảm biến hoạt động trong nhiều năm mà không cần
nguồn điện liên tục. Điều này đặc biệt thuận tiện cho các địa điểm khó tiếp cận. Thay vì tập
trung vào bảo trì thường xuyên các cảm biến đắt tiền, doanh nghiệp có thể thiết lập cơ sở hạ
tầng và tập trung nỗ lực và đầu tư vào các nhiệm vụ quan trọng trong kinh doanh. LoRa
không yêu cầu kỹ thuật viên có tay nghề cao để cài đặt hoặc bảo trì. LoRa cung cấp cho chủ
sở hữu tòa nhà và doanh nghiệp khả năng giảm chi phí hoạt động. Giảm chi phí năng lượng,
tăng sự hài lòng của người thuê và nâng cao giá trị tài sản giúp doanh nghiệp và chủ sở hữu
tòa nhà tạo ra nguồn doanh thu mới.
Hình 2.5 Ứng dụng LoRa trong truyền tín hiệu báo cháy trong toà nhà
Ứng dụng vào nông nghiệp thông minh: Ứng dụng IoT được thiết lập để đẩy tương lai của
kinh doanh nông nghiệp lên một tầm cao mới. Ở một số quốc gia, nông nghiệp thông minh
đang trở nên phổ biến hơn, nhưng để đẩy nhanh việc áp dụng công nghệ IoT trên toàn thế giới,
nông dân và người chăn nuôi cần các cảm biến năng lượng thấp, chi phí thấp. Bằng cách tận
dụng Công nghệ LoRa và giao thức mở LoRaWAN, các doanh nghiệp nông nghiệp có thể theo
dõi kỹ thuật số, quản lý và phân tích mọi khía cạnh của doanh nghiệp của họ, cải thiện hoạt
động chung và lợi tức đầu tư (ROI). Từ theo dõi sức khỏe gia súc, theo dõi chăn nuôi bò đến
tăng năng suất cây trồng, LoRa Technology cung cấp một nền tảng vững chắc cho tương lai
của nông nghiệp thông minh vì nó dễ triển khai và giúp nông dân và người chăn nuôi phát
triển kinh doanh.
Hình 2.6 Ứng dụng LoRa trong nông nghiệp thông minh
2.3 Giới thiệu về công nghệ truyền dữ liệu di động GPRS
2.3.1 Khái niệm
GPRS là viết tắt của cụm từ General Packet Radio Service – dịch vụ vô tuyến gói tổng hợp – là
một dịch vụ dữ liệu di động dạng đóng gói dành cho những người dùng hệ thống thông tin di động
toàn cầu (GSM) và điện thoại di động IS-136. Nó cung cấp dữ liệu ở tốc độ từ 56 đến 114 kbps.
GPRS giúp truy cập giao thức ứng dụng như:
Truy cập internet (WAP).
Tin nhắn SMS.
Tin nhắn đa phương tiện (MMS).
Email.
GPRS giúp người dùng tiết kiệm chi phí kết nối, liên lạc. Vì dữ liệu được truyền qua GPRS được
tính theo từng megabyte, trong khi cách thức kết nối truyền thống tính theo từng phút kết nối. Có
nghĩa là, khi dùng dịch vụ GPRS bạn sẽ chỉ trả phí cho dung lượng bạn đăng tải cao hay thấp chứ
không phải bạn đã kết nối trong bao lâu.
2.3.2 Ứng dụng
Với những ưu điểm và lợi ích của GPRS đem lại thì nó đã và đang được sử dụng rất rộng rãi và
là một phương thức rất quan trọng trong đời sống, đặc biệt là giai đoạn khi mà công nghệ 3G hay
4G như hiện nay chưa ra đời. Một số những ứng dụng của GPRS được sử dụng như:
Trong các ngành công nghiệp chung, GPRS được sử dụng như là một phương thức truyền -
nhận tín hiệu không dây từ xa cho các trạm điều khiển, giám sát trung tâm như hệ thống giám
sát năng lượng, xử lý nước thải, nhiệt độ môi trường…
Hình 2.9 Ứng dụng của GPRS trong mạng lưới viễn thông
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 16
Chương 2: CƠ SỞ LÝ THUYẾT
Trong đời sống sinh hoạt: GPRS được sử dụng trong các thiết bị thông minh như báo chống
trộm, các thiết bị định vị phương tiện trong giao thông vận tải, smart home …
Hình 2.11 Mô tả giao thức truyền thông SPI giữa thiết bị chủ và thiết bị tớ
Bus giao tiếp SPI thường được sử dụng để giao tiếp vi xử lý hoặc vi điều khiển với bộ nhớ như
EEPROM, RTC (Đồng hồ thời gian thực), ADC (Analog to Digital Converter – Bộ chuyển đổi
tương tự sang số), DAC (Digital-to-Analog Converter – Bộ chuyển đổi số sang tương tự), thiết bị
hiển thị như màn hình LCD, IC âm thanh, các loại cảm biến như nhiệt độ và áp suất, thẻ nhớ như
MMC hoặc thẻ SD hoặc thậm chí các bộ vi điều khiển khác.
Đối với giao thức SPI, để bộ phát và bộ thu có thể đồng bộ được dữ liệu thì cần phải có xung
đồng bộ dữ liệu, và đó không đâu khác chính là xung clock. Xung clock này được thiết bị master
phát ra và truyền đến tất cả các thiết bị có trên bus SPI.
Hình 2.12 Mô tả đường truyền dữ liệu đồng bộ giữa hai thiết bị bằng SPI
2.4.1.2 Cách thức hoạt động
Trong giao thức SPI, các thiết bị được kết nối trong một mối quan hệ Master – Slave trong một
giao diện đa điểm. Trong loại giao diện này, một thiết bị được coi là Master của bus (thường là
một vi điều khiển) và tất cả các thiết bị khác (IC ngoại vi hoặc thậm chí các vi điều khiển khác)
đều được coi là Slave. Trong giao thức SPI, có thể chỉ có một thiết bị Master nhưng nhiều thiết bị
Slave.
Bus SPI bao gồm 4 tín hiệu hoặc chân và chúng là:
Master – Out / Slave – In (MOSI hay SI): cổng ra của bên Master, cổng vào của bên Slave,
dành cho việc truyền dữ liệu từ thiết bị Master đến thiết bị Slave .
Master – In / Slave – Out (MISO hay SO): cổng vào của bên Master, cổng ra của bên Slave,
dành cho việc truyền dữ liệu từ thiết Slave đến thiết bị Master.
Serial Clock (SCK hay SCLK): xung giữ nhịp cho giao tiếp SPI, dùng để đồng bộ dữ liệu giữa
thiết bị truyền và thiết bị nhận. Sự tồn tại của xung SCK giúp quá trình truyền dữ liệu ít bị lỗi
và có thể truyền với tốc độ rất cao.
Chip Select (CS) hay Slave Select (SS): đây là chân chọn chip.
Hình 2.13 Kết nối giữa hai thiết bị trong bus SPI
Quá trình truyền dữ liệu giữa Master và Slave xảy ra trong bus SPI khi chân CS hoặc NSS của
Slave được kéo xuống mức thấp. Quá trình này xảy ra đồng thời và sau 8 chu kỳ đồng hồ, một
byte dữ liệu được truyền theo cả hai hướng và do đó, SPI là một giao tiếp song công toàn phần
(full – duplex). Nếu dữ liệu phải được truyền bởi chỉ một thiết bị, thì thiết bị kia phải gửi một cái
gì đó (dữ liệu giả) và nó phụ thuộc vào thiết bị cho dù dữ liệu được truyền là dữ liệu thực tế hay
không. Điều này có nghĩa là đối với mỗi bit được truyền bởi một thiết bị, thiết bị kia phải gửi dữ
liệu một bit, tức là Master truyền dữ liệu đồng thời trên MOSI và nhận dữ liệu từ Slave trên đường
MISO. Nếu Slave muốn truyền dữ liệu, Master phải tạo ra tín hiệu đồng hồ cho phù hợp bằng
cách biết khi nào Slave muốn gửi dữ liệu trước.
2.4.2 Chuẩn truyền dữ liệu UART
2.4.2.1 Giới thiệu về chuẩn truyền dữ liệu UART
Các tên đầy đủ UART là “Universal Asynchronous Receiver / Transmitter”, và nó là một vi
mạch sẵn có trong một vi điều khiển nhưng không giống như một giao thức truyền thông (I2C &
SPI). Chức năng chính của UART 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 cách là giao tiếp dữ liệu nối tiếp và giao tiếp dữ liệu song song.
Truyền thông nối tiếp: Trong giao tiếp dữ liệu nối tiếp, dữ liệu có thể được truyền qua một cáp
hoặc một đường dây ở dạng bit-bit và nó chỉ cần hai cáp. Truyền thông dữ liệu nối tiếp không
đắt khi chúng ta so sánh với giao tiếp song song. Nó đòi hỏi rất ít mạch cũng như dây. Vì vậy,
giao tiếp này rất hữu ích trong các mạch ghép so với giao tiếp song song.
Parity bit: còn gọi là bit kiểm tra chẵn lẻ, bit này cho phép người dùng kiểm tra dữ liệu nhận
được xem dữ liệu có đúng hay không. Trên thực tế bít này ít được dùng nên cũng không bắt
buộc trong quá trình thiết lập.
Data frame: khung dữ liệu, là dữ liệu thật được truyền từ người gửi đến người nhận. Độ dài
khung dữ liệu có thể nằm trong khoảng 5 đến 8 bit. Nếu không dùng bit chẵn lẻ thì chiều dài
khung dữ liệu có thể lên đến 9 bit. Và trong quá trình truyền, bit LSB sẽ được truyền trước
tiên.
2.4.3 Chuẩn truyền dữ liệu Modbus
2.4.3.1 Giới thiệu về Modbus RTU
Modbus là một giao thức truyền thông nối tiếp ban đầu được Modicon (nay là Schneider
Electric) trình làng năm 1979 để sử dụng với các bộ điều khiển logic lập trình (PLC). Modbus đã
trở thành một giao thức truyền thông tiêu chuẩn thực tế và hiện là phương tiện phổ biến để kết nối
các thiết bị điện tử công nghiệp.
Giao thức Modbus RTU là một giao thức mở, sử dụng đường truyền vật lý RS-232 hoặc RS485
và mô hình dạng Master-Slave. Đây là một giao thức được sử dụng rộng rãi trong nhiều lĩnh vực
tự động hóa, công nghiệp.... vì những ưu điểm ổn định – đơn giản - dễ dùng. Modbus được coi là
giao thức truyền thông hoạt động ở tầng "Application", cung cấp khả năng truyền thông
Master/Slave giữa các thiết bị được kết nối thông qua các bus hoặc network. Trên mô hình OSI,
Modbus được đặt ở lớp 7. Modbus được xác định là một giao thức hoạt động theo "hỏi/đáp" và
sử dụng các "function codes" tương ứng để hỏi đáp.
Cấu trúc frame truyền Modbus RTU:
Một frame truyền Modbus RTU bao gồm: 1 byte địa chỉ - 1 byte mã hàm - n byte dữ liệu - 2
byte CRC như hình ở dưới:
Ngoài các thông số trên phản giống nhau giữa master và slave, thì bên master phải biết được ID
của slave cần giao tiếp.
Mỗi thiết bị trong mạng modbus được cung cấp một địa chỉ duy nhất. Trong mạng modbus chỉ
có 1 node được gán là Master (ta gọi là Master, các node còn lại gọi là Node) mới có thể khởi tạo
lệnh. Trong frame truyền có chứa địa chỉ của thiết bị slave (1 đến 247), chỉ thiết bị có ID tương
ứng mới đáp ứng, mặc dù các thiết bị khác có thể nhận được nó (một ngoại lệ là các lệnh có thể
phát được cụ thể được gửi đến nút 0, được thực hiện nhưng không được xác nhận). Tất cả các
lệnh Modbus chứa thông tin tổng kiểm tra (check sum CRC) để cho phép người nhận phát hiện
lỗi truyền. Master sẽ đọc và ghi các dữ liệu vào thanh ghi của thiết bị slave.
Cách đấu nối:
A- (Master) <------> A- (Slave)
B+ (Master) <------> B+ (Slave)
GND (Master) <-------> GND (Slave)
Dây GND cần nối trong trường hợp khu vực đấu nối ở vùng nhiều sấm sét, máy móc hoạt động
dòng lớn, nhiễu phức tạp...để tránh bị phá hỏng thiết bị hoặc tín hiệu thu được bị sai. Điện thế
chênh lệch giữa GND hai bên tối đa là 7V.
Nếu thiết bị cần đọc là đồng hồ điện, đồng hồ nước hoặc một thiết bị đã được tích hợp LCD hiển
thị các thông số thì chúng ta sẽ nhìn vào đó và thiết lập các thông số như baud rate, data bit, stop
bit, parity bit ở Master (chính là vi điều khiển của chúng ta) để giữa Master và Slave được đồng
bộ với nhau. Còn nếu chúng ta dùng các cảm biến không có LCD thì ta phải xem trong datasheet
của chúng về những thông số ở trên để thiết lập đồng bộ với bộ điều khiển của chúng t
Web Server
Khối cảm
biến
Relay điều
Nguồn Bộ điều khiển động cơ khiển bật/tắt
động cơ
Hình 3.9 Sơ đồ nguyên lý khối điều khiển ở trạm đo và trạm điều khiển động cơ
3.2.2 Khối cảm biến
3.2.2.1 Mạch đọc dữ liệu từ cảm biến pH, nhiệt độ nước ASPSA2121, độ mặn và nồng độ
chất tan trong nước ASDSSTY8077
Cảm biến pH ASPSA2121 với các thông số kỹ thuật:
Nguồn cung cấp: 12VDC.
Phạm vi đo lường 0,00 ~ 14,00 pH.
Độ phân giải 0,01 pH.
Độ chính xác 0,02 pH.
Mô hình bù nhiệt độ tự động hoặc thủ công.
Phạm vi đo khoảng nhiệt độ -10.0 ~ 110.0℃.
Độ phân giải nhiệt độ 0,1ºC.
Nhiệt độ chính xác 0,5ºC.
Hình 3.11 Cảm biến độ mặn và nồng độ chất tan trong nước
Do cảm biến được nhà sản xuất thiết kế sử dụng cho công nghiệp nên nó được hỗ trợ chuẩn
truyền dữ liệu số Modbus RTU. Do chuẩn này cần phải giao tiếp thông qua trung gian RS485 nên
nhóm đã sử dụng IC SP3485 để làm trung gian đọc dữ liệu về vi điều khiển.
Để IC hoạt động ổn định, theo nhà sản xuất, cần phải thêm 1 điện trở giữa 2 chân A và B với
giá trị điện trở nhỏ. Do đó nhóm chọn điện trở giá trị 120 theo như khuyến nghị của những
người dùng trong cộng đồng điện tử.
3.2.2.2 Mạch cảm biến nhiệt độ độ ẩm DHT22
Môi trường xung quanh trạm đo rất quan trọng, nó quyết định tuổi thọ của các thiết bị trong
trạm. Vậy nên, để kiểm soát các thông số môi trường cơ bản như nhiệt độ và độ ẩm không khí,
nhóm đã dùng cảm biến DHT22. Cảm biến còn có thể cho biết mạch điện hoạt động có quá nóng
do quá công suất hay không. Khi sử dụng cảm biến, chân data phải được kéo lên mức cao theo
chuẩn giao tiếp OneWire mà nhà sản xuất yêu cầu, ở đây nhóm chọn trở 4.7k để làm trở kéo lên
và cảm biến hoạt động ổn định.
5−0,7 5−0,7
RB = β= *50 = 5375Ω chọn RB = 4.7kΩ.
𝐼𝑐 40𝑚𝐴
trong đó IC = 40 mA là dòng cấp cho đèn led màn hình của LCD.
Chọn β = 50.
và có cộng đồng hỗ trợ rộng lớn nên nhóm đã quyết định dùng module Lora Ra-2 làm module
truyền nhận dữ liệu không dây giữa các trạm thu thập dữ liệu với trạm trung tâm.
Các thông số kỹ thuật cơ bản của module Lora Ra-2:
Dải tần số: module hoạt động ở tần số cao từ 420 - 450MHz (mặc định là 433Mhz).
Tốc độ truyền dữ liệu có thể đạt đến 300Kbps.
Phạm vi phủ sóng truyền nhận dữ liệu có thể đạt bán kính lên đến 1km nếu ở nơi thoáng và ít
vật che chắn, nhưng lý tưởng nhất là trong phạm vi bán kính 500m.
Giao tiếp: có thể giao tiếp bằng giao thức truyền dữ liệu SPI hoặc qua các chân GPIO trên
module.
Điện áp hoạt động: 1.8 - 3.7V, mặc định 3.3V.
Nhiệt độ làm việc: -40 đến +85 độ.
𝑉−0,7 3.3−0,7
Ta có: IC = β*IB = β= β (điều kiện để có thể dẫn bảo hòa)
𝑅𝑏 𝑅𝑏
3.3−0,7 3.3−0,7
RB = β= *50 = 1,9 kΩ chọn RB = 2,2 kΩ.
𝐼𝑐 70𝑚𝐴
trong đó IC = 70 mA.
Chọn β = 50.
3.2.5 Khối nguồn
Nguồn sử dụng cho hệ thống là pin mặt trời và ắc quy.
Lý do sử dụng pin mặt trời: Để đáp ứng yêu cầu hệ thống hoạt động độc lập, linh động trong
việc di chuyển và không bị vướng bởi hệ thống dây điện cũng như không phụ thuộc và hệ
thống điện lưới, nhóm đã đi đến quyết định sử dụng nguồn điện từ năng lượng mặt trời để
dung cấp cho hệ thống hoạt động. Điện mặt trời là nguồn năng lượng sạch, giúp giảm ô nhiễm
môi trường và tiết kiệm cho người dùng.
Lý do sử dụng ắc quy: Hiện nay trên thị trường có rất nhiều loại pin có thể lưu điện lại để sử
dụng như pin lithium, pin li-on, … nhưng nhóm lại chọn sử dụng ắc quy có thông số 12V –
20Ah làm nguồn dự trữ điện năng cho hệ thống vì hệ thống cảm biến trong mạch sử dụng
nguồn 12V. Thay vì nếu chúng ta mua pin lithium có thông số 3.2V – 3500mAh thì ta phải
ghép 4 viên lại với nhau để có được điện áp 12V như yêu cầu thì chỉ với 1 bình ắc quy 12V –
20Ah là ta có thể đáp ứng được yêu cầu. Hơn nửa với dung tích lớn, bình ắc quy có thể nuôi
hệ thống chạy ổn định trong nhiều ngày mà không cần nắng để sạc điện từ pin mặt trời.
Nguyên lý làm việc của của khối nguồn: Pin năng lượng mặt trời cung cấp điện áp từ 17 đến
21V tuỳ vào mức độ nắng trong ngày. Nguồn điện này được đưa vào bộ sạc ắc quy để tích
điện. Điện sạc vào ắc quy đến đầy sẽ đạt 13.2V, nếu ắc quy dùng hết điện thì điện áp còn lại
10.8V. Sơ đồ kết nối giữa ắc quy, pin mặt trời và bộ sạc như sau:
Hình 3.20 Sơ đồ kết nối để sặc ắc quy từ năng lượng mặt trời
Thiết kế mạch nguồn cho khối điều khiển trung tâm:
Hình 3.21 Sơ đồ nguyên lý khối nguồn của trạm điều khiển trung tâm
Mạch nguồn sử dụng IC LM2596-ADJ được thiết kế riêng cho module sim800C theo yêu cầu
của nhà sản xuất Simcom với ngõ ra áp 3.8V với dòng tối đa lên tới 2A tuỳ vào từng mode sử
dụng.
Mạch nguồn dùng IC LM2596-5 được thiết dùng cho các module:
Module LCD 20x04 với điện áp cung cấp là 5V, dòng điện cung cấp là 50mA.
Module I2C dùng cho LCD với điện áp cung cấp là 5V, dòng điện cung cấp là 100mA.
Mạch nguồn dùng IC LM2596-3.3 được thiết để cấp nguồn cho các module như:
Moduel LoRa Ra-02 với điện áp cung cấp là 3.3V, dòng điện cung cấp là 100mA.
Module ESP32-WROOM-32 với điện áp cung cấp là 3.3V, dòng điện cung cấp là 500mA.
Module DHT22 với điện áp cung cấp là 3.3V, dòng điện cung cấp là 5mA.
Module SP3485 với điện áp cung cấp là 3.3V, dòng điện cung cấp là 5mA.
Tính toán thời lượng pin dùng cho trạm điều khiển trung tâm:
Bảng 3.1 Tính toán công suất của từng thiết bị trong trạm điều khiển trung tâm
Điện áp Dòng điện Công suất
STT Tên IC/Module
(V) (A) (W)
1 ESP32-WROOM-32 3.3 0.5 1.65
2 LoRa Ra-02 3.3 0.1 0.33
3 DHT22 3.3 0.005 0.017
4 SP3485 3.3 0.005 0.017
5 Sim800C 3.8 0.394 1.5
6 Module I2C cho LCD 5 0.025 0.5
7 LCD 20x4 5 0.05 0.25
8 Cảm biến pH 12 0.017 0.204
9 Cảm biến độ mặn 12 0.017 0.204
Tổng công suất: 4.672
Thời gian sử dụng ắc quy:
t = (A*V*)/P = (20*12*0.7)/4.672 36 (giờ)
Tính toán thời lượng pin dùng cho trạm thu thập dữ liệu nước:
Bảng 3.2 Tính toán công suất của từng thiết bị trong trạm thu thập dữ liệu nước
Điện áp Dòng điện Công suất
STT Tên IC/Module
(V) (A) (W)
1 STM32F103C8T6 3.3 0.150 0.495
2 LoRa Ra-02 3.3 0.1 0.33
Tính toán thời lượng pin dùng cho trạm điều khiển động cơ:
Bảng 3.3 Tính toán công suất của từng thiết bị trong trạm điều khiển động cơ
Điện áp Dòng điện Công suất
STT Tên IC/Module
(V) (A) (W)
1 STM32F103C8T6 3.3 0.150 0.495
2 LoRa Ra-02 3.3 0.1 0.33
3 Relay 12 0.07 0.84
4 DHT22 3.3 0.005 0.017
Tổng công suất: 1.682
Thời gian sử dụng ắc quy:
t = (A*V*)/P = (20*12*0.7)/1.682 100 (giờ)
Hình 3.22 Sơ đồ nguyên lý toàn mạch trạm điều khiển trung tâm
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 44
Chương 3: TÍNH TOÁN THIẾT KẾ
Hình 3.23 Sơ đồ nguyên lý trạm thu thập dữ liệu nước và điều khiển
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 45
Chương 4: THI CÔNG HỆ THỐNG
Hình 4.2 Sơ đồ sắp xếp linh kiện 3D trạm điều khiển trung tâm
Hình 4.4 Sơ đồ thiết kế PCB trạm thu thập dữ liệu nước và điều khiển
Hình 4.5 Sơ đồ sắp xếp linh kiện 3D trạm thu thập dữ liệu nước và điều khiển
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 48
Chương 4: THI CÔNG HỆ THỐNG
Các linh kiện sử dụng trong mạch đều là linh kiện dán trừ các hàng rào, domino, cổng an-ten
của module sim800 và module DHT22.
Các bước tiến hành hàn và kiểm tra mạch:
Bước 1: Hàn IC nguồn và các tụ, cuộn cảm, diode, cầu chì vào mạch trước. Tiến hành kiểm
tra thông mạch rồi sau đó cấp nguồn. Kiểm tra các đèn led nguồn và tiến hành đo áp không tải
Bước 2: Hàn chip STM32F103C8T6/module ESP32-WROOM-32 vào mạch và các nút reset,
thạch anh, điện trở, tụ gốm lộc nguồn vào mạch. Tiến hành kiểm tra thông mạch, nếu mạch
không bị chạm thì tiến hành cấp nguồn, nạp code vào để kiểm tra xem chip/module có hoạt
động không, nếu có lỗi thì khắc phục ngay.
Bước 3: Sau khi nguồn và module điều khiển trung tâm hoạt động ổn định, ta tiếp tục hàn
module sim800C và module LoRa vào, kiểm tra thông mạch, nạp code mẫu kiểm tra hoạt động
của module. Dùng code mẫu cho module sim800C giao tiếp với server xem có hoạt động
không. Sau đó đến kiểm tra truyền nhận giữa các module LoRa xem có ổn định không.
Bước 4: Hàn IC SP3485 vào mạch, kiểm tra thông mạch. Sau khi kiểm tra xong, nếu không
có lỗi ta tiến hành đọc cảm biến lấy dữ liệu về xem hệ thống có lỗi gì không để sửa chữa ngay.
Bước 5: Hàn module DHT22 và gắn LCD vào mạch, tiến hành kiểm tra ngắn mạch rồi nạp
code mẫu kiểm tra hoạt động của hai module mới được thêm vào và sửa lỗi nếu có.
Bước 6: Sau khi đã chắc chắn các module hoạt động bình thường, ta tiến hành nạp code hệ
thống vào mạch, kiểm tra lỗi và sửa lỗi nếu có phát sinh.
4.3 Đóng gói và thi công mô hình
Hình 4.10 Giao diện đăng nhập vào trang web quản lý
Sau đó, người dùng sẽ nhìn thấy giao diện trang chủ của web.
Hệ thống: Có chức năng thiết lập các thông số giới hạn trên và giới hạn dưới của nước. Ví
dụ nồng độ pH cao nhất và thấp nhất cho phép là từ 7 đến 9, độ mặn nằm trong khoảng từ
5/00 tới 35/00.
Hình 4.13 Giao diện khai báo thông tin người dùng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 54
Chương 4: THI CÔNG HỆ THỐNG
Hình 4.14 Giao diện thay đổi mật khẩu người dùng
Chức năng – nghiệp vụ: Có chức năng giám sát các thông số của nước là điều khiển động cơ
Hình 4.15 Giao diện thêm thông tin của các trạm được lắp mới
Hình 4.16 Giao diện giám sát thông số và điều khiển động cơ
Hình 4.17 Giao diện thiết lập thời gian tự động cho ăn
Báo cáo – thống kê: Có chức năng thống kê các số liệu thu thập được dưới dạng biểu đồ
S S S S
Bắt đầu Thời gian hiện Thời gian hiện Thời gian hiện Thời gian hiện
tại lớn hơn thời gian tại lớn hơn thời gian tại lớn hơn thời gian tại lớn hơn thời gian
ban đầu 1 ban đầu 2 ban đầu 3 ban đầu 4
Đ Đ Đ Đ
Khai báo các port IO,
các biến có trong Gửi yêu cầu và nhận
chương trình Truyền nhận Nhận dữ liệu từ cảm Gửi yêu cầu và gửi
lệnh điều khiển từ
Node 1 biến PH, mặN dữ liệu lên server
server
S
Kiểm tra hoạt S
động sim Kiểm tra đăng kí
mạng
Đ
Chế độ phản hồi dữ liệu Đ
truyền đến
Kết thúc
s
Lỗi bé hơn 5
Đ
Gửi dữ liệu yêu cầu lấy thông số
cảm biến từ các Node
Kết thúc
Nhận dữ liệu từ
cảm biến độ PH, độ mặn Truyền UART mã đọc cảm
biến độ pH
Cài đặt đưa tin cho các ứng Nhập tham số gửi lệnh lên HTTP Cài đặt phương thức POST dữ liệu.
dụng dựa trên ip
Cài đặt mạng di động Gửi yêu cầu lên HTTP Kết thúc
Hình 4.25 Lưu đồ chương trình nhận lệnh điều khiển từ server
4.5.2 Lưu đồ giải thuật của trạm thu thập dữ liệu nước và trạm điều khiển động cơ
Lưu đồ chương trình chính:
Bắt đầu
Đo lượng pin Đ
Nhận dữ liệu từ cảm
biến PH, mặn
Nhận dữ liệu từ cảm
biến DHT22
Thời ban đầu = thời
gian hiện tại + 10000
Hình 4.26 Lưu đồ chương trình chính trạm thu thập dữ liệu nước
Lưu đồ chương trình ngắt khi có tín hiệu LoRa yêu cầu từ trạm điều khiển trung tâm:
Kiểm tra ID s
GateWay
Đ
s s
Kiểm tra ID cảm Kiểm tra ID điều
biến khiển
Đ Đ
Đ Đ Đ
Kết thúc
Hình 4.27 Lưu đồ chương trình ngắt khi có lệnh từ LoRa của trạm trung tâm
Hình 4.28 Giao diện soạn thảo code Visual Studio Code
Hình 4.29 Biểu tượng của phần mềm Keil C khi khở động
Hình 4.30 Giao diện lập trình của phần mềm Keil C uVision5
STM32CubeMX là phần mềm được phát triển bởi hãng ST có khả năng cấu hình các port IO
cho vi điều khiển STM32 thông qua việc click chuột chọn các pin, các port trên giao diện mà
phần mềm đã hỗ trợ. Ở đó chúng ta có thể cấu hình cho các chân khá dễ dàng, tính toán các
thông số thời gian của timer, lựa chọn các chuẩn giao tiếp theo yêu cầu, cấu hình các
Middlewares như FATS, FREERTOS, … Giao diện của phần mềm như sau:
Hình 4.33 Giao diện điều chỉnh các thông số cấu hình cho các ngoại vi
Sau khi đã cấu hình đầy đủ các thông số cần thiết, ta tiến hành sinh code. Lúc này chương trình
sẽ tạo ra file Keil C và các file hỗ trợ khác để chúng ta có thể chuyển qua phần mềm Keil C và
tiến hành viết chương trình điều khiển cho chip.
4.6.3 Giới thiệu về phần mềm Microsoft SQL
Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ được phát triển bởi Microsoft.
Là một máy chủ cơ sở dữ liệu, nó là một sản phẩm phần mềm có chức năng chính là lưu trữ và
truy xuất dữ liệu theo yêu cầu của các ứng dụng phần mềm khác. Có thể chạy trên cùng một máy
tính hoặc trên một máy tính khác trên mạng (bao gồm cả Internet).
Microsoft tiếp thị rất nhiều phiên bản Microsoft SQL Server khác nhau, nhắm vào các đối tượng
khác nhau và cho khối lượng công việc khác nhau, từ các ứng dụng máy đơn nhỏ đến các ứng
dụng Internet lớn có nhiều người dùng đồng thời.
Hình 4.35 Màn hình làm việc của phần mềm Microsoft SQL Server
4.6.4 Giới thiệu về các ngôn ngữ web
4.6.4.1 Giới thiệu về ngôn ngữ HTML
HTML (tiếng Anh, viết tắt cho HyperText Markup Language, hay là "Ngôn ngữ Đánh dấu Siêu
văn bản") là một ngôn ngữ đánh dấu được thiết kế ra để tạo nên các trang web với các mẩu thông
tin được trình bày trên World Wide Web. Cùng với CSS và JavaScript, HTML tạo ra bộ ba nền
tảng kỹ thuật cho World Wide Web. HTML được định nghĩa như là một ứng dụng đơn giản của
SGML và được sử dụng trong các tổ chức cần đến các yêu cầu xuất bản phức tạp. HTML đã trở
thành một chuẩn Internet do tổ chức World Wide Web Consortium (W3C) duy trì. Phiên bản
chính thức mới nhất của HTML là HTML 4.01 (1999). Sau đó, các nhà phát triển đã thay thế nó
bằng XHTML. Hiện nay, HTML đang được phát triển tiếp với phiên bản HTML5 hứa hẹn mang
lại diện mạo mới cho Web.
Hypertext là cách mà các trang Web (các tài liệu HTML) được kết nối với nhau. Và như thế,
đường link có trên trang Web được gọi là Hypertext. Như tên gọi đã gợi ý, HTML là ngôn ngữ
đánh dấu bằng thẻ (Markup Language), nghĩa là bạn sử dụng HTML để đánh dấu một tài liệu text
bằng các thẻ (tag) để nói cho trình duyệt Web cách để cấu trúc đó hiển thị ra màn hình.
"Internal CSS": Đặt CSS ở đầu trang Web để áp dụng kiểu dáng cho toàn bộ trang ấy, khi đó
chỉ cần đặt đoạn CSS vào trong cặp thẻ <style> rồi đặt vào trong phần header của Web (giữa
<head> và </head>):
<style type="text/css">
body {font-family:verdana; color:#0000FF;} /* Kiểu chữ trong trang Web là
"Verdana", màu chữ thông thường là màu xanh dương */
</style>
"External CSS": Đặt các thuộc tính CSS vào một tệp tin riêng biệt (*.css), khi đó có thể tham
chiếu đến từ nhiều trang Web khác nhau:
Ví dụ về nội dung tệp style.css:
Tham chiếu tới tệp tin CSS trên từ trang Web bằng đoạn mã (mã có thể nằm ngoài thẻ
<head>):
Hình 4.38 Phần mềm Visual Studio 2019 phiên bản 16.3
Tiêu chuẩn ECMA liệt kê các mục tiêu của việc thiết kế ngôn ngữ C#:
Ngôn ngữ được dự định là một ngôn ngữ lập trình đơn giản, hiện đại, hướng đến nhiều mục
đích sử dụng, và là một ngôn ngữ lập trình hướng đối tượng.
Ngôn ngữ và việc triển khai đáp ứng các nguyên tắc của ngành kỹ thuật phần mềm như kiểm
tra chặt chẽ kiểu dữ liệu, kiểm tra giới hạn mảng, phát hiện các trường hợp sử dụng các biến
chưa có dữ liệu, và tự động thu gom rác. Tính mạnh mẽ, sự bền bỉ, và năng suất của việc lập
trình là rất quan trọng đối với ngôn ngữ này.
Ngôn ngữ sẽ được sử dụng để phát triển các thành phần của phần mềm theo hướng thích hợp
cho việc triển khai trong các môi trường phân tán.
Khả năng di chuyển (portability) là rất quan trọng, đặc biệt là đối với những lập trình viên đã
quen với C và C++.
Hỗ trợ quốc tế hóa.
Ngôn ngữ sẽ được thiết kế để phù hợp với việc viết các ứng dụng cho cả hai hệ thống: hosted
và nhúng, từ các phần mềm quy mô lớn, đến các phần mềm chỉ có các chức năng đơn giản.
Mặc dù các ứng dụng C# có tính kinh tế đối với các yêu cầu về bộ nhớ và chế độ xử lý, ngôn
ngữ này không cạnh tranh trực tiếp về hiệu năng và kích thước đối với ngôn
ngữ C hoặc assembly.
4.7 Viết tài liệu hướng dẫn sử dụng, thao tác
Bước 1: Kiểm tra thẻ sim (tài khoảng, dung lượng data truy cập internet, sóng, …), lắp sim
vào mạch.
Bước 2: Cấp nguồn cho toàn bộ hệ thống. Hệ thống được nuôi bằng ắc quy 12VDC – 20Ah
được nạp sạc bằng pin mặt trời có công suất 50W.
Bước 3: Thả các cảm biến vào nước và chờ vài phút.
Bước 4: Quan sát các chỉ số nước được cập nhật và hiển thị lên LCD.
Bước 5: Lên trang web của hệ thống và đăng nhập tài khoảng.
Bước 6: Để vào giao diện xem các thông số ở các trạm, ta chọn CHỨC NĂNG – NGHIỆP
VỤ -> Giám sát điều khiển -> Chọn thẻ có tên trạm “Trạm Long An”, hệ thống sẽ cho ta
thấy các trạm quan trắc nhỏ mà trạm trung tâm đang quản lý. Có thể điều khiển 3 loại máy –
động cơ điện điển hình có ở ao nuôi thuỷ sản như máy xục oxy, máy bơm nước, máy cho ăn
bằng 3 công tắc hiển thị bên dưới tên trạm.
Bước 7: Để thiết lập thông số cảnh báo, ta vào HỆ THỐNG -> Thông số cảnh báo -> tiến hành
tuỳ chỉnh các thông số theo yêu cầu -> nhấn “Cập nhật thông số cảnh báo”.
Bước 8: Để thiết lập thời gian cho ăn hoặc thời gian bơm nước, ta vào CHỨC NĂNG –
NGHIỆP VỤ -> Thời gian cho ăn -> nhấn chọn sửa -> thiết lập thời gian -> nhấn “xác nhận”.
Bước 9: Để xem thống kê dữ liệu quan trắc, ta vào BÁO CÁO – THỐNG KÊ -> Thống kê dữ
liệu quan trắc -> Chọn trạm cần xem, chọn ngày bắt đầu, ngày kết thúc, nhấn “xem dữ liệu” ta
sẽ thấy dữ liệu quan trắc dưới dạng biểu đồ cột. Ta có thể nhấn vào nút “chi tiết” ở mỗi biểu
đồ để xem cụ thể diễn biến thay đổi của các thông số qua từng ngày và có thể xuất ra file excel.
Hình 5.3 Mô hình phao nổi của trạm nhìn từ măt bên
Các thành phần trong tủ điều khiển bao gồm mạch điều khiển, ắc quy, bảng điệu và bộ chuyển
đổi năng lượng mặt trời sạc cho ắc quy.
Khi có sự thay đổi môi trường nước với các số liệu đo được vượt mức quy định, hệ thống sẽ
gửi về cảnh báo thông qua e-mail và tin nhắn tới điện thoại người dùng.
Hình 5.8 Tin cảnh báo được gửi thông qua e-mail
Hình 5.9 Tin nhắn cảnh báo được gửi thông qua hệ thống tin nhắn di động
Các thông số đo đạt được gửi về server thông qua sóng GPRS của module sim800C và được
cập nhật hiển thị ra giao diện website hệ thống như hình bên dưới.
Hình 5.10 Các thông số được hiển thị trên website hệ thống
5.2 Nhận xét và đánh giá
Với những nổ lực tích cực của nhóm trong nhiều tháng thì cũng đã hoàn thiện được sản phẩm
theo yêu cầu đặt ra của đề tài là giám sát chất lượng nước nuôi trồng thuỷ sản, cập nhật các thông
số lên website và cảnh báo cho người dùng nếu có sự cố xảy ra như việc vượt mức giới hạn đối
với các thông số tiêu chuẩn của nước dành cho từng loại thuỷ sản cụ thể. Hệ thống cho phép người
nuôi thiết lập giới hạn trên và giới hạn dưới cho từng thông số nước cụ thể, tạo điều kiện thuận
lợi cho việc áp dụng rộng rãi cho các loại thuỷ sản khác nhau với những đặc điểm môi trường
nước khác nhau.
Trong quá trình chạy thử nghiệm vẫn có nhiều lỗi phát sinh và đã được nhóm nghiên cứu khắc
phục theo từng trường hợp. Hiện tại sản phẩm đã hoạt động tương đối ổn định.
Kết quả đo đạt có xảy ra sai số nhất định. Các sai số dao động quanh ngưỡng cho phép của nhà
sản xuất và tầm ảnh hưởng đến sức khoẻ của các loài thuỷ sản là không đáng kể nên có thể chấp
nhận được.
Sản phẩm hoạt động tốt ở những vùng có phủ sóng điện thoại di động và sóng GPRS.
[2] Thông số và cách thức hoạt động của ắc quy, Công ty TNHH Đầu tư Phát triển Phúc Long,
http://phuclongidco.vn/tin-tuc/so-tay-ky-thuat-ac-quy-troy-21.
[3] Cách thức giao tiếp với module ESP32 cơ bản bằng Adruino IDE, trang web TAPIT.VN,
https://tapit.vn/huong-dan-cai-dat-arduino-ide-de-lap-trinh-cho-esp32/.
[4] Cách thức giao tiếp với module STM32F103C8T6 cơ bản bằng CubeMX và Keil C, trang
web controllerstech.vn, https://controllerstech.com/stm32/.
[5] Datasheet của các module và IC dùng trong hệ thống, https://www.alldatasheet.com/.
PHỤ LỤC
Chương trình điều khiển:
#include <Arduino.h>
#include <HardwareSerial.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <LoRa.h>
#include <AT_command.h>
#include <string.h>
#include <Wire.h>
#include<LiquidCrystal_I2C.h>
#include<DHT.h>
/* ---------define pin----------- */
#define nss_lora 5
#define rst_lora 14
#define dio0_lora 2
#define mobus_signal 4
#define DHTPIN 15
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float Huminity_DHT;
float Temperature_DHT;
int st1 = 0;
int st2 = 0;
int st3 = 0;
int st4 = 0;
byte Mobus_data_1[100];
byte Mobus_data_2[100];
LiquidCrystal_I2C lcd(0x3F,20,4);
struct Mobus{
int CON_value;
int int_CON_value;
int float_CON_value;
int TDS_value;
int int_TDS_value;
int float_TDS_value;
int Sanility_value;
int int_Sanility_value;
int float_Sanility_value;
int Temp_value;
int int_Temp_value;
int float_Temp_value;
int pH_value;
int int_pH_value;
int float_pH_value;
};
/* ---------declare function---- */
void sendMessage(char *cmd);
int onReceive(uint8_t *frame, int size );
void Proces_LoRa(const char *cmd, uint8_t *frame_recive, int Recieved_size );
void Mobus_Sensor();
int onReceive(uint8_t *frame, int size );
void Data_modbus();
int Get_int_json(int *des, char * json,const char *key);
int Json_Get_string(char *des,char *src,const char *key);
void Init_LCD();
void Init_LoRa();
uint8_t node_1[256] ;
uint8_t node_2[256] ;
uint8_t ctrl_frame[256] ;
char data[1024] ="" ;
char Data_server_get[1024] ="" ;
char Data_server_post[1024] ="" ;
char Control_Data[50] = "";
SoftwareSerial MySerial(13, 14);
char s[50];
Mobus Sensor ;
/* --------------------------------------------MAIN--------------------------------
------- */
void setup() {
Init_LCD();
Serial.begin(115200);
MySerial.begin(9600);
pinMode(mobus_signal, OUTPUT);
AT_Port_Init();
Init_LoRa();
dht.begin();
st1 = st2 = st3=st4=0;
}
/*
______________________________________________________LOOP_________________________
________________________________________________________________________ */
void loop() {
if(millis()>st1){
Serial.println("Begin send and recieve Data from LoRa node ");
Proces_LoRa("GW_01|N_01",node_1,256);
delay(1000);
Proces_LoRa("GW_01|N_02",node_2,256);
st1 +=180000;
}
if(millis() > st2){
int loop =0;
while(loop <5){
Mobus_Sensor();
loop++;
}
Data_modbus();
Huminity_DHT = dht.readHumidity();
Temperature_DHT= dht.readTemperature();
Serial.print(Huminity_DHT);
Serial.print(Temperature_DHT);
lcd.clear();
lcd.setCursor(0,0);
lcd.printf("Temp:%0.2f Hum :%0.2f",Temperature_DHT,Huminity_DHT);
lcd.setCursor(0,1);
HTTP_POST_SER("http://quantracmoitruong.namlongtekgroup.com/api/Embedded/GetSetting
",Data_server_get);
int Pump_data =0;
int DO_data =0;
int TimeEat =0;
Get_int_json(&Pump_data,Data_server_get,"\"Pump_Motor\"");
Get_int_json(&DO_data,Data_server_get,"\"DO_Motor\"");
Get_int_json(&TimeEat,Data_server_get,"\"Time_Eat\"");
sprintf(Control_Data,"GW_01|N_03|Pump[%d]|DO[%d]|Time_Eat[%d]",Pump_data,DO_data,Ti
meEat);
Proces_LoRa(Control_Data,ctrl_frame,256);
st3 += 10;
}
HTTP_POST_SER_1("http://quantracmoitruong.namlongtekgroup.com/api/Embedded/InsertDa
ta",Data_server_post);
st2 += 300000;
}
}
/* ______________________________________________________END
LOOP_______________________________________________________________________________
__________________ */
/* ---------------------LORA-------------------------- */
void sendMessage(char *cmd){
LoRa.beginPacket();
LoRa.print(cmd);
LoRa.endPacket();
LoRa.sleep();
}
int onReceive(uint8_t *frame, int size ) {
if (LoRa.parsePacket()) {
int pointer =0;
while (LoRa.available()) {
frame[pointer] = (char)LoRa.read() ;
pointer++;
if(pointer == size){
frame[size] = '\n';
pointer = 0;
break;
}
}
return strlen((char *)frame);
}
return -1;
}
void Proces_LoRa(const char *cmd, uint8_t *frame_recive, int Recieved_size ){
int err =0;
sprintf(s,cmd);
while(err < 5){
sendMessage(s);
Serial.println("send: "+ (String)s);
int timeout = millis();
int dt = 0;
while (millis()-timeout <1000){
dt = onReceive(frame_recive,Recieved_size) ;
if (dt != -1) break;
}
if (dt == -1) err++;
else break;
}
Serial.println("Received packet: ");
Serial.println((char *)frame_recive);
}
void Mobus_Sensor(){
Serial.println("______________Begin Mobus____________");
digitalWrite(4,HIGH);
const byte Mobus_id_sa[]={0x04, 0x04, 0x00, 0x00, 0x00, 0x10, 0xF1, 0x93};
Serial.printf("write :%d\n",MySerial.write(Mobus_id_sa,sizeof(Mobus_id_sa)));
MySerial.flush();
digitalWrite(4,LOW);
Serial.printf("readBytes :%d\n", MySerial.readBytes(Mobus_data_1,100));
Serial.println("Data Recieve Salinity");
for(byte i = 0; i< 37; i++){
Serial.print(Mobus_data_1[i],HEX);
Serial.print(" ");
}
Serial.println("");
digitalWrite(4,HIGH);
const byte Mobus_id_pH[]={ 0x05,0x04,0x00,0x00,0x00,0x10,0x2A,0x2A};
Serial.printf("write :%d\n",MySerial.write(Mobus_id_pH,sizeof(Mobus_id_pH)));
MySerial.flush();
digitalWrite(4,LOW);
Serial.printf("readBytes :%d\n", MySerial.readBytes(Mobus_data_2,100));
Serial.println("Data Recieve pH");
for(byte i = 0; i< 37; i++){
Serial.print(Mobus_data_2[i],HEX);
Serial.print(" ");
}
Serial.println("");
Serial.println("______________End Mobus____________");
Serial.println("");
Data_modbus();
}
void Data_modbus(){
Sensor.CON_value = Mobus_data_1[3]*256 + Mobus_data_1[4] ;
Sensor.int_CON_value = Sensor.CON_value /100;
Sensor.float_CON_value = Sensor.CON_value %100;
Sensor.TDS_value = (Mobus_data_1[7]*256+Mobus_data_1[8]);
Sensor.int_TDS_value = Sensor.TDS_value/100;
Sensor.float_TDS_value = Sensor.TDS_value%100;
Sensor.Sanility_value = (Mobus_data_1[15]*256+Mobus_data_1[16]);
Sensor.int_Sanility_value = Sensor.Sanility_value/100;
Sensor.float_Sanility_value = Sensor.Sanility_value%100;
Sensor.Temp_value = (Mobus_data_1[19]*256+Mobus_data_1[20]);
Sensor.int_Temp_value = Sensor.Temp_value/10;
Sensor.float_Temp_value = Sensor.Temp_value%10;
Sensor.pH_value = (Mobus_data_2[3]*256+Mobus_data_2[4]);
Sensor.int_pH_value = Sensor.pH_value/100;
Sensor.float_pH_value = Sensor.pH_value%100;
sprintf(data,"CON: %d.%d, TDS: %d.%d, Sanility: %d.%d, Temp: %d.%d, pH:
%d.%d,",\
Sensor.int_CON_value,Sensor.float_CON_value,\
Sensor.int_TDS_value,Sensor.float_CON_value,\
Sensor.int_Sanility_value,Sensor.float_Sanility_value,\
Sensor.int_Temp_value,Sensor.float_Temp_value,\
Sensor.int_pH_value,Sensor.float_pH_value);
Serial.println(data);
}
int Json_Get_string(char *des,char *src,const char *key){
char key_tmp[100];
sprintf(key_tmp,"%s:",key);
char *start = strstr(src,key_tmp);
if(!start)
return -1;
int sizekey = strlen(key);
char *end1 =strstr(start,",");
char *end2 =strstr(start,"}");
char *end;
if(!end1){
end = end2;
}
else{
if((int)end1 <(int)end2)
end=end1;
else
end=end2;
}
if(*(start+sizekey+1)=='['){
end = strstr(start,"]");
}
int size=0;
size = (int)end - (int)start - sizekey -1;
if(*(start+sizekey+1)!='\"'){
if(*(start+sizekey+1)!='['){
memcpy(des,start+sizekey+1,size);
}
else{
memcpy(des,start+sizekey+2,size-1);
}
}
else{
size -=2;
memcpy(des,start+sizekey+2,size);
}
des[size]=0;
return 1;
}
void Init_LCD(){
Wire.begin(); // config pin LCD
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Well Come To My PJ");
lcd.setCursor(0,1);
lcd.print("Please Wait To Init");
lcd.setCursor(0,2);
lcd.print("________***________");
}
void Init_LoRa(){
while (!Serial);
Serial.println("LoRa Sender");
LoRa.setPins(nss_lora, rst_lora, dio0_lora);
digitalWrite(rst_lora,0);
while (!LoRa.begin(433E6)) {
Serial.println("Connecting lora...");
delay(500);
}
LoRa.setTxPower(20);
LoRa.setSignalBandwidth(250E3);
LoRa.setSpreadingFactor(9);
LoRa.setCodingRate4(7);
LoRa.setPreambleLength(8);
LoRa.setSyncWord(0x12);
int a =0;
while(a != 18) a = LoRa.readRegister(0x42);
Serial.println("LoRa Initializing OK!");
Serial.println(a);
}