兩個設備是一個涉及三個漸進狀態的多步驟過程:
1。查詢– 如果兩個藍牙設備彼此之間完全不了解,則其中一個必須運行查詢以嘗試發現另一個。一臺設備發出查詢請求,任何偵聽此請求的設備都將以其地址以及可能的名稱和其他信息作為響應。
2。分頁(連接) –分頁是在兩個藍牙設備之間建立連接的過程。在啟動此連接之前,每個設備都需要知道另一個設備的地址(在查詢過程中找到)。
3。連接– 設備完成尋呼過程后,將進入連接狀態。連接后,設備可以處于主動參與狀態,也可以進入低功耗睡眠模式。
活動模式 –這是常規連接模式,其中設備正在主動發送或接收數據。
嗅探模式 e –這是一種省電模式,設備不活躍。它會進入睡眠狀態,并且僅按設定的時間間隔(例如每100毫秒)監聽一次傳輸。
保持模式 –保持模式是一種臨時的省電模式,在該模式下,設備將休眠一段定義的時間,然后在間隔時間過后返回活動模式。主機可以命令從機保持。
停車模式 –停車是最深的睡眠模式。主機可以命令從機“停放”,直到從機通知主機喚醒后,該從機將變為非活動狀態。
綁定和配對:
當兩個藍牙設備彼此共享特殊的親和力時,可以將它們綁定在一起。綁定的設備只要距離足夠近,就會自動建立連接。例如,當我開車時,口袋里的電話會立即連接到汽車的藍牙系統,因為它們共享一個紐帶。不需要UI交互!
通過一次性的配對過程創建綁定。設備配對時,它們共享其地址,名稱和配置文件,通常將它們存儲在內存中。對方還共享一個公用密鑰,這使他們將來在任何時候在一起時都能綁定。
配對通常需要一個身份驗證過程,用戶必須驗證設備之間的連接。身份驗證過程的流程各不相同,通常取決于一個設備或另一個設備的接口功能。有時配對是一個簡單的“ Just Works”操作,只需單擊一下按鈕即可配對(這對于沒有UI的設備(如耳機)很常見)。其他時間配對涉及匹配的6位數字代碼。較舊的舊版(v2.0和更早版本)的配對過程涉及在每個設備上輸入公共PIN碼。 PIN碼的長度和復雜度范圍從四個數字(例如“ 0000”或“ 1234”)到一個16個字符的字母數字字符串。
主控,從屬和Piconets:
藍牙網絡(通常稱為微微網)使用主/從模型來控制設備何時何地可以發送數據。在此模型中,單個主設備最多可以連接七個不同的從設備。微微網中的任何從屬設備只能連接到一個主機。
主機協調整個微網中的通信。它可以將數據發送到其任何從屬,也可以從它們請求數據。從站僅允許與其主機進行發送和接收。他們無法與微微網中的其他奴隸交談。
范圍:
范圍是特定于應用程序的,盡管最低范圍是核心規范沒有限制,制造商可以調整其實現以支持其啟用的用例。
范圍可能會根據實現中使用的無線電類別而有所不同:
3類無線電設備–射程可達1米或3英尺
2類無線電設備–最常見于移動設備中–射程可達10米或33英尺
主要在工業用例中使用的1類無線電設備的射程為100米或300英尺
步驟2:藍牙通信續。..
設備使用情況
(幾乎)單獨的無線連接–需要外部應用程序來驅動服務
設備通信
客戶端/服務器(主/從)conf iguration
設備本質上是相等的
應用程序確定身份
[[客戶端應用程序] 《=》 [HC05]] 《==== =============》 [[BT設備] 《=》 [服務器應用程序]]
軟件/接口堆棧
[藍牙主機] -------------------?[藍牙主機]
^ –主機控制器接口驅動程序
|| –物理總線驅動程序
v
[物理總線] ----------------------?[物理總線]
^ –物理總線固件
||
v
[藍牙硬件] ---------- ---?[藍牙硬件]
–主機控制器接口固件
–基帶控制器
連接到設備
?主機控制器接口–允許與藍牙硬件進行控制交互
?傳輸層–主機與藍牙硬件之間的物理連接
1。主機控制器接口
?用于訪問藍牙硬件功能的統一接口
?包含用于硬件的命令集
?包含對可能事件的處理
?包含對錯誤代碼的訪問
2。傳輸選項
?標準描述了三種基本的傳輸格式– USB傳輸
?通用異步接收器/發送器
?串行接口–可以設置為RS232設置
步驟3:藍牙網絡
藍牙網絡:
?由最多7個活動藍牙組成的Piconet 設備
–主/從配置
–可以將其他從設備置于“停放”狀態設備不活動但保持同步
–由主機控制的連接,同步,停放/活動
–以微微網連接的所有設備共享時序和頻率
?由兩個或多個Piconets組成的分散網
–每個微微網只能有一個主設備,但一個微微網中的主設備可以作為奴隸來參與不同的微微網中。
–從站被時分多路復用成一個以上的微微網
–未同步時間或頻率的Piconets
建立連接
?藍牙單元發送查詢消息以查找其他藍牙單元。
主/從Piconet
?一個單元成為主機,其他單元成為從機
?主/從關系建立時序
?一個從機可以成為另一個Piconet中的主機。這會將兩個Piconets連接到一個散布網中。
藍牙Pico/散布網
?一個微微網中的主機可以是另一個微網中的從機
?尋址將微微網中的活動設備數限制為7
?無限數量的停放設備與微微網保持同步,但未處于活動狀態。
頻譜
藍牙技術使用標稱速率為1600跳/秒的擴頻跳變全雙工信號,在2.4至2.485 GHZ的無執照工業,科學和醫學(ISM)頻段中運行。
步驟4:藍牙層和協議棧
藍牙標準具有許多協議,這些協議被組織到不同的層中。
藍牙的層結構不遵循OS1模型,TCP/IP模型或任何其他已知模型
不同的層和藍牙協議體系結構:(圖1)
藍牙框架格式:
藍牙框架格式的各個字段為:
1。訪問代碼:這是包含同步位的72位字段。它標識母版。
2。標頭::這是54位字段。它包含重復3次的18位模式。
標頭字段包含以下子字段:
(i)地址:此3位字段最多可以定義七個從站(1至7)。如果地址為零,則用于從主節點到所有輔助節點的廣播通信。
(ii)類型:此4位字段標識來自上層的數據類型。
(iii) F :此流位用于流控制。設置為1時,表示設備無法接收更多幀。 (iv) A :該位用于確認。
(v) S :該位包含用于檢測重傳的幀的序列號。當使用停止和等待協議時,一位就足夠了。
(vi)校驗和:這8位字段包含用于檢測標頭中錯誤的校驗和。
3。數據:。此字段的長度可以為0到2744位。它包含來自上層的數據或控制信息。
步驟5:藍牙基帶控制器
基帶控制器:
?基帶:基帶協議和低級鏈接例程
?鏈接管理器:用于設置和鏈接控制的鏈接層消息
?跳頻時分雙工頻道
基于625毫秒時隙(1600跳/秒)的頻道220 PLL穩定丟失的時隙的毫秒數
?藍牙同時使用電路和分組交換通道,支持:
–最多3個同時64 kbps同步語音通道
–同步語音和異步數據通道
–異步數據通道:
-/-721/57.6 kbps非對稱
-/-對稱432.6 kbps
訪問代碼:
?信道訪問代碼(CAC):標識微微網,這代碼與所有交易一起使用在微微網上交換的信息
?設備訪問代碼(DAC):用于發信號,例如尋呼和對尋呼的響應
?查詢訪問代碼(IAC):
–所有藍牙設備通用的通用查詢訪問代碼(GIAC)
–專用查詢一類藍牙設備共有的訪問代碼(DIAC)
–查詢過程“查找”范圍內的BT設備
步驟6:Atmega32 MCU的編碼
我們可以向android智能手機或PC發送數據或從其接收數據:---
Ex;
/*This function is used to initialize the USART at a given UBRR value */
void BlueInit(uint16_t ubrr_value)
{
//Set Baud rate UBRRL = ubrr_value;
UBRRH = (ubrr_value》》8);
/* We Set Frame Format as
》》 Asynchronous mode
》》 No Parity
》》 1 StopBit
》》 char size 8 */
UCSRC=(1《
//Enable The RX receiver and TX transmitter
UCSRB=(1《
}
2. /* function used to read data from USART line. It waits till any data is available */
char BlueRdChar()
{
while(!(UCSRA & (1《
UCSRA |= (1 《《 RXC);
//Return received data
return UDR;
}
3. /* function writes the character in ‘data’ into USART and then transmits it to PC via TX line */
void BlueWrChar(char data)
{
while(!(UCSRA & (1《
UDR=data;
}
/*###############main Function########################################*/
#include “lcd_io.h”
#include “util/delay.h”
/* Extern declarations, prototypes etc. 。.. */
void BlueInit();
char BlueRdChar();
void BlueWrChar(char);
void Waiting(int);
#define F_CPU 16000000UL
#define USART_BAUDRATE 11500UL //9600UL
#define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
int main()
{
char data;
int i;
/*First Initialize the USART with baud rate = 9600bps
for Baud rate = 9600bps
UBRR value = 103
*/
BlueInit(103); //UBRR = 103
//Initialize LCD module
lcd_init();
lcd_clrscr();
lcd_gotoxy(0,0);
lcd_puts(“BLUETOOTH MODULE:”);
Waiting(5);
lcd_clrscr();
//Loop forever
while(1)
{
lcd_clrscr();
lcd_puts(“Receiving Data.。”);
for (i=0;i《=15;i++)
{
data=BlueRdChar();
BlueWrChar(data);
lcd_gotoxy(i,1);
lcd_puti(data,0);
}
Waiting(2);
}
return 0;
}
第7步:Android藍牙傳輸代碼
藍牙是一種發送或發送電子郵件的方式在兩個不同的設備之間接收數據。 Android平臺包括對藍牙框架的支持,該藍牙框架允許設備與其他藍牙設備無線交換數據。
Android提供了藍牙API來執行以下不同操作:-
掃描用于其他藍牙設備
獲取已配對設備的列表
通過服務發現連接到其他設備
Android提供了BluetoothAdapter類來與藍牙通信。通過調用靜態方法getDefaultAdapter()
private BluetoothAdapter BA;
BA = BluetoothAdapter.getDefaultAdapter();
創建此調用的對象。為了啟用設備的藍牙,請使用以下藍牙常量ACTION_REQUEST_ENABLE調用該意圖。
Intent turnOn = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnOn, 0);
提供了支持其他任務的API的其他常量:-
ACTION_REQUEST_DISCOVERABLE
This constant is used for turn on discovering of bluetooth.
ACTION_STATE_CHANGED
This constant will notify that Bluetooth state has been changed.
ACTION_FOUND
This constant is used for receiving information about each device that is discovered.
啟用藍牙后,您可以通過調用getBondedDevices()獲得配對設備的列表。 ) 方法。它會返回一組藍牙設備。..
private SetpairedDevices;
pairedDevices = BA.getBondedDevices();
藍牙:
Android平臺支持藍牙連接,該藍牙連接允許與其他藍牙設備。該應用程序框架通過連接到其他藍牙設備的Android藍牙API提供對藍牙功能的訪問。
藍牙API 類 Android藍牙程序包:-
BluetoothAdapter:-- Represents the local Bluetooth adapter (Bluetooth radio)。
BluetoothDevice:-- Represents a remote Bluetooth device, query information such as its name, address, class, and bonding state.
BluetoothSocket:-- Represents the interface for a Bluetooth socket (similar to a TCP Socket)。
BluetoothServerSocket:-- Represents an open server socket that listens for incoming requests (similar to a TCP ServerSocket)。
BluetoothClass:--Describes the general characteristics and capabilities of a Bluetooth device.
責任編輯:wv
-
機器人
+關注
關注
211文章
28557瀏覽量
207692 -
Android
+關注
關注
12文章
3939瀏覽量
127642 -
藍牙
+關注
關注
114文章
5844瀏覽量
170787
發布評論請先 登錄
相關推薦
評論