[Arduino ZigBee Shield] Giao tiếp Arduino thông qua ZigBee Shield

Trong bài viết trước, mình đã giới thiệu các bạn cách để Bật tắt đèn tự động bằng cảm biến cửa thông qua Gateway Arduino ZigBee. Bài viết giới thiệu cơ bản cho các bạn cách để thiết lập một hệ thống nhà tự động đơn giản và nhanh chóng.

Hôm nay, mình sẽ giới thiệu về một chức năng rất đặc biệt và thú vị của Arduino ZigBee Shield đó là giúp các board Arduino giao tiếp được với nhau thông qua sóng ZigBee. Mình hướng dẫn các bạn chức năng Paring (ghép nối) Router với Gateway và gửi data từ Router đến Gateway và ngược lại.

Đầu tiên, các bạn chuẩn bị 2 board Arduino Uno R3 (mình mua tại đây), 2 board Arduino ZigBee Shield (mình mua tại đây) và tải sẵn trình biên dịch Arduino IDE. Sau khi cài đặt thành công trình biên dịch Arduino IDE, các bạn import thư viện hỗ trợ dạng .zip của EPCB https://github.com/epcbtech/ArduinoZigBee. Về hướng dẫn chi tiết cách import thư viện, các bạn xem tại bài viết trước.

Sau khi import thư viện hỗ trợ thành công, các bạn tải bộ source mẫu cho Gateway và Router để giao tiếp SmartZigbeeNetWork, sau đó upload code cho từng Shield Zigbee Arduino.

Sau khi nạp code thành công, các bạn tiến hành kết nối Router vào mạng của Gateway.

- Mở serial/minicom của IDE, bật baud rate 115200 và đợi một lát để Gateway cho phép khởi động, khi serial/minicom báo "start coordinator successfully" là được, sau đó gửi case '1' (nhấn phím 1 trên bàn phím) để cho phép kết nối Router vào mạng, ngược lại nếu báo "start coordinator error" thì bạn reset lại board và làm lại cho đến khi báo "start coordinator successfully". Gateway sẽ dành ra 60s để cho phép Router tham gia mạng, nếu không có Router tham gia, Gateway sẽ trở về chế độ làm việc bình thường. Người dùng phải yêu cầu lần nữa nếu muốn kết nối Router lại.

- Mở serial/minicom của IDE, bật baud rate 115200 và đợi một lát để Router cho phép khởi động, sau khi khởi động thành công thì serial/minicom sẽ hiển thị như sau:

- Bạn mở serial/minicom của Router, gửi case '1' để yêu cầu cho Router được phép kết nối vào mạng của Gateway. Đối với Router, bạn cũng gửi case '1' để bắt đầu kết nối với Gateway. Sau khi Router kết nối thành công thì serial/mincom của Router và Gateway sẽ hiển thị như sau:

- Mình đã xây dựng 2 data test ON/OFF để gửi Router, đầu tiên mình gửi kí tự '2' - tương ứng với giá trị ON(1) từ Router đến Gateway:

- Mình lại gửi kí tự '3'- tương ứng với giá trị OFF(0) từ Router đến Gateway:

- Các bạn có thể tự xây dựng chuỗi data muốn gửi trong source code của Router theo nhiều case khác nhau theo ý thích bằng cách tùy chỉnh lại code.

- Sau khi Router gửi data đến Gateway, Gateway sẽ lưu giữ địa chỉ "short address" của Router và dùng địa chỉ này để gửi data ngược lại. Các bạn cũng có thể tùy chỉnh data theo mong muốn để gửi đến Router.

Như vậy là các bạn đã có thể demo chức năng Paring và gửi data giữa 2 board Arduino vào mạng ZigBee. Ngoài ra, trong source mẫu cũng đã có các hướng dẫn chi tiết, giúp các bạn dễ dàng tùy chỉnh lại chức năng theo mong muốn. Bộ thư viện và source code mẫu sẽ giúp các bạn dễ dàng tiếp cận hơn với công nghệ ZigBee và tạo được hứng thú trong việc phát triển sản phẩm.

Các bạn lưu ý, vì mình demo Arduino IDE trên hệ điều hành Windows nên sẽ không mở đồng thời hai serial monitor, các bạn hãy tải phần mềm Hercules để có thể mở đồng thời. Đối với Arduino IDE trên GNU/Linux thì các bạn tham khảo bài viết Console với công cụ Minicom.

Nếu các bạn có những thắc mắc cần giải đáp, hãy nhắn tin cho mình qua Fanpage: EPCB hoặc qua Email: epcbtech@gmail.com. Cảm ơn các bạn đã theo dõi!