Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 75 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
75
Dung lượng
2,9 MB
Nội dung
LỜI CAM ĐOAN Tôi xin cam đoan luận văn tơi nghiên cứu Hệ thống phần cứng chương trình phần mềm tơi thiết kế xây dựng Các thông tin số liệu luận văn hồn tồn trung thực, xác có nguồn gốc rõ ràng Trong q trình nghiên cứu tơi có tham khảo mốt số tài liệu, báo có danh mục tài liệu tham khảo liệt kê cuối luận văn Học viên NGUYỄN VĂN CƯỜNG MỤC LỤC LỜI CAM ĐOAN CHƯƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ TRUYỀN THÔNG M2M 1.1 Cơ sở lý thuyết 1.2 Ý tưởng thiết kế: .9 1.3 Thông số kỹ thuật hệ thống: .9 1.4 Khái niệm truyền thông M2M 10 1.5 Kiến trúc truyền thông M2M 12 1.5.1 Vì phải đưa kiến trúc truyền thông M2M 12 1.5.2 Yêu cầu kiến trúc truyền thông M2M 13 1.5.3 Kiến trúc truyền thông M2M 16 1.6 Một số ứng dụng truyền thông M2M .31 CHƯƠNG 2: PHÂN TÍCH, THIẾT KẾ HỆ THƠNG 34 2.1 Mục tiêu đề 34 2.2 Yêu cầu hệ thống: .35 2.3 Mơ hình hoạt động truyền thông M2M 35 2.4 Giải pháp công nghệ cho truyền thông M2M 36 2.5 Một số phương thức kết nối 37 2.5.1 Công nghệ truyền thông ZigBee .38 2.5.2 Công nghệ truyền thông không dây WiFi 40 2.5.3 Công nghệ truyền thông không dây Bluetooth 43 Sơ đồ khối thiết kế hệ thống .45 2.6.1 Khối thu thập liệu 46 2.6.2 Khối máy chủ liệu .50 2.7 Tạo Websever Website hiển thị 50 2.7.1 Tạo Websever Thingspeak .50 2.7.2 Tạo Website hiển thị liệu 53 CHƯƠNG 3: THỰC THI THIẾT KẾ HỆ THỐNG VÀ KẾT QUẢ .55 3.1 Thực thi khối thu thập liệu 55 3.1.1 Khối cảm biến nhiệt độ 55 3.1.2 Khối cảm biến độ ẩm 57 3.1.3 Khối cảm biến ánh sáng 60 3.2 Quá trình thực 61 3.2.1 Sơ đồ nguyên lý mạch thu thập liệu cảm biến 61 3.2.2 Thiết lập mạng cho Arduino .63 3.2.3 Truyền thông Internet .64 3.3 Mơ hình thực nghiệm giám sát điều khiển thông số nhiệt độ, độ ẩm ánh sáng sử dụng truyền thông M2M 65 3.4 Kết luận 67 3.5 Hướng phát triển .68 DANH MỤC CÁC HÌNH ẢNH Hình 1: Ý tưởng thiết kế Hình 2: Mối quan hệ M2M IoT [1] .11 Hình 3: Cấu trúc truyền thông M2M [3] 16 Hình 4: Hoạt động giao thức HTTP[4] 19 Hình 5: Cấu trúc đơn giản ứng dụng web vị trí giao thức HTTP[4] 20 Hình 6: Cấu trúc gói tin giao thức truyền thơng HTTP[5] .21 Hình 7: Q trình đóng gói liệu giao thức HTTP[6] 22 Hình 8: Cấu trúc gói tin giao thức truyền thơng MQTT [7] 25 Hình 9: Ngun lý hoạt động giao thức truyền thông MQTT 26 Hình 10: Cấu trúc gói tin giao thức truyền thơng CoAP[9] 28 Hình 11: Kiến trúc truyền thông M2M cho ứng dụng chăm sóc sức khỏe[10] .32 Hình 12: Mơ hình hoạt động truyền thông M2M 35 Hình 13: Giải pháp cơng nghệ cho truyền thơng M2M 37 Hình 14: Phương thức kết nối thiết bị Internet[11] 38 Hình 15: Sơ đồ khối hệ thống 45 Hình 16: Hình ảnh thực tế vi xử lý Arduino UNO 46 Hình 17: Sơ đồ khối chức ngõ vào Arduino UNO 48 Hình 18: Sơ đồ nguyên lý mạch cảm biến nhiệt độ dùng LM35 .55 Hình 19: Sơ đồ nguyên lý mạch cảm biến nhiệt độ dùng DS18B20 .56 Hình 20: Sơ đồ nguyên lý mạch cảm biến độ ẩm đất LM393 58 Hình 21: Sơ đồ nguyên lý hoạt động LM393 59 Hình 22: Sơ đồ nguyên lý mạch cảm biến ánh sáng 60 Hình 23: Sơ đồ nguyên lý hệ thống 62 Hình 24: Sơ đồ mạch in 62 Hình 25: Hình ảnh thực tế sản phẩm 63 Hình 26: Truyền thông lên Internet 64 Hình 27: Mơ hình thực nghiệm cho vườn ươn chè 65 Hình 28: Kết hiển thị Thinkspeak.com 66 LỜI CẢM ƠN Trước tiên, em xin gửi lời cảm ơn chân thành tới TS Ngơ Vũ Đức, người thầy tận tình giúp đỡ tơi suốt q trình làm khóa luận Tơi xin gửi lời cảm ơn tới Thầy, Cô viện, người hướng dẫn em giai đoạn chuẩn bị nhận đề tài Em xin gửi lời biết ơn sâu sắc tới thầy, cô Trường Đại Học Bách Khoa Hà Nội Thầy, dìu dắt, truyền lại cho kiến thức chuyên ngành mà dạy bảo chúng em đạo làm người, rèn luyện cho chúng em nghị lực, khát vọng vươn lên, phát huy khả tư sáng tạo lĩnh vực Cuối cùng, xin cảm ơn gia đình, bạn bè, người thân yêu Mọi người bên cạnh tôi, động viên, khuyến khích tơi vươn lên sống Hà Nội, tháng năm 2016 Nguyễn Văn Cường MỞ ĐẦU Ngày nay, với bùng nổ, phát triển mạnh mẽ Internet thiết bị di động cá nhân như: laptop, smartphone, tablet,…, nhu cầu kết nối thiết bị (hay truyền thông M2M) ngày đòi hỏi cao tốc độ Truyền thông M2M công nghệ vượt trội đáp ứng nhu cầu kết nối nhờ khả hoạt động không phụ thuộc vào sở hạ tầng mạng cố định, với chi phí hoạt động thấp, triển khai nhanh có tính di động cao Tuy nhiên, truyền thông M2M chưa ứng dụng rộng rãi thúc đẩy nghiên cứu nhằm cải tiến giao thức truyền thông tầng ứng dụng để đạt hiệu hoạt động tốt Khóa luận nghiên cứu tảng truyền thơng M2M sau đưa hệ thống thực nghiệm dựa tảng Đề tài luận văn chia làm ba chương, chương đề cập đến vấn đề luận văn Chương 1: Tổng quan công nghệ truyền thơng M2M Chương 2: Phân tích, thiết kế hệ thống Chương 3: Thực thi thiết kế hệ thống kết CHƯƠNG 1: TỔNG QUAN VỀ CÔNG NGHỆ TRUYỀN THƠNG M2M 1.1 Cơ sở lý thuyết Truyền thơng từ máy đến máy hay cịn gọi truyền thơng M2M (Machine to Machine) đời từ nhu cầu thiết yếu ngành viễn thơng dịch vụ chuyển mạch, giám sát từ xa thiết bị hay thực phép đo đạt từ xa Ngày nay, truyền thông M2M sử dụng hệ thống mạng viễn thông kết hợp với cơng nghệ máy tính để quản lý trực tiếp thiết bị từ xa nhiều lĩnh vực khác Thị trường phát triển nhanh chóng bất chấp đa dạng hệ thống phần mềm cạnh tranh từ nhiều nhà cung cấp thiết bị Một cách khái quát ta định nghĩa truyền thơng M2M kết hợp công nghệ thông tin truyền thông với thực thể giao tiếp thông minh nhằm để cung cấp cho chúng khả tương tác lẫn mà không cần can thiệp người với hệ thống thông tin tổ chức hay doanh nghiệp Một áp dụng bên ngồi lĩnh vực viễn thơng truyền thơng M2M dùng để gửi tín hiệu cảnh báo tổ chức quản lý bảng quảng cáo chiếu sáng quay Đối với loại bảng quảng cáo này, thời gian hiển thị tờ quảng cáo thay đổi liên tục nhờ vào hệ thống lăn Mỗi lăn gặp cố, tin nhắn SMS (theo định dạng định trước, kèm theo vị trí bảng quảng cáo) gửi phận quản lý để kịp thời xử lý Về phần mình, người quản lý có giám sát vận hành tất bảng quảng cáo Công nghệ dùng, ví dụ này, hệ thống truyền thông di động GSM Người ta lắp đặt thiết bị đầu cuối di động GSM bảng quảng cáo kèm với chế để gửi SMS cần thiết Dần dần, đời nhiều hệ thống truyền thông mở đường cho việc dùng truyền thơng M2M vào nhiều mục đích, lĩnh vực khác 1.2 Ý tưởng thiết kế: Thiết kế hệ thống có tính ứng dụng cao đời sống hàng ngày ứng dụng giám sát điều khiển thông số môi trường để giúp trông phát triển tốt Register Máy chủ liệu Publish: 210C Subscribe Laptop Publish: 210C Subscribe Hình 1: Ý tưởng thiết kế 1.3 Thông số kỹ thuật hệ thống: Yêu cầu hệ thống đặc tả theo bảng sau đây: Tham số Tên hệ thống Nội dung Thu thập xử lý liệu sử dụng công nghệ truyền thông M2M Số lượng nút cảm Hệ thống sử dụng nút cảm biến ( cảm biến nhiệt biến độ, cảm biến độ ẩm cảm biến ánh sáng) Giao thức sử dụng HTTP tầng ứng dụng Thời gian đáp ứng Time=15s Phương thức truyền Truyền thơng có dây theo chuẩn RJ45 thông Giao thức từ thiết bị Sử dụng giao thức TCP M2M đến Máy chủ liệu Sử dụng Gateway Hệ thống không sử dụng Gateway Máy chủ liệu Sử dụng M2M platform Thingspeak.com Bảng 1:Bảng yêu cầu hệ thống 1.4 Khái niệm truyền thông M2M Truyền thông M2M (Machine to machine) kết hợp công nghệ thông tin truyền thông với thực thể giao tiếp thông minh nhằm để cung cấp cho chúng khả tương tác lẫn mà không cần can thiệp người với hệ thống thông tin tổ chức hay doanh nghiệp Mối liên hệ chặt chẽ truyền thông M2M IoT: Về bản, M2M kết nối tất loại thiết bị máy móc hệ thống mạng, từ chúng giao tiếp với thông qua máy chủ trung tâm dựa đám mây doanh nghiệp sử hữu Kết cấu giao tiếp hệ thống trạng thái mơi trường xung quanh có khả trao đổi, truyền tải liệu đến sở hạ tầng kết nối Internet, tạo hiệu thu thập liệu, thay đổi phương thức làm việc, từ tiết kiệm chi phí cho doanh nghiệp.Bất vật thể bạn tích hợp hay gắn cảm biến kết nối, từ xe hơi, đèn đường tivi, tủ lạnh biến tất trở thành “sự vật” Internet of Things Tất thông tin liệu mà cảm biến kết nối thu thập/truyền vị trí, độ cao, tốc độ, nhiệt độ, ánh sáng, chuyển động, độ ẩm, lượng đường máu chất lượng khơng khí, độ ẩ trái đất 10 Các thành phần phụ điện trở, tụ điện cần thiết cho mạch gắn đầy đủ Bạn cần cấp nguồn, nối dây điều khiển vào rơ le tắt/mở bóng đèn hay thiết bị điện khác theo cường độ ánh sáng chiếu vào cảm biến Sử dụng điện áp chuẩn 5V tương thích với tảng Arduino Thơng số kỹ thuật Ngõ A0 ngõ Analog dùng để đo giá trị giá trị cường độ ánh sáng xác Điện áp vào từ 3.3V - 5V Tích hợp sẵn so sánh opamp LM393 Trên mạch có biến trở 10K ohm dùng để điều chỉnh độ nhạy sáng Sơ đồ đấu nối chân thực hình 20 - Chân dương nguồn cảm biến nối với chân +5V Arduino - Chân âm nguồn cảm biến nối với chân GND Arduino - Chân tín hiệu Analog nối với chân A0 Arduino, chân tín hiệu số nối với chân D7 Arduino 3.2 Quá trình thực Nguồn pin 9V cấp cho Arduino + Test Arduino Kết nối Arduino với máy tính qua dây cáp, sau mở phần mềm Arduino lên Trong phần mềm Arduino, vào Tools > Board, chọn “Arduino/Genuinouno Vào File >Example> Basic > Blink chạy upload lên arduion Nếu led 13 Arduino nháy liên tục kết nối thành cơng Nếu đèn khơng sáng, kiểm tra lại dây kết nối, chọn cổng port Arduino 3.2.1 Sơ đồ nguyên lý mạch thu thập liệu cảm biến Ta sử dụng cảm biến để: đo nhiệt độ, độ ẩm, ánh sáng Mạch nguyên lý: 61 Hình 23: Sơ đồ nguyên lý hệ thống Mạch in: Hình 24: Sơ đồ mạch in Mạch thực tế: 62 Hình 25: Hình ảnh thực tế sản phẩm - Sau lắp xong mạch, ta nạp code measure_4_sensor.ino(để thư mục với file doc) vào phần mềm arduino upload - Mở Serial terminal (Shift+Ctrl+M), thấy cập nhật liệu cảm biến thành cơng 3.2.2 Thiết lập mạng cho Arduino - Gắn module Ethernet shield vào Arduino - Gắn cable ethernet RJ45 vào shield, sau cấp nguồn cho Arduino - Mở phần mềm Arduino, vào File> ExamPles> Enthernet> Dhcp Address Printer, chỉnh sửa địa MAC upload code lên arduino Nếu cửa sổ terminal địa IP tức kết nối mạng thành cơng Lưu ý: Ethernet hoạt động có led đỏ, led vàng, led xanh shield sáng nhấp nháy (nếu khơng hoạt động bạn kiểm tra lại dây cáp enthernet) Địa MAC thường có sẵn mặt sau Arduino (đối với arduino đời mới), không tìm thấy lấy ngẫu nhiên địa MAC cho thời internet - Ta sử dụng Arduino websever để tạo trang web mạng IP cấp ví dụ Vào File >ExamPles>Enthernet>Websever, chỉnh sửa địa 63 MAC IP upload Bạn truy cập vào trang web băng địa IP để xem liệu upload - Với ví dụ websever, ta gửi liệu lên internet thành công Tuy nhiên để làm nhiều thứ cần máy chủ lớn nhiều, phần tìm hiểu 3.2.3 Truyền thơng Internet Ta thu thập liệu từ Arduino, cần trang web để theo dõi từ xa Với ví dụ websever, ta sử dụng Arduino máy chủ web, nhiên ta khơng thể làm nhiều với dung lượng Ram Arduino Vì vậy, cần có cơng cụ hỗ trợ để lưu trữ liệu lâu dài hiển thị liệu cách trực quan cho người dùng Có số trang web cung cấp máy chủ miễn phí mà ta sử dụng : Xilely, 2lemetry, exosite, carritots, grovestream, thingspeak, opennenergymonitor Ta chọn Thingspeak cho đề tài Thingspeak dễ dàng đăng ký dễ dàng sử dụng với người bắt đầu với hệ thống lệnh API đơn giản Nó lưu trữ liệu lâu hiển thị liệu cảm biến đồ thị trực quan Tuy nhiên, Thingspeak sử dụng giao thức HTTP cũ, khuyến khích bạn sử dụng trang web sử dụng HTTPS để phù hợp với cơng nghệ tiên tiến Hình 26: Truyền thông lên Internet 64 * Sử dụng Thingspeak: - Đăng ký tài khoản https://thingspeak.com/users/sign_up, tạo channel để lưu liệu - Sau tạo channel, ý thông tin quan trọng channel API Keys (quyền đọc/ghi liệu), dùng code - Bây ta tiến hành gửi liệu lên Thingspeak - Vào phần mềm Arduino, mở file main.ino(cùng thư mục với file doc) - Sau chạy code, Thingspeak nhận data hình 29 Trang web giao tiếp với người dùng: http://iotapp.96.lt/ 3.3 Mơ hình thực nghiệm giám sát điều khiển thông số nhiệt độ, độ ẩm ánh sáng sử dụng truyền thơng M2M Hình 27: Mơ hình thực nghiệm cho vườn ươn chè Với ý tưởng thiết kế hệ thống mang tính ứng dụng vào đời sống hàng ngày, em thiết kế mơ hình thực nghiệm dựa cấu trúc tảng truyền thông M2M ứng dụng nông nghiệp, cụ thể sử dụng cảm biển độ ẩm LM393, cảm biến nhiệt độ DS18B20 cảm biến ánh sáng để giám giát thông số 65 độ ẩm, ánh sáng nhiệt độ cho mơ hình vườn ươm Từ giá trị thu cảm biến mà ta thấy qua Internet người theo dõi đưa định điều khiển thiết bị để thay đổi tham số Ví dụ theo dõi tham số truyền cảm biến LM393 thấy độ ẩm thấp mức quy định ta điều khiển cho máy bơm nước tưới cho cho phù hợp, tương tự cho thông số khác Tuy nhiên, bước đầu thí nghiệm diện tích nhỏ cảm biến có độ xác chưa cao Q trình theo dõi điều khiển thể qua hình sau: Hình 28: Kết hiển thị Thinkspeak.com Nút “turn on” “turn off “ hình để điều khiển thiết bị qua Internet để thay đổi tham số cảm biến truyền 66 Trên hình em sử dụng field thingspeak để thị, có field thị tham số cảm biến, field lại field Relay control cho biết trạng thái điều khiển bật hay tắt thiết bị, field Relay status cho biết kết trình điều khiển thiết bị thực Trường nhiệt độ cho phép ta theo dõi thông số nhiệt độ vườn ươm, nhiệt độ hớn 280C nút “turn on” bật lên hệ thống quạt làm mát hoạt động Trường độ ẩm cho phép ta theo dõi thông sô độ ẩm đất vườn ươm, độ ẩm nhỏ 80% nút “turn on” bật để kích hoạt hệ thống máy bơm nước hoạt động, ngược lại độ ẩm lớn 85% nút “turn off” bật để tắt hệ thống máy bơm Tương tự cho trường ánh sáng, ánh sáng nhỏ 70% nút “turn on” bật để kích hoạt hệ thống bóng đèn vườn ươm hoạt động * Tổng kết: Tồn chương tác giả trình bày chi tiết trình đấu nối hệ thống thiết kế chi tiết module thu thập nhiệt độ, độ ẩm, ánh sáng cho vườn ươm chè vườn nhà tác giả với địa nói Kết thu thực tế mạch cứng thông số thể giao diện Web trình bày - Đánh giá hệ thống: hệ thống đảm bảo hầu hết yêu cầu đặt việc thu thập thị liệu thu điều khiển quay trở lại thiết bị dựa giới hạn tham số thu nhiệt độ, ánh sáng, độ ẩm 3.4 Kết luận Đề tài ứng dụng đo đạc thời tiết vùng đất nước Nhưng làm phận cảnh báo, bảo vệ nhà, cảnh báo thiên tai (với cảm biến phù hợp) Đây giao tiếp đơn giản arduino với internet Chúng ta hồn tồn đo nhiều liệu khác điều khiển arduino linh hoạt để tạo nhiều sản phẩm hữu ích Để tăng tính động sản phẩm, thay ethernet module wifi esp8266 Vẫn làm tương tự, nối dây esp8266 vào arduino phù hợp chạy code main_with_wifi.ino Chú ý: Với wifi cần cấp nguồn 3.3v nguồn riêng ( không nên dùng chân 3.3v arduino) Các mạng không dây chủ yếu thiết kế cho truyền thông người với người (H2H: human to human) với yêu cầu cao chất lượng dịch vụ, 67 độ trễ thiết lập gọi, khả di động, đáp ứng tính tương tác cao người Bởi truyền thông M2M mang đến yêu cầu khác so với truyền thông H2H truyền thống số lượng thiết bị truyền thông M2M ngày nhiều, mạng truy cập không dây chắn phải cải tiến để thích ứng với loại truyền thơng Chủ đề truyền thông M2M thu hút quan tâm đặc biệt cộng đồng nghiên cứu cơng nghiệp gần Nó thu hút ý quan chuẩn hố 3GPP LTE Mục tiêu 3GPP LTE tìm kiếm xác định yêu cầu tiềm để tạo thuận lợi cho truyền thông M2M, sử dụng hiệu nguồn tài nguyên vô tuyến tài nguyên mạng 3.5 Hướng phát triển Truyền thông M2M tảng hệ thống IoT hay EoT sau việc nghiên cứu chuyên sâu vào lớp kiến trúng tham chiêu M2M quan trọng Đặc biệt phải kể đến việc định tuyến lớp M2M network, giao thức truyền thông lớp ứng dụng Từ giao thức sẵn có http, CoAP hay MQTT tìm hiểu so sánh đưa giao thức ưu việt giao thức có 68 TÀI LIỆU THAM KHẢO [1] D Boswarthik, O Elloumi, and O Hersent, M2M Communications: A Systems Approach UK: John Wiley & Sons Ltd, 2012 [2] http://www.korewireless.com.au/blog/whats-the-difference-between-m2m-andiot Ngày truy cập cuối 25/08/2016 [3] Machine to machine communications, Architecture, Performance and Applications Edited by Carles Anto ´ n-Haro and Mischa Dohler [4]https://www3.ntu.edu.sg/home/ehchua/programming/webprogramming/HTTP_ Basics.html Ngày truy cập cuối 25/08/2016 [5] https://voer.edu.vn/m/cau-truc-cua-http-message/9e05dbef Ngày truy cập cuối 25/08/2016 [6]https://voer.edu.vn/m/qua-trinh-dong-goi-du-lieu-va-thao-goi-du-lieu/c29149fa Ngày truy cập cuối 24/08/2016 [7] https://indigo.com ngày truy cập cuối 23/08/2016 [8] http://stephendnicholas.com/archives/1217 Ngày truy cập cuối 25/08/2016 [9] http://www.slideshare.net/carlosralli/curso-coap-v3slideshare?related=2 Ngày truy cập cuối 25/08/2016 [10] ETSI Machine to Machine Communications (M2M): Use Cases of M2M Applications for eHealth Draft TR 102732 v0.4.1, 2011 [11] http://wso2.com [12 ] OECD Report Machine-to-machine communications: connecting billions of devices OECD Digital Economy Papers 192, (2012) [13] Machina Research Machine-to-Machine (M2M) Communications in Healthcare 2010–20 2011 [14] ETSI Machine to Machine Communications (M2M): Functional Architecture Technical Specification TS 102690 v1.1.1, 2011 [15] Standardized Machine-to-Machine and Internet of Things Service Delivery Platform, White Paper 2013 [16] IEEE Performance Analysis of cognitive Machine- to- Machine Communications, Dusit Niyato, 2012 [17] Chen, J Wan, and F Li, “Machine-to-machine communications: Architectures, standards and applications,” TIIS, vol 6, no 2, pp 480– 497, 2012 69 [18] Boswarthick, O Elloumi, and O Hersent, M2M Communications: A Systems Approach, 1st ed Wiley Publishing, 2012 [19] ETSI TS 102 690 M2M functional architecture, http://www.etsi.org/deliver/etsi-ts/102600-102699/102690/01.01.01-60/ts102690v010101p.pdf [20] G Wu, S Talwar, K Johnsson, H Nageen, and K Johnson, “M2M : From Mobile to Embedded Internet,” IEEE Commun Mag., vol 49, no 4, pp 36–43, 2011 [21] International Business Machines Corporation (IBM), “MQTT V3.1 Protocol Specification,” 2010 [22] ETSI TS 102 689 V1.1.2, “Machine-to-Machine communications (M2M); M2M service requirements,” 2011 [23] ETSI TS 102 921 v1.1.1, “Machine-to-Machine communications (M2M); mIa, dIa and mId interfaces,” 2012 [24] Z Shelby, K Hartke, and C Bormann, “RFC 7252: The Constrained Application Protocol (CoAP).” 2014 70 Phụ lục - Codemain.ino /** * Project: Ung dung truyen thông M2M thu thap luong tin hieu tu cam bien * Created by: Nguyen Van Cuong * Introduction: Day la ung dung thu thap du lieu tu cam bien (nhiet do, am, anh sang, phat hien chuyen dong) voi viec lap trinh dua tren nen tang phan cung Arduino, giao tiep va theo doi dua tren nen tang M2M platform la Thingspeak */ #include #ifdef SPARK // Cầnsửdụngkhikhaibáothưviện #include "ThingSpeak/ThingSpeak.h" #else #include "ThingSpeak.h" #endif #ifdef ARDUINO_ARCH_AVR Cầnsửdụngkhikhaibáothưviện // #ifdef ARDUINO_AVR_YUN #include "YunClient.h" YunClient client; #else // Use wired ethernet shield #include #include byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0x1E, 0xED}; 71 // Địachỉ MAC mặtdưới Arduino Nếu Arduino đờicũsẽkocó, cóthể random địachỉ Mac bấtkỳ EthernetClient client; #endif // On Arduino: - 1023 maps to - volts #define VOLTAGE_MAX 5.0 #define VOLTAGE_MAXCOUNTS 1023.0 #endif #ifdef SPARK TCPClient client; // On Particle: - 4095 maps to - 3.3 volts #define VOLTAGE_MAX 3.3 #define VOLTAGE_MAXCOUNTS 4095.0 #endif unsigned long myChannelNumber = 115287; // ĐâylàChalnelNumberđượccấpkhitọatàikhoảnThingspeak const char * myWriteAPIKey = "KB9OOAAH96XSK8GH"; // Key cósẵntrongtàikhoảnThingspeak bytepinLed = 4; bytepinTemp = 3; // Cam biennhiet bytepinHum = A1; // Cam bien am bytepinBright = A0; // Cam bienanh sang bytepinMotion = 2; // Cam bienchuyen dong byte power5v = 11; bytecontrolRelay = 12; intmotionDetection = 0; byte count = 0; floataverageTemp = 0; 72 floataverageHum = 0; floataverageBright = 0; OneWireds(pinTemp); // Cảmbiếnánh sang DS18B20 cầnsửdụngthưviệnOneWire void setup() { Ethernet.begin(mac); // Càiđặtenthernet ThingSpeak.begin(client); pinMode(pinLed, OUTPUT); pinMode(pinTemp, INPUT); pinMode(pinHum, INPUT); pinMode(pinBright, INPUT); pinMode(pinMotion, INPUT); pinMode(power5v, OUTPUT); // Coichan 13 la chan 5v pinMode(controlRelay, OUTPUT); digitalWrite(power5v, HIGH); digitalWrite(pinLed, LOW); digitalWrite(controlRelay, LOW); Serial.begin(9600); } void loop() { float temp = getTemp(); // Hàmtínhnhiệtđộ, datasheepcủa DS18B20 cungcấp floatreadHum = analogRead(pinHum); floatreadBright = analogRead(pinBright); intreadMotion = digitalRead(pinMotion); float hum = 2475 - readHum*2.4; khơngtínhtheo % float brightness = (1023 - readBright)/1023*100; // Đâylàđộẩmđất, if (temp > 32) { 73 digitalWrite(pinLed, HIGH); thìđènsángđểthơngbáo digitalWrite(controlRelay, HIGH); Serial.println("Relay turn on."); } else { digitalWrite(pinLed, LOW); digitalWrite(controlRelay, LOW); Serial.println("Relay turn off."); } // Khinhiệtđộcaohơn 32 Serial.print("Temp: "); Serial.println(temp); Serial.print("Hum: "); Serial.println(hum); Serial.print("Bright: "); Serial.println(brightness); Serial.print("Motion: "); Serial.println(readMotion); Serial.println(); count++; averageTemp += temp; averageHum += hum; averageBright += brightness; if (readMotion>motionDetection) motionDetection = readMotion; if (count >= 15) { // ThingSpeak will only accept updates every 15 seconds averageTemp /= 16; averageHum /= 16; averageBright /= 16; // Lấygiátrịtrungbìnhcủa 16 lầnđonhiệtđộ, độẩm, ánhsáng ThingSpeak.setField(1, averageTemp); ThingSpeak.setField(2, averageHum); ThingSpeak.setField(3, averageBright); ThingSpeak.setField(4, motionDetection); ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); count = 0; motionDetection = 0; } delay(1000); } 74 floatgetTemp() { //returns the temperature from one DS18S20 in DEG Celsius byte data[12]; byteaddr[8]; if ( !ds.search(addr)) { //no more sensors on chain, reset search ds.reset_search(); return -1000; } if ( OneWire::crc8( addr, 7) != addr[7]) { Serial.println("CRC is not valid!"); return -1000; } if ( addr[0] != 0x10 &&addr[0] != 0x28) { Serial.print("Device is not recognized"); return -1000; } ds.reset(); ds.select(addr); ds.write(0x44,1); // start conversion, with parasite power on at the end byte present = ds.reset(); ds.select(addr); ds.write(0xBE); // Read Scratchpad for (inti = 0; i< 9; i++) { // we need bytes data[i] = ds.read(); } ds.reset_search(); byte MSB = data[1]; byte LSB = data[0]; floattempRead = ((MSB