Xin chào 500 anh em, mê công nghệ zigbee và anh em nào đang chuẩn bị lên kế hoạch đồ án, hay phát triển một sản phẩm vọc đến zigbee, thì tham khảo bài này để xem hướng phát triển cho mình nhé!
Yêu cầu đặt ra:
Ứng dụng Zigbee điều khiển thiết bị đèn mô phỏng, phần cứng là lập trình trên vi điều khiển Pic hoặc Arduino điều được.
Yêu cầu đơn giản chỉ vậy, nhưng khá nhiều vấn đề phải giải quyết nha các bạn, bài này dành cho bạn nào mới nha.
Các bạn đã hiểu về công nghệ Zigbee?
Kiến thức cơ bản đã có bài trong bài : Mạng không dây ZigBee Và Ứng Dụng. Bạn nên tham khảo qua, để các thuật ngữ mình trình bày các bạn dễ hiểu hơn nha.
Các điểm tổng quát:
- Mạng Zigbee là mạng không dây tốc độ thấp.
- Ưu điểm là khả năng hỗ trợ mạng Mesh nên số lượng thiết bị trong mạng lên tới 65,000 điểm .
- Sử dụng năng lượng thấp phần lớn các node đi vào chế độ Sleep. Nên một node ZigBee không cần thay Pin tới vài năm.
- 3 thiết bị trong mạng : Coordinator ( ZC), Router( ZR), End device(ED)
Nguyên lý hoạt động
- Máy tính giao tiếp với Coordinator Zigbee qua cổng USB hoặc RJ45.
Truyền mã điều khiển xuống, khí đó mạng Zigbee được thiết lập trước sẽ truyền broadcast gói tin xuống thiết bị router ZigBee.
Thiết bị Router Zigbee được thiết kế giao tiếp với một vi điều khiển Pic hoặc Arduino theo chuẩn Uart chân RX, TX.
Gói tin sẽ được vi điều khiển xử lý và xuất tín hiệu điều khiển tới đèn.
Lưu ý đây led để mô phỏng nha các bạn. Nếu muốn điều khiển đèn 220V thì nên qua Rơ-le có cách ly không thôi đen thui cái mạch Router thì tốn thêm chi phí.
Sau khi bật được đèn thì Router ZigBee sẽ truyền ngược lại gói tin là đèn đã được bật và thông báo lên màn hình trạng thái
Yêu cầu phần cứng Zigbee
Để có thể điều khiển được một thiết bị thì ta phải biết tên của thiết bị đó. Trong bài là đèn, thì đèn này phải được định danh cụ thể trong mạng.
Chúng ta cần một mạng trung gian để truyền tín hiệu điều khiển từ máy tính hay điện thoại xuống. Mạng Zigbee sẽ làm điều này.
Cần ít nhất 2 node để có thể hình thành được một mạng Zigbee. Một node sẽ làm Coordinator giao tiếp với máy tính, node còn lại sẽ giao tiếp với đèn cần điều khiển.
Chọn phần cứng thiết lập mạng Zigbee
Mạng zigbee:
- 2 Zigbee module DRF1605H.
- Đế DRF1605H giao tiếp USB
- Mạch Pic module, các bạn có thể sẵn trên thị trường, hoặc có thể tự vẽ mạch và hàn linh kiện, tích hợp Zigbee lên board luôn sẽ được đánh giá cao hơn.
- Module Relay nếu dùng điều khiển đèn 12V hoặc 220Vac.
Phần cứng chỉ đơn giản vậy thôi!
Phần mềm: Ứng dụng này mình viết trên C# giao diện điều khiển đơn giản, mình sẽ chia sẻ luôn file lập trình cho các bạn download phần cuối bài nhé! Các bạn nên học thêm C# trước khi bắt đầu làm.
Tổng hợp các phần cần học trước khi vô làm:
- Lập trình vi điều khiển chủ yếu là PIC trong trường đại học giờ chắc dạy Pic chủ yếu.
- Lập trình C sharp. Học cơ bản là chiến được rồi đừng đi quá sâu không đủ thời gian.
- Thiết kế, vẽ mạch PCB nên học Altium
- Nắm thật kỹ kiến thức điện tử nhé, nhầm nguồn và GND thì xác định.
- Mô phỏng mạch trên Proteus, phục vụ cho vẽ mạch. Mô phỏng sẽ giúp bạn tiết kiệm chi phí làm mạch.
Kinh nghiệm xương máu: Xem lại các chân giao tiếp và chân nguồn xem có chạm không, vài lần trước khi cắm nguồn, dùng VOM số mà đo nhé! |
Cấu hình mạng Zigbee với module DRF1605H
Chuẩn bị:
- 2 Module DRF1605H + Đế công nghệ zigbee pro 2007
- Máy tính cài driver PL2303
- Phần mềm thiết lập mạng Zigbee của hãng
- Phần mềm mô phỏng mạng ” ZigBee Sensor Monitor”
- Phần mềm truyền dữ liệu Hercules
Mọi thứ đã chuẩn bị cho các bạn để cuối bài viết, download full bộ luôn nha! |
Các bạn tham khảo thông số Module trước khi vào cấu hình nha. Để ý sơ đồ chân bố trí để giao tiếp cho đúng.
Các bước thiết lập mạng Zigbee
Bước 1: Chọn 1 module DRF1605H làm Coordinator
Sử dụng phần mềm DTK Application cấu hình các tham số cho module.
Khi ta cắm giao tiếp module zigbee vào máy tính trước rồi ta mở phần mềm DTK Application , chọn cổng COM giao tiếp với tính chọn Connect và chờ cho máy tính nhận module ( Điều kiện máy tính đã cài Driver PL 2303 giao tiếp với module) .
- Module giao tiếp với máy tính làm Coordinator. Sau ta chọn Write để ghi vào chip sau đó Disconnect, Connect lại thì lúc này module đó trở thành Coordinator.
- Thiết lập PAN ID trong một mạng Zigbee thì chỉ có 1 PAN ID. Các node khác muốn kết nối vào mạng thì phải trùng PAN ID
- Baud rate là tốc độ giao tiếp với phần mềm máy tính hoặc vi xử lý. Baudrate cao thì khả năng lỗi bit càng cao. Khi test mạng thì sẽ chọn baud rate là 38400 do phần mềm test chỉ hỗ trợ Baudrate này sau đó sẽ cần thiết lập lại 9600. Sau khi cấu hình các thông số hoàn thành ta disconnect module .
Bước 2 : Chọn tiếp 1 module DRF1605H làm Router.
Các bước cấu hình tương tự như cấu hình Coordinator, chú ý PAN ID trùng với PAN ID của Coordinator và cùng tốc độ Baud rate .
Lưu ý: Chỉ có duy nhất 1 Coordinator trong mạng Zigbee |
Bước 3: Kiểm tra trực quan mô hình mạng Zigbee
Ta mới thiết lập ta sử dụng phần mềm ZigBee Sensor monitor của TI hỗ trợ để test mạng
Khi ta kết nối module DRF1605H được cấu hình thành Coordinator vòng tròn đỏ đại diện .
Nhấn nút test trên module thì module sẽ gửi một gói tin thông qua UART .
Ta tiến hành cấp nguồn cho các node mạng còn lại, chờ khoảng 3s khi nguồn ổn định ta nhấn nút test trên module hoặc ta kích vào chân số 3 J2 (Test button), để gửi yêu cầu tham gia mạng sau khi Coordinator kiểm tra xong thì kết nối mạng được thành lập.
Như vậy, ta đã thiết lập được một mạng Zigbee, bây giờ ta có thể truyền dữ liệu giữa các node trong mạng. Mở phần mềm Hercules truyền thử một vài chuỗi để test tốc độ nha các bạn!
Giao tiếp module DRF1605H với Pic Module
Trong bài này mình tự tay lên Schematic và vẽ Layout luôn tích hợp chung một mạch
Hoặc nếu bạn có Pic module riêng thì dùng dây cắm kết nối giữa 2 module lại.
Các thiết bị như bóng đèn hay muốn điều khiển gì thì kết nối vào các chân của Pic nhé.
Module ZigBee DRF1605H giao tiếp Uart tại chân 4 và 5 của J2.
Ta kết nối Uart của Pic 16f887 tại chân RC6 và RC7 với chân số 4 và 5 của module ZigBee RX-TX, nhưng do module ZigBee hoạt động ở điện áp 3.3V còn Module Pic hoạt động điện áp 5V, vì vậy ta không thể trực tiếp dùng nguồn.
Sử dụng thêm bộ nguồn hạ áp từ 5V xuống 3.3V, với đầu vào 5V lấy cùng nguồn với Module Pic, vậy ta thỏa mãn yêu cầu trong giao tiếp UART là cùng đường Mass.
Sau khi có được phần cứng, tiến hành lập trình và đổ chương trình cho PIC. Phần này mình không nêu cụ thể nhưng sẽ chia sẻ Code mẫu cho các bạn tham khảo phần cuối Download nha!
Thiết kế phần mềm điều khiển thiết bị với công nghệ ZigBee.
Phần mềm mình xây dựng trên C sharp hay còn gọi là C#.
Yêu cầu giao diện điều khiển:
- Xây dựng giao diện nút bấm điều khiển đèn khi đèn được bật thì chuyển trạng thái.
- Giao tiếp với mạch Zigbee Coordinator qua cổng USB
- Nhận thông tin trả về từ các Node bên dưới
Nguyên lý hoạt động của phần mềm:
Phần mềm sẽ thực hiện giao tiếp với module Zigbee qua chuẩn USB dùng hàm gọi các cổng USB từ máy tính lên và tiếp lập kết nối.
Điều khiển đèn sử dụng các thuộc tính Button khi nhấn sẽ thực hiện gửi 1 chuỗi dữ liệu xuống module Coordinator.
Khi đó mạng Zigbee sẽ gửi Broadcast chuỗi dữ liệu qua mạng Zigbee đã thiết lập trước các node nhận được sẽ tiến hành cắt và xử lý, nếu trùng với mã được nạp trong Pic khi đó Pic sẽ điều khiển trạng thái các chân và bật tắt đèn.
Đồng thời sẽ truyền ngược về Coordinator một gói tín xác nhận. Phần mềm cũng xử lý gói tin và xuất hiện thông báo trên giao diện.
Kết luận
Đó là kết quả cơ bản cần đạt được mình sẽ gửi các bạn code mẫu để tham khảo phần cuối luôn nha.
Bạn nào muốn làm Gateway ZigBee để điều khiển thiết bị qua điện thoại thì để lại yêu cầu mình share tài liệu cho các bạn tham khảo nha. Mình đã làm qua ZiGBee Gateway quản lý khoảng 60 node. Khá nhiều vấn đề cần thì thảo luận bên dưới nhé |
Để download toàn bộ tài liệu trong bài bao gồm code, phần mềm,… thì các bạn vui lòng điền theo Form bên dưới. Cam kết không Spam chỉ là mình muốn chia sẻ công nghệ zigbee đến các bạn thật sự quan tâm.
Cảm ơn các bạn!
Tham khảo thêm về công nghệ Zigbee tại : zigbee.org