Hệ thống giám sát dữ liệu môi trường nước có các chức năng như thu thập nhiệt độ nước, mực nước, độ pH, để người dùng có thể theo dõi liên tục môi trường nước, có thể áp dụng vào nuôi tr
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
NGÀNH CNKT ĐIỆN TỬ TRUYỀN THÔNG
ĐỒ ÁN TỐT NGHIỆP
ĐỀ TÀI:
THIẾT KẾ HỆ THỐNG QUAN TRẮC NƯỚC
GVHD : ThS NGUYỄN NGÔ LÂM SVTH : NGUYỄN THANH CƯỜNG MSSV : 13141023
SVTH : BIỆN QUỐC THÀNH MSSV : 13141308
Khoá : 2013-2017
S K L 0 0 4 9 8 0
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬTTHÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TẠO CHẤT LƯỢNG CAO
ĐỒ ÁN TỐT NGHIỆP THIẾT KẾ HỆ THỐNG QUAN TRẮC NƯỚC
SVTH: NGUYỄN THANH CƯỜNG
BIỆN QUỐC THÀNH MSSV:13141023
13141308 Khoá : 2013
Ngành: Công nghệ kĩ thuật điện tử - truyền thông
GVHD: ThS NGUYỄN NGÔ LÂM
Trang 3Tp Hồ Chí Minh, ngày 5 tháng 7 năm 2017
NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
Họ và tên sinh viên: Nguyễn Thanh Cường MSSV: 13141023
Giảng viên hướng dẫn: ThS Nguyễn Ngô Lâm ĐT: 01267828599
Ngày nhâ ̣n đề tài: 22/2/2017 Ngày nộp đề tài: 11/7/2017
1 Tên đề tài : Thiết kế hệ thống quan trắc nước
2 Các số liệu, tài liệu ban đầu: Đồ án môn học 2
3 Nội dung thực hiê ̣n đề tài : Thiết kế và xây dựng hệ thống quan trắc nước Giám sát các thông số của hệ thống và điều khiển hoạt động của hệ thống quaWeb Server và mạng di động
4 Sản phẩm: Mô hình hệ thống quan trắc nước được giám sát và điều khiển qua mạng Internet và mạng di động
GIẢNG VIÊN HƯỚNG DẪN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc ***
Trang 4PHIẾU NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
Họ và tên Sinh viên: Nguyễn Thanh Cường MSSV: 13141023
Ngành: Điện tử viễn thông
Tên đề tài: Thiết kế hệ thống quan trắc nước
Họ và tên Giáo viên hướng dẫn: ThS Nguyễn Ngô Lâm
NHẬN XÉT
1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:……….(Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2017 Giáo viên hướng dẫn CỘNG HÒA XÃ HỘI CHỦNGHĨAVIỆTNAM Độc lập – Tự do – Hạnh phúc
Trang 5*** PHIẾU NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
Họ và tên Sinh viên: Nguyễn Thanh Cường MSSV: 13141023
Biện Quốc Thành MSSV: 13141308
Ngành: Điện tử viễn thông
Tên đề tài: Thiết kế hệ thống quan trắc nước
Họ và tên Giáo viên phản biện:
NHẬN XÉT 1 Về nội dung đề tài & khối lượng thực hiện:
2 Ưu điểm:
3 Khuyết điểm:
4 Đề nghị cho bảo vệ hay không?
5 Đánh giá loại:
6 Điểm:……….(Bằng chữ: )
Tp Hồ Chí Minh, ngày tháng năm 2017 Giáo viên phản biện CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập – Tự do – Hạnh phúc
Trang 6*** LỜI CẢM ƠN
Nhóm thực hiện xin chân thành gửi lời cảm ơn đến Thầy Nguyễn Ngô Lâm –
Giảng viên Bộ môn Điện tử Viễn Thông đã trực tiếp hướng dẫn và tận tình giúp
đỡ, tạo điều kiện để nhóm thực hiện hoàn thành tốt đề tài
Bên cạnh đó, nhóm thực hiện cũng xin chân thành cảm ơn đến các quý Thầy
Cô trong trường Đại học Sư phạm Kỹ Thuật Thành phố Hồ Chí Minh và khoa
Điện – Điện tử đã truyền đạt những kiến thức quý báu, tạo dựng nền móng đầu tiên
cho nhóm thực hiện có cơ sở cũng như nền tảng kiến thức cần thiết để nhóm em
hoàn thành tốt đề tài Đồ Án Tốt Nghiệp cũng như định hướng nghề nghiệp tương
lai sau này
Nhóm thực hiện cũng xin chân thành gửi lời cảm ơn đến quý phụ huynh đã
luôn hỗ trợ về tinh thần và vật chất
Xin chân thành cảm ơn!
NHÓM SINH VIÊN THỰC HIỆN ĐỀ TÀI
Trang 7LỜI NÓI ĐẦU
Hiện tượng nóng lên của Trái Đất đang là một vấn đề đầy thử thách cho toàn thế giới, hệ quả kéo theo là làm cho môi trường nước bị ô nhiễm, lũ lụt xảy ra thường xuyên đó đang là mối lo ngại cho người dân, lẫn cả cơ quan chức năng và nhà khoa học Ô nhiễm nước là vấn đề quan trọng hàng đầu,đã và đang gây ra hậu quả nặng nề trên các tỉnh Việt Nam, đặc biệt các tỉnh chuyên về nông ngiệp, nuôi trồng thủy sản, nên cần có những thiết bị theo dõi thông số môi trường nước để đưa
ra các quyết định về việc nuôi trồng hoặc tưới tiêu Hệ thống giám sát dữ liệu môi trường nước có các chức năng như thu thập nhiệt độ nước, mực nước, độ pH, để người dùng có thể theo dõi liên tục môi trường nước, có thể áp dụng vào nuôi trồng thủy sản
Hệ thống hướng đến môi trường nước ngọt đưa ra cảnh báo kịp thời thông qua tin nhắn và thông qua mạng, người dùng sẽ tra cứu thông số môi trường thông qua mạng để kịp thời xử lý
Thông số sẽ được lưu trữ lại để người dùng tham khảo và có biện pháp theo dõi lâu dài nhằm đưa ra phương án xử lý thích hợp
Trang 8MỤC LỤC
Trang 92.1.4 Cấu trúc của Arduino Mega 2560 R3 7
Trang 113.2.9 Khối Web Server 46
Chương 4
PHỤ LỤC: HƯỚNG DẪN ĐIỀU KHIỂN - THIẾT LẬP 64
Trang 12DANH MỤC CÁC TỪ VIẾT TẮT
ADC Analog Digital Converter Chuyển đổi tín hiệu tương
tự sang tín hiệu số
HTML Hyper Text Markup Language Ngôn ngữ đánh dấu siêu
thông nối tiếp
Receiver – Transmitter
Truyền dữ liệu nối tiếp bất đồng bộ
Trang 13Bảng 2.5: Giá trị pH của một số dung dịch 33
Bảng 2.6: Giá trị pH dựa vào điện áp 36
Bảng 3.1: Dòng và áp của các linh kiện sử dụng trong đề tài 47
Trang 14DANH MỤC CÁC HÌNH ẢNH
Hình 2.1: Những thành viên khởi xướng Arduino 4
Hình 2.2: Một số kit Arduino phổ biến hiện nay 6
Hình 2.3: Ảnh thực tế Arduino Mega 2560 R3 6
Hình 2.4: Sơ đồ cấu trúc chân của Arduino Mega 2560 R3 8
Hình 2.5: Giao diện Arduino IDE 10
Hình 2.6: Hình dạng và sơ đồ chân kết nối Raspberry Pi 11
Hình 2.7: Cấu tạo của Raspberry Pi 12
Hình 2.8: Sơ đồ kết nối trong truyền 1-Wire 13
Hình 2.9: Sơ đồ chân cổng kết nối DB-9 RS232 14
Hình 2.10: Sơ đồ kết nối giao tiếp DB-9 RS232 15
Hình 2.12: Dạng sóng các tín hiệu khi thực hiện ghi dữ liệu vào LCD 20
Hình 2.13: Module I2C giao tiếp LCD 21
Hình 2.14: Ảnh thực tế DS18B20 21
Hình 2.15: Sơ đồ khối DS18B20 22
Hình 2.16: Cấu trúc 2 thanh ghi lưu nhiệt độ của cảm biến DS18B20 23
Hình 2.17: Tổ chức bộ nhớ ROM của cảm biến DS18B20 24
Hình 2.18: Byte thanh ghi điều khiển của cảm biến DS18B20 25
Hình 2.19: Sơ đồ cấp nguồn cho cảm biến DS18B20 26
Hình 2.20: Các ngưỡng âm thanh trong tự nhiên 26
Hình 2.21: Ảnh thực tế SRF04 27
Hình 2.22: Nguyên lý hoạt động của SRF04 28
Hình 2.23: Module GSM/GPRS SIM800A 29
Trang 15Hình 2.24: Ảnh thực tế của Relay 31
Hình 2.26: Cấu tạo điện cực pH thủy tinh 34
Hình 2.28: Cảm biến pH DFRobot 36
Hình 3.1: Sơ đồ khối hệ thống 38
Hình 3.2:Kết nối cảm biến DS18B20 với bộ xử lý trung tâm 40
Hình 3.3: Kết nối cảm biến SRF04 với bộ xử lý trung tâm 40
Hình 3.4: Kết nối cảm biến pH với bộ xử lý trung tâm 41
Hình 3.5: Kết nối cảm biến SIM800A với bộ xử lý trung tâm 41
Hình 3.6: Kết nối LCD và Module I2C với bộ xử lý trung tâm 42
Hình 3.7: Kết nối Relay với bộ xử lý trung tâm và động cơ bơm 42
Hình 3.8: Sơ đồ nguyên lý toàn mạch 45
Hình 3.9:Sơ đồ mạch chuyển đổi điện áp 46
Hình 3.10: Lưu đồ giải thuật của bộ xử lý trung tâm 48
Hình 3.11: Lưu đồ giải thuật đọc giá trị cảm biến 49
Hình 3.12: Lưu đồ điều khiển động cơ bơm 50
Hình 3.13: Lưu đồ giải thuật giao tiếp với mạng di động 51
Hình 3.14: Lưu đồ giải thuật giao tiếp với Web Server 52
Hình 3.15: Lưu đồ chương trình chính ở Raspberry Pi 53
Hình 4.1: Sản phẩm hoàn chỉnh 56
Hình 4.2: LCD hiển thị giá trị cảm biến, giới hạn, trạng thái motor 56
Hình 4.3: Giao diện trang chính 57
Trang 16Hình 4.5: Đồ thị biến động nhiệt độ 58
Hình 4.6: Đồ thị biến động đô pH 59
Hình 4.7: Đồ thị biến động mực nước 59
Hình 4.8: Trang đăng nhập để cài đặt giới hạn 60
Hình 4.9: Trang cài đặt giới hạn cảm biến 60
Hình 4.10: Giao tiếp qua mạng di động 61
Hình 6.1: Giao diện Python 2.7 64
Hình 6.2: Giao diện khi mở file 65
Hình 6.3: Giao diện chính của Web Server 66
Hình 6.4: Giao diện trang đăng nhập 66
Hình 6.5: Giao diện trang cài đặt giới hạn 67
Hình 6.6: Tin nhắn nhận được từ hệ thống gửi đến 67
Trang 17ra các quyết định về việc nuôi trồng hoặc tưới tiêu Hệ thống giám sát dữ liệu môi trường nước có các chức năng như thu thập nhiệt độ nước, mực nước, độ pH, để người dùng có thể theo dõi liên tục môi trường nước, có thể áp dụng vào nuôi trồng thủy sản
Hệ thống hướng đến môi trường nước ngọt đưa ra cảnh báo kịp thời thông qua tin nhắn và thông qua mạng, người dùng sẽ tra cứu thông số môi trường thông qua mạng để kịp thời xử lý
Thông số sẽ được lưu trữ lại để người dùng tham khảo và có biện pháp theo dõi lâu dài nhằm đưa ra phương án xử lý thích hợp
1.1.2 Tính cấp thiết của đề tài
Theo báo cáo của Bộ NN&PTNT mùa khô năm 2015-2016, tổng lượng mưa trên lưu vực thiếu hụt 20-50% trung bình nhiều năm Mực nước thượng nguồn sông
Mê Kông tiếp tục xuống nhanh và thấp nhất trong vòng 90 năm qua Do thiếu nước ngọt, mặn xuất hiện sớm hơn 2 tháng so với cùng kỳ đã xâm nhập sâu vào vùng ĐBSCL Hiện, trên các hệ thống sông chính ở miền Tây, mặn xâm nhập sâu từ 40-
93 km, tăng 10-15 km so với các năm trước
Tỉnh Vĩnh Long nằm rất xa biển nhưng lần đầu đã bị nước mặn tấn công Còn Hậu Giang hơn 40 ha lúa bị thiệt hại nặng Theo Phó chủ tịch tỉnh Kiên Giang, Mai Anh Nhịn thì hiện tại các sông lớn đã bị mặn xâm nhập sâu từ 3 đến 4km Hiện
Trang 18tỉnh này có đến 34.000ha lúa bị thiệt hại và chưa dừng lại, đời sống sản xuất của người dân bị ảnh hưởng nghiêm trọng Ở Cà Mau diện tích lúa bị thiệt hại trên 18.000ha, chiếm 56% diện tích trồng lúa trên đất nuôi tôm
Chính vì sự ứng dụng rộng rãi và khả năng phát triển trong tương lai , việc phân tích khả năng hoạt động của kỹ thuật nâng cao hiệu suất là rất cần thiết Qua đó, có thể giúp nhóm thực hiện đề tài hiểu hơn về những kiến thức mới cũng như áp dụng các kiến thức đã học vào thực tế
1.2 MỤC TIÊU ĐỀ TÀI
Thiết kế và thi công mô hình quan trắc nước, đồng thời gửi các thông số qua mạng Internet và mạng di động để nâng cao khả năng giám sát và kịp thời xử lý Có thể cài đặt giới hạn đo từ Internet và báo động qua mạng di động khi dữ liệu đo vượt ngưỡng
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
Đối tượng nghiên cứu: về phần mềm đó là thu được dữ liệu, gửi dữ liệu đo được qua mạng Internet và mạng di động, cách thức lập trình Arduino và nhúng chương trình vào Kit Raspberry Pi Còn về phần cứng là các cảm biến, các module,… và Kit Raspberry Pi
Phạm vi nghiên cứu trong khuôn khổ mô hình nhỏ có công suất thấp và có thể phát triển lên các mô hình lớn hơn
1.4 PHƯƠNG PHÁP NGHIÊN CỨU
Tìm hiểu lý thuyết về quan trắc nước, hoạt động của các cảm biến, truyền dữ liệu đến Kit Raspberry Pi Cách đưa dữ liệu vào cơ sở dữ liệu dùng ngôn ngữ Python và SQL, hiển thị dữ liệu bằng ngôn ngữ PHP
Thiết kế và xây dựng mô hình quan trắc nước
Trang 19Nêu các lý thuyết cần thiết để sử dụng trong đề tài
Chương 3: Thiết kế và xây dựng hệ thống
Trình bày sơ đồ hệ thống và giải thích hoạt động của hệ thống
Đưa ra các phương pháp lựa chọn phần cứng và xác định lựa chọn phù hợp với yêu cầu của đề tài
Tính toán đưa ra giải thuật, thuật toán phần mềm
Chương 4: Kết quả thực hiện
Trình bày kết quả đã thực hiện về phần cứng và phần mềm, đưa ra nhận xét
Chương 5: Kết luận và phạm vi ứng dụng
Nêu các ưu điểm và nhược điểm của đề tài, hướng khắc phục và phạm
vi sử dụng trong thực tế
Trang 20CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1.KIT ARDUINOMEGA 2560
2.1.1 Sơ lược về Arduino
Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY trên toàn thế giới trong vài năm gần đây, gần giống với những gì Apple đã làm được trên thị trường thiết bị di động, số lượng người dùng cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên đến đại học đã làm cho ngay cả những người tạo ra chúng phải ngạc nhiên về mức độ phổ biến
Hình 2.1: Những thành viên khởi xướng Arduino
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứng dụng tương tác với nhau hoặc với môi trường được thuận lợi hơn Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ cấu chấp hành Những ví dụ phổ biến cho những người yêu thích mới bắt đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động Đi cùng với nó là một môi trường phát triển tích
Trang 21hợp (IDE) chạy trên các máy tính cá nhân thông thường và cho phép người dùng viết các chương trình cho Aduino bằng ngôn ngữ C hoặc C++.
Với Arduino bạn có thể ứng dụng vào những mạch đơn giản như mạch cảm biến ánh sáng bật tắt đèn, mạch điều khiển động cơ,… hoặc cao hơn nữa bạn có thể làm những sản phẩm như: máy in 3D, Robot, khinh khí cầu, máy bay không người lái…
Một hệ thống Arduino có thể cung cấp rất nhiều sự tương tác với môi trường xung quanh với:
Hệ thống cảm biến đa dạng về chủng loại (đo đạc nhiệt độ, độ ẩm, gia tốc, vận tốc, cường độ ánh sáng, màu sắc vật thể, lưu lượng nước, phát hiện chuyển động, phát hiện kim loại, khí độc,…),…
Các thiết bị hiển thị (màn hình LCD, đèn LED,…)
Các module chức năng (shield) hỗ trợ kêt nối có dây với các thiết bị khác hoặc các kết nối không dây thông dụng (3G, GPRS, Wifi, Bluetooth, 315/433Mhz, 2.4Ghz,…), …
Định vị GPS, nhắn tin SMS,…
Một số kit Arduino phổ biến hiện nay như : Mega 2560 R3, Uno R3, Due, Leonardo, Nano… Tùy theo nhu cầu sử dụng mà người dùng lựa chọn loại kit phù hợp
Trang 22Hình 2.2:Một số Kit Arduino phổ biến hiện nay
2.1.2.Tổng quan về Kit Arduino Mega 2560 R3
Arduino Mega 2560 R3 là phiên bản nâng cấp của Arduino Mega 1280, dễ dàng sử dụng, được hỗ trợ với muôn vàng ứng dụng mở và được chia sẻ rộng rãi, Arduino Mega 2560 R3cùng với các loại Kit Arduino khác trở nên phổ biến trên thị trường người dùng DIY
Hình2.3: Ảnh thực tế của Arduinno Mega 2560 R3
Với việc sử dụng dòng vi xử lí Atmega2560 cho phéplập trình các ứng dụng điều khiển phức tạp do được trang bị cấu hình mạnh với các loại bộ nhớ ROM, RAM và Flash, các ngõ vào ra digital I/O trong đó có nhiều ngõ có khả năng xuất
Trang 23tín hiệu PWM, các ngõ đọc tín hiệu analog và các chuẩn giao tiếp đa dạng như UART, SPI, TWI (I2C)
2.1.3.Thông số kĩ thuật của Arduino Mega 2560 R3
Vi điều khiển : ATmega 2560
Điện áp hoạt động : 5V
Nguồn ngoài (giắc tròn DC) 7-12V
Số chân Digital: 54 (15 chân PWM)
Số chân Analog: 16
Giao tiếp UART: 4 bộ UART
Giao tiếp SPI: 1 bộ (chân 50 đến chân 53)
Giao tiếp I2C: 1 bộ
Trang 24Hình 2.4: Sơ đồ cấu trúc chân của Arduino Mega 2560 R3
Cấu tạo chân Arduino Mega 2560 R3 có:
54 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mức diện áp là 0V và 5V với dòng vào ra tối đatrên mỗi chân là 40mẠ, ở mỗi chân đều có điện trở pull-up từ được cài đặt ngay trong vi điều khiển Atmega2560
4 cặp chân Serial: dùng để gửi (TX) và nhận (RX) dữ liệu TTL Serial Arduino Mega có thể giao tiếp với thiết bị khác thông qua 2 chân này
Chân PWM (~): 2 → 13 và 44, 45, 46: cho phép xuất ra xung PWM với độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn giản, ta có thể điều chỉnh được điện áp ra ở
Trang 25chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác
Chân giao tiếp SPI: 50 (MISO), 51 (SCK), 52 (MISO), 53 (SS) Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
Arduino Mega 2560 R3 có 16 chân analog (A0 → A15) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên board, tacó thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog Tức là nếu cấp điện áp 2.5V vào chân này thì ta có thể dùng các chân Analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải là 10bit Đặc biệt, có 2 chân 20 (SDA) và 21 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
Chân 5V cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA
Chân 3V cấp điện áp 3V đầu ra Dòng tối đa cho phép ở chân này là 50mA
GND : chân nối cực âm của nguồn điện
RESET : khi nhấn nút Reset trên board để reset vi điều khiển tương đương với việc chân Reset được nối với GND thông qua 1 điên trở 10k
IOREF : dùng để đo điện áp hoạt động của vi điều khiển
Vin (voltage input) : dùng để cấp nguồn ngoài cho board
Bộ nhớ của Arduino Mega 2560 R3 gồm:
256 KB bộ nhớ Flash: Đây là nơi lưu trữ những đoạn lệnh lập trình Những ứng dụng thông thường thì sẽ để ra vài KB trong số này cho bootloader
8 KB cho SRAM (Static Random Access Memory): Đây là nơi lưu những giá trị các biến khai báo khi lập trình Khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM Dữ liệu trên SRAM sẽ bị mất khi mất điện
4 KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): Đây được coi là chiếc mini USB, nơi có thể đọc và ghi dữ liệu
Trang 26mà không phải lo bị mất khi mất điện Với những ứng dụng lớn, nên quan tâm đến dung lượng của bộ nhớ này để phân bố cho hiệu quả
2.1.5 Phương thức lập trình cho Arduino Mega 2560 R3
Các thiết bị dựa trên nền tảng Arduino được lập trình bằng ngôn riêng Ngôn ngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung Và Wiring lại là một biến thể của C/C++ Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biến hiện nay do đó rất dễ học, dễ hiểu
Để lập trình cũng như gửi lệnh và nhận tín hiệu từ mạch Arduino, nhóm phát triển dự án này đã cũng cấp đến cho người dùng một môi trường lập trình Arduino được gọi là Arduino IDE (Intergrated Development Environment) như hình dưới đây
Hình 2.5: Giao diện Arduino IDE
Trang 27Hình 2.6:Hình dạng và sơ đồ chân kết nối của Raspberry Pi
Raspberry Pi có mức giá hấp dẫn: 35$ cho một chiếc bo mạch có thể làm được hầu như mọi ứng dụng hằng ngày như lướt web, học lập trình, xem phim HD đến những ý tưởng không ngờ đến như điều khiển robot, nhà thông minh…
Raspberry Pi chạy hệ điều hành Linux: 99% những thứ làm trên máy tính Windows đều có thể thực hiện được trên Linux và quan trọng là: tất cả đều miễn phí
Trang 28Raspberry Pi có 8 ngõ GPIO: có thể kết nối và điều khiển các thiết bị trong cuộc sống thực tế như đèn, động cơ, GPS… Rất nhiều ứng dụng nhà thông minh đã
sử dụng Raspberry Pi làm bộ điều khiển trung tâm
Raspberry Pi có kích thước tí hon: chỉ tương đương một chiếc thẻ ATM và nặng khoảng 50 gram Gắn với chiếc tivi, Raspberry có thể biến thành một thiết bị giải trí thông minh trong phòng khách.Gắn với màn hình và bàn phím, chuột, Raspberry có thể biến thành một chiếc máy tính đúng nghĩa.Nhỏ gọn và tiện lợi
Cộng đồng Raspberry Pi phát triển rất nhanh trên thế giới: hầu hết những thắc mắc của người dùng đều được giải đáp rất nhanh và còn hơn thế nữa: người dùng có thể tìm thấy hàng ngàn dự án đã thực hiện và vô số ý tưởng độc đáo
Với nhưng ưu điểm độc đáo trên, Raspberry Pi đã vượt ra khỏi biên giới của trường học và trở thành thiết bị ưa thích của rất nhiều người đam mê điện tử và lập trình Sự thành công của nó đã mở ra một bước phát triển mới cho tin học: đem máy tính và cảm hứng lập trình đến gần mọi người hơn bao giờ hết
Hình 2.7: Cấu tạo của Raspberry Pi
Trang 292.3 CÁC CHUẨN TRUYỀN SỬ DỤNG TRONG ĐỀ TÀI
2.3.1 1-Wire
Chuẩn giao tiếp 1 dây (1 wire) do hãng Dallas giới thiệu Trong chuẩn giao tiếp này chỉ cần 1 dây để truyền tín hiệu và làm nguồn nuôi (Nếu không tín dây mass).Là chuẩn giao tiếp không đồng bộ và bán song công (half-duplex) Trong giao tiếp này tuân theo mối liên hệ chủ tớ một cách chặt chẽ Trên một bus có thể gắn 1 hoặc nhiều thiết bị slave Nhưng chỉ có một master có thể kết nối đến bus này
Bus dữ liệu khi ở trạng thái rãnh (khi không có dữ liệu trên đường truyền) phải ở mức cao do vậy bus dữ liệu phải được kéo lên nguồn thông qua một điện trở Giá trị điện trở này có thể tham khảo trong datasheet của thiết bị / các thiết bị slave
Hình 2.8:Sơ đồ kết nối trong truyền 1-Wire
Các thiết bị tớ (slave) kết nối với cùng một bus được phân biệt với nhau nhờ
64 bit địa chỉ duy nhất (64-bit serial number) 8 byte (64 bit) này và được chia làm
ba phần chính:
Bắt đầu với LSB, là byte đầu tiên là mã họ thiết bị có độ lớn 8 bit (8-bit family codes) xác định kiểu thiết bị
6 byte tiếp theo lưu trữ địa chỉ riêng của thiết bị
Byte cuối cùng (MSB) là byte kiểm tra tính toàn vẹn dữ liệu cyclic redundancy check (CRC) có giá trị tương ứng với giá trị của 7 byte đầu tiên
Trang 30Nhờ byte CRC giúp cho master xác định có địa chỉ được đọc có bị lỗi hay không Với 224 địa chỉ khác nhau tạo ra một số lượng rất lớn các địa chỉ.Do vậy vấn đề về địa chỉ không phải là vấn đề chính trong chuẩn giao tiếp này
Tín hiệu reset và Presence(Báo hiện diện) được trình bày như hình bên dưới Thiết bị master kéo bus xuống thấp ít nhất 8 khe thời gian (tức là 480 µs) và sau đó nhả bus Khoảng thời gian bus ở mức thấp đó gọi là tín hiệu reset Nếu có thiết bị slave gắn trên bus nó sẻ trả lời bằng tín hiệu Presence tức là thiết bị tớ sẻ kéo bus xuống mức thấp trong khoảng thời gian 60µs Nếu không có tín hiệu Presence, thiết
bị master sẻ hiểu rằng không có thiết bị slave nào trên bus, và các giao tiếp tiếp theo
sẻ không thể diễn ra
2.3.2 RS232[3]
2.3.2.1 Giới thiệu
Chuẩn giao tiếp RS232 là một trong những kỹ thuật được sử dụng rộng rãi hiện nay để nối ghép các thiết bị ngoại vi với máy tính Nó là một chuẩn giao tiếp nối tiếp dùng định dạng không đồng bộ, kết nối nhiều nhất là hai thiết bị, chiều dài kết nối lớn nhất cho phép để đảm bảo dữ liệu là 15m, tốc độ 20kbit/s (Ngày nay có thể cao hơn)
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps, 9600 bps và 19200 bps.[3]
Sơ đồ chân cổng kết nối DB-9:
Hình2.9: Sơ đồ chân cổng kết nối DB-9 RS232
Trang 31Hình2.10:Sơ đồ kết nối giao tiếp DB-9 RS232
2.3.2.2 Các mức điện áp của đường truyền
Mức điện áp của tiêu chuẩn RS232 ( chuẩn thường được dùng bây giờ) được
mô tả như sau:
Mức logic 0: +3V -> +12V
Mức logic 1: -12V -> 3V
Các mức điện áp trong phạm vi từ -3V đến 3V là trạng thái chuyển tuyến Chính vì từ 3V tới 3V là phạm vi không được định nghĩa, trong trường hợp thay đổi giá trị logic từ thấp lên cao hoặc từ cao xuống thấp, một tín hiệu phải vượt qua quãng quá độ trong một thời gian ngắn hợp lý Điều này dẫn tới việc phải hạn chế
về điện dung của các thiết bị tham gia và của cả đường truyền Tốc độ truyền dẫn tối đa phụ thuộc vào chiều dài của dây dẫn.Đa số các hệ thống hiện nay chỉ hỗ trợ với tốc độ 19.2kbit/s
2.3.3 I2C
I2C là viết tắt của "Inter-Integrated Circuit", một chuẩn giao tiếp được phát minh bởi Philips’ semiconductor division (giờ là NXP) nhằm đơn giản hóa việc trao đổi dữ liệu giữa các ICs Đôi khi nó cũng được gọi là Two Wire Interface (TWI) vì chỉ sử dụng 2 kết nối để truyền tải dữ liệu, 2 kết nối của giao tiếp I2C gồm: SDA (Serial Data Line) và SCL (Serial Clock Line)
Trang 32Có hàng ngàn thiết bị sử dụng giao tiếp I2C, chẳng hạn như real-time clocks, digital potentiometers, temperature sensors, digital compasses, memory chips, FM radio circuits, I/O expanders, LCD controllers, amplifiers, Board Arduino của chúng ta có thể kiểm soát tất cả và số lượng tối đa trong một thời điểm lên đến 112 thiết bị I2C
2.4 LCD HIỂN THỊ[1]
2.4.1 Giới thiệu về LCD
LCD có rất nhiều dạng phân biệt theo kích thước từ vài ký tự đến hàng chục
ký tự, từ 1 hàng đến vài chục hàng LCD 20x4 có nghĩa là có 4 hàng, mỗi hàng có
Trong 16 chân của LCD được chia ra làm 4 dạng tín hiệu như sau:
Các chân cấp nguồn: chân số 1 là chân nối mass (0V), chân thứ hai là
Vdd nối với nguồn +5V Chân thứ ba dùng để chỉnh contrast thường nối với biến trở
Trang 33 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 -> D0: chân số 7 đến chân số 14 là 8 chân dùng
để trao đổi dữ liệu giữa thiết bị điều khiển và LCD
Các chân LED_A và LED_K: Chân số 15, 16 là 2 chân dùng để cấp
nguồn cho đèn nền để có thể nhìn thấy vào ban đêm
Bảng 2.1: Các chân và chức năng chân của LCD
Trang 342.4.3 Các lệnh điều khiển
Để điều khiển LCD thì có các IC chuyên dùng được tích hợp bên dưới LCD
có mã số 447801 đến các IC 447809.Trong IC này có bộ nhớ RAM dùng để lưu trữ
dữ liệu cần hiển thị và thực hiện điều khiển LCD hiển thị
Bảng 2.2: Các mã lệnh trong LCD
Lệnh xóa màn hình "Clear Display": khi thực hiện lệnh này thì LCD sẽ bị
xóa và bộ đếm địa chỉ được xóa về 0
Trang 35Lệ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 xóa 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)
Lệnh di chuyển con trỏ "Cursor/Display Shift": lệnh này dùng để điều
khiển di chuyển con trỏ hiển thị dịch chuyển (SC = 1 cho phép dịch chuyển, SC = 0 thì 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ị
Hai lệnh cuối cùng là lệnh đọc và lệnh ghi dữ liệu LCD
Dạng sóng các tín hiệu khi thực hiện ghi dữ liệu vào LCD như hình sau:
Trang 36Hình 2.12: Dạng sóng các tín hiệu khi thực hiện ghi dữ liệu vào LCD
Nhìn vào dạng sóng ta có thể thấy được trình tự điều khiển như sau:
Điều khiển tín hiệu RS
Điều khiển tín hiệu R/W xuống mức thấp
Điều khiển tín hiệu E lên mức cao để cho phép
Xuất dữ liệu D7†D0
Điều khiển tín hiệu E về mức thấp
Điều khiển tín hiệu R/W lên mức cao trở lại
2.4.4 Module IC2 giao tiếp với LCD
Để sử dụng LCD cần có ít nhất 6 chân của MCU kết nối với các chân RS,
EN, D7, D6, D5 và D4 Tuy nhiên với module chuyển giao tiếp LCD sang I2C, ta chỉ cần 2 chân SDA và SCL để hiển thị thông tin Ngoài ra, còn có 2 chân VCC và GND để cấp nguồn cho LCD, bên cạnh đó module còn có một biến trở để điều chỉnh độ tương phản Trong Board Arduino, chúng ta sử dụng thư viện LiquidCrystal_I2C để có thể dễ dàng giao tiếp với LCD
Trang 37Hình 2.13: Module I2C giao tiếp với LCD
2.5.1 Đặc tính kỹ thuật
Hình 2.14:Ảnh thực tế DS18B20
- Chỉ sử dụng một dây giao tiếp
- Mỗi cảm biến đều có mã 64bit lưu trong bộ nhớ ROM
- Có thể cấp nguồn từ đường tín hiệu, điện áp từ 3V-5.5V
- Tầm đo từ -55ºC đến +125ºC (-67ºF đến +257ºF)
- Sai số 0.5ºC cho tầm đo từ -10ºC đến +85ºC
- Có thể chọn độ phân giải bằng phần mềm từ 9 đến 12 bit
- Thời gian chuyển đổi lớn nhất cho 12bit là 750ms
Trang 382.5.2 Sơ đồ khối của cảm biến DS18B20
Cảm biến DS18B20 có sơ đồ khối như hình
Hình 2.15: Sơ đồ khối DS18B20
Các khối bao gồm:
Khối mạch nguồn cấp cho các khối bên trong hoạt động lấy từ nguồn bên ngoài
Khối bộ nhớ ROM 64 bit và port 1 dây
Khối điều khiển bộ nhớ
Khối scratchpad liên kết với các khối cảm biến nhiệt độ, khối lưu nhiệt độ byte cao 𝑇𝐻 và byte thấp 𝑇𝐿 để báo động quá nhiệt, khối thanh ghi định cấu hình và bộ kiểm tra mã dùng chuẩn CRC
Bộ nhớ ROM lưu trữ mã 64 bit duy nhất của cảm biến Vùng nhớ scratchpad
có 2 byte thanh ghi dùng để lưu trữ dữ liệu số là nhiệt độ từ cảm biến Ngoài ra còn
có 2 thanh ghi lưu nhiệt độ ngưỡng dưới và ngưỡng trên để so sánh với nhiệt độ đo
và cảnh báo khi vượt quá giới hạn cài đặt, tên 2 thanh ghi là 𝑇𝐿 và 𝑇𝐻
Thanh ghi định cấu hình cho phép người dùng thiết lập độ phân giải chuyển đổi từ nhiệt độ sang dữliệu số là 9, 10, 11 hoặc 12 bit Giá trị thanh ghi định cấu hình và 𝑇𝐻, 𝑇𝐿 còn được lưu vào bộ nhớ không bay hơi (EEPROM) nên dữ liệu vẫn còn khi mất điện
Trang 392.5.3 Hoạt động của cảm biến DS18B20
Chức năng chính của DS18B20 là cảm biến nhiệt độ chuyển đổi trực tiếp sang dữ liệu số Độ phân giải của cảm biến có thể định cấu hình là 9, 10, 11 hoặc 12 bit tương ứng với hệ số chuyển đổi theo thứ tự là 0,5ºC, 0,25ºC, 0,125ºC và 0,0625ºC Độ phân giải mặc nhiên khi cấp điện là 12bit
Khi cấp điện thì cảm biến DS18B20 ở trạng thái nghỉ để giảm công suất tiêu thụ Để bắt đầu quátrình chuyển đổi tương tự sang số của nhiệt độ đo thì thiết bị chủ phải cấp phát lệnh chuyển đổi (Convert_T có mã là 44H) Sau khi chuyển đổi xong thì dữ liệu nhiệt độ lưu vào 2 thanh ghi nhiệt độ trong vùng nhớ scratchpad và cảm biến trở lại trạng thái nghỉ
Nếu cảm biến cấp nguồn bên ngoài thì thiết bị chủ có thể phát các khe thời gian đọc sau khi cấp phát lệnh chuyển đổi nhiệt độ (Convert_T) để kiểm tra cảm biến chuyển đổi xong chưa: nếu cảm biến đáp ứng bằng cách phát bit có mức logic
0 thì quá trình chuyển đổi đang xảy ra, nếu phát bit có mức logic 1 thì quá trình chuyển đổi đã kết thúc
Nếu cảm biến cấp nguồn thông qua chân tín hiệu thì thực hiện kiểm tra theo cách khác
Dữ liệu nhiệt độ thuộc theo hệ số Celsius, nếu muốn theo hệ số Fahrenheit thì phải thực hiện chuyển đổi Dữ liệu nhiệt độ lưu trữ ở dạng số bù 2 số có dấu 16 bit trong thanh ghi như hình sau:
Hình 2.16: Cấu trúc 2 thanh ghi lưu nhiệt độ của cảm biến DS18B20
Các bit dấu (S) có giá trị là 0 nếu là số dương và bằng 1 nếu là số âm
Nếu cảm biến cấu hình ở độ phân giải 12 bit thì tất cả các bit trong thanh ghi
Trang 40Nếu cảm biến cấu hình ở độ phân giải 11 bit thì bỏ bit thứ 0 (BIT 0)
Nếu cảm biến cấu hình ở độ phân giải 10 bit thì bỏ 2 bit thứ 1 và 0 (BIT 1, 0)
Nếu cảm biến cấu hình ở độ phân giải 9 bit thì bỏ 3 bit thứ 2, 1 và 0 (BIT 2,
1, 0)
2.5.4 Bộ nhớ ROM của DS18B20
Bộ nhớ ROM của cảm biến DS18B20 có tổ chức như hình sau:
Hình2.17:Tổ chức bộ nhớ ROM của cảm biến DS18B20
Bộ nhớ của cảm biến DS18b20 bao gồm bộ nhớ SRAM scratchpad và bộ nhớ EEPROM có thể xemlà các thanh ghi dùng để lưu trữ giá trị nhiệt độ để so sánh báo động quá nhiệt – hai thanh ghi có tên là TH và TL, một thanh ghi định cấu hình.Nếu chức năng lưu nhiệt độ báo động không được sử dụng thì 2 thanh ghi này
có thể dùng để lưu dữ liệu như các ô nhớ thông dụng
Byte thứ 0 và thứ 1 dùng để lưu nhiệt độ chuyển đổi và theo thứ tự là byte thấp và byte cao, hai byte này chỉ cho phép đọc
Byte thứ 2 và thứ 3 dùng để lưu nhiệt độ báo động và theo thứ tự là byte thấp
và byte cao
Byte thứ 4 là thanh ghi định cấu hình
Byte thứ 5, 6, 7 phục vụ cho hoạt động bên trong của cảm biến
Byte thứ 8 là byte kiểm tra cho tất cả các byte từ thứ 0 đến 7 của vùng nhớ này