Giới thiệu
Dự án này hướng dẫn bạn cách biến một dongle USB BleuIO thành một gateway nhỏ, truyền phát dữ liệu chất lượng không khí trực tiếp từ cảm biến HibouAir tới Adafruit IO. Script sẽ lắng nghe các gói quảng cáo Bluetooth Low Energy (BLE), giải mã các thông số như CO2, nhiệt độ và độ ẩm, và gửi các giá trị mới đến các feed của Adafruit IO mỗi vài giây. Kết quả là một bảng điều khiển sạch sẽ, có thể chia sẻ, cập nhật theo thời gian thực, hoàn hảo cho các buổi trình diễn, phòng thí nghiệm, văn phòng, lớp học và các minh chứng cho khái niệm.
Adafruit IO là gì và tại sao nên kết hợp với BleuIO?
Adafruit IO là một nền tảng đám mây dành cho các maker và nhà phát triển, cho phép bạn thu thập, trực quan hóa và định tuyến dữ liệu thiết bị thông qua API REST đơn giản hoặc MQTT. Bạn không cần bất kỳ phần cứng Adafruit nào; nếu bạn có thể thực hiện một yêu cầu HTTPS, bạn có thể gửi dữ liệu. BleuIO rất phù hợp ở đây: dongle xử lý phần BLE—quét và phân tích các khung cảm biến—trong khi một script Python ngắn định dạng các giá trị đó và gửi chúng đến Adafruit IO. Thực tế có nghĩa là bạn có thể lấy bất kỳ cảm biến quảng cáo BLE nào, dịch các gói của nó thành các số và đưa chúng lên một bảng điều khiển thân thiện với IoT mà không cần máy chủ hay container.
Yêu cầu
Để hoàn thành dự án này, bạn sẽ cần:
- Dongle BleuIO BLE USB – hoạt động như một thiết bị trung tâm BLE để bắt các gói quảng cáo.
- Cảm biến chất lượng không khí HibouAir – phát sóng dữ liệu môi trường như CO2, nhiệt độ và độ ẩm.
- Thư viện Python – cài đặt chúng với:
pip install pyserial requests
- Tài khoản Adafruit IO – đăng ký miễn phí tại io.adafruit.com.
- Khóa Adafruit IO – có sẵn trên trang “My Key” của tài khoản của bạn để xác thực.
Cách hoạt động
Khi bạn khởi động script, nó sẽ mở cổng nối tiếp BleuIO và chuyển đổi dongle sang chế độ trung tâm ngay lần chạy đầu tiên. Từ đó, nó thực hiện một quét BLE ngắn mà lọc các khung quảng cáo HibouAir. Scanner luôn chọn gói phù hợp mới nhất và giải mã các trường mà chúng ta quan tâm: CO2 (ppm), nhiệt độ (°C) và độ ẩm (%rH). Script sau đó gửi mỗi giá trị đến feed tương ứng của Adafruit IO qua HTTPS. Bởi vì Adafruit IO được thiết kế cho dữ liệu IoT trực tiếp, các widget trên bảng điều khiển của bạn sẽ cập nhật ngay khi có điểm mới đến. Chu kỳ lặp lại là có thể cấu hình (10 giây theo mặc định), giúp bạn luôn nằm dưới giới hạn yêu cầu của tầng miễn phí của Adafruit IO.
Mã nguồn (các điểm chính)
Script được thiết kế ngắn gọn và dễ đọc. Nó mở thiết bị nối tiếp (ví dụ /dev/cu.usbmodemXXXX
trên macOS hoặc COM7
trên Windows), gửi các lệnh BleuIO để quét trong vài giây và phân tích các dòng “Device Data [ADV]” được trả về.
Một bộ giải mã nhỏ gọn trích xuất CO2, nhiệt độ và độ ẩm từ dữ liệu của nhà sản xuất HibouAir, bao gồm thứ tự byte và tỷ lệ.
Để làm cho việc thiết lập trở nên dễ dàng, các thông tin xác thực được đọc từ các biến (AIO_USER
, AIO_KEY
) và tên feed mặc định là co2
, temperature
, và humidity
. Mỗi giá trị được gửi đến điểm cuối REST /api/v2/{username}/feeds/{feed_key}/data
với một body JSON đơn giản {"value": <number>}
.
Script bao gồm các kiểm tra hợp lệ nhẹ nhàng (ví dụ như, giới hạn nhiệt độ và độ ẩm) để bỏ qua bất kỳ khung nào không hợp lệ, và in một dòng log ngắn mỗi khi nó gửi dữ liệu mới.
Dưới đây là liên kết GitHub với mã nguồn đầy đủ để bạn có thể clone và chạy nó như hiện tại hoặc điều chỉnh cho các cảm biến khác.
Cách chạy mã
Trước khi chạy, hãy thiết lập cổng nối tiếp và thông tin xác thực Adafruit IO của bạn.
Trên macOS, bạn có thể liệt kê các cổng bằng ls /dev/cu.usbmodem*
;
trên Windows, hãy sử dụng Trình quản lý thiết bị để tìm số COM. Cập nhật thông tin tên người dùng và khóa AIO, sau đó chạy script.
Chương trình sẽ đưa BleuIO vào chế độ trung tâm khi khởi động lần đầu và, mỗi chu kỳ, sẽ quét, giải mã và gửi CO2, nhiệt độ và độ ẩm đến ba feed.
Nếu bạn thấy lỗi HTTP 401, hãy kiểm tra lại khóa AIO; lỗi 404 thường có nghĩa là có lỗi chính tả trong tên feed. Nếu script không thể mở cổng nối tiếp, hãy xác nhận lại đường dẫn và đảm bảo không có chương trình nào khác đang giữ nó mở.
Tạo feed, khóa và bảng điều khiển Adafruit IO
Đăng nhập vào Adafruit IO và tạo ba feed có tên co2
, temperature
, và humidity
. Khóa AIO Key của bạn có sẵn trên trang “My Key” của tài khoản; hãy sao chép nó và giữ kín. Với các feed đã được thiết lập, mở phần Dashboards và tạo một bảng điều khiển mới cho dự án này (ví dụ, “HibouAir Live”). Thêm một vài khối: một gauge hoặc biểu đồ đường cho CO₂ (với một khoảng giá trị hợp lý cho không gian của bạn), một gauge hoặc thanh trượt cho nhiệt độ, và một thanh trượt hoặc biểu đồ đường cho độ ẩm để bạn có thể thấy xu hướng theo thời gian. Mỗi khối sẽ chỉ đến feed tương ứng của nó. Khi script gửi đến các feed đó, các khối sẽ tự động cập nhật và làm mới. Bạn có thể thay đổi thứ tự các khối, điều chỉnh màu sắc và khoảng giá trị, và chia sẻ một liên kết chỉ đọc nếu bạn muốn người khác cùng theo dõi.
Đầu ra
Khi mọi thứ đã kết nối, bảng điều khiển sẽ hiển thị số CO2 trực tiếp trong gauge và biểu đồ đường, giá trị nhiệt độ cập nhật, và một ô độ ẩm sẽ tiến hành với mỗi lần đo mới. Các giá trị di chuyển gần như theo thời gian thực khi script lặp lại, và bất kỳ đỉnh hoặc thay đổi nào trong chất lượng không khí sẽ xuất hiện ngay lập tức.
Các trường hợp sử dụng
Các bảng điều khiển chất lượng không khí thời gian thực hữu ích ở nhiều nơi hơn là chỉ trên bàn thí nghiệm. Quản lý cơ sở có thể theo dõi mức CO2 trong các phòng họp để tối ưu hóa thông gió; trường học và thư viện có thể hiển thị nhiệt độ và độ ẩm cùng với lịch sử số lượng người; các nhà sản xuất nhỏ có thể theo dõi sự thoải mái và an toàn trong không gian sản xuất; và các hobbyist có thể theo dõi văn phòng hoặc studio của họ. Bởi vì đường ống là “cảm biến BLE → BleuIO → HTTPS → Adafruit IO,” bạn có thể thay thế HibouAir bằng các nhà quảng cáo BLE khác và tái sử dụng cùng một cách tiếp cận để trực quan hóa bất cứ điều gì từ độ ẩm đất đến ánh sáng môi trường.
Dự án này nổi bật cách mà bạn có thể nhanh chóng đi từ phát sóng BLE đến bảng điều khiển đám mây trực tiếp với BleuIO và Adafruit IO. Không cần duy trì máy chủ, không cần triển khai container—chỉ cần một dongle USB nhỏ, một thiết bị giám sát chất lượng không khí như HibouAir, một script Python ngắn, và một vài cú nhấp chuột trên trang Adafruit IO. Kết quả là một cái nhìn trực tiếp về môi trường của bạn có thể chia sẻ, dễ dàng mở rộng, thương hiệu, và tự động hóa.
Thực tiễn tốt nhất
- Kiểm tra thường xuyên: Đảm bảo rằng bạn kiểm tra giá trị gửi đi thường xuyên để đảm bảo rằng dữ liệu luôn chính xác.
- Bảo mật thông tin: Đảm bảo rằng khóa AIO và các thông tin nhạy cảm khác được bảo mật và không được công khai.
Những cạm bẫy phổ biến
- Lỗi xác thực: Kiểm tra kỹ khóa AIO nếu gặp lỗi xác thực.
- Lỗi kết nối: Đảm bảo cổng nối tiếp không bị khóa bởi các ứng dụng khác.
Mẹo hiệu suất
- Tối ưu hóa chu kỳ quét: Điều chỉnh thời gian quét để giảm tải cho mạng và tiết kiệm năng lượng.
- Sử dụng bộ nhớ đệm: Lưu trữ tạm thời các giá trị để giảm số lượng yêu cầu gửi đến Adafruit IO.
Câu hỏi thường gặp (FAQ)
1. Tôi có thể sử dụng cảm biến khác không?
Có, bạn có thể thay thế HibouAir bằng bất kỳ cảm biến BLE nào khác mà bạn có.
2. Làm thế nào để tôi có thể bảo trì dự án này?
Hãy chắc chắn cập nhật thư viện Python và kiểm tra thường xuyên các giá trị gửi đi.
3. Tôi có cần kiến thức lập trình để thực hiện dự án này không?
Một chút kiến thức về Python sẽ hữu ích, nhưng hướng dẫn đã cung cấp đầy đủ để bạn có thể làm theo.