Nội dung thực hành Nội dung 1: Thực hành thu thập dữ liệu của cảm biến trong node cảm biến, giao tiếp hiển thị kết quả đo đạc cảm biến Nội dung 2: Thực hành kết nối, khởi tạo mạng và gia
Mục đích thực hành
+ Sinh viên nắm rõ cách thức thu thập dữ liệu của cảm biến
+ Sinh viên nắm rõ cách thức hiển thị LCD kết quả đo đạc cảm biến
+ Sinh viên nắm rõ cách thức kết nối, khởi tạo mạng và giao tiếp giữa các cảm biến
+ Sinh viên tìm hiểu cách thức đều khiển hệ thống cảm biến
Quy định về thời gian, cách thức thực hành & quản lý thiết bị
+ Thời gian mỗi buổi thực hành là từ 3-4 giờ, chia làm 10-12 nhóm nhỏ, mỗi nhóm
2 sinh viên/1 bộ kit/1 máy tính, 8 bộ kit dự phòng Sinh viên tìm hiểu cơ sở lý thuyết ngắn gọn và các bước thực hiện có thể thao tác dễ dàng
+ Trước mỗi buổi thực hành, mỗi nhóm sinh viên được cung cấp: 1 phiếu bàn giao thiết bị thực hành bao gồm danh mục các thiết bị thực hành, cuối buổi thực hành sinh viên kiểm tra và nộp lại phiếu bàn giao + thiết bị thực hành
Báo cáo thực hành và đánh giá kết quả
+ Trước mỗi buổi thực hành mỗi nhóm sinh viên được cung cấp 1 phiếu báo cáo thực hành tóm tắt nội dung và kết quả thực hành
+ Giáo viên đánh giá Bản báo cáo kết quả thực hành của sinh viên dựa trên bảng tiêu chí đánh giá thực hành Trong mỗi buổi thực hành, tùy theo năng lực sinh viên có thể thực hiện hết các nội dung hoặc 2/3 nội dung là đạt yêu cầu
+ Phiếu báo cáo và tiêu chí đánh giá kết quả thực hành xem chi tiết tại Phụ lục
Hướng dẫn chi tiết các bước thực hành
Nội dung 1: Thực hành thu thập dữ liệu của cảm biến trong Kit IoT Zigbee, giao tiếp hiển thị kết quả đo đạc cảm biến
Note: Đã có sẵn chương trình project tại Buổi 2.1 Thu thập dữ liệu cảm biến
Sinh viên có thể tham khảo code mẫu tại Tài liệu Thực hành học phần Hệ thống cảm biến\Codes\Buổi 2.1 Thu thập dữ liệu cảm biến\SW_ZB_V1_0_0\Source\App\Main để hiểu rõ ý nghĩa các bước từ 1-6
Bước 1:Tạo một project với tên gọi “sensors” như nội dung 2 buổi 1
1.1: Thêm các thư viện cần thiết vào project như sau
1.2: Xây dựng hàm khởi tạo ngoại vi ADC của chip EFR32MG21 để giao tiếp với cảm biến ánh sáng void LightSensor_AdcPollingReadHandler(void)
1.3: Xây dựng hàm khởi tạo ngoại vi I2C của chip EFR32MG21 để giao tiếp với cảm biến nhiệt độ - độ ẩm emberEventControlSetInactive(readValueSensorLightControl);
1.4: Xây dựng hàm đọc giá trị cường độ ánh sáng của cảm biến ánh sáng uint32_t lux = LightSensor_AdcPollingRead();
Bước 2:Cho phép ADC0 bắt đầu chuyển đổi đơn
2.1: Đợi ADC0 chuyển đổi dữ liệu xong bằng cách kiểm tra trạng thái của cờ SINGLEFIFODV
2.2: Đọc dữ liệu chuyển đổi của ADC0
Bước 3: Xây dựng hàm đọc giá trị nhiệt độ của cảm biến Si7020
Bước 4: Xây dựng hàm đọc giá trị độ ẩm của cảm biến Si7020
Bước 5: Trước hàm emberAfMainInitCallback gọi các hàm
+ Si7020_Init: Khởi tạo cảm biến Si7020
+ LDRInit: Khởi tạo cảm biến ánh sáng
+ emberEventControlSetDelayMS: tạo timer với chu kỳ 5 s cập nhật giá trị cường độ ánh sáng Trong hàm callback sử dụng hàm debug emberAfCorePrintln để hiển thị giá trị cường độ ánh sáng lên màn hình PC
+ emberEventControlSetDelayMS: tạo timer với chu kỳ 10 s cập nhật các giá trị nhiệt độ và độ ẩm Trong hàm callback sử dụng hàm debug emberAfCorePrintln để hiển thị giá trị nhiệt độ và độ ẩm lên màn hình PC void emberAfMainInitCallback(void)
{ emberAfCorePrintln("Main Init"); buttonInit(User_buttonPressAndHoldingEventHandler,
KalmanFilterInit(2, 2, 0.001); // Initialize Kalman filter emberEventControlSetDelayMS(readValueSensorLightControl, 1000); emberEventControlSetDelayMS(ReadValueTempHumiControl,1000);
Bước 6: Sau khi khai báo hay chỉnh sửa trong file.isc cần phải Generate để sinh ra các file thư viện, phục vụ cho quá trình nạp firmware vào Kit
Bước 7: Nạp firmware vào Kit: như nội dung 3 buổi 1
+ Lựa chọn mục Tab Flash => Chọn Browse để chọn đường dẫn đến file firmware: Buổi 2.1 Thu thập dữ liệu cảm biến/SW_ZB_V1_0_0/GNU ARM v7.2.1 - Default/SW_ZB_V1_0_0.s37
Bước 8: Kết nối với máy tính-node cảm biến thông qua cổng COM
+ Mở phần mềm Hercules\Serial: chọn địa chỉ COM (xem địa chỉ tại Device Manager)
+ Nhấn Open (các thông số setup theo hình)
+ Led sáng báo hiệu cảm biến đang thu thập và truyền dữ liệu
+ Dữ liệu môi trường như nhiệt độ, độ ẩm, ánh sáng thời gian thực được hiển thị trên phần mềm Hercules
+ Kết quả thu thập và hiển thị của các cảm biến là ổn định và chính xác
Nội dung 2: Thực hành khởi tạo mạng và giao tiếp giữa các nodes cảm biến
Khởi tạo mạng gồm 3 nút cảm biến là Zigbee Coordinator, Initiator và Target, đồng thời tiến hành truyền nhận dữ liệu giữa các nodes
Note: Đã có sẵn chương trình 3 projects tạo 3 nodes cảm biến: Zigbee_Coordinator, Zigbee3_Init, Zigbee3_Target tại Tài liệu Thực hành học phần Hệ thống cảm biến\Codes\Buổi 2.2 Khởi tạo mạng cảm biến
Sinh viên có thể tham khảo code mẫu tại: Tài liệu Thực hành học phần Hệ thống cảm biến\Codes\Buổi 2.2 Khởi tạo mạng cảm biến\Zigbee3_Init\Source\App\Main
Bước 1:Tạo 3 nodes cảm biến:
+ Kit thứ 1: Kit làm nhiệm vụ là Zigbee Coordinator: node cảm biến 1
+ Kit thứ 2: Kit làm nhiệm vụ là Zigbee Router – Initiator: node cảm biến 2 + Kit thứ 3: Kit làm nhiệm vụ là Zigbee Router - Target: node cảm biến 3
1.1 Tạo node cảm biến Zigbee Coordinator: (nạp code Zigbee Coordinator vào kit 1 như nội dung 3 buổi 1)
+ Lựa chọn mục Tab Flash => Chọn Browse để chọn đường dẫn đến file firmware: Buổi 2.2 Khởi tạo mạng cảm biến/Zigbee_Coordinator/GNU ARM v7.2.1 - Default/Zigbee_Coordinator.s37
1.2 Tạo node cảm biến Zigbee Initiator: (nạp code Zigbee Initiator vào kit 2 như nội dung 3 buổi 1)
+ Lựa chọn mục Tab Flash => Chọn Browse để chọn đường dẫn đến file firmware: Buổi 2.2 Khởi tạo mạng cảm biến/Zigbee_ Initiator /GNU ARM v7.2.1
1.3 Tạo node cảm biến Zigbee Target: (nạp code Zigbee Target vào kit 3 như nội dung 3 buổi 1)
+ Lựa chọn mục Tab Flash => Chọn Browse để chọn đường dẫn đến file firmware: Buổi 2.2 Khởi tạo mạng cảm biến/Zigbee_ Target /GNU ARM v7.2.1 - Default/Zigbee_ Target.s37
Bước 2:Kiểm tra kết quả đã tạo được 3 thiết bị
+ Mở phần mềm Hercules\Serial: chọn địa chỉ COM (xem địa chỉ tại Device Manager)
+ Nhấn Open (các thông số setup theo hình)
+ Gõ lệnh “info” trong cửa sổ HEX để kiểm tra kết quả: tạo được thiết bị Init tại COM 16
+ Làm tương tự với Coordinator và Target
Bước 3: Tạo mạng giữa 3 nodes cảm biến
+ Mở cửa sổ Hercules cho Coordinator (node cảm biến 1)
+ Mở cửa sổ Hercules cho Initiator (node cảm biến 2)
+ Mở cửa sổ Hercules cho Target (node cảm biến 3)
+ Tại của sổ Hercules Coordinator tiến hành tạo mạng sử dụng câu lệnh: plugin network-creator form 1 0xABCD 10 11
Bước 4: Mở mạng cảm biến cho các nodes gia nhập
+ Tại của sổ Hercules Coordinator tiến hành mở mạng cho các nodes cảm biến gia nhập mạng bằng câu lệnh: plugin network-creator-sercurity open- network
Lưu ý: Nếu muốn đóng mạng không cho phép các thiết bị gia nhập thì sử dụng câu lệnh: plugin network-creator-security close-network
Bước 5: Cho các nodes vào mạng
+ Tại của sổ Hercules Initiator cho node cảm biến Zigbee Router-Initiator vào mạng dùng câu lệnh: plugin network-steering start 0
+ Tại của sổ Hercules Target cho node cảm biến Zigbee Router-Target vào mạng dùng câu lệnh: plugin network-steering start 0
Bước 6: Hiển thị thông tin các nodes cảm biến trong mạng:
+ Tại của sổ Hercules Coordinator sử dụng câu lệnh: plugin address-table print hiển thị thông tin các nodes trong mạng với node ID và địa chỉ MAC của từng node
Ví dụ: Thiết bị 1 Node ID là 0x1C91, địa chỉ MAC: 588E81FFFE970DBE
Bước 7: Khởi tạo cho node Target
+ Tại của sổ Hercules Target khởi tạo cho node Target dùng câu lệnh: plugin find-and-bind target 1
Bước 8: Khởi tạo node Initiator tìm kiếm node Target
+ Tại của sổ Hercules Initiator khởi tạo cho node Initiator tìm kiếm node
Target dùng câu lệnh: plugin find-and-bind initiator 1
Bước 9: Kiểm tra quá trình giao tiếp giữa 2 nodes Initiator-Target
+ Để Initiator có thể tìm được target của mình Đầu tiên nó sẽ phải gửi bản tin broadcast có tên là Identify Query Request
+ Sau khi Target nhận được bản tin Identify Query Request
Nó sẽ phản hồi lại Initiator bản tin Identify Query Response Complete: 0x00 => Quá trình binding thành công
Bước 10: Xem thông tin về các nodes
+ Tại của sổ Hercules Initiator sử dụng câu lệnh: option binding-table print
Bước 11: Truyền dữ liệu giữa 2 nodes Initiator-Target + Tại của sổ Hercules Initiator gửi lệnh điều khiển zcl on-off on
+ Tại của sổ Hercules Initiator gửi lệnh truyền dữ liệu bsend 1
Bước 12: Kết quả Initiator gửi cho Target
+ Led sáng báo hiệu các nodes cảm biến đang giao tiếp với nhau: Coordinator gửi cho Initiator và Target, Initiator gửi cho Target, Coordinator gửi cho Target + Kết quả thu thập được địa chỉ, số lượng và vai trò của các nodes cảm biến trong mạng
Nội dung 3: Thực hành đều khiển hệ thống cảm biến (nâng cao sinh viên tự mở rông)