1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế và thi công hệ thống chiếu sáng điều khiển qua mạng ZIGBEE

97 3 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

MỤC LỤC LỜI CAM ĐOAN iv LỜI CẢM ƠN v MỤC LỤC vi DANH MỤC HÌNH ẢNH viii DANH SÁCH CÁC BẢNG x CHƯƠNG 1: TỔNG QUAN 1.1 Đặt vấn đề 1.2 Mục tiêu 1.3 Giới hạn 1.4 Nội dung thực CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Tổng quan mạng Zigbee 2.1.1 Tổng quan 2.1.2 Cấu trúc mạng Zigbee 2.1.2 Mơ hình mạng Zigbee 2.1.3 Các dải tầng sóng hoạt động Zigbee 2.1.4 Ưu nhược điểm giao thức Zigbee 2.2 Các chuẩn giao tiếp 2.2.1 Chuẩn giao tiếp UART 2.2.2 Chuẩn giao tiếp I2C 12 CHƯƠNG 3: THIẾT KẾ HỆ THỐNG 15 3.1 Giới thiệu 15 3.2 Thiết kế hệ thống 15 3.2.1 Thiết kế sơ đồ khối hệ thống 15 3.2.2 Tính tốn thiết kế mạch 17 CHƯƠNG 4: THI CÔNG HỆ THỐNG 37 4.1 THI CÔNG HỆ THỐNG 37 4.1.1 Thi cơng mạch thu phát tín hiệu Zigbee 37 4.1.2 Thiết kế thi công giao diện điều khiển HMI Nextion Editor 44 4.1.3 Thi công mạch điều khiển trung tâm 51 4.1.4 Thi công mạch điều khiển phụ 52 4.1.5 Thi công mạch phát điểm mạch công suất 54 4.2 Lưu đồ giải thuật 55 4.2.1 Lưu đồ mạch điều khiển trung tâm 55 4.2.2 Lưu đồ mạch điều khiển phụ 59 vi 4.3 Phần mềm lập trình Arduino IDE 61 4.3.1 Giới thiệu phần mềm Arduino IDE 61 4.3.2 Cài đặt cách sử dụng phần mềm Arduino IDE 61 4.4 Tiến hành lắp ráp hệ thống hoàn chỉnh 64 4.4.1 Lắp ráp hệ thống 64 4.4.2 Mơ hình hệ thống 65 CHƯƠNG 5: KẾT QUẢ VÀ ĐÁNH GIÁ 66 5.1 Kết đạt 66 5.2 Kết chạy thử nghiệm hệ thống 66 5.3 Nhận xét đánh giá 71 CHƯƠNG 6: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 72 6.1 Kết luận 72 6.2 Hướng phát triển đề tài 72 TÀI LIỆU THAM KHẢO 73 PHỤ LỤC 74 vii DANH MỤC HÌNH ẢNH Hình 2.1: Các dạng mơ hình Zigbee Hình 2.2: Các ứng dụng giao thức Zigbee Hình 2.3: Truyền liệu nối tiếp UART Hình 2.4: Sơ đồ gói liệu truyền nhận UART 10 Hình 2.5 Sơ đồ khối giao tiếp UART 11 Hình 2.6: Sơ đồ kết nối I2C 12 Hình 2.7: Các mạch Arduino thông dụng 14 Hình 3.1: Sơ đồ khối hệ thống 16 Hình 3.2: Mơ-đun Arduino Mega 2560 18 Hình 3.3: Sơ đồ nguyên lý mạch điều khiển trung tâm 19 Hình 3.4: Sơ đồ nguyên lý mạch phất điểm 21 Hình 3.5: Sơ đồ nguyên lý mạch công suất 22 Hình 3.6: Mơ-đun Arduino Uno R3 23 Hình 3.7: Sơ đồ nguyên lý mạch điều khiển phụ 25 Hình 3.8: Mơ-đun Xbee S2 sơ đồ chân 26 Hình 3.9: Mơ hình mạng Zigbee 27 Hình 3.10: Sơ đồ nguyên lý khối thu phát tín hiệu Zigbee 28 Hình 3.11: Màn hình Nextion HMI 3.2 Inch 29 Hình 3.12: Sơ đồ nguyên lý khối hiển thị 30 Hình 3.13: Mô-đun RTC DS1307 31 Hình 3.14: Sơ đồ nguyên lý RTC DS1307 31 Hình 3.15: Sơ đồ nguyên lý khối thời gian thực 32 Hình 3.16: Sơ đồ ngun lý Mơ-đun cảm biến ánh sáng quang trở CDS 34 Hình 3.17: Mô-đun cảm biến ánh sáng quang trở CDS 33 Hình 3.18: Sơ đồ nguyên lý khối cảm biến 34 Hình 3.19: Nguồn adapter 5V – 1A 36 Hình 4.1: Icon XCTU cài đặt 37 Hình 4.2: Giao diện website digi.com 37 Hình 4.3: Cửa sổ làm việc 38 Hình 4.4: Đế mạch thu phát RF Xbee 38 Hình 4.5: Thiết lập cấu hình mơ-đun Xbee 39 Hình 4.6: Thiết lập phần mềm chức cho module 40 Hình 4.7: Cửa sổ giao tiếp 42 Hình 4.8: Cửa sổ kiểm tra kết nối mạng 43 Hình 4.9: Mặt PCB mạch thu phát tín hiệu Zigbee 44 Hình 4.10: Mặt PCB mạch thu phát tín hiệu Zigbee 44 Hình 4.11: Icon Nextion Editor sau cài đặt 44 Hình 4.12: Trang chủ Nextion Editor 45 Hình 4.13: Kiểu lập trình kích thước hình HMI 45 Hình 4.14: Chọn chiều thiết kế giao diện 46 Hình 4.15: Page0 ……………………………………………………………………………………………….…………….… 46 Hình 4.16: Page1 ……………………………………………………………………………………………….…………….… 46 Hình 4.17: Page2 ……………………………………………………………………………………………….……………… 47 Hình 4.18: Page3 ……………………………………………………………………………………………….……………… 47 Hình 4.19: Page4 ……………………………………………………………………………………………….……………… 47 viii Hình 4.20: Page5 …………………………………………………………….………………………………….……………… 47 Hình 4.21: Lập trình nút chuyển page 47 Hình 4.22: Nhập số 48 Hình 4.23: Nút xóa liệu nhập 48 Hình 4.24: Nút xóa liệu nhập 48 Hình 4.25: Nút chuyển trang 48 Hình 4.26: Lập trình cho nút nhấn 49 Hình 4.27: Thiết lập tăng giảm thời gian 49 Hình 4.28: Thư viện ảnh 50 Hình 4.29: Nạp chương trình HMI 50 Hình 4.30: File giao diện HMI txt 51 Hình 4.31: Mặt PCB mạch điều khiển trung tâm 52 Hình 4.32: Mặt PCB mạch điều khiển trung tâm 52 Hình 4.33: Mặt PCB mạch Shield Arduino Uno R3 53 Hình 4.34: Mặt PCB mạch Shield Arduino Uno R3 53 Hình 4.35: Mặt PCB mạch cơng suất 54 Hình 4.36: Mặt PCB mạch công suất 55 Hình 4.37: Lưu đồ chương trình mạch điều khiển trung tâm 55 Hình 4.38: Lưu đồ chương trình giao tiếp HMI 56 Hình 4.39: Lưu đồ chế độ chỉnh tay 57 Hình 4.40: Lưu đồ chế độ tự động 58 Hình 4.41: Lưu đồ chương trình mạch điều khiển phụ 59 Hình 4.42: Lưu đồ chương trình cài đặt thời gian điều khiển đèn 60 Hình 4.43: Giao diện trang chủ phần mềm Arduino IDE 61 Hình 4.44: Chọn phiên cho máy tính 62 Hình 4.46: Giao diện sau cài đặt 62 Hình 4.47 Các vùng làm việc Arduimo IDE 63 Hình 4.48: Các chức vùng lệnh 63 Hình 4.49: Vùng thơng báo Arduino IDE 64 Hình 4.50: Hình ảnh thực tế mạch điều khiển trung tâm 64 Hình 4.51: Hình ảnh thực tế mạch điều khiển phụ 65 Hình 4.52 Mơ hình hệ thống 65 Hình 5.1: Màn hình chào 67 Hình 5.2: Nhập mật truy cập hệ thống 67 Hình 5.3: Chọn chế độ điều khiển 68 Hình 5.4: Chế độ Auto 68 Hình 5.5: Cài đặt thời gian tắt mở đèn 69 Hình 5.6: Chế độ Manual 69 Hình 5.7: Trạng thái đèn 70 Hình 5.8: Hình ảnh hệ thống hoạt động 70 ix DANH SÁCH CÁC BẢNG Bảng 2.1: Ưu, nhược điểm giao thức Zigbee Bảng 2.2: So sánh giao thức Zigbee kết nối Bluetooth Bảng 3.1: Thơng số Arduino Mega2560 18 Bảng 3.2: Thơng số Arduino Uno R3 24 Bảng 3.3: Tổng dòng tiêu thụ mạch điều khiển đèn 35 Bảng 3.4: Tổng dòng tiêu thụ mạch điều khiển trung tâm 36 Bảng 4.1: Danh sách linh kiện mạch thu phát tín hiệu Zigbee 43 Bảng 4.2: Danh sách linh kiện mạch điều khiển trung tâm 51 Bảng 4.3: Danh sách linh kiện mạch điều khiển phụ 53 Bảng 4.4: Danh sách linh kiện mạch phát điểm mạch công suất 54 Bảng 5.1: Kết chạy thực nghiệm 70 x CHƯƠNG 1: TỔNG QUAN CHƯƠNG 1: TỔNG QUAN 1.1 Đặt vấn đề Ngày nay, khoa học công nghệ phát triển mạnh mẽ tạo sản phẩm thông minh, tiện lợi, đa dạng với nhiều chức khác để phục vụ nhu cầu ngày cao người Bên cạnh đó, việc tiết kiệm lượng đặc biệt quan tâm lĩnh vực Trong nơng nghiệp, ngồi yếu tố phân bón, nước, độ ẩm, nhiệt độ ánh sáng phần thiết yếu để trồng phát triển tốt việc chiếu sáng cho lồi hoa, trồng kịp thời vụ, dịp lễ đặc biệt quan tâm Tại nhiều trang trại trồng long, hoa cúc, nuôi cấy mô… số địa phương nước, từ nhiều năm nay, bóng đèn sợi đốt sử dụng để chiếu sáng cho trồng nhằm kích thích tăng trưởng Bóng đèn sợi đốt ví “mặt trời nhân tạo” dành riêng cho nông nghiệp, cho ánh sáng đồng mà phát lượng nhiệt sưởi ấm cho trồng giúp kích thích rễ phát tiển thực phản ứng quang học, từ kích thích tăng trưởng Cho nên, dù trồng phịng ni cấy mơ, khơng tiếp xúc với ánh sáng mặt trời vào ban đêm, thực tốt q trình quang hợp Ngồi ra, đèn sợi đốt có cơng dụng xua đuổi sâu bọ vật đêm gây hại cho vườn tược Bên cạnh ưu điểm đèn sợi đốt lại tiêu hao nhiều điện sử dụng Đặc biệt trang trại trồng hoa cúc nơi có khí hậu lạnh, người trồng phải dùng đèn sợi đốt để canh thời gian sáng sưởi ấm cho để hoa dịp Tết mang lại giá trị kinh tế cao Vì tùy vào mốc thời gian năm mà phải điều chỉnh ánh sáng hợp lý để trồng phát triển đạt suất cao mang lại hiệu kinh tế cao Nhận thấy tầm quan trọng vấn đề nhóm nghĩ ý tưởng thiết kế hệ thống chiếu sáng cho trồng nhằm tăng suất tiết kiệm lượng góp phần nâng cao thu nhập cho người nông dân Trong phần đồ án, nhóm báo cáo sâu vào cách điều khiển độ sáng đèn sử dụng ánh sáng nhân tạo để thắm sáng, sử dụng công nghệ không dây (Zigbee) để giao tiếp, điều khiển mạng lưới ánh sáng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH CHƯƠNG TỔNG QUAN 1.2 Mục tiêu Thiết kế thi cơng hệ thống có khả điểu khiển giám sát hệ thống chiếu sáng gồm có ba đèn chiếu sáng Hệ thống gồm có mạch trung tâm dùng để truyền liệu ba mạch phụ nhận liệu để điều khiển hệ thống chiếu sáng Sử dụng chuẩn truyền ZigBee để truyền nhận tín hiệu kết nối với thiết bị thành mạng để dễ điều khiển giám sát Hệ thống cho phép người sử dụng bật tắt, điều chỉnh độ sáng đèn hai chế độ tay tự động giám sát qua hình cảm ứng HMI 1.3 Giới hạn  Hệ thống có hai chế độ điều khiển: hẹn tự động hẹn nút cảm ứng hiển thị trạng thái hệ thống thơng qua hình HMI  Khoảng cách truyền mạch phụ mạch trung tâm khoảng 40m nhà 120m trời  Hệ thống điều khiển đèn chiếu sáng sử dụng cảm biến quang để phát tình trạng hư hỏng hệ thống chiếu sáng  Giao diện đơn giản có nhập mật nút cảm ứng để điều khiển hệ thống chiếu sáng  Sử dụng sạc thiết bị di động để cấp nguồn cho board mạch 1.4 Nội dung thực  Chương 1: Tổng quan - Giới thiệu lý chọn đề tài, mục tiêu, giới hạn, nội dung nghiên cứu  Chương 2: Cơ sở lý thuyết - Trình bày, giới thiệu tổng quan công nghệ Zigbee - Giới thiệu tổng quan Arduino - Giới thiệu chuẩn giao tiếp sử dụng đề tài  Chương 3: Thiết kế hệ thống điều khiển - Thiết kế sơ đồ khối cho hệ thống - Thiết kế mơ hình mạng Zigbee - Phân tích lựa chọn linh kiện sử dụng mạch - Thiết kế board mạch - Lập lưu đồ giải thuật cho chế độ điều khiển BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG TỔNG QUAN  Chương 4: Thi công hệ thống - Cấu hình chế độ hoạt động cho mơ-đun Xbee S2 phần mền XCTU - Lập trình cho hệ thống - Thi công mạch thiết kế ghép mô-đun với  Chương 5: Kết đánh giá - Trình bày kết đạt - Đánh giá ổn định hệ thống  Chương 6: Kết luận hướng phát triển - Hướng phát triển đề tài BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG 2: CƠ SỞ LÝ THUYẾT CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Tổng quan mạng Zigbee 2.1.1 Tổng quan Zigbee giao thức xây dựng theo chuẩn IEEE 802.15.4 (một tiêu chuẩn kỹ thuật xác định hoạt động mạng cá nhân) Giao thức tạo nhằm đáp ứng yêu cầu cho mạng kết nối thiết bị với giá thành thấp, công suất thấp ứng dụng yêu cầu phải có khả linh động phạm vi rộng Zigbee công nghệ không dây cung cấp giải pháp truyền liệu không dây với yêu cầu tốc độ truyền liệu thấp, hiệu lượng kết nối mạng an toàn Nhờ vào kiểu thiết kế truyền thơng đặc thù theo hình Zigzag tương tự tổ ong mà ZigBee có khả cho phép nhiều nhóm thiết bị truyền thơng tin với khoảng thời gian Giao thức Zigbee xây dựng phê chuẩn thành viên Zigbee Alliance (hơn 300 nhà sản xuất bán dẫn hàng đầu, công ty công nghệ, công ty dịch vụ) 2.1.2 Cấu trúc mạng Zigbee Giao thức mạng Zigbee bao gồm lớp mạng:  Lớp vật lý: Đây lớp giao thức thấp chịu trách nhiệm kiểm sốt kích hoạt thu phát vơ tuyến để chọn tần số kênh giám sát kênh Nó chịu trách nhiệm liên lạc với thiết bị radio Truyền thông liệu lệnh thực cách sử dụng gói Mỗi gói PHY bao gồm tiêu đề đồng hóa (SHR) (chịu trách nhiệm đồng hóa máy thu), tiêu đề vật lý (PHR) (chứa thông tin độ dài khung) tải trọng PHY (được cung cấp lớp dạng khung bao gồm liệu lệnh)  Kiểm sốt truy cập trung bình lớp MAC: Nó hoạt động giao diện lớp vật lý lớp mạng Nó chịu trách nhiệm đồng hóa thiết bị mạng Khung MAC (được điều phối viên sử dụng để truyền Beacons), khung liệu, khung xác nhận khung lệnh Nó bao gồm MAC Header (chứa thông tin bảo mật địa chỉ), MAC Payload có kích thước chiều dài thay đổi (chứa liệu lệnh) Footer MAC (chứa chuỗi kiểm tra khung 16 bit để xác minh liệu) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƯƠNG 2: CƠ SỞ LÝ THUYẾT  Lớp mạng: Lớp kết nối lớp ứng dụng với lớp MAC Nó quản lý hình thành định tuyến mạng Nó thiết lập mạng chọn cấu trúc liên kết mạng Khung NWK bao gồm tiêu đề NWK tải trọng NWK Tiêu đề chứa thông tin liên quan đến việc kiểm soát địa cấp mạng Tải trọng NWK chứa khung lớp ứng dụng  Lớp phụ hỗ trợ ứng dụng: Nó cung cấp tập hợp dịch vụ thông qua hai thực thể - Thực thể ứng dụng Support Data thực thể quản lý hỗ trợ ứng dụng, cho lớp ứng dụng mạng Các thực thể truy cập thông qua điểm truy cập dịch vụ tương ứng (SAP)  Lớp ứng dụng: Đây lớp cao mạng chịu trách nhiệm lưu trữ đối tượng ứng dụng chứa ứng dụng người dùng đối tượng thiết bị ZigBee (ZDOs) Một thiết bị ZigBee chứa tới 240 đối tượng ứng dụng điều khiển quản lý lớp giao thức Mỗi đối tượng ứng dụng bao gồm hồ sơ chương trình ứng dụng, phát triển người dùng liên minh ZigBee Hồ sơ ứng dụng chịu trách nhiệm truyền nhận liệu mạng Loại thiết bị chức thiết bị xác định hồ sơ ứng dụng Các đối tượng thiết bị ZigBee hoạt động giao diện đối tượng ứng dụng, cấu hình thiết bị lớp phụ ứng dụng 2.1.2 Mơ hình mạng Zigbee Mạng Zigbee chia thành loại chính:  Mạng hình (Star Network): Gồm nút trung tâm, tất nút khác kết nối với nút trung tâm này, mạng hình bị hạn chế khoảng cách mở rộng  Mạng hình (Cluster Tree Network): Gồm nút trung tâm, nút khác liên kết với theo mơ hình giống dễ cây, mạng có khả mở rộng cao, tăng khoảng cách quy mơ hệ thống  Mạng hình lưới (Mesh Network): Gồm nút trung tâm, nút mạng kết nối với (trừ ZED kết nối với ZR nó) Khi đường truyền bị lỗi, tự động tìm đường truyền khác, tăng tính tin cậy kết nối mạng BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH PHỤ LỤC } } // -//NHAN DU LIEU TU XBEE// void nhan() { xbee.readPacket(); if (xbee.getResponse().isAvailable()) { if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) { xbee.getResponse().getZBRxResponse(rx); XBeeAddress64 senderLongAddress = rx.getRemoteAddress64(); Address = String(senderLongAddress.getLsb());//Lay gia tri LSB Data_2=""; for (int i= 0; i < rx.getDataLength(); i++) { if (!iscntrl(rx.getData()[i])) Data_2=Data_2+String(char(rx.getData()[i])); } ttd = Data_2.toInt(); } } } // -void auto_mode() { if(message=="65 ffff ffff ffff") { gio_on = myNextion.getComponentValue("va0"); phut_on = myNextion.getComponentValue("va1"); gio_off = myNextion.getComponentValue("va2"); phut_off = myNextion.getComponentValue("va3"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 78 PHỤ LỤC Serial.println("gio on: " + String(gio_on) + " phut on: " + String(phut_on) + "gio off: " + String(gio_off) + " phut off: " + String(phut_off)); dim = 0; message = myNextion.listen(); gio_c = 0; phut_c = 0; giay_c = 0; } if(message=="65 17 ffff ffff ffff") { gio_c = 0; phut_c = 0; giay_c = 0; } readDS1307(); if ((hour >= gio_on)&&(minute >= phut_on)&&(hour < 22)) { dim = 1; } if ((gio_off >= hour)&&(phut_off>=minute)&&(hour < gio_on)&&(minute < phut_on)) { dim = 0; } if (giay_c != second) { myNextion.setComponentText("giay",String(second)); myNextion.setComponentText("phut",String(minute)); myNextion.setComponentText("gio",String(hour)); if(phut_c != minute) { myNextion.setComponentText("phut",String(minute)); if(gio_c != hour) { myNextion.setComponentText("gio",String(hour)); gio_c = hour; BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 79 PHỤ LỤC } phut_c = minute; } giay_cu = second; } } // -void manual_mode() { message = myNextion.listen(); if(message != ""){ // if a message is received Serial.println(message);} // print it out if (message=="65 ffff ffff ffff") { if (ON==1) { dim = 1; myNextion.setComponentText("level","100"); Serial.println(dimming); } } if(message=="65 ffff ffff ffff") { if(ON==1) { dim = 2; myNextion.setComponentText("level","70"); Serial.println(dimming); } } if (message=="65 ffff ffff ffff") // NHAN ON { dim = 1; myNextion.setComponentText("level","100"); ON=1; Serial.println(dimming); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 80 PHỤ LỤC } if (message=="65 3 ffff ffff ffff") //NHAN OFF { dim = 0; myNextion.setComponentText("level","0"); ON=0; Serial.println(dimming); } } // void kiemtrattd() { switch (ttd) { case 3: // den hu myNextion.sendCommand("vis sang_1,0"); myNextion.sendCommand("vis sang_2,1"); myNextion.sendCommand("vis sang_3,1"); break; case 6: // den hu myNextion.sendCommand("vis sang_1,1"); myNextion.sendCommand("vis sang_2,0"); myNextion.sendCommand("vis sang_3,1"); break; case 5: // den hu myNextion.sendCommand("vis sang_1,1"); myNextion.sendCommand("vis sang_2,1"); myNextion.sendCommand("vis sang_3,0"); break; case 7: // khong den nao hu myNextion.sendCommand("vis sang_1,1"); myNextion.sendCommand("vis sang_2,1"); myNextion.sendCommand("vis sang_3,1"); break; case 2: // đèn hư myNextion.sendCommand("vis sang_1,0"); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 81 PHỤ LỤC myNextion.sendCommand("vis sang_2,0"); myNextion.sendCommand("vis sang_3,1"); break; case 1: // đèn hư myNextion.sendCommand("vis sang_1,0"); myNextion.sendCommand("vis sang_2,1"); myNextion.sendCommand("vis sang_3,0"); break; case 4: // đèn hư myNextion.sendCommand("vis sang_1,1"); myNextion.sendCommand("vis sang_2,0"); myNextion.sendCommand("vis sang_3,0"); break; case 0: // đèn hư myNextion.sendCommand("vis sang_1,0"); myNextion.sendCommand("vis sang_2,0"); myNextion.sendCommand("vis sang_3,0"); break; } } // #include /* Địa DS1307 */ const byte DS1307 = 0x68; /* Số byte liệu đọc từ DS1307 */ const byte NumberOfFields = 7; int second, minute, hour, day, wday, month, year; int bcd2dec(byte num) { return ((num/16 * 10) + (num % 16)); } /* Chuyển từ Decimal sang BCD */ int dec2bcd(byte num) { return ((num/10 * 16) + (num % 10)); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 82 PHỤ LỤC void readDS1307() { /* Chuyển từ format BCD (Binary-Coded Decimal) sang Decimal */ Wire.beginTransmission(DS1307); Wire.write((byte)0x00); Wire.endTransmission(); Wire.requestFrom(DS1307, NumberOfFields); second = bcd2dec(Wire.read() & 0x7f); minute = bcd2dec(Wire.read() ); hour = bcd2dec(Wire.read() & 0x3f); // chế độ 24h wday = bcd2dec(Wire.read() ); day = bcd2dec(Wire.read() ); month = bcd2dec(Wire.read() ); year = bcd2dec(Wire.read() ); year += 2000; } /* Chuyển từ format BCD (Binary-Coded Decimal) sang Decimal */ void printDigits(int digits){ // thành phần thời gian ngăn chách dấu : Serial.print(":"); if(digits < 10) Serial.print('0'); Serial.print(digits); } /* cài đặt thời gian cho DS1307 */ void setTime(byte hr, byte minu, byte sec, byte wd, byte d, byte mth, byte yr) { Wire.beginTransmission(DS1307); Wire.write(byte(0x00)); // đặt lại pointer Wire.write(dec2bcd(sec)); Wire.write(dec2bcd(minu)); Wire.write(dec2bcd(hr)); Wire.write(dec2bcd(wd)); // day of week: Sunday = 1, Saturday = Wire.write(dec2bcd(d)); Wire.write(dec2bcd(mth)); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 83 PHỤ LỤC Wire.write(dec2bcd(yr)); Wire.endTransmission(); } void digitalClockDisplay(){ Serial.print(hour); printDigits(minute); printDigits(second); Serial.print(" "); Serial.print(day); Serial.print(" "); Serial.print(month); Serial.print(" "); Serial.print(year); Serial.println(); } void loop() { message = myNextion.listen(); //check for message if(message != ""){ // if a message is received Serial.println(message); // print it out } chon_mode(); } ISR (TIMER1_OVF_vect) { TCNT1 = 25000; // reset lại TIMER kiemtrattden(); } BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 84 PHỤ LỤC CHƯƠNG TRÌNH BỘ ĐIỀU KHIỂN ĐÈN Bộ điều khiển đèn #include // thư viện Xbee #define COOR 0x419B5210 // địa XBee trung tâm #define D1 0x409B9150 // địa XBee đèn #define D2 0x40E74427 // địa XBee đèn #define D3 0x418F1397 // địa XBee đèn #define DCCOOR "1084889937" //địa dạng thập phân XBee trung tâm #define DCD1 "1083937104" // địa dạng thập phân XBee đèn #define DCD2 "1088898087" // địa dạng thập phân XBee đèn #define DCD3 "1099895703" // địa dạng thập phân XBee đèn // chọn chân triac, chân cảm biến unsigned char AC_LOAD = 3; int cb = 7; // khởi tạo XBee XBee xbee = XBee(); XBeeResponse response = XBeeResponse(); // khai báo địa module Xbee board đèn cảm biến XBeeAddress64 addr64_1 = XBeeAddress64(0x0013A200, COOR); XBeeAddress64 addr64_2 = XBeeAddress64(0x0013A200, D1); XBeeAddress64 addr64_3 = XBeeAddress64(0x0013A200, D2); XBeeAddress64 addr64_4 = XBeeAddress64(0x0013A200, D3); // khởi tạo phản hồi XBee ZBRxResponse rx = ZBRxResponse(); ZBRxIoSampleResponse ioSample = ZBRxIoSampleResponse(); // khai báo biến unsigned int dimtime , dim = , dimming_cu,dlieu, tt_m, tt_c, ttden; int value_m, value_c; const char gm[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; String Data_2; // du lieu nhan duoc tu xbee String Address, diachi_s; uint8_t Data_send_a[1] = {0x00}; // -void setup() { pinMode(AC_LOAD, OUTPUT); pinMode(cb,INPUT); attachInterrupt(0, zero_crosss_int, FALLING); chân số Serial.begin(9600); xbee.setSerial(Serial); } void zero_crosss_int() { //chân ngắt nối vào // hàm ngắt để thực kích TRIAC BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 85 PHỤ LỤC if ( dim == 0) detachInterrupt(0); if (dim == 1) dimtime = 1; if (dim > 1) dimtime = 2200; delayMicroseconds(dimtime); // thời gian off TRIAC digitalWrite(AC_LOAD, HIGH); // kích TRIAC delayMicroseconds(10); // trì hỗn để đảm bảo kích TRIAC digitalWrite(AC_LOAD, LOW); // ngắt xung kích } // -void loop() { xbee.readPacket(); if (xbee.getResponse().isAvailable()) { if (xbee.getResponse().getApiId() == ZB_RX_RESPONSE) { xbee.getResponse().getZBRxResponse(rx); XBeeAddress64 senderLongAddress = rx.getRemoteAddress64(); Address = String(senderLongAddress.getLsb());//Lay gia tri LSB Data_2=""; for (int i= 0; i < rx.getDataLength(); i++) { if (!iscntrl(rx.getData()[i])) Data_2=Data_2+String(char(rx.getData()[i])); } dlieu = Data_2.toInt(); } if ( Address == DCCOOR) { dim = dlieu; if ( dim == 0) detachInterrupt(0); else attachInterrupt(0, zero_crosss_int, RISING); if ( dimming != dimming_cu) { if ( dim

Ngày đăng: 30/10/2022, 22:51

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w