Giới thiệu Intel Edison - Tùy biến Bluetooth - P3

Tính năng của một thiết bị bluetooth phụ thuộc vào thông số cấu hình được khai báo trên mạch thu/ phát tín hiệu; việc tùy chỉnh các thông số này trên phần cứng/ phần mềm sẽ giúp quá trình truyền tải giữa các thiết bị đạt hiệu năng tốt nhất cho từng mục đích sử dụng trên thực tế. Mã nguồn BlueZ được cài đặt trên nền Yocto Linux cho phép người dùng Intel Edison tùy biến mạnh mẽ các thông số bluetooth một cách dễ dàng thông qua các tập tin cấu hình.

1. Tổng quan về Bluetooth profile

Để sử dụng công nghệ không dây Bluetooth, các thiết bị phải có khả năng tự định danh thông qua các khai báo mà nhà sản xuất gán sẵn vào phần cứng. Bluetooth profile là một loạt các định nghĩa được mô tả nhằm thông báo với các thiết bị khác các tính năng mà nó hỗ trợ trong phạm vi phần cứng có thể thực hiện (ví dụ: tai nghe bluetooth, bàn phím/ chuột bluetooth, ...)

Một số thuật ngữ

  1. Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR): được sử dụng phiên bản Bluetooth 2.0/2.1
  2. Bluetooth with low energy (LE): được sử dụng phiên bản Bluetooth 4.0/4.1/4.2
  3. Device Identification Profile (DI): cho phép nhà sản xuất, người dùng điều chỉnh, bổ sung các thông tin định danh, tính chất của thiết bị Bluetooth.

Kiến trúc Bluetooth

Kiến trúc lõi của tiêu chuẩn Bluetooth bao gồm nhiều thành phần khác nhau và phân thành ba nhóm Bluetooth Apps, Bluetooth hosts và Bluetooth controllers. Để hiểu rõ thêm về tính năng của từng thành phần, bạn có thể truy cập tài liệu công bố chính thức tại trang web Bluetooth core specification  .

Hình: Kiến trúc lõi tiêu chuẩn Bluetooth

Thành phần mà tôi sẽ đề cập chính trong bài viết này là Generic Access Profile - GAP thực hiện quản lý vai trò của thiết bị (roles), thủ tục (procerdures) và chế độ (modes) trong việc truyền tải dữ liệu, rà quét thiết bị, thiết lập/ quản lý kết nối, thống nhất các mức độ bảo mật. Các thông tin này bắt buộc phải được khai báo trong các thiết bị BLE.

Hình: Bluetooth profiles

Hình: Sơ đồ tương quan giữa Device ID profile và Service Discovery Protocol trong GAP

Hình: BLE protocol stack

Hình: Sơ đồ kết nối các phiên bản Bluetooth

Hình: Một số kiến trúc phần cứng dựa theo tiêu chuẩn Bluetooth

2. Tùy chỉnh thông tin định danh thiết bị (DI)

Sau khi xác định được vị trí của DI trong kiến trúc Bluetooth, người dùng có thể thực hiện điều chỉnh các tham số trong cấu hình Edison nhằm đạt được mục tiêu tùy biến định danh thiết bị. Các profile khác mà BlueZ hỗ trợ người dùng được cập nhật tại trang chính của dự án http://www.bluez.org/profiles/

Để thực hiện thay đổi DI của thiết bị, người dùng chỉnh sửa tập tin /etc/blutooth/main.conf, thông số cần thay đổi là DeviceID = bluetooth:1234:5678:abcd

  • VendorID Source: có thể thiết lập giá trị là Bluetooth hoặc USB.
  • VendorID: 16bits dữ liệu định danh nhà sản xuất. Người dùng có thể tham khảo danh mục các nhà sản xuất đã đăng ký mã định danh thiết bị Bluetooth tại Bluetooth company identifiers và cho USB tại The USB ID Repository
  • ProductID: 16bits dữ liệu dịnh đạnh mã sản phẩm.
  • Version: 16bits dữ liệu định danh phiên bản.

Giá trị mặc định được thiết lập trên Edison có ý nghĩa như sau:

  • VendorID Source: USB
  • VendorID: 0x1D6B (Linux Foundation)
  • ProductID: 0x0246 (BlueZ)
  • Version: 0x0525 (5.37)
root@VisudoBlog:~# rfkill unblock bluetooth  
root@VisudoBlog:~# bluetoothctl  
[NEW] Controller 98:4F:EE:04:21:A5 VisudoBlog [default]
[bluetooth]# show
Controller 98:4F:EE:04:21:A5  
        Name: VisudoBlog
        Alias: VisudoBlog
        Class: 0x6c0110
....
        Modalias: usb:v1D6Bp0246d0525
        Discovering: no

3. Thay đổi Bluetooth MAC address

Trên mỗi thiết bị Intel Edison, một dãy địa chỉ Bluetooth MAC duy nhất sẽ được định danh bởi nhà sản xuất. Để thực hiện thay dổi giá trị MAC, bạn cần thực hiện mount thư mục /factory và chỉnh sửa tập tin /factory/bluettoh_address, sau đó tiến hành khởi động lại thiết bị reboot để xem sự thay đổi.

Kiểm tra thư mục /factory sử dụng lệnh df -h

root@VisudoBlog:~# df -h  
Filesystem       Size  Used Avail Use% Mounted on  
/dev/root        1.4G 1011M  318M  77% /
.....
/dev/mmcblk0p10  1.3G  7.5M  1.3G   1% /home
tmpfs            481M  6.1M  474M   2% /var/volatile  
/dev/mmcblk0p5  1003K   19K  913K   3% /factory
.....

Kiểm tra thư mục /factory sử dụng lệnh mount -v | grep factory

root@VisudoBlog:~# mount -v | grep factory  
/dev/mmcblk0p5 on /factory type ext4 (ro,nosuid,nodev,noatime,discard,noauto_da_alloc)

Thực hiện mount thư mục /factory và chỉnh sử Bluetooth MAC address.

root@VisudoBlog:~# mount -o remount,rw /dev/mmcblk0p5 /factory  
root@VisudoBlog:~# vi /factory/bluetooth_address  
root@VisudoBlog:~# reboot  

4. Tham khảo

  1. https://developer.bluetooth.org/TechnologyOverview/pages/profiles.aspx
  2. https://developer.bluetooth.org/TechnologyOverview/Pages/HID.aspx
  3. Intel Edison Bluetooth Guide - R004
lên
3 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 
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ả

Giới thiệu Intel Edison - Bluetooth - P2

Bluetooth Smart/Low Energy (BLE) được tích hợp trên Edison sử dụng mã nguồn BlueZ có thể được xem là một trong những điểm mạnh mà Intel đã mang đến cho người dùng làm IoT. BlueZ cung cấp cho người dùng công cụ mạnh mẽ giúp quản lý việc quét, ghép đôi, kết nối, quản lý các thiết bị Bluetooth.

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

Giới thiệu Espruino Pico - Phần 1

Espruino là một dự án phần cứng nguồn mở với nỗ lực của Gordon Williams để tạo ra một vi điều khiển hoạt động trên nền tảng Javascript. Dự án được Gordon kêu gọi vốn tại Kickstarter để phát triển hai phiên bản là Espruino có kích thước như một thẻ tín dụng và Espruino Pico có kích thước như một con tem. Cả hai phiên bản đều kết nối qua cổng USB. 

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