Nhập môn Bluetooth

Mô tả dự án: 

Trong bài http://arduino.vn/bai-viet/1039-internet-cua-van-vat-o-viet-nam-va-huong-phat-trien-cho-cong-dong-arduino tui có nhấn mạnh về tầm quan trọng của Bluetooth việc phát triển Internet của Vạn Vật (IW). Bài này tui sẽ giới thiệu một vài khía cạnh kỹ thuật của Bluetooth để các bạn hiểu rõ thêm về công nghệ này.

I. Nguồn gốc

Bluetooth ra đời vào năm 1989 tại công ty Ericsson ở Lund, Thụy Điển. Tên "bluetooth" là phiên bản ăng-lô hóa của vị vua Harald Bluetooth, người thống nhất các bộ tộc Đan Mạch thành một vương quốc vùng Scandinavia. Ký hiệu bluetooth mà các bạn thấy là tên viết tắt (Harald Bluetooth) của vị vua này theo cổ ngữ Rune:

Bluetooth ra đời với mục đích "không dây hóa" chuẩn serial RS-232 thịnh hành vào những năm 80-90 của thế kỷ trước và chuẩn hóa các giao tiếp serial.

 

II. Vật lý cơ bản

Bluetooth về cơ bản là một giao tiếp bằng sóng radio ở băng tần 2.4 đến 2.480 GHz, rất gần với chuẩn Wifi 2.4GHz hiện nay. Tuy nhiên, khác với Wifi hay các sóng radio khác hoạt động ở 1 băng tầng cố định, Bluetooth triển khai theo khái niệm "nhảy tần trải phổ" (Frequency Hopping Spread Spectrum), có nghĩa là băng tần hoạt động của Bluetooth thay đổi liên tục với 79 kênh (từ 2.400 GHz đên 2.480 GHz). Điều này, về mặt lý thuyết, đảm bảo bluetooth chống lại việc nghe lén rất hiệu quả vì hacker phải biết chính xác được kênh nào để nghe, mà kênh này lại thay đổi liên tục (khoảng 800 lần mỗi giây) tùy vào sự đồng ý giữa 2 thiết bị đang giao tiếp với nhau.

Bước sóng của bluetooth là khoảng 12cm. Đây cũng là chiều dài thường thấy của ăn-ten mà các bạn thấy trên các module:

Bluetooth thực hiện giao tiếp với nhau theo kiểu chủ-tớ (Master-Slave), và thông thường 1 chủ có thể nối với 7 thiết bị tớ cùng 1 lúc thành một hệ thống mạng mini. Dĩ nhiên các thiết bị có thể đổi vai trò, tùy vào điều kiện tiếp nối. Ví dụ: 1 cái tai nghe khởi đầu kết nối với điện thoại bắt buộc phải đóng vai chủ Master, nhưng sau đó sẽ hoạt động như là 1 tớ Slave sau khi kết nối hoàn tất. Sau đó thông tin được truyền đi theo phương thức giao chuyển gói (Packet Switching) như hình dưới sau:

Giả sử ta có 1 mạng 6 thiết bị, User 1 muốn gửi thông tin đến User 5, và User 2 muốn gửi thông tin đến User 4. User 1 sẽ chia thông tin cần chuyển thành 5 gói nhỏ 54321 và User 2 chia thông tin của mình thành 4 gói 4321.  Các gói thông tin này được truyền đến người nhận bằng đường truyền khác nhau, không nhất thiết là đi trực tiếp User 1 => User 5 mà có thể qua đường User 1 => User 2 => User 4 => User 5. Như vậy thông tin có thể truyền đi rất nhanh chóng. Sau khi tất cả các gói đã được nhận được ở điểm đến. chúng sẽ được sắp xếp lại theo thứ tự ban đầu.

Một điểm quan trọng của Bluetooth trong việc chuẩn hóa giao tiếp là yêu cầu vế sự tương thích cấu hình Bluetooth (Bluetooth profile) giữa các thiết bị. Ví dụ: bạn muốn chuyển tải hình ảnh giữa 2 điện thoại di động với nhau, bắt buộc bạn phải cài cấu hình Basic Imaging Profile (BIP). Các bạn có thể xem thêm thông tin về các cấu hình Bluetooth tiêu biểu ở đây:

https://vi.wikipedia.org/wiki/C%E1%BA%A5u_h%C3%ACnh_Bluetooth

III. Bluetooth thông thường và Bluetooth BLE

Hiện nay có 2 phương án tiếp cận với Bluetooth. Phương án "truyền thống" Classic Bluetooth dành cho giao tiếp với dung lượng dữ liệu lớn như headphone hay truyền ảnh, và phương án "năng lượng thấp" BLE cho các ứng dụng Internet của Vạn Vật. Sau đây là một số thông số cho thấy sự khác biệt giữa 2 phương án này: (Từ wikipedia)

Khoảng cách hoạt động 100 m (330 ft) >100 m (>330 ft)
Tốc độ truyền 1–3 Mbit/s 1 Mbit/s
Thông lượng 0.7–2.1 Mbit/s 0.27 Mbit/s
Số lượng Slavez 7 Tùy vào ứng dụng
Mã hóa 56/128-bit  128-bit AES và Counter Mode CBC-MAC 
Độ trễ (từ lúc chưa kết nối) 100 ms 6 ms
Thời gian tối thiểu để gửi dữ liệu 100 ms 3 ms 
Truyền giọng Không
Tôpô mạng Scatternet Scatternet
Năng lượng tiêu thụ 1 W  0.01 đến 0.5 W 
Nguồn tiêu thụ <30 mA <15 mA
Profile 

Như các bạn thấy, BLE sẽ là một trong các chuẩn giao tiếp thích hợp cho IW vì hắn tiêu thụ ít điện năng, tốc độ nhanh và truyền ít thông tin hơn.

IV. Một số ngộ nhận về Bluetooth

  • Bluetooth là giao tiếp tầm ngắn, khoảng vài mét đổ lại. Điều này dựa trên "kinh nghiệm" sử dụng headphone và chuột. Các thiết bị này cần tiết kiệm điện nên không được thiết kế để truyền đi xa. Nếu các bạn đọc kỹ thông số trên thiết bị bluetooth, các bạn sẽ thấy Bluetooth được chia thành các Class:
Device Class Năng lượng truyền Phạm vi truyền
Class 3 1 mW <10 m
Class 2 2.5 mW ~10
Class 1 100 mW ~100 m

 

Như các bạn thấy, Bluetooth thực ra có tầm hoạt động ngang ngửa với wifi. Đặc biệt, nếu bạn nối ăn-ten, phạm vi có thể vượt xa 1km.

  • Bluetooth không làm lộ thông tin cá nhân nhạy cảm của bạn. Thực tế là hacker có thể giả lập 1 cấu hình RFCOMM rồi dùng lệnh AT để truy xuất danh bạ và các cuộc gọi của bạn hoặc các trò hay ho hơn nữa.

  • Bluetooth có độ bảo mật cao: Hiệp Hội Quan Tâm Đặc Biệt Về Bluetooth (Bluetooth Special Interest Group - BSIG) tạo riêng cho mình 1 mã riêng gọi là E0 Cipher để dùng trên tất cả giao tiếp bluetooth. Về cơ bản thì mã này là 128 bit, có nghĩa là cần đến 2^128 bước thử để công phá. Tuy nhiên thực tế thì mã này không đủ mạnh, và cần khoảng 2^38 bước là có thể phá. Ngoài ra, vì bluetooth có tham vọng chuẩn hóa các giao tiếp không dây với các profile phức tạp nên lỗ hổng bảo mật chưa thể được vá hết. Các bạn 8x, 9x đời đầu chắc không lạ với trò hack bluetooth trên các điện thoại Nokia Symbian đời đầu ha. Thêm 1 điều nguy hiểm nữa là mã pairing của các thiết bị đơn giản như headphone, tracker đều chỉ dùng mặc định là 0000 hay 1234. Thử tượng tượng có 1 ai đó ngồi cách xa 1km mà có thể nghe hết mọi chuyện trong nhà của bạn vì bạn quên tắt tai nghe bluetooth xem. Điều này thật nguy hiểm phải không?

 

lên
29 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ả

Raspberry Pi Thiên Lý Nhãn (Phần 3): Khóa thông minh nhận dạng khuôn mặt với Raspberry Pi và OpenCV

Trong bài trước tui đã giới thiệu về việc nhận diện khuôn mặt với Raspberry Pi và webcam. Tuy nhiên bài chỉ dừng lại ở việc Raspberry Pi có thể nhận diện được khuôn mặt của bất kỳ ai đứng trước webcam mà thôi. Bài toán đặt ra là làm thế nào để Raspberry Pi nhận được khuôn mặt của chính bạn? Đây là một bài toán khó và thú vị. Khó là vì chúng ta cần thuật toán và khả năng xử lí hình ảnh mạnh. Thú vị là do ta có thể "chế cháo" kết hợp với các hệ thống bảo mật khác như vân tay, mật khẩu để tăng tính an ninh cho đề án của bạn. Vì độ phức tạp của đề án này nên tui sẽ chia ra làm 2 phần.

  • Phần đầu tiên là "phần mềm": chúng ta sẽ ghi lại khoảng 200 tấm hình webcam với khuôn mặt của bạn và huấn luyện máy tính với thuật toán chính diện (eigenfaces) của OpenCV. Do tài nguyên của Pi hạn hẹp nên bạn cần chạy phần này trên máy tính của mình. 
  • Phần tiếp theo là "phần cứng": ta nối Pi với relay và cho webcam chụp ảnh. Nếu Pi nhận diện được chính khuôn mặt của bạn thì sẽ kích relay.

Lưu ý là các bạn phải tải OpenCV về trên cả Pi và máy tính. Các bạn vào đây để download code và các tập tin cần thiết nữa: https://github.com/johnkimdinh/Facial-recognition-Raspberry-Pi-OpenCV

lên
3 thành viên đã đánh giá bài viết này hữu ích.
Từ khóa: 

Áo yếm cho em - Cách làm hộp đựng (case) tiêu biểu cho con cưng Arduino

Con người còn có nhu cầu ăn diện, huống chi là "con cưng" arduino của bạn. Ngoài việc tăng tính chuyên nghiệp cho đề án của bạn, case còn là bộ giáp bảo vệ cho board mạch "mồ hôi xương máu" khỏi các tai nạn bất ngờ, đặc biệt là với việc vô tình làm đoản mạch với các dụng cụ kim loại vô tình rơi phải. Bài này tui sẽ hướng dẫn các bạn một số cách làm case tiêu biểu nha!

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