VBLUno Tutorial 7 - Điều khiển và giám sát thiết bị bằng Smartphone qua giao tiếp Bluetooth Low Energy

Mô tả dự án: 

Trong các bài viết trước, chúng tôi đã trình bày một số ứng dụng điển hình của giao tiếp Bluetooth Low Energy (BLE) như: Heart Rate Mesuarement, Health Thermometer, Beacons. Các ứng dụng này sử dụng các services đã được Bluetooth SIG định nghĩa sẵn. 

Cho các ứng dụng bất kỳ với BLE, việc tạo ra các services riêng là cần thiết. Bài viết này hướng dẫn các bạn thiết kế và cài đặt một BLE Service cho các ứng dụng điều khiển bất kỳ.

Điều khiển thiết bị qua BLE với VBLUno-LED BUTTON Service

Trong các bài viết trước, chúng tôi đã trình bày một số ứng dụng điển hình của giao tiếp Bluetooth Low Energy (BLE) như: Heart Rate Mesuarement, Health Thermometer, Beacons. Các ứng dụng này sử dụng các services đã được Bluetooth SIG định nghĩa sẵn. Danh sách các services có thể xem tại đây: https://www.bluetooth.com/specifications/gatt/services

Có hai điều bạn cần nhớ:

  • Dữ liệu truyền qua giao tiếp BLE là dữ liệu được cấu trúc hóa, cụ thể chúng được tổ chức thành các services, trong services lại bao gồm các characteristics.
  • Bluetooth SIG định nghĩa sẵn một số services cho các ứng dụng điển hình, nhưng rõ ràng là chúng không đầy đủ, ví dụ như ứng dụng điều khiển một thiết bị bất kỳ. Để phục vụ các ứng dụng như vậy, chúng ta có thể tự định nghĩa các services cho từng trường hợp cụ thể.

Các ứng dụng điều khiển thiết bị yêu cầu khả năng ghi dữ liệu từ GATT Server (Smartphones) xuống GATT Client (BLE Device) và ngược lại. Bài viết này chúng tôi minh họa việc thiết kế và cài đặt một services đơn giản cho BLE, ứng dụng điều khiển LED và nhận tín hiệu trạng thái BUTTON, gọi tắt là VBLUno – LED BUTTON Service.

VBLUno - LED BUTTON Service

Hình dưới mô tả cấu trúc của service thiết kế:

Hình 1: Cấu trúc của VBLUno-LED BUTTON Service

Service bao gồm hai characteristic cho hai mục đích khác nhau:

  • LED Characteristic: Giúp Master truyền tín hiệu điều khiển xuống thiết bị, với kiểu WRITE. Tương tự, các bạn cũng có thể chuyển thành tín hiệu điều khiển bất kỳ, không chỉ để bật tắt LED.
  • BUTTON Characteristic: Với kiểu NOTIFY, characteristic này cho phép thiết bị BLE có thể gửi giá trị cập nhật đến Master. Ta có thể sử dụng characteristic này để gửi giá trị trạng thái nút bấm, giá trị cảm biến lên Smartphones để xử lý. Với characteristic kiểu Notify, tối thiểu chúng ta cần một Descriptor đi kèm, đó là Client Characteristic Configuration Desp. Descriptor này nằm ở phía Master giúp cho phép nhận hoặc không nhận giá trị Notify gửi lên từ BLE Device.

Như vậy, với Services được thiết kế riêng này, chúng ta có thể cài đặt tính năng điều khiển/giám sát thiết bị bất kỳ từ các điện thoại thông minh (hoặc Tablet/PC) qua giao tiếp BLE. Phần tiếp theo trình bày việc cài đặt service này trên Arduino IDE sử dụng kit VBLUno của VNG IoTLab.

Ví dụ demo trên bo mạch VBLUno

Bài toán minh họa

  • Bo mạch VBLUno kết nối với Smartphone thông qua giao tiếp BLE;
  • Chức năng:
    • Smartphone ==> VBLUno: Điều khiển bật tắt LED bằng Smartphones;
    • VBLUno ==> Smartphone: VBLUno truyền một biến giá trị (tăng từ 0x00 đến 0xFF) theo chu kỳ 1 giây.
  • Trên smartphone sử dụng phần mềm BLE Scanner để minh họa.

Thực hiện

  • Tải mã nguồn chương trình cho VBLUno tại đây
  • Upload code xuống bo mạch VBLUno. Sau đó chuyển về chế độ Application để chạy chương trình.
  • Một số hình ảnh minh họa:

Hình 2: Thiết bị VBLUno hiển thị trên BLE Scanner

Hình 3: Các services được cài đặt trong VBLUno

Trong hình 3, chương trình BLE Scanner thực hiện discovery thiết bị của chúng ta và tìm ra 3 services. Trong đó GAP và GATT Services là hai service mặc định của BLE Protocol Stack. Nội dung về GAP và GATT đã được trình bày trong các bài viết trước. Services còn lại là CUSTOM SERVICE, đây là service đã được cài đặt trong chương trình (VBLUno-LED BUTTON Service).

Để truyền lệnh điều khiển LED trên bo mạch VBLUno, nhấn ký tự W tại Characteristic đầu tiên. Truyền giá trị 0 để tắt LED, 1 để bật LED. Xem hình 4

Hình 4: Giao diện ghi dữ liệu từ Smartphone xuống VBLUno

Để cho phép nhận dữ liệu Notify từ VBLUno, trên app bạn nhấn vào nút N tại Characteristic thứ 2, sau đó nút N sẽ chuyển sang màu xanh lá cây. Khi đó app bắt đầu nhận dữ liệu từ VBLUno (Xem hình 5)

Hình 5: App nhận giá trị notify từ VBLUno

Hình 6: Cửa sổ terminal trên PC để debug

 

Hình 7: Mạch VBLUno kết nối UART với PC để debug

Ghi chú: Trong hình 7 do mình không có dây USB khi chạy demo nên sử dụng một mạch USB to UART TTL để kết nối với PC.

Mã nguồn của chương trình không có nhiều điểm mới, mình đã ghi chú khá đầy đủ trong code, các bạn có thể dễ dàng tìm hiểu nhé.

Trên đây chúng tôi đã trình bày cách thiết kế và cài đặt một service riêng cho từng ứng dụng cụ thể, dựa trên đó, các bạn có thể dễ dàng tùy biến cho ứng dụng của mình. Mọi thắc mắc các bạn có thể trao đổi tại:

https://github.com/VNGIoTLab/Arduino_VBLUno_nRF51822/issues

http://arduino.vn/VBLUno#

Demo video điều khiển robot bằng Smartphone qua BLE

Với việc thiết kế riêng cho mình các BLE Services cho từng ứng dụng cụ thể, bạn có thể áp dụng cho nhiều bài toán khác nhau. Dưới đây mình xin giới thiệu video demo việc điều khiển robot bằng Smartphone thông qua giao tiếp BLE.

Hy vọng sẽ nhận được sự quan tâm của cộng đồng với những ứng dụng thú vị này. Có thể trong những bài viết sau, mình sẽ trình bày chi tiết về việc lập trình cho chú robot như trong video.

lên
11 thành viên đã đánh giá bài viết này hữu ích.
Chuyên mục: 
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

VBLUno - Tutorial 2 - Tổng quan về công nghệ BLE và ví dụ minh họa (Phần 2)

Đây là phần cuối của Tutorial 2 nhằm giới thiệu ngắn gọn các kiến thức quan trọng về Bluetooth Low Energe (BLE)

lên
11 thành viên đã đánh giá bài viết này hữu ích.

Giới thiệu bo mạch VBLUno51 của VNG

Sau một thời gian giới thiệu bo mạch phát triển VBLUno đến cộng đồng, VBLUno đã giúp mọi người tiếp cận nhanh chóng với công nghệ Bluetooth Low Energy phục vụ phát triển ứng dụng Internet of Things.

Bên cạnh các ưu điểm trên, VBLUno phiên bản đầu tiên vẫn tồn tại khuyết điểm như: không tích hợp một interface cho phép nạp và gỡ lỗi một cách dễ dàng. Với phiên bản đầu tiên, để nạp/gỡ lỗi dễ dàng, người dùng cần sử dụng thêm mô đun CMSIS-DAP, điều này gây trở ngại không nhỏ cho người dùng.

Với tinh thần lắng nghe từ cộng đồng, chúng tôi đã nâng cấp mạch VBLUno lên phiên bản 2.0 với tên gọi là VBLUno51, bản chất là tích hợp mô đun CMSIS-DAP (DAPLink) lên mạch VBLUno và một số cải tiến quan trọng khác liên quan đến nguồn và ngoại vi. Như vậy, việc nạp chương trình cho mạch VBLUno51 sẽ dễ dàng hơn nhiều, bạn có thể xem mục Bắt đầu thôi! để biết cách nạp chương trình cho VBLUno51.

lên
32 thành viên đã đánh giá bài viết này hữu ích.