visudoblog gửi vào
- 14569 lượt xem
Intel Edison được tích hợp sẵn Bluetooth Smart/Low Energy (BLE) cho phép bạn có thể kết nối đến Edison từ điện thoại thông minh và phù hợp cho bất kỳ dự án IoT nào mà bạn sẽ thực hiện trong tương lai thông qua Bluetooth. Tài liệu hướng dẫn chính thức được Intel cung cấp bao gồm 73 trang tài liệu định dạng PDF. Bạn có thể tải về tại trang web chính thức Intel Edison Bluetooth Guide - R004.
1. Giải pháp tích hợp Bluetooth trên Linux
BlueZ là một dự án mã nguồn mở cung cấp giao thức kết nối Bluetooth trên nền tảng Yocto Linux. Các tiện ích mà BlueZ mang đến cho người dùng bao gồm rfkill và hci (rfkill, hcidump, hciconfig, hcitools, v.v...)
- rfkill: thực hiện bật/tắt chip Bluetooth.
- hcitools: một loạt các lệnh hỗ trợ việc quản lý kết nối Bluetooth (hcidump, hciconfig, hcitool, hciattach)
Hình: Sơ đồ quản lý dữ liệu của BlueZ
Tất cả các thiết lập Bluetooth được lưu trữ tại thư mục /var/lib/bluetooth và người dùng có thể tìm thấy các thông tin hữu ích phục vụ việc debug trong suốt quá trình khởi tạo và kết nối các thiết bị.
root@VisudoBlog:/var/lib/bluetooth# ll -R .: total 12 drwx------ 3 root root 4096 Aug 9 12:38 . drwxr-xr-x 14 root root 4096 Aug 9 12:38 .. drwx------ 3 root root 4096 Aug 9 12:42 98:4F:EE:04:21:A5 ./98:4F:EE:04:21:A5: total 16 drwx------ 3 root root 4096 Aug 9 12:42 . drwx------ 3 root root 4096 Aug 9 12:38 .. drwx------ 2 root root 4096 Aug 9 13:25 cache -rw------- 1 root root 29 Aug 9 12:42 settings ./98:4F:EE:04:21:A5/cache: total 12 drwx------ 2 root root 4096 Aug 9 13:25 . drwx------ 3 root root 4096 Aug 9 12:42 .. -rw------- 1 root root 42 Aug 9 13:25 F8:77:B8:BE:C9:64
BlueZ còn cho phép người dùng mở rộng các tính năng Bluetooth thông qua thư viện phát triển mở rộng; người dùng có thể tìm hiểu thêm bằng các truy cập thư mục /usr/lib/bluetooth/plugins
root@VisudoBlog:/usr/lib/bluetooth/plugins# ll total 24 drwxr-xr-x 2 root root 4096 Jun 7 00:50 . drwxr-xr-x 3 root root 4096 Jun 6 21:47 .. -rwxr-xr-x 1 root root 951 Jun 6 21:46 sixaxis.la -rwxr-xr-x 1 root root 11884 Jun 6 21:47 sixaxis.so
2. Các lệnh cơ bản quản lý Bluetooth trên Intel Edison
Trong phần này, tôi sẽ tiến hành quản lý các thiết bị Bluetooth thông qua giao diện SSH. Bạn có thể đọc lại bài viết Hướng dẫn kết nối Edison sử dụng SSH nếu là người dùng mới làm quen với thiết bị.
a. Bật tắt Bluetooth trên Edison
Thực hiện lệnh rfkill unblock bluetooth để bật và rfkill block bluetooth để tắt việc thu/phát sóng Bluetooth trên thiết bị.
root@VisudoBlog:~# rfkill unblock bluetooth root@VisudoBlog:~# rfkill block bluetooth
Liệt kê các trạng thái kết nối trên Edison;
root@VisudoBlog:~# rfkill list 0: phy0: wlan Soft blocked: no Hard blocked: no 1: brcmfmac-wifi: wlan Soft blocked: no Hard blocked: no 2: bcm43xx Bluetooth: bluetooth Soft blocked: no Hard blocked: no 4: hci0: bluetooth Soft blocked: no Hard blocked: no
b. Quản lý kết nối sử dụng bluetoothctl
bluetoothctl là một tiện ích giúp người dùng quản lý việc bật/tắt thu phát sóng, quét thiết bị, ghép đôi thiết bị, ...
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 Powered: yes Discoverable: no Pairable: yes UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb) UUID: SIM Access (0000112d-0000-1000-8000-00805f9b34fb) UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb) UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb) UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb) UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb) UUID: Handsfree (0000111e-0000-1000-8000-00805f9b34fb) UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb) Modalias: usb:v1D6Bp0246d0525 Discovering: no
Thực hiện khởi tạo thiết bị bluetooth, người dùng có thể thiết lập các tùy chọn khác nhau như KeyboardDisplay, DisplayOnly, DisplayYesNo, KeyboardOnly và NoInputNoOutput. Mỗi thiết lập có ý nghĩa khác nhau trong việc hoạt động của bluetooth giữa các thiết bị người dùng và Edison.
[bluetooth]# agent KeyboardDisplay Agent registered [bluetooth]# default-agent Default agent request successful
Thực hiện quét thiết bị phát sóng bluetooth sử dụng lệnh scan on; sau khi quá trình quét thiết bị ghi nhận các tín hiệu phát từ xung quanh, người dùng có thể tắt quá trình quét sử dụng lệnh scan off.
[bluetooth]# scan on Discovery started [CHG] Controller 98:4F:EE:04:21:A5 Discovering: yes [NEW] Device F8:77:B8:BE:C9:64 [TV] Samsung 5 Series (49) [CHG] Device F8:77:B8:BE:C9:64 TxPower: 9 ..... [NEW] Device 98:D6:F7:AD:E9:B3 LG-F160 [CHG] Device F8:77:B8:BE:C9:64 RSSI: -62 ..... [bluetooth]# scan off [CHG] Device 98:D6:F7:AD:E9:B3 RSSI is nil [CHG] Device 00:08:CA:26:B1:A1 TxPower is nil ..... Discovery stopped [CHG] Controller 98:4F:EE:04:21:A5 Discovering: no
Để thực hiện kết nối chủ động từ thiết bị bên ngoài đến Edison, bạn cần bật tính năng discovery trên thiết bị bằng lệnh discoverable on
[bluetooth]# discoverable on Changing discoverable on succeeded [CHG] Controller 98:4F:EE:04:21:A5 Discoverable: yes
Ghép đôi thiết bị di động và Edison thông qua lệnh pair DeviceAddress
[bluetooth]# pair 98:D6:F7:AD:E9:B3 Attempting to pair with 98:D6:F7:AD:E9:B3 [CHG] Device 98:D6:F7:AD:E9:B3 Connected: yes Request confirmation [agent] Confirm passkey 454645 (yes/no): yes [CHG] Device 98:D6:F7:AD:E9:B3 Modalias: usb:v000Ap0000d0000 ..... [CHG] Device 98:D6:F7:AD:E9:B3 Paired: yes Pairing successful [CHG] Device 98:D6:F7:AD:E9:B3 Connected: no
Kết nối đến thiết bị di động sử dụng lệnh connect DeviceAddress
[bluetooth]# connect 98:D6:F7:AD:E9:B3 Attempting to connect to 98:D6:F7:AD:E9:B3 [CHG] Device 98:D6:F7:AD:E9:B3 Connected: yes Connection successful [DEL] Device F8:77:B8:BE:C9:64 [TV] Samsung 5 Series (49)
Xem thông tin thiết bị kết nối đến Edison sử dụng lệnh info DeviceAddress
[LG-F160]# info 98:D6:F7:AD:E9:B3 Device 98:D6:F7:AD:E9:B3 Name: LG-F160 Alias: LG-F160 Class: 0x58020c Icon: phone Paired: yes Trusted: no Blocked: no Connected: yes LegacyPairing: no UUID: OBEX Object Push (00001105-0000-1000-8000-00805f9b34fb) ..... Modalias: usb:v000Ap0000d0000
Thực hiện ngắt kết nối thiết bị thông qua lệnh exit
[LG-F160]# exit Agent unregistered [DEL] Controller 98:4F:EE:04:21:A5 VisudoBlog [default]
3. Tạm kết
Bluetooth đượ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. Trong phần tiếp theo, tôi sẽ tiếp tục các vấn đề về tinh chỉnh kết nối trên Edison để tiện lợi cho người dùng khi lập trình và đảm bảo tính ổn định của kết nối.