Câu trả lời ngắn gọn là có, có thể sử dụng Bluetooth mà không cần ghép nối. Tuy nhiên, nó vẫn sẽ luôn là một liên kết điểm-điểm. Cũng có những vấn đề tiềm ẩn khi không sử dụng ghép nối (chủ yếu là thiếu bảo mật và thiếu hỗ trợ tốt cho chế độ hoạt động này). Việc này có thể được thực hiện hay không tùy thuộc vào phần cứng Bluetooth của máy thu của bạn. Tôi giả sử bạn đang sử dụng Bluetooth 'tiêu chuẩn' thay vì Bluetooth năng lượng thấp (hoàn toàn khác biệt và không được hỗ trợ đặc biệt trong điện thoại di động). Nếu bạn đang sử dụng năng lượng thấp thì máy phát của bạn sẽ là một thiết bị có năng lượng thấp và máy thu của bạn sẽ là thứ lắng nghe các tin nhắn. Tôi chưa sử dụng cái này, vì vậy tôi không thể cung cấp cho bạn bất kỳ thông tin nào về điều này vì vậy tôi sẽ sử dụng Bluetooth 'bình thường'.
Theo tôi thấy, có hai vấn đề cần khắc phục:
Tắt ghép nối pin
Bắt đầu kết nối tự động
Tôi sẽ đề cập đến số 2 trước khi tôi có ấn tượng rằng đây là điều bạn thực sự quan tâm (xin lỗi nếu tôi đọc sai). Để thực hiện việc này từ điện thoại hoặc thiết bị 'chính chủ' khác, nó sẽ phải liên tục tìm kiếm các thiết bị Bluetooth từ xa. Khi nó nhận ra một dữ liệu có thể áp dụng, nó sẽ tự động kết nối với nó và gửi một số dữ liệu hoặc dữ liệu khác sẽ bắt đầu bất kỳ hành động nào được yêu cầu. Những người khác đã đề cập đến việc sử dụng tên thân thiện Bluetooth cho quy trình này và đó chắc chắn là một cách để làm điều đó. Kinh nghiệm của tôi về các tên thân thiện với Bluetooth (đặc biệt nhưng không chỉ riêng với ngăn xếp Bluetooth của Microsoft) là chúng không phải là một phương pháp quét mạnh mẽ. Bạn có thể sử dụng Lớp thiết bị Bluetooth tốt hơn nhiều, được phát cùng lúc với địa chỉ thiết bị duy nhất. Lớp thiết bị này có một số lượng lớn các mục được chỉ định trước cho những thứ như điện thoại di động, máy tính xách tay, máy tính để bàn, v.v. Nếu bạn sử dụng một trong các lớp thiết bị không chuẩn (ví dụ 00:00:00), bạn sẽ có thể ngay lập tức để lọc ra phần lớn các thiết bị Bluetooth. Sau đó, bạn có thể kết nối với thiết bị còn lại và thực hiện một số loại giao tiếp xác nhận yêu cầu để bắt đầu hành động của mình. Nếu bạn thực hiện điều này tối nghĩa phù hợp (hoặc kiểm tra tên thân thiện như là một sự cân nhắc thứ hai), thì nó sẽ hoàn toàn lọc ra bất kỳ thiết bị không chính xác nào còn lại.
Về số 1, ghép nối pin không đặc biệt hợp lý nếu bạn đang tạo kết nối tạm thời, nhưng nó vẫn có thể là cách tốt nhất để đạt được những gì bạn muốn làm. Nếu bạn muốn tránh ghép nối pin, nó có thể được tắt và kết nối không ghép đôi có thể được thực hiện. Cách bạn thực hiện việc này tùy thuộc vào việc triển khai bộ thu Bluetooth, nhưng đây là một vài ví dụ:
- Bluegiga WT12: sử dụng lệnh SET BT AUTH *
- LMX9838 bán dẫn quốc gia: sử dụng lệnh GAP_SET_SECURITY_MODE với chế độ bảo mật 1 (không ghép nối)
v.v.
Kết nối với thiết bị sau đó có thể được thực hiện mà không cần ghép nối. Nếu thiết bị khởi tạo kết nối giống như thiết bị thu, điều này rất đơn giản. Nếu bạn đang sử dụng PC Windows, bạn có thể trải qua quá trình tạo kết nối mới và chọn "không sử dụng mã pin", mặc dù Windows có thể vẫn yêu cầu bạn cấp mã pin khi bạn kết nối (0000 thường hoạt động, nhưng nó rất dễ vỡ). Nếu bạn đang sử dụng python với pybluez, nó rất đơn giản:
import bluetooth
sock = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
sock.connect((<insert MAC address>, <insert port number>))
Tuy nhiên, nếu bạn muốn kết nối từ điện thoại di động, nó được nhiều hơn phức tạp. SDK Android dường như không thực sự hỗ trợ các kết nối không ghép đôi:
API Bluetooth Android hiện tại yêu cầu các thiết bị được ghép nối trước khi kết nối RFCOMM có thể được thiết lập. (Việc ghép nối được thực hiện tự động khi bạn bắt đầu kết nối được mã hóa với API Bluetooth.)
(từ http://developer.android.com/guide/topics/connectivity/bluetooth.html ). Có nhiều cách để giải quyết vấn đề này, nhưng chúng rất phức tạp và không được hỗ trợ tốt. Nếu bạn đang sử dụng iPhone, thì kết nối Bluetooth là một loại sâu hoàn toàn khác (cấp phép, v.v.), vì vậy tôi sẽ để nó ngay bây giờ.
Như đã nói, hầu như mọi API tôi từng xem đều cho phép ghép nối vàkhông được thực hiện (với ngoại lệ đáng chú ý là python / pybluez, nhưng đó chỉ là một trình bao bọc xung quanh ngăn xếp của Microsoft trên Windows, vì vậy bạn luôn có thể gọi trực tiếp chức năng cấp thấp). Vì vậy, khi bạn phát hiện ra một thiết bị có đúng loại thiết bị, tại sao không chỉ tự động ghép nối (với số pin ghép nối được xác định trước), tạo kết nối, gửi dữ liệu cần thiết, ngắt kết nối và sau đó hủy ghép nối. Không ai trong số này yêu cầu bất kỳ sự can thiệp nào của người dùng và miễn là bạn không thực hiện hàng nghìn lần (điều này có thể gây ra sự cố với mặc EEPROM), điều đó không gây ra cho bạn bất kỳ vấn đề nào. Nó cũng sẽ giúp bạn tiết kiệm rất nhiều rắc rối khi cố gắng để các API khác nhau hoạt động tốt với những gì được coi là phương pháp sử dụng Bluetooth không chuẩn.