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ànthế 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
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
SKL004980
Trang 2TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬTTHÀNH PHỐ HỒ CHÍ MINH
KHOA ĐÀO TAỌ CHẤ
13141308 Khoá : 2013
Ngành: Công nghệ kĩ thuật điện tử - truyền thông
Trang 3CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Ngành: Điêṇ tưử viêñ thông
Giảng viên hướng dẫn: ThS Nguyễn Ngô Lâm
Ngày nhâṇ đề tài: 22/2/2017
MSSV: 13141023MSSV: 13141308
Lớp: 13141CLVTĐT: 01267828599Ngà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ưcc̣ hiêṇ đề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ốngquaWeb 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
Trang 4CỘNG HÒA XÃ HỘI CHỦNGHĨAVIỆTNAM Độc lập – Tự do – Hạnh phúc
*** PHIẾ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 Biện Quốc Thành MSSV: 13141023 MSSV: 13141308 Ngành: Điêṇ tưử viêñ 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
Trang 5CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
*** 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 Biện Quốc Thành MSSV: 13141023 MSSV: 13141308 Ngành: Điêṇ tưử viêñ 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
Trang 6LỜ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 emhoàn thành tốt đề tài Đồ Án Tốt Nghiệp cũng như định hướng nghề nghiệp tươnglai 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ànthế 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 rathườ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ậuquả 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ôitrồ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ệumô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ôitrồ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ôngqua 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ôngqua 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 theodõi lâu dài nhằm đưa ra phương án xử lý thích hợp
Trang 8MỤC LỤC
Trang phụ bìa
Nhiệm vụ đồ án môn hocc̣
Trang phiếu nhận xét của giáo viên hướng dẫn
Trang phiếu nhận xét của giáo viên phản biện
Lời cảm ơn
Mục lục
Danh mucc̣ các từ viết tắt
Danh mucc̣ các bảng biểu
1.3 ĐỐI TƯỢNG VÀ PHẠM VI NGHIÊN CỨU
1.4 PHƯƠNG PHÁP NGHIÊN CỨU
2.1.2 Tổng quan về kit Arduino Mega 2560 R3
2.1.3 Thông số kỹ thuật của Arduino Mega 2560 R3
Trang 92.1.4 Cấu trúc của Arduino Mega 2560 R3
2.1.5 Phương thức lập trình cho Arduino Mega R3
2.5.2 Sơ đồ khối của cảm biến DS18B20
2.5.3 Hoạt động của cảm biến DS18B20
2.5.4 Bộ nhớ ROM của cảm biến DS18B20
2.5.5 Thanh ghi định cấu hình của cảm biến DS18B20
2.5.6 Cấp nguồn cho cảm biến DS18B20
2.6 CẢM BIẾN SIÊU ÂM SRF04
2.6.1 Giới thiệu về sóng siêu âm
2.6.2 Thông số kỹ thuật của SRF04
2.6.3 Cấu tạo và nguyên lý hoạt động
Trang 103.1.1 Yêu cầu của hệ thống
3.1.2 Sơ đồ khối và chức năng từng khối
3.1.3 Hoạt động của hệ thống
3.2 THIẾT KẾ PHẦN CỨNG
3.2.1 Khối cảm biến nhiệt độ
3.2.2 Khối cảm biến đo mực nước
3.2.3 Khối cảm biến pH
3.2.4 Khối GSM
3.2.5 Khối hiển thị
3.2.6 Khối Relay
3.2.7 Khối động cơ bơm
3.2.8 Khối xử lý trung tâm
Trang 113.2.9 Khối Web Server
3.2.10 Khối chuyển đổi điện áp
3.2.11 Khối nguồn
3.4 THIẾT KẾ PHẦN MỀM
3.4.1 Lưu đồ giải thuật
3.4.2 Cấu hình cho phép sử dụng UART ở Raspberry Pi
3.4.3 Cài đặt Web Server trên Raspberry Pi
Chương 4
KẾT QUẢ THỰC HIỆN
4.1 KẾT QUẢ PHẦN CỨNG
4.2 KẾT QUẢ PHẦN MỀM
4.2.1 Giao diện Web
4.2.2 Giao tiếp qua mạng di động
TÀI LIỆU THAM KHẢO
PHỤ LỤC: HƯỚNG DẪN ĐIỀU KHIỂN - THIẾT LẬP
6.1 BẮT ĐẦU ĐỌC DỮ LIỆU TỪ ARDUINO
6.2 CÀI GIỚI HẠN TỪ WEB SERVER
6.3 LẤY GIÁ TRỊ ĐO ĐƯỢC HIỆN TẠI BẰNG TIN NHẮN
Trang 12Hyper Text Markup Language
Chuyển đổi tín hiệu tương tự sang tín hiệu sốChung
Ngôn ngữ đánh dấu siêuvăn bản
Input/OutputInter-Integrated CircuitLiquid Crystal DisplayNormally ClosedNormally OpenSerial Clock LineSerial Data LineUniversal AsynchronousReceiver – Transmitter
Trang 13Bảng 2.5: Giá trị pH của một số dung dịch
Bảng 2.6: Giá trị pH dựa vào điện áp
Bảng 3.1: Dòng và áp của các linh kiện sử dụng trong đề tài
Trang 14DANH MỤC CÁC HÌNH ẢNH
Hình 2.1: Những thành viên khởi xướng Arduino
Hình 2.2: Một số kit Arduino phổ biến hiện nay
Hình 2.3: Ảnh thực tế Arduino Mega 2560 R3
Hình 2.4: Sơ đồ cấu trúc chân của Arduino Mega 2560 R3
Hình 2.5: Giao diện Arduino IDE
Hình 2.6: Hình dạng và sơ đồ chân kết nối Raspberry Pi
Hình 2.7: Cấu tạo của Raspberry Pi
Hình 2.8: Sơ đồ kết nối trong truyền 1-Wire
Hình 2.9: Sơ đồ chân cổng kết nối DB-9 RS232
Hình 2.10: Sơ đồ kết nối giao tiếp DB-9 RS232
Hình 2.11: LCD 20x4
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
Hình 2.13: Module I2C giao tiếp LCD
Hình 2.14: Ảnh thực tế DS18B20
Hình 2.15: Sơ đồ khối DS18B20
Hình 2.16: Cấu trúc 2 thanh ghi lưu nhiệt độ của cảm biến DS18B20
Hình 2.17: Tổ chức bộ nhớ ROM của cảm biến DS18B20
Hình 2.18: Byte thanh ghi điều khiển của cảm biến DS18B20
Hình 2.19: Sơ đồ cấp nguồn cho cảm biến DS18B20
Hình 2.20: Các ngưỡng âm thanh trong tự nhiên
Hình 2.21: Ảnh thực tế SRF04
Hình 2.22: Nguyên lý hoạt động của SRF04
Hình 2.23: Module GSM/GPRS SIM800A
Trang 15Hình 2.24: Ảnh thực tế của Relay
Hình 2.25: Cấu tạo Relay
Hình 2.26: Cấu tạo điện cực pH thủy tinh
Hình 2.27: Nguyên lý đo pH
Hình 2.28: Cảm biến pH DFRobot
Hình 3.1: Sơ đồ khối hệ thống
Hình 3.2:Kết nối cảm biến DS18B20 với bộ xử lý trung tâm
Hình 3.3: Kết nối cảm biến SRF04 với bộ xử lý trung tâm
Hình 3.4: Kết nối cảm biến pH với bộ xử lý trung tâm
Hình 3.5: Kết nối cảm biến SIM800A với bộ xử lý trung tâm
Hình 3.6: Kết nối LCD và Module I2C với bộ xử lý trung tâm
Hình 3.7: Kết nối Relay với bộ xử lý trung tâm và động cơ bơm
Hình 3.8: Sơ đồ nguyên lý toàn mạch
Hình 3.9:Sơ đồ mạch chuyển đổi điện áp
Hình 3.10: Lưu đồ giải thuật của bộ xử lý trung tâm
Hình 3.11: Lưu đồ giải thuật đọc giá trị cảm biến
Hình 3.12: Lưu đồ điều khiển động cơ bơm
Hình 3.13: Lưu đồ giải thuật giao tiếp với mạng di động
Hình 3.14: Lưu đồ giải thuật giao tiếp với Web Server
Hình 3.15: Lưu đồ chương trình chính ở Raspberry Pi
Hình 4.1: Sản phẩm hoàn chỉnh
Hình 4.2: LCD hiển thị giá trị cảm biến, giới hạn, trạng thái motor
Hình 4.3: Giao diện trang chính
Hình 4.4: Đồ thị biến động của các cảm biến
Trang 16Hình 4.5: Đồ thị biến động nhiệt độ
Hình 4.6: Đồ thị biến động đô pH
Hình 4.7: Đồ thị biến động mực nước
Hình 4.8: Trang đăng nhập để cài đặt giới hạn
Hình 4.9: Trang cài đặt giới hạn cảm biến
Hình 4.10: Giao tiếp qua mạng di động
Hình 6.1: Giao diện Python 2.7
Hình 6.2: Giao diện khi mở file
Hình 6.3: Giao diện chính của Web Server
Hình 6.4: Giao diện trang đăng nhập
Hình 6.5: Giao diện trang cài đặt giới hạn
Hình 6.6: Tin nhắn nhận được từ hệ thống gửi đến
Trang 17để 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ôitrồ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ôngqua 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ôngqua 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ưatrê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ồnsô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ếunướ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àovù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ủangườ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ên18.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ệcphâ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ư ápdụng các kiến thức đã học vào thưcc̣ 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ố quamạ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 đovượ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úngchươ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
1.5 BỐ CỤC ĐỒ ÁN
Chương 1: Tổng quan
Giới thiệu sơ lược về tình hình nghiên cứu hiện nay cũng như tính cấp
thiết của đề tài
Chương 2: Cơ sở lý thuyết
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 ranhậ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ànthế 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ảirộ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úngphả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ácvớ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 boardmạch nguồn mở được thiết kế trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARMAtmel 32-bit
Được giới thiệu vào năm 2005, Những nhà thiết kế của Arduino cố gắngmang đế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ớimô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ếncho 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ểnnhiệ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ùngviế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ảmbiế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ườilá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ườngxung 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 → 2 8 -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ácchức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằnggiao 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 → 2 10 -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ângiải là 10bit Đặc biệt, có 2 chân 20 (SDA) và 21 (SCL) hỗ trợ giao tiếpI2C/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 chobootloader
8 KB cho SRAM (Static Random Access Memory): Đây là nơi lưunhữ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ônngữ này dựa trên ngôn ngữ Wiring được viết cho phần cứng nói chung Và Wiringlại là một biến thể của C/C++ Ngôn ngữ Arduino bắt nguồn từ C/C++ phổ biếnhiệ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áttriể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ínhWindows đều có thể thực hiện được trên Linux và quan trọng là: tất cả đều miễnphí
Trang 28Raspberry Pi có 8 ngõ GPIO: có thể kết nối và điều khiển các thiết bị trongcuộ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ữngthắ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ườidù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ủatrườ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ậptrì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áytí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 giaotiế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âymass).Là chuẩn giao tiếp không đồng bộ và bán song công (half-duplex) Tronggiao 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 bit family codes) xác định kiểu thiết bị
(8- 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 cyclicredundancy check (CRC) có giá trị tương ứng với giá trị của 7 byte đầutiên
Trang 30Nhờ byte CRC giúp cho master xác định có địa chỉ được đọc có bị lỗi haykhô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 busxuố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ãihiệ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ếpnố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àikế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, 4800bps, 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 đổigiá 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 quaquã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ớitố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átminh 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, FMradio circuits, I/O expanders, LCD controllers, amplifiers, Board Arduino củachú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 112thiế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ườngnố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ịchtrướ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ểnthị
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ở contrỏ (mở con trỏ thì bit C = 1, tắt con trỏ thì bit C = 0), và nhấp nháy con trỏ (chonhấ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 = 0thì 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, tachỉ 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ềuchỉnh độ tương phản Trong Board Arduino, chúng ta sử dụng thư việnLiquidCrystal_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.CẢM BIẾNDS18B20[2]
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ưunhiệt độ byte cao và byte thấp để báo động quá nhiệt, khối thanh ghi địnhcấ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ấuhì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ònkhi 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ếpsang 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 12bit 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êuthụ Để 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 xongthì dữ liệu nhiệt độ lưu vào 2 thanh ghi nhiệt độ trong vùng nhớ scratchpad và cảmbiế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ờigian đọc sau khi cấp phát lệnh chuyển đổi nhiệt độ (Convert_T) để kiểm tra cảmbiế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ìnhchuyể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 theocách khác
Dữ liệu nhiệt độ thuộc theo hệ số Celsius, nếu muốn theo hệ số Fahrenheitthì 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 16bit 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ánhbáo động quá nhiệt – hai thanh ghi có tên là TH và TL, một thanh ghi định cấuhì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à bytethấ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