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

ST7565 và ESP8266 - Màn hình LCD bự chà bá chưa đến 100k cho thế giới IoT

Mình rất thích LCD ST7565 này, và đã đặt liền 4 con mà mỗi con quá rẻ có 20k. Nhưng khổ một điều, điện áp hoạt động và IO của LCD ST7565 có 3.3V. Bản thân mình lại không thích việc chơi điện trở để chơi LCD này với Arduino. Lý do đơn giản là phải hàn quá nhiều, mình lại lười crying. Hổm nay, mình đang làm loạt bài về ESP8266 và cũng phải gặp vấn đề điện trở để làm cầu phân áp khi giao tiếp giữa ESP8266 và Arduino.

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

Thư viện ST7565 trên Arduino Create - Thử nghiệm đầu tiên: Hoàn hảo!

Mình rất tự hào và hãnh diện, khi thư viện made in Việt Nam đầu tiên của Thái Sơn (Nick Chung) được mình tải lên tại Arduino Create với mục đích thử nghiệm việc biên dịch code online trên Arduino Create đã hoàn thành công việc của nó ngay trong lần thử đầu tiên. Qua bài viết này, mình xin hướng dẫn các bạn lập trình Arduino với Arduino Create thông qua việc làm một ví dụ mẫu về việc cài thư viện và sử dụng nó trên Arduino Create.

lên
7 thành viên đã đánh giá bài viết này hữu ích.
Các bài viết cùng tác giả

Giới thiệu Intel Edison - Intel IoT Analytics - P7

Intel cung cấp hệ thống phân tích dữ liệu phát triển trên nền điện toán đám mây thực hiện thu thập và phân tích các dữ liệu từ các cảm biến kết nối với Edison gởi đến. Thông qua dịch vụ này, người dùng sở hữu một thiết bị Intel Edison hoặc Intel Galileo có thể gởi dữ liệu trực tiếp đến hệ thống mà Intel hỗ trợ, không cần đầu tư thêm một hệ thống phân tích dữ liệu đắt đỏ nào khác.

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

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.