概述
羽毛是Adafruit的新開(kāi)發(fā)板,就像它的名字一樣,它輕巧,輕巧,可讓您飛翔!我們將Feather設(shè)計(jì)為便攜式微控制器內(nèi)核的新標(biāo)準(zhǔn)。
這是 Adafruit Feather 32u4 Bluefruit -我們的“全能”標(biāo)準(zhǔn)一個(gè)‘Arduino兼容+內(nèi)置USB和電池充電功能的低功耗藍(lán)牙。帶有BTLE模塊的Adafruit Feather 32u4,隨時(shí)可以搖滾! Feather系列中還有其他主板,請(qǐng)?jiān)诖颂幉榭础?/p>
藍(lán)牙低功耗是最熱門(mén)的新型低功耗,2.4GHz頻譜無(wú)線協(xié)議。特別是,它是唯一可以與iOS一起使用而無(wú)需特殊認(rèn)證的無(wú)線協(xié)議,并且所有現(xiàn)代智能手機(jī)均支持該協(xié)議。這使其非常適合在將使用iOS或Android手機(jī)或平板電腦的便攜式項(xiàng)目中使用。在Mac OS X和Windows 8+中也支持該功能
在Feather 32u4的心臟處,時(shí)鐘頻率為8 MHz,邏輯電壓為3.3V的ATmega32u4芯片設(shè)計(jì)方面,我們?cè)贔lora方面擁有豐富的經(jīng)驗(yàn)。該芯片具有32K閃存和2K RAM,并帶有內(nèi)置USB,因此它不僅具有內(nèi)置的USB到串行編程和調(diào)試功能,而無(wú)需類似FTDI的芯片,它也可以像鼠標(biāo)一樣工作,鍵盤(pán),USB MIDI設(shè)備等。
為便于在便攜式項(xiàng)目中使用,我們?yōu)?.7V鋰聚合物電池中的任何一個(gè)添加了連接器,并內(nèi)置了電池充電功能。您不需要電池,它可以直接從micro USB連接器正常運(yùn)行。但是,如果您確實(shí)有電池,可以隨身攜帶,然后插入U(xiǎn)SB進(jìn)行充電。當(dāng)Feather可用時(shí),它將自動(dòng)切換到USB電源。我們還將電池通過(guò)分壓器連接到模擬引腳,因此您可以測(cè)量和監(jiān)視電池電壓以檢測(cè)何時(shí)需要充電。
這里有一些方便的規(guī)格!像所有Feather 32u4一樣,您將獲得:
尺寸為2.0“ x 0.9” x 0.28“(51mm x 23mm x 8mm),而沒(méi)有焊接頭針。
作為(大? )羽毛-5.7克
ATmega32u4 @ 8MHz,具有3.3V邏輯/電源
3.3V穩(wěn)壓器,具有500mA峰值電流輸出
USB本地支持,隨附USB引導(dǎo)加載程序和串行端口調(diào)試
您還將獲得大量引腳-20個(gè)GPIO引腳
硬件串行,硬件I2C,硬件SPI支持
7個(gè)PWM引腳
10個(gè)模擬輸入
內(nèi)置100mA鋰聚合物充電器,帶充電狀態(tài)指示燈LED
插針#13紅色LED,通用閃爍
電源/啟用引腳
4個(gè)安裝孔
重置按鈕
羽毛32u4 Bluefruit LE 使用了多余的空間剩下來(lái)添加我們出色的Bluefruit BTLE模塊和兩個(gè)狀態(tài)指示燈LED
Bluefruit LE的威力
Bluefru它的LE模塊是Nordic的nRF51822芯片組,用多功能代碼編程,可以完成很多工作!對(duì)于大多數(shù)人來(lái)說(shuō),他們將很高興使用標(biāo)準(zhǔn)的Nordic UART RX/TX連接配置文件。在此配置文件中,Bluefruit充當(dāng)數(shù)據(jù)管道,可以“透明”地從您的iOS或Android設(shè)備來(lái)回傳輸。您可以使用我們的iOS ApporAndroid應(yīng)用程序,也可以編寫(xiě)自己的應(yīng)用程序以與UART服務(wù)進(jìn)行通信。
開(kāi)發(fā)板的功能遠(yuǎn)遠(yuǎn)不只是通過(guò)空中發(fā)送字符串!得益于易于學(xué)習(xí)的AT命令集,您可以完全控制設(shè)備的行為,包括定義和操作自己的GATT服務(wù)和特性的能力,或更改設(shè)備宣傳自己的方式以供其他低功耗藍(lán)牙設(shè)備查看的能力。您還可以使用AT命令來(lái)查詢芯片溫度,檢查電池電壓等等,還可以檢查連接RSSI或MAC地址等等。真的,在這里列出太久了!
使用Bluefruit App來(lái)啟動(dòng)您的項(xiàng)目
使用我們的BluefruitiOS ApporAndroid App,您可以快速獲取自己的項(xiàng)目通過(guò)使用iOS或Android手機(jī)/平板電腦作為控制器原型化的項(xiàng)目。我們有一個(gè)彩色選擇器,四元數(shù)/加速度計(jì)/陀螺儀/磁力計(jì)或位置(GPS),以及一個(gè)8鍵控制游戲手柄。可以通過(guò)BLE讀取此數(shù)據(jù),然后將其傳輸?shù)紸Tmega32u4芯片中進(jìn)行處理和控制
您還可以做更多的事情!
藍(lán)果還可以像HID鍵盤(pán)一樣(對(duì)于支持BLE HID的設(shè)備)
可以成為BLE心率監(jiān)視器(BLE的標(biāo)準(zhǔn)配置文件)-您只需要添加脈沖檢測(cè)電路
將其轉(zhuǎn)換為UriBeacon,這是藍(lán)牙LE信標(biāo)的Google標(biāo)準(zhǔn)。只需為其供電,“朋友將在安裝了UriBeacon應(yīng)用程序的地方過(guò)濾指向附近任何設(shè)備的URL。
內(nèi)置了無(wú)線引導(dǎo)加載功能,因此我們可以為您提供最新的最新固件的最新信息。使用任何Android或iOS設(shè)備獲取更新并進(jìn)行安裝。這將更新BLE模塊上的本機(jī)代碼,以添加新的無(wú)線功能,而不對(duì)ATmega芯片進(jìn)行編程。
已完全組裝并經(jīng)過(guò)測(cè)試,并帶有USB引導(dǎo)加載程序,可讓您在Arduino IDE中快速使用它。我們還會(huì)折騰一些接頭,以便您可以將其焊接并插入無(wú)焊面包板上。鋰電池,MicroSD卡和USB電纜不包括在內(nèi)(但如果您要在商店中提供很多選擇, d like?。?/p>
插腳
Feather 32u4 Bluefruit LE充滿了微控制器的優(yōu)勢(shì)。還有很多引腳和端口。我們現(xiàn)在將帶您參觀它們!
DFU引腳在底部意外地標(biāo)記為GND,對(duì)此感到抱歉!它應(yīng)標(biāo)記為DFU,請(qǐng)勿將其用作GND
電源引腳
GND -這是所有電源和邏輯的共同點(diǎn)
BAT -這是可選Lipoly電池進(jìn)出JST插孔的正電壓
USB -如果已連接,則是進(jìn)出Micro USB插孔的正電壓
EN -這是3.3V穩(wěn)壓器的使能引腳。它已上拉,因此請(qǐng)接地以禁用3.3V穩(wěn)壓器
3V -這是3.3V穩(wěn)壓器的輸出,可提供500mA峰值
邏輯引腳
這是微控制器的通用I/O引腳組。所有邏輯均為3.3V
#0/RX -GPIO#0,還接收 Serial1 和中斷#2的(輸入)引腳
#1/TX -GPIO#1,還傳輸 Serial1 和中斷#3
#2/SDA -GPIO#2,也是I2C(電線)數(shù)據(jù)引腳。默認(rèn)情況下,此引腳上沒(méi)有上拉電阻,因此當(dāng)與I2C一起使用時(shí),您可能需要2.2K-10K上拉電阻。也是中斷#1
#3/SCL -GPIO#3,也是I2C(線)時(shí)鐘引腳。默認(rèn)情況下,此引腳上沒(méi)有上拉電阻,因此當(dāng)與I2C一起使用時(shí),您可能需要2.2K-10K上拉電阻??梢詧?zhí)行PWM輸出并充當(dāng)中斷#0。
#5 -GPIO#5,還可以執(zhí)行PWM輸出
#6 -GPIO#6,也可以做PWM輸出和模擬輸入 A7
#9 -GPIO#9,也可以模擬輸入 A9 ,并且可以執(zhí)行PWM輸出。該模擬輸入已連接至鋰聚合物電池的分壓器,因此請(qǐng)注意,由于電阻分壓器,此引腳自然會(huì)“固定”在2VDC左右
#10 -GPIO# 10,也是模擬輸入 A10 ,可以進(jìn)行PWM輸出。
#11 -GPIO#11,可以進(jìn)行PWM輸出。
#12 -GPIO#12,也可以是模擬輸入 A11
#13 -GPIO#13,可以執(zhí)行PWM輸出并連接到USB插孔旁邊的紅色LED
A0至A5 -這些都是模擬輸入以及數(shù)字I/O引腳。
SCK/MOSI/MISO -這些是硬件SPI引腳,也被Bluefruit LE模塊使用。您可以將它們用作如果您不激活Bluefruit并保持BLE CS引腳為高電平,則為日常GPIO引腳。但是,我們確實(shí)建議讓它們免費(fèi)使用,因?yàn)閼?yīng)保留給Bluefruit使用。如果使用它們,請(qǐng)確保將其與可共享SPI總線的設(shè)備配合使用!如果需要,還可以使用AVR編程器對(duì)芯片進(jìn)行重新編程。
Bluefruit LE模塊+指示燈LED
由于Feather的尺寸較小,由于并非所有引腳都可以引出,因此我們使用它們來(lái)控制BLE模塊
#8 -用作Bluefruit CS (片選)引腳
#7 -用作
#4 -作為Bluefruit IRQ (中斷請(qǐng)求)引腳。 》
由于這些未帶出,因此不存在意外使用它們的危險(xiǎn)!
其他圖釘!
頂側(cè)
RST -這是Reset引腳,與grou相連并手動(dòng)重置AVR,并手動(dòng)啟動(dòng)引導(dǎo)加載程序
ARef -模擬參考引腳。通常,參考電壓與芯片邏輯電壓(3.3V)相同,但是如果您需要替代的模擬參考,請(qǐng)將其連接到此引腳并在固件中選擇外部AREF。不能高于3.3V!
DFU -這是用于對(duì)Bluefruit模塊進(jìn)行無(wú)線更新的force-DFU(設(shè)備固件升級(jí))引腳。您可能不需要使用它,但是如果需要升級(jí),可以使用它!請(qǐng)查看 DFU Bluefruit升級(jí)頁(yè)面以了解如何使用它。否則,請(qǐng)保持?jǐn)嚅_(kāi)連接。
底側(cè)
后面我們還有 SWDIO/SWCLK/RESET 引腳,這些引腳用于對(duì)Bluefruit LE模塊本身進(jìn)行編程。
SWD調(diào)試輸入
通常,您不應(yīng)該除非您出于某種原因要擦掉Bluefruit LE模塊固件,否則請(qǐng)連接到 SWDIO 和 SWCLK 引腳,盡管這樣做會(huì)刷新自己編寫(xiě)的完全自定義的固件映像完全自負(fù)風(fēng)險(xiǎn),因?yàn)樗鼘⒉脸鼴luefruit固件!刷新固件或使用SWD接口將需要Segger J-Link EDU Mini之類的東西,才能通過(guò)nRF51822內(nèi)部的調(diào)試控制器進(jìn)行通信。/p》 出廠重置
重置按鈕(不要與0.1“圓形 RST pin!)是出廠重置引腳,也很少使用,但是如果確實(shí)弄亂了它,則可以使用它將模塊設(shè)置回出廠默認(rèn)設(shè)置。引導(dǎo)設(shè)備啟動(dòng)時(shí),將“ 重置”引腳連接到GND,以通過(guò)引導(dǎo)加載程序強(qiáng)制通過(guò)硬件強(qiáng)制恢復(fù)出廠設(shè)置。
裝配體
我們出廠的Feathers經(jīng)過(guò)了全面測(cè)試,但未連接標(biāo)頭-這使您在選擇如何使用和配置Feather時(shí)更具靈活性
標(biāo)題選項(xiàng)!
焊接時(shí),有一些選擇要考慮!
第一個(gè)選擇是焊接普通的公頭,這使您可以插入羽毛變成無(wú)焊面包板
另一種選擇是使用插座母頭。這不會(huì)讓您將Feather插入面包板,但可以非常輕松地連接羽翼
我們也有“ slim”母頭的版本短一些,并且形狀更緊湊
最后,有“ Stacking Header”選項(xiàng)。這是兩全其美的。您可以插入無(wú)焊面包板 并在頂部插入一個(gè)羽翼。但是它有點(diǎn)笨重
以普通標(biāo)題進(jìn)行焊接
準(zhǔn)備標(biāo)題欄:
如有必要,將標(biāo)題欄剪切成一定長(zhǎng)度。如果將其插入面包板,則焊接會(huì)更容易-長(zhǎng)按針腳
添加分線板:
將分線板放置在插針上,以使短的插針穿過(guò)分線墊
然后焊接!
請(qǐng)務(wù)必焊接所有引腳以實(shí)現(xiàn)可靠的電接觸。
(有關(guān)焊接的技巧,請(qǐng)務(wù)必查看我們的 優(yōu)良焊接指南 )。
將另一條帶焊接為
您完成了!目視檢查焊點(diǎn),然后繼續(xù)進(jìn)行下一步
在女性頭上焊接
原位錄音
對(duì)于插座,您需要將其綁在適當(dāng)?shù)奈恢?,因此?dāng)您翻轉(zhuǎn)電路板時(shí),它們不會(huì)掉落
Flip&Tack Solder Fack&Tack Solder
After翻轉(zhuǎn),在每個(gè)條上焊接一個(gè)或兩個(gè)點(diǎn),以將接頭“固定”到位
并焊接!
請(qǐng)務(wù)必焊接所有引腳以確??煽康碾娊佑|。
(有關(guān)焊接的技巧,請(qǐng)務(wù)必查看我們的 優(yōu)秀焊接指南 )。
您完成了!目視檢查焊點(diǎn),然后繼續(xù)進(jìn)行下一步
電池+ USB電源
我們想制作羽毛連接到計(jì)算機(jī)以及通過(guò)電池輕松供電。羽毛有兩種方式供電。您可以使用MicroUSB電纜(只需插入插孔)進(jìn)行連接,F(xiàn)eather會(huì)將5V USB的電壓降至3.3V。您也可以將4.2/3.7V鋰聚合物(Lipo/Lipoly)或鋰離子(LiIon)電池連接到JST插孔。這會(huì)使羽毛在可充電電池上運(yùn)行。 為USB電源供電時(shí),它將自動(dòng)切換至USB供電,并以100mA的電流開(kāi)始為電池(如果已連接)充電。 這種情況是“熱插拔”式的,因此您始終可以將Lipoly保持為“備份”電源,只有在USB電源斷開(kāi)時(shí)才能使用。
JST連接器的極性與Adafruit LiPoly電池匹配。使用極性錯(cuò)誤的電池可能會(huì)損壞您的羽毛
上面顯示的是Micro USB插孔(左),Lipoly JST插孔(左上)以及3.3V穩(wěn)壓器和轉(zhuǎn)換二極管(位于JST的右側(cè))插孔)和Lipoly充電電路(位于“重置”按鈕的右側(cè))。還有一個(gè) CHG LED,在電池充電時(shí)該指示燈會(huì)點(diǎn)亮。如果未連接電池,則該LED也會(huì)閃爍。
充電LED為由Lipoly充電器電路自動(dòng)驅(qū)動(dòng)。它將嘗試檢測(cè)電池,并期望將其安裝。如果沒(méi)有電池,則在使用電源時(shí)可能會(huì)偶爾閃爍一次,因?yàn)樗趪L試為(不存在的)電池充電。這不是有害的,而且完全正常!
電源
您在這里有很多電源選擇!我們將引出 BAT 引腳(該引腳與lipoly JST連接器相連)以及 USB (如果已連接,則為USB + 5V)。我們還有 3V 引腳,該引腳具有3.3V穩(wěn)壓器的輸出。我們使用500mA峰值SPX3819。雖然可以從中獲得500mA的電流,但是由于5V會(huì)使穩(wěn)壓器過(guò)熱,因此您不能連續(xù)從5V中獲得??梢越oESP8266 WiFi芯片或XBee無(wú)線電供電是很好的,因?yàn)楫?dāng)前消耗是“尖峰”和零星的。
測(cè)量電池
如果用完電池,您可能想知道電壓是多少!這樣,您就可以知道電池何時(shí)需要充電。 Lipoly電池在4.2V時(shí)“達(dá)到極限”,并在3.7V左右保持不變,從而延長(zhǎng)了電池的使用壽命,然后緩慢下降至3.2V左右,然后保護(hù)電路將其切斷。通過(guò)測(cè)量電壓,您可以快速確定何時(shí)到達(dá)3.7V以下
為方便起見(jiàn),我們?cè)?BAT 引腳上插入了一個(gè)雙100K電阻分壓器并將其連接到 D9 (又稱模擬#9 A9 )。您可以讀取此引腳的電壓,然后將其加倍以獲得電池電壓。
下載:文件
復(fù)制代碼
#define VBATPIN A9
float measuredvbat = analogRead(VBATPIN);
measuredvbat *= 2; // we divided by 2, so multiply back
measuredvbat *= 3.3; // Multiply by 3.3V, our reference voltage
measuredvbat /= 1024; // convert to voltage
Serial.print(“VBat: ” ); Serial.println(measuredvbat); #define VBATPIN A9
float measuredvbat = analogRead(VBATPIN);
measuredvbat *= 2; // we divided by 2, so multiply back
measuredvbat *= 3.3; // Multiply by 3.3V, our reference voltage
measuredvbat /= 1024; // convert to voltage
Serial.print(“VBat: ” ); Serial.println(measuredvbat);
當(dāng)未插入電池時(shí),此電壓將在4.2V時(shí)“浮動(dòng)”,由于lipoly充電器的輸出,因此它不是檢測(cè)電池是否已插入的好方法(沒(méi)有簡(jiǎn)單的方法可檢測(cè)電池是否已插入)
啟用引腳
如果您想關(guān)閉3.3V穩(wěn)壓器,則可以使用 EN (可用)圖釘。只需將此引腳連接到 Ground ,它將禁用3V穩(wěn)壓器。 BAT 和 USB 引腳仍將供電
備用電源選項(xiàng)
為羽毛供電的兩種主要方法是將3.7/4.2V LiPo電池插入JST端口或 USB電源線。
如果您需要其他方式為Feather供電,則建議這樣做:
對(duì)于永久性安裝,請(qǐng)使用5V 1A USB墻適配器可讓您插入U(xiǎn)SB電纜以提供可靠的電源
對(duì)于不希望使用LiPoly的移動(dòng)設(shè)備,請(qǐng)使用USB電池組!
電壓電源,請(qǐng)使用5V降壓轉(zhuǎn)換器,并將其連接到USB電纜的5V和GND輸入端。
這是您不能執(zhí)行的操作:
請(qǐng)勿使用堿性或鎳氫電池并連接到電池端口-這會(huì)損壞LiPoly充電器,并且無(wú)法禁用充電器
請(qǐng)勿在7.4V的RC電池上使用電池端口 -這會(huì)破壞電路板
“羽毛” 不是為外部電源設(shè)計(jì)的-這是使電路板緊湊且成本低廉的設(shè)計(jì)決定。不建議使用,但在技術(shù)上可行:
將外部3.3V電源連接到3V和GND引腳。不建議這樣做,這可能會(huì)導(dǎo)致意外行為,并且 EN 引腳將不再存在。而且,這不提供 BAT 或 USB 的電源,某些羽毛/機(jī)翼將這些引腳用于高電流使用。您可能最終會(huì)損壞Feather。
將外部5V電源連接到USB和GND引腳。不建議這樣做,這可能會(huì)導(dǎo)致在插入U(xiǎn)SB端口時(shí)發(fā)生意外行為,因?yàn)槟鷮閁SB端口供電,這可能會(huì)混淆或損壞您的計(jì)算機(jī)。
Arduino IDE設(shè)置
您需要做的第一件事是下載最新版本的Arduino IDE。下載并安裝后,您將需要使用 1.8版或更高版本作為本指南
Arduino IDE下載
strong》最新版本的Arduino IDE ,則需要啟動(dòng)IDE并導(dǎo)航到首選項(xiàng)菜單。您可以通過(guò) Windows 或 Linux 中的 File 菜單或 OS上的 Arduino 菜單訪問(wèn)它X 。
將彈出一個(gè)對(duì)話框,如下所示。
我們將向新的其他董事會(huì)管理器URL 選項(xiàng)中添加一個(gè)URL。 URL列表以逗號(hào)分隔,您只需添加一次每個(gè)URL。新的Adafruit開(kāi)發(fā)板和對(duì)現(xiàn)有開(kāi)發(fā)板的更新將在每次打開(kāi)時(shí)由開(kāi)發(fā)板管理器自動(dòng)提取。這些URL指向Board Manager用來(lái)建立可用和已安裝板列表的索引文件。
要查找可以添加的URL的最新列表,您可以訪問(wèn)第三方板列表Arduino IDE Wiki上的URL。在此示例中,我們只需要向IDE添加一個(gè)URL,但是 您可以通過(guò)用逗號(hào)分隔 來(lái)添加多個(gè)URL。將下面的鏈接復(fù)制并粘貼到Arduino IDE首選項(xiàng)中的 Additional Boards Manager URLs 選項(xiàng)中。
https://adafruit.github.io/arduino-board-index/package_adafruit_index.json
以下是簡(jiǎn)短說(shuō)明添加URL時(shí),板管理器中將提供的每個(gè)Adafruit提供的軟件包:
Adafruit AVR板-包括對(duì)Flora,Gemma,F(xiàn)eather的支持32u4,Trinket和Trinket Pro。
Adafruit SAMD板-包括對(duì)Feather M0和M4,Metro M0和M4,ItsyBitsy M0和M4,Circuit Playground Express,Gemma M0的支持和Trinket M0
Arduino Leonardo和Micro MIDI-USB -使用arcore項(xiàng)目為Flora,F(xiàn)eather 32u4,Micro和Leonardo添加了USB over MIDI支持。
如果要支持多個(gè)開(kāi)發(fā)板,例如ESP8266和Adafruit,請(qǐng)?jiān)谖谋究蛑休斎雰蓚€(gè)URL,并用逗號(hào)分隔( ,)
完成后,單擊確定保存新的首選項(xiàng)設(shè)置。接下來(lái),我們將研究使用Board Manager安裝板。
現(xiàn)在繼續(xù)下一步,實(shí)際安裝板支持包!
使用Arduino IDE
由于Feather 32u4使用了以8 MHz運(yùn)行的ATmega32u4芯片,因此您可以輕松地使其與Arduino IDE一起使用。許多庫(kù)(包括像NeoPixels和display這樣的流行庫(kù))在’32u4和8 MHz時(shí)鐘速度下都可以很好地工作。
現(xiàn)在,您已經(jīng)在Arduino IDE首選項(xiàng)中添加了適當(dāng)?shù)腢RL,您可以打開(kāi)《導(dǎo)航到工具-》委員會(huì)菜單,從而使strong》委員會(huì)管理器。
一旦打開(kāi)“董事會(huì)管理器”,請(qǐng)單擊窗口左上角的類別下拉菜單,然后選擇已貢獻(xiàn)。然后,您將能夠選擇和安裝由添加到首選項(xiàng)中的URL提供的板。在下面的示例中,我們正在安裝對(duì) Adafruit AVR板 的支持,但是對(duì)所有與板管理器一起安裝的板也是如此。
下一步,退出并重新打開(kāi)Arduino IDE 確保所有板卡均已正確安裝?,F(xiàn)在,您應(yīng)該可以選擇并上傳到工具-》委員會(huì)菜單中列出的新委員會(huì)。
安裝驅(qū)動(dòng)程序(僅Windows)
插入Feather時(shí),您可能需要安裝驅(qū)動(dòng)程序
單擊下方以下載我們的驅(qū)動(dòng)程序安裝程序
下載Adafruit驅(qū)動(dòng)程序安裝程序
下載并運(yùn)行安裝程序
運(yùn)行安裝程序!由于我們也捆綁了SiLabs和FTDI驅(qū)動(dòng)程序,因此您需要單擊許可證
選擇要安裝的驅(qū)動(dòng)程序:
點(diǎn)擊安裝進(jìn)行安裝
眨眼
現(xiàn)在,您可以上傳第一個(gè)眨眼素描了!
在羽化32u4并等待操作系統(tǒng)識(shí)別它(只需幾秒鐘)。它將創(chuàng)建一個(gè)串行/COM端口,您現(xiàn)在可以從下拉列表中選擇它,甚至將其“指示”為Feather 32u4!
現(xiàn)在加載眨眼示例
下載:文件
復(fù)制代碼
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
} // the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
然后單擊上載!就是這樣,您可以在適應(yīng) delay()呼叫時(shí)看到LED閃爍速率的變化。
手動(dòng)引導(dǎo)加載
如果您在引導(dǎo)加載程序中遇到“怪異”的地方,或者您上載的代碼崩潰了并且無(wú)法自動(dòng)執(zhí)行-重新啟動(dòng)進(jìn)入引導(dǎo)程序,雙擊RST 按鈕返回到引導(dǎo)程序。紅色LED會(huì)閃爍,因此您知道它處于引導(dǎo)加載程序模式。當(dāng)Arduino IDE提示其嘗試上傳草圖時(shí),請(qǐng)雙擊右鍵,在狀態(tài)欄中看到黃色箭頭亮起并且 Uploading 。.. 文本時(shí)
。
不要單擊之前的重置按鈕,與其他引導(dǎo)加載程序不同,您希望在Arduino嘗試上傳時(shí)啟動(dòng)該引導(dǎo)加載程序
Ubuntu&Linux問(wèn)題修復(fù)
如果您使用的是Linux,并且看到連接到服務(wù)器的延遲時(shí)間為幾秒鐘串行控制臺(tái),或者在連接時(shí)看到“ AT”和其他亂碼,請(qǐng)按照此頁(yè)面上的步驟進(jìn)行操作。
安裝BLE庫(kù)
安裝Adafruit nRF51 BLE庫(kù)
要嘗試我們的演示,您需要下載基于nRF51的模塊(例如Adafruit BLE庫(kù))的Adafruit BLE庫(kù)(又名Adafruit_BluefruitLE_nRF51)
您可以在github上查看代碼,但是通過(guò)Arduino庫(kù)管理器下載它可能更容易。
打開(kāi)Arduino庫(kù)管理器:
搜索 Adafruit BluefruitLE nRF51 庫(kù)并安裝
我們還提供了有關(guān)Arduino庫(kù)安裝的出色教程,網(wǎng)址為:
http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
檢查您會(huì)看到帶有示例的庫(kù)文件夾:
運(yùn)行第一個(gè)示例
讓我們從初學(xué)者項(xiàng)目開(kāi)始,我們可以使用它進(jìn)行基本測(cè)試。要打開(kāi)ATCommand草圖,請(qǐng)單擊Arduino IDE中的文件》示例》 Adafruit_BluefruitLE_nRF51 文件夾,然后選擇 atcommand :
這將在IDE,如下所示:
還沒(méi)有上傳草圖!您必須先更改配置。
轉(zhuǎn)到第二個(gè)標(biāo)簽為 BluefruitConfig.h 的標(biāo)簽,找到這些行
下載:文件
復(fù)制代碼
// SHARED SPI SETTINGS
// ----------------------------------------------------------------------------------------------
// The following macros declare the pins to use for HW and SW SPI communication.
// SCK, MISO and MOSI should be connected to the HW SPI pins on the Uno when
// using HW SPI. This should be used with nRF51822 based Bluefruit LE modules
// that use SPI (Bluefruit LE SPI Friend)。
// ----------------------------------------------------------------------------------------------
#define BLUEFRUIT_SPI_CS 8
#define BLUEFRUIT_SPI_IRQ 7
#define BLUEFRUIT_SPI_RST 6 // Optional but recommended, set to -1 if unused // SHARED SPI SETTINGS
// ----------------------------------------------------------------------------------------------
// The following macros declare the pins to use for HW and SW SPI communication.
// SCK, MISO and MOSI should be connected to the HW SPI pins on the Uno when
// using HW SPI. This should be used with nRF51822 based Bluefruit LE modules
// that use SPI (Bluefruit LE SPI Friend)。
// ----------------------------------------------------------------------------------------------
#define BLUEFRUIT_SPI_CS 8
#define BLUEFRUIT_SPI_IRQ 7
#define BLUEFRUIT_SPI_RST 6 // Optional but recommended, set to -1 if unused
并將最后一行更改為:
下載:文件
復(fù)制代碼
#define BLUEFRUIT_SPI_RST 4 // Optional but recommended, set to -1 if unused #define BLUEFRUIT_SPI_RST 4 // Optional but recommended, set to -1 if unused
(Bluefruit Feather在數(shù)字#4上已重置不是#6)
現(xiàn)在返回主選項(xiàng)卡 atcommand ,并查找以下代碼行
下載:文件
復(fù)制代碼
/* 。..hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST); /* 。..hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
確保第二行沒(méi)有注釋(應(yīng)該是)
現(xiàn)在好了可以上傳到Bluefruit Feather!
如果您使用的是Ubuntu 15.04或其他Linux發(fā)行版,并在嘗試將程序上傳到板上時(shí)遇到錯(cuò)誤,向上滾動(dòng)至上一節(jié)中的Ubuntu和Linux問(wèn)題修復(fù)程序
上傳到羽毛Bluefruit LE
上傳非常容易,首先請(qǐng)確保您已經(jīng)如上所述,在木板下拉菜單中選擇了 Adafruit 羽毛32u4 。此外,在 Ports (端口)菜單中,查找標(biāo)有以下名稱的端口:
現(xiàn)在單擊Arduino IDE上的上載按鈕(或文件菜單-》上載)
如果一切都很好,您將在狀態(tài)欄中看到完成上傳
上載到全新的板上/上載失敗
如果您是第一次上載到新板上,或者上載失敗,請(qǐng)按下 RESET 迷你按鈕當(dāng)您看到黃色箭頭亮起并且狀態(tài)欄中顯示正在上傳。.. 文本時(shí),顯示Feather 32u4 Bluefruit。當(dāng)您看到紅色LED閃爍時(shí),您就知道引導(dǎo)加載程序正在運(yùn)行。
在上傳前不要單擊重置按鈕 ,與其他引導(dǎo)加載程序不同,您希望此引導(dǎo)加載程序在Arduino啟動(dòng)時(shí)運(yùn)行嘗試上傳
運(yùn)行草圖
確定,再次檢查是否選擇了正確的端口
然后打開(kāi)串行控制臺(tái)。您將看到以下內(nèi)容:
此草圖從恢復(fù)出廠設(shè)置開(kāi)始,然后查詢BLE無(wú)線電以獲取詳細(xì)信息。如果您要調(diào)試無(wú)線電,這些詳細(xì)信息將很有用。如果您看到上述信息,說(shuō)明您正在工作! (請(qǐng)注意,日期和版本號(hào)可能會(huì)有所不同)
AT命令測(cè)試
現(xiàn)在您可以嘗試一些 AT命令-查看學(xué)習(xí)指南的其余部分以獲取完整列表。我們將從 AT + HWGETDIETEMP 開(kāi)始,它將返回BLE芯片組的大致環(huán)境溫度
確定,現(xiàn)在您知道如何與Feather 32u4 Bluefruit上傳/測(cè)試/通信了。接下來(lái),我們有一堆教程,您可以按照這些教程來(lái)檢查藍(lán)牙無(wú)線廣播和應(yīng)用程序。
對(duì)于以下所有示例,我們?cè)诟鱾€(gè)模塊之間共享相同的代碼,因此不要忘記確保在上傳之前將每個(gè)草圖的BluefruitConfig.h中的RESET引腳設(shè)置為4,并通過(guò)檢查
下載:文件
復(fù)制代碼
/* 。..hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
/* 。..hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
配置!
在開(kāi)始上傳任何示例草圖之前,您需要ll需要配置Bluefruit界面-有很多選項(xiàng),因此請(qǐng)密切注意!
您擁有哪個(gè)板子?
Bluefruit名稱下有一些產(chǎn)品:
如果您使用的是Bluefruit LE Shield,則您有一個(gè) SPI連接的NRF51822 模塊。您可以將它與 Atmega328 (與Arduino UNO或兼容),ATmega32u4 (與Arduino Leonardo兼容)或 ATSAMD21 (與Arduino Zero相兼容)和可能還有其他。
您的引腳排列為 硬件SPI ,CS = 8 ,IRQ = 7 ,RST = 4
Bluefruit Micro或Feather 32u4 Bluefruit
如果您擁有Bluefruit Micro或Feather 32u4 Bluefruit LE,則您的 ATmega32u4 芯片具有硬件SPI , CS = 8 ,IRQ = 7 ,RST =4
羽毛M0藍(lán)果LE
如果您有羽毛M0藍(lán)果LE,那么您帶有硬件SPI 的 ATSAMD21 芯片,CS = 8 ,IRQ = 7 ,RST = 4
Bluefruit LE SPI朋友
如果您有獨(dú)立模塊,則可以靈活布線,但是我們強(qiáng)烈建議您使用硬件SPI ,CS = 8 ,IRQ = 7 ,RST = 4
您幾乎可以將其與任何具有5或6個(gè)引腳的微控制器一起使用
Bluefruit LE UART Friend或Flora BLE
如果您有獨(dú)立的UART模塊,則可以靈活布線。但是,如果可能,我們建議硬件UART 。如果您不使用硬件UART,則可能需要使用流控制 CTS 引腳。還有一個(gè) MODE 引腳
您可以將其與至少具有3個(gè)引腳的任何微控制器一起使用,但最好與具有硬件串行/UART功能的芯片一起使用!
配置使用的引腳
您將需要檢查Bluefruit Config來(lái)設(shè)置將用于UART或SPI的引腳
每個(gè)示例草圖都有一個(gè)帶有配置的輔助選項(xiàng)卡細(xì)節(jié)。設(shè)置完成后,您將需要編輯草圖并將其保存到自己的文檔文件夾中。
常用設(shè)置:
您可以設(shè)置為通信緩沖區(qū)留出多少RAM,以及是否要具有完整的調(diào)試輸出。調(diào)試輸出在串行控制臺(tái)上是“嘈雜的”,但很方便,因?yàn)槟梢钥吹絤icro和BLE之間的所有通信
下載:文件
復(fù)制代碼
// ----------------------------------------------------------------------------------------------
// These settings are used in both SW UART, HW UART and SPI mode
// ----------------------------------------------------------------------------------------------
#define BUFSIZE 128 // Size of the read buffer for incoming data
#define VERBOSE_MODE true // If set to ‘true’ enables debug output // ----------------------------------------------------------------------------------------------
// These settings are used in both SW UART, HW UART and SPI mode
// ----------------------------------------------------------------------------------------------
#define BUFSIZE 128 // Size of the read buffer for incoming data
#define VERBOSE_MODE true // If set to ‘true’ enables debug output
軟件UART
如果您使用的是軟件UART,則可以設(shè)置將用于RX的引腳, TX和CTS流量控制。某些微控制器只能使用哪些引腳!查看SoftwareSerial庫(kù)文檔以獲取更多詳細(xì)信息
下載:文件
復(fù)制代碼
// SOFTWARE UART SETTINGS
#define BLUEFRUIT_SWUART_RXD_PIN 9 // Required for software serial!
#define BLUEFRUIT_SWUART_TXD_PIN 10 // Required for software serial!
#define BLUEFRUIT_UART_CTS_PIN 11 // Required for software serial!
#define BLUEFRUIT_UART_RTS_PIN -1 // Optional, set to -1 if unused // SOFTWARE UART SETTINGS
#define BLUEFRUIT_SWUART_RXD_PIN 9 // Required for software serial!
#define BLUEFRUIT_SWUART_TXD_PIN 10 // Required for software serial!
#define BLUEFRUIT_UART_CTS_PIN 11 // Required for software serial!
#define BLUEFRUIT_UART_RTS_PIN -1 // Optional, set to -1 if unused
硬件UART
如果您有硬件串行,則有一個(gè)“名稱”,通常是Serial1-您可以在此處設(shè)置:
下載:文件
復(fù)制代碼
// HARDWARE UART SETTINGS
#ifdef Serial1 // this makes it not complain on compilation if there‘s no Serial1
#define BLUEFRUIT_HWSERIAL_NAME Serial1
#endif // HARDWARE UART SETTINGS
#ifdef Serial1 // this makes it not complain on compilation if there’s no Serial1
#define BLUEFRUIT_HWSERIAL_NAME Serial1
#endif
模式引腳
對(duì)于硬件和軟件串行,您可能會(huì)要定義MODE引腳。有一些草圖不使用它,而是取決于設(shè)置/取消模式的命令。如果您有備用的GPIO,最好使用MODE引腳!
下載:文件
復(fù)制代碼
#define BLUEFRUIT_UART_MODE_PIN 12 // Set to -1 if unused #define BLUEFRUIT_UART_MODE_PIN 12 // Set to -1 if unused
SPI引腳
對(duì)于硬件和軟件SPI,您都需要設(shè)置 CS (片選)行, IRQ (中斷請(qǐng)求)行,如果有備用引腳,請(qǐng) RST (重置)
下載:文件
復(fù)制代碼
// SHARED SPI SETTINGS
#define BLUEFRUIT_SPI_CS 8
#define BLUEFRUIT_SPI_IRQ 7
#define BLUEFRUIT_SPI_RST 4 // Optional but recommended, set to -1 if unused // SHARED SPI SETTINGS
#define BLUEFRUIT_SPI_CS 8
#define BLUEFRUIT_SPI_IRQ 7
#define BLUEFRUIT_SPI_RST 4 // Optional but recommended, set to -1 if unused
軟件SPI引腳
如果沒(méi)有可用的硬件SPI端口,則可以使用任何三個(gè)引腳。..速度稍慢但非常靈活
下載:文件
復(fù)制代碼
// SOFTWARE SPI SETTINGS
#define BLUEFRUIT_SPI_SCK 13
#define BLUEFRUIT_SPI_MISO 12
#define BLUEFRUIT_SPI_MOSI 11 // SOFTWARE SPI SETTINGS
#define BLUEFRUIT_SPI_SCK 13
#define BLUEFRUIT_SPI_MISO 12
#define BLUEFRUIT_SPI_MOSI 11
請(qǐng)參考上表確定您有SPI或UART控制的Bluefruits!
選擇串行總線
在BluefruitConfig.h文件中配置了引腳設(shè)置后,現(xiàn)在就可以檢查并修改示例草圖。
Adafruit_BluefruitLE_nRF51該庫(kù)支持四種不同的串行總線選項(xiàng),具體取決于您使用的硬件:硬件和軟件類型均為 SPI ,硬件和軟件類型均為 UART 。
基于UART的主板(Bluefruit LE UART Friend和Flora BLE)
這是針對(duì)Bluefruit LE UART Friend和Flora BLE板的。您可以使用 軟件序列或硬件序列。硬件串行具有較高的質(zhì)量,并且丟失數(shù)據(jù)的風(fēng)險(xiǎn)較小。但是,您可能沒(méi)有可用的硬件串行!軟件序列確實(shí)可以在流控制下正常工作,并且我們只需一個(gè)GPIO引腳就可以使用它。
對(duì)于軟件序列(Arduino Uno,Adafruit Metro),您應(yīng)該取消注釋下面的軟件序列構(gòu)造器,并確保已注釋掉其他三個(gè)選項(xiàng)(硬件串行和SPI)。
下載:file
復(fù)制代碼
// Create the bluefruit object, either software serial.。.uncomment these lines
SoftwareSerial bluefruitSS = SoftwareSerial(BLUEFRUIT_SWUART_TXD_PIN, BLUEFRUIT_SWUART_RXD_PIN);
Adafruit_BluefruitLE_UART ble(bluefruitSS, BLUEFRUIT_UART_MODE_PIN,
BLUEFRUIT_UART_CTS_PIN, BLUEFRUIT_UART_RTS_PIN); // Create the bluefruit object, either software serial.。.uncomment these lines
SoftwareSerial bluefruitSS = SoftwareSerial(BLUEFRUIT_SWUART_TXD_PIN, BLUEFRUIT_SWUART_RXD_PIN);
Adafruit_BluefruitLE_UART ble(bluefruitSS, BLUEFRUIT_UART_MODE_PIN,
BLUEFRUIT_UART_CTS_PIN, BLUEFRUIT_UART_RTS_PIN);
對(duì)于需要硬件串行(Adafruit Flora等)的主板,請(qǐng)取消注釋硬件串行構(gòu)造函數(shù),并確保已注釋掉其他三個(gè)選項(xiàng)
下載:文件
復(fù)制代碼
/* 。..or hardware serial, which does not need the RTS/CTS pins. Uncomment this line */
Adafruit_BluefruitLE_UART ble(BLUEFRUIT_HWSERIAL_NAME, BLUEFRUIT_UART_MODE_PIN); /* 。..or hardware serial, which does not need the RTS/CTS pins. Uncomment this line */
Adafruit_BluefruitLE_UART ble(BLUEFRUIT_HWSERIAL_NAME, BLUEFRUIT_UART_MODE_PIN);
基于SPI的板(Bluefruit LE SPI Friend)
對(duì)于基于SPI的板,您應(yīng)取消注釋以下硬件SPI構(gòu)造函數(shù),并確保已注釋掉其他構(gòu)造函數(shù):
下載:文件
復(fù)制代碼
/* 。..hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST); /* 。..hardware SPI, using SCK/MOSI/MISO hardware SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_CS, BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
如果某些無(wú)法使用硬件SPI的原因,可以通過(guò)以下構(gòu)造函數(shù)切換到軟件模式以對(duì)SPI傳輸進(jìn)行位沖擊:
下載:文件
復(fù)制代碼
/* 。..software SPI, using SCK/MOSI/MISO user-defined SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_SCK, BLUEFRUIT_SPI_MISO,
BLUEFRUIT_SPI_MOSI, BLUEFRUIT_SPI_CS,
BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST); /* 。..software SPI, using SCK/MOSI/MISO user-defined SPI pins and then user selected CS/IRQ/RST */
Adafruit_BluefruitLE_SPI ble(BLUEFRUIT_SPI_SCK, BLUEFRUIT_SPI_MISO,
BLUEFRUIT_SPI_MOSI, BLUEFRUIT_SPI_CS,
BLUEFRUIT_SPI_IRQ, BLUEFRUIT_SPI_RST);
BLEUart
BLEUart 示例草圖可讓您在Arduino和另一個(gè)藍(lán)牙接口上的藍(lán)牙低功耗中央設(shè)備之間發(fā)送和接收文本數(shù)據(jù)結(jié)束(例如您的手機(jī)使用UART模式的Android或iOS上的 Adafruit Bluefruit LE Connect 應(yīng)用程序)。
打開(kāi)草圖
要打開(kāi)ATCommand草圖,請(qǐng)單擊文件》示例》 Adafruit_BluefruitLE_nRF51 Arduino IDE中的文件夾,然后選擇 bleuart_cmdmode :
這將在IDE中打開(kāi)示例的新實(shí)例,如下所示:
配置
之前請(qǐng)檢查配置!頁(yè)面以設(shè)置軟件/硬件UART或軟件/硬件SPI的草圖。默認(rèn)值為硬件SPI
如果使用軟件或硬件串行UART:
本教程不需要使用MODE引腳,請(qǐng)確保您具有該模式如果您未配置并連接MODE引腳,請(qǐng)切換到CMD模式
如果您不使用它,請(qǐng)不要忘記將Bluefruit的CTS引腳接地! (植物群已經(jīng)做到了)
運(yùn)行草圖
將草圖上傳到板上(通過(guò)箭頭形的上傳圖標(biāo)),并且上傳過(guò)程完成后,請(qǐng)通過(guò)“工具”》“串行監(jiān)視器” ,并確保右下角的波特率設(shè)置為 115200 :
看到請(qǐng)求后,請(qǐng)使用App連接到處于 UART 模式的Bluefruit LE模塊,因此您可以獲得tex電話上的t框
您在“串行監(jiān)視器”頂部的框中鍵入的任何文本都會(huì)發(fā)送到已連接的電話,并且從電話發(fā)送的任何數(shù)據(jù)都將顯示在串行監(jiān)視器中:
您可以在下面的Adafruit Bluefruit LE Connect應(yīng)用程序(在本例中為iOS)中看到傳入的字符串:
響應(yīng)文本(“為什么,Arduino!”)如下所示:
HIDKeyboard
HIDKeyboard 示例向您展示如何使用內(nèi)置的HID鍵盤(pán)AT命令將鍵盤(pán)數(shù)據(jù)發(fā)送到任何啟用BLE的Android或iOS手機(jī)或其他支持BLE HID外設(shè)的設(shè)備。
打開(kāi)草圖
要打開(kāi)ATCommand草圖,請(qǐng)單擊Arduino IDE中的文件》示例》 Adafruit_BluefruitLE_nRF51 文件夾,然后選擇 hidkeyboard 》:
這將在IDE中打開(kāi)該示例的新實(shí)例,如下所示:
配置
請(qǐng)先檢查配置!頁(yè)面,以設(shè)置軟件/硬件UART或軟件/硬件SPI的草圖。默認(rèn)值為硬件SPI
如果使用軟件或硬件串行UART:
本教程不需要使用MODE引腳,請(qǐng)確保您具有該模式
別忘了也將如果不使用的話,將Bluefruit上的CTS引腳接地?。ㄖ参飬^(qū)系有此功能)已經(jīng)完成)
正在運(yùn)行草圖
將草圖上傳到板上(通過(guò)箭頭形的上傳圖標(biāo)),并且上傳過(guò)程完成后,請(qǐng)通過(guò)工具》串行監(jiān)視器打開(kāi)串行監(jiān)視器》,并確保右下角的波特率設(shè)置為 115200 :
要發(fā)送鍵盤(pán)數(shù)據(jù),請(qǐng)?jiān)凇按斜O(jiān)視器”頂部的文本框中鍵入任何內(nèi)容,然后單擊發(fā)送按鈕。
綁定HID鍵盤(pán)
在使用HID鍵盤(pán)之前,您需要將其“綁定”到手機(jī)或電腦綁定過(guò)程在兩個(gè)設(shè)備之間建立了永久的連接,這意味著一旦您的手機(jī)或PC再次看到Bluefruit LE模塊,它將自動(dòng)連接。
綁定鍵盤(pán)的確切步驟會(huì)有所不同。
當(dāng)您不再需要綁定或希望綁定時(shí)將Bluefruit LE模塊連接到另一臺(tái)設(shè)備,請(qǐng)確保刪除手機(jī)或PC上的綁定信息,否則您可能無(wú)法在新設(shè)備上連接!
Android
要在啟用了藍(lán)牙低功耗功能的Android設(shè)備上綁定鍵盤(pán),請(qǐng)轉(zhuǎn)到設(shè)置應(yīng)用程序,然后單擊藍(lán)牙圖標(biāo)。
這些屏幕截圖基于Nexus 7 2013上運(yùn)行的Android 5.0。確切的外觀可能會(huì)有所不同,具體取決于您的設(shè)備和操作系統(tǒng)版本。
在“藍(lán)牙”設(shè)置面板中,您應(yīng)該會(huì)看到“ Bluefruit LE”模塊在“可用設(shè)備”列表下以 Bluefruit鍵盤(pán)做廣告:
點(diǎn)擊設(shè)備將啟動(dòng)綁定過(guò)程,該過(guò)程應(yīng)以將Bluefruit Keyboard設(shè)備移動(dòng)到新的“ Paired devices”(已配對(duì)設(shè)備)列表中并在設(shè)備名稱下方寫(xiě)有“ Connected”(已連接)的方式結(jié)束: 》
要?jiǎng)h除綁定信息,請(qǐng)單擊設(shè)備名稱右側(cè)的齒輪圖標(biāo),然后單擊請(qǐng)點(diǎn)擊忘記按鈕:
iOS
要在iOS設(shè)備上綁定鍵盤(pán),請(qǐng)轉(zhuǎn)到t他在手機(jī)上設(shè)置應(yīng)用程序,然后單擊藍(lán)牙菜單項(xiàng)。
鍵盤(pán)應(yīng)出現(xiàn)在其他設(shè)備下列表:
綁定過(guò)程完成后,設(shè)備將被移至我的設(shè)備類別,您可以開(kāi)始將Bluefruit LE模塊用作鍵盤(pán):
要取消綁定設(shè)備,請(qǐng)點(diǎn)擊“信息”圖標(biāo),然后在菜單中選擇忘記此設(shè)備選項(xiàng):
OS X
要在OS X設(shè)備上綁定鍵盤(pán),請(qǐng)轉(zhuǎn)到藍(lán)牙首選項(xiàng)窗口,然后單擊旁邊的配對(duì)按鈕。 Bluefruit Keyboard 設(shè)備生成此示例草圖編輯:
要在配對(duì)后解除綁定,請(qǐng)單擊 Bluefruit鍵盤(pán)旁邊的小“ x”圖標(biāo):
。..。..,然后單擊刪除確認(rèn)對(duì)話框彈出時(shí)》按鈕:
控制器
控制器草圖可讓您在手持控制器或外部數(shù)據(jù)源中啟用BLE的iOS或Android設(shè)備,您可以利用手機(jī)或平板電腦上豐富的傳感器。
您可以從手機(jī)中獲取加速度計(jì)或四元數(shù)數(shù)據(jù),然后通過(guò)BLE將其推送到Arduino,或者獲取最新的GPS坐標(biāo)無(wú)需購(gòu)買(或供電?。┤魏瓮獠坑布?/p>
打開(kāi)草圖
要打開(kāi)Controllersketch,請(qǐng)單擊Arduino IDE中的文件》示例》 Adafruit_BluefruitLE_nRF51 文件夾,然后選擇 controller :
這將在IDE中打開(kāi)該示例的新實(shí)例,如下所示:
配置
檢查配置!設(shè)置頁(yè)面,以設(shè)置軟件/硬件UART或軟件/硬件SPI的草圖。默認(rèn)值為硬件SPI
如果使用軟件或硬件串行UART:
如果您連接了本教程,本教程也將更易于使用。 MODE引腳,您可以使用任何引腳,但我們的教程默認(rèn)情況下具有12引腳。您可以將其更改為任何引腳。如果您未設(shè)置MODE引腳,那么請(qǐng)確保將模式開(kāi)關(guān)置于CMD 模式
如果您使用的是Flora或不想連接模式引腳,在配置選項(xiàng)卡中將BLUEFRUIT_UART_MODE_PIN設(shè)置為-1,以便草圖將使用+++方法在命令模式和數(shù)據(jù)模式之間切換!
不要忘記也連接CTS (植物群已完成此操作)
運(yùn)行草圖
將草圖上傳到板上(通過(guò)箭頭形的上傳圖標(biāo)),然后上傳過(guò)程完成,通過(guò)工具》串行監(jiān)視器打開(kāi)串行監(jiān)視器,并確保右下角的波特率設(shè)置為 115200 :
在控制器模式下使用Bluefruit LE Connect
草圖運(yùn)行后,您可以打開(kāi)Adafruit的Bluefruit LE Connect應(yīng)用程序(適用于Android或iOS)并使用控制器應(yīng)用程序以與草圖交互。 (如果您不熟悉Bluefruit LE Connect,請(qǐng)參閱我們專用的Bluefruit LE Connect學(xué)習(xí)指南。)
在歡迎屏幕上,選擇 Adafruit Bluefruit BLE設(shè)備列表中的LE 設(shè)備:
然后從活動(dòng)列表中選擇控制器:
這將顯示可從手機(jī)或平板電腦發(fā)送到的數(shù)據(jù)點(diǎn)列表您的Bluefruit LE模塊,方法是啟用或禁用適當(dāng)?shù)膫鞲衅鳌?/p>
流式傳輸傳感器數(shù)據(jù)
您可以從手機(jī)中獲取四元數(shù)(絕對(duì)方向),加速度計(jì),陀螺儀,磁力計(jì)或GPS位置數(shù)據(jù),然后通過(guò)Controller活動(dòng)將其直接發(fā)送到Arduino。
例如通過(guò)啟用加速度計(jì)字段,您可以會(huì)在應(yīng)用程序中看到加速度計(jì)數(shù)據(jù)更新:
數(shù)據(jù)將在示例草圖中進(jìn)行解析,并輸出到串行監(jiān)視器,如下所示:
下載:文件
復(fù)制代碼
Accel 0.20 -0.51 -0.76
Accel 0.22 -0.50 -0.83
Accel 0.25 -0.51 -0.83
Accel 0.21 -0.47 -0.76
Accel 0.27 -0.48 -0.82 Accel 0.20 -0.51 -0.76
Accel 0.22 -0.50 -0.83
Accel 0.25 -0.51 -0.83
Accel 0.21 -0.47 -0.76
Accel 0.27 -0.48 -0.82
請(qǐng)注意,即使我們僅打印2個(gè)小數(shù)點(diǎn),其值仍是從應(yīng)用程序接收的完整的4字節(jié)浮點(diǎn)數(shù)。
控制面板模塊
您也可以使用控制面板模塊,通過(guò)選擇適當(dāng)?shù)牟藛雾?xiàng)來(lái)捕獲按鈕的按下和釋放:
這將彈出“控制面板”面板,如下所示:
按鈕的按下和釋放都將使用所用按鈕的ID記錄到串行監(jiān)視器中:
下載:文件
復(fù)制代碼
Button 8 pressed
Button 8 released
Button 3 pressed
Button 3 released Button 8 pressed
Button 8 released
Button 3 pressed
Button 3 released
拾色器模塊
您還可以通過(guò)拾色器模塊發(fā)送RGB顏色數(shù)據(jù),該模塊顯示以下顏色選擇對(duì)話框:
這將為您提供以下格式的十六進(jìn)制顏色數(shù)據(jù):
下載:文件
復(fù)制代碼
RGB #A42FFF RGB #A42FFF
您可以將顏色選擇器和控制器示例草圖,以使由移動(dòng)應(yīng)用程序中的按鈕觸發(fā)的顏色可配置的動(dòng)畫(huà)-對(duì)于可穿戴設(shè)備非常方便!下載以下組合的示例代碼(已配置為Feather,但易于適應(yīng)FLORA,BLE Micro等)以開(kāi)始使用:
feather_bluefruit_neopixel_animation_controller.zip
HeartRateMonitor
HeartRateMonitor 示例可讓您定義newGATT服務(wù)和關(guān)聯(lián)的GATT特征,并使用標(biāo)準(zhǔn)AT命令更新特征值。
打開(kāi)草圖
要打開(kāi)ATCommand草圖,請(qǐng)單擊Arduino IDE中的文件》示例》 Adafruit_BluefruitLE_nRF51 文件夾,然后選擇 heartratemonitor :
這將在IDE,如下所示:
配置
檢查配置! 頁(yè)面之前,可以設(shè)置軟件/硬件UART或軟件/硬件SPI的草圖。默認(rèn)值為硬件SPI
或軟件UART
本教程不需要使用MODE引腳,如果您未配置并連接MODE引腳,請(qǐng)確保將模式開(kāi)關(guān)置于CMD模式 p》
此演示使用了一些長(zhǎng)數(shù)據(jù)傳輸字符串,因此即使您使用的是硬件串行,我們也建議定義CTS和RTS并將其連接到引腳。
如果您使用的是Flora或僅不想連接CTS或RTS,請(qǐng)將#define引腳設(shè)置為-1,別忘了還將Bluefruit上的CTS引腳接地?。ㄖ参锶阂呀?jīng)做到了)
如果使用RTS和CTS,則可以在下面刪除此行,這會(huì)減慢數(shù)據(jù)傳輸速度
下載:文件
復(fù)制代碼
// this line is particularly required for Flora, but is a good idea
// anyways for the super long lines ahead!
ble.setInterCharWriteDelay(5); // 5 ms // this line is particularly required for Flora, but is a good idea
// anyways for the super long lines ahead!
ble.setInterCharWriteDelay(5); // 5 ms
運(yùn)行草圖
將草圖上傳到板上(通過(guò)箭頭形的上傳圖標(biāo)),并且上傳過(guò)程完成后,通過(guò)工具》串行監(jiān)視器打開(kāi)串行監(jiān)視器,然后進(jìn)行確保將右下角的波特率設(shè)置為 115200 :
如果您在移動(dòng)設(shè)備或筆記本電腦上打開(kāi)支持標(biāo)準(zhǔn)心率監(jiān)視器服務(wù)的應(yīng)用程序,則應(yīng)該能夠看到心率與看到的更改同步更新在串行監(jiān)視器中:
nRF Toolbox HRM示例
下圖是來(lái)自Android上的Nordic的免費(fèi)nRF Toolbox應(yīng)用程序的屏幕截圖(也適用于iOS),顯示了傳入的心率監(jiān)視器數(shù)據(jù):
CoreBluetooth HRM示例
下圖來(lái)自蘋(píng)果公司免費(fèi)提供的CoreBluetooth示例應(yīng)用程序,顯示了如何使用低功耗藍(lán)牙服務(wù)和特性:
UriBeacon
UriBeacon 示例向您展示如何使用內(nèi)置的UriBeacon AT命令將Bluefruit LE模塊配置為UriBeacon廣告商,如下Google的物理Web UriBea規(guī)格。
打開(kāi)草圖
要打開(kāi)ATCommand草圖,請(qǐng)單擊Arduino IDE中的文件》示例》 Adafruit_BluefruitLE_nRF51 文件夾,然后選擇 uribeacon :
這將打開(kāi)一個(gè)IDE中示例的新實(shí)例,如下所示。您可以從默認(rèn)的 http://www.adafruit.com 編輯信標(biāo)將指向的URL,也可以直接上傳以進(jìn)行測(cè)試
配置
請(qǐng)更早檢查配置!頁(yè)面以設(shè)置軟件/硬件UART或軟件的草圖/硬件SPI。默認(rèn)值為硬件SPI
如果使用軟件或硬件串行UART:
本教程不需要使用MODE引腳,請(qǐng)確保您具有該模式如果您未配置并連接MODE引腳,請(qǐng)切換到CMD模式
如果您不使用它,請(qǐng)不要忘記將Bluefruit的CTS引腳接地! (植物群已經(jīng)做到了)
運(yùn)行草圖
將草圖上傳到板上(通過(guò)箭頭形的上傳圖標(biāo)),并且上傳過(guò)程完成后,請(qǐng)通過(guò)“工具”》“串行監(jiān)視器” ,并確保右下角的波特率設(shè)置為 115200 :
這時(shí),您可以打開(kāi)Android的Physical Web Application或iOS版,您應(yīng)該會(huì)看到一個(gè)廣告Adafrui的鏈接t的網(wǎng)站:
幫助!
當(dāng)將Bluefruit Micro或Bluefruit LE與Flora/Due/Leonardo/Micro一起使用時(shí),示例無(wú)法運(yùn)行?
我們?cè)?setup()上添加了一條特殊行以使它停止,直到Arduino看到您通過(guò)串口控制臺(tái)連接。這樣可以使調(diào)試工作變得很棒,但是卻可以使您無(wú)法運(yùn)行與計(jì)算機(jī)斷開(kāi)連接的程序。
解決方案?完成調(diào)試后,從setup()中刪除這兩行
下載:文件
復(fù)制代碼
while (!Serial);
delay(500); while (!Serial);
delay(500);
我似乎無(wú)法“找到” Bluefruit LE!
是否正在獲取類似內(nèi)容?
對(duì)于UART/串行Bluefruits:
檢查CMD中是否有 MODE 開(kāi)關(guān),如果未使用MODE引腳,則MODE引腳未連接任何東西!
如果正在嘗試通過(guò)微型計(jì)算機(jī)控制 MODE ,請(qǐng)確保在草圖中設(shè)置MODE引腳
確保您具有 RXI 和 TXO 接線正確!它們經(jīng)常被意外交換
如果您使用硬件串行而不使用CTS,請(qǐng)確保 CTS 已連接到GND
檢查MODE紅色LED,它在閃爍嗎?如果其持續(xù)閃爍,則表明您可能處于DFU模式,請(qǐng)重啟該模塊!
如果您使用的是“硬件串行/軟件串行”,請(qǐng)確保知道哪一個(gè)并進(jìn)行了設(shè)置
如果使用SPI Bluefruit:
確保已正確連接所有5(或6)根導(dǎo)線。
如果使用硬件SPI,則需要確保您已連接到硬件SPI端口,具體取決于主芯片組。
如果使用Bluefruit Micro:
請(qǐng)確保您更改了將 RESET 引腳固定到任何配置文件中的#4。另外,請(qǐng)確保您正在使用硬件SPI進(jìn)行連接!
AT命令
Bluefruit LE模塊使用Hayes AT樣式的命令集來(lái)配置設(shè)備。
AT樣式的命令集的優(yōu)點(diǎn)是它很容易在機(jī)器對(duì)機(jī)器的通信中使用,同時(shí)對(duì)人類仍然有些用戶友好。
測(cè)試命令模式‘=?’
“測(cè)試”模式用于檢查系統(tǒng)上是否存在指定的命令。
某些固件版本或配置可能包含或不包含特定命令,您可以通過(guò)使用命令名稱并在其后附加‘=?’來(lái)確定該命令是否存在,如下所示
下載:文件
復(fù)制代碼
AT+BLESTARTADV=? AT+BLESTARTADV=?
如果存在該命令,設(shè)備將通過(guò)“確定” 進(jìn)行回復(fù)。如果沒(méi)有該命令,則設(shè)備將以‘錯(cuò)誤’進(jìn)行回復(fù)。
下載:文件
復(fù)制代碼
AT+BLESTARTADV=?
OK
AT+MISSINGCMD=?
ERROR AT+BLESTARTADV=?
OK
AT+MISSINGCMD=?
ERROR
寫(xiě)入命令模式‘= xxx’
‘寫(xiě)入’模式用于為命令分配特定的值,例如
要在命令中寫(xiě)入值,只需在命令后附加‘=’符號(hào),然后再添加anyparamater( s)您希望編寫(xiě)(除了將被解釋為tet模式的孤獨(dú)‘?’字符):
下載:文件
復(fù)制代碼
AT+BLEPOWERLEVEL=-8 AT+BLEPOWERLEVEL=-8
如果寫(xiě)入成功后,通常會(huì)在新行上收到“確定” 響應(yīng),如下所示:
下載:文件
復(fù)制C ode
AT+BLEPOWERLEVEL=-8
OK AT+BLEPOWERLEVEL=-8
OK
如果命令出現(xiàn)問(wèn)題(例如參數(shù)無(wú)效),您將得到 》‘ERROR’響應(yīng),在新行中顯示,如下所示:
下載:file
復(fù)制代碼
AT+BLEPOWERLEVEL=3
ERROR AT+BLEPOWERLEVEL=3
ERROR
注意:生成此特定錯(cuò)誤是因?yàn)閷?duì)于AT + BLEPOWERLEVEL命令,“ 3”不是有效值。將成功輸入‘-4’,‘0’或‘4’ ,因?yàn)檫@些都是該命令的有效值。
執(zhí)行模式
“執(zhí)行”模式將使特定命令“運(yùn)行”,如果可能的話,
下載:文件
復(fù)制代碼
AT+FACTORYRESET AT+FACTORYRESET
您可能使用執(zhí)行模式來(lái)執(zhí)行出廠重置,例如,通過(guò)執(zhí)行AT + FACTORYRESET命令如下:
下載:文件
復(fù)制代碼
AT+FACTORYRESET
OK AT+FACTORYRESET
OK
注意:許多要讀取的命令無(wú)論將其發(fā)送給誰(shuí)都將執(zhí)行相同的操作。 “執(zhí)行”或“讀取”模式下的命令解析器。例如,以下命令將產(chǎn)生相同的結(jié)果:
下載:文件
復(fù)制代碼
AT+BLEGETPOWERLEVEL
-4
OK
AT+BLEGETPOWERLEVEL?
-4
OK AT+BLEGETPOWERLEVEL
-4
OK
AT+BLEGETPOWERLEVEL?
-4
OK
如果該命令不支持執(zhí)行模式,則響應(yīng)通常為“錯(cuò)誤”
閱讀命令模式‘?’
“讀取”模式用于讀取命令的當(dāng)前值。
并非每個(gè)命令都支持讀取模式,但是通常使用它來(lái)檢索諸如通過(guò)在命令后附加一個(gè)‘?’來(lái)顯示當(dāng)前無(wú)線電的發(fā)射功率電平,如下所示:
下載:文件
復(fù)制代碼
AT+BLEPOWERLEVEL? AT+BLEPOWERLEVEL?
如果命令沒(méi)有t支持讀取模式,或者如果請(qǐng)求有問(wèn)題,通常會(huì)得到一個(gè)‘ERROR’響應(yīng)。
如果命令讀取成功,則您可以通常將獲得讀取結(jié)果,然后在新行上按“確定” ,如下所示:
下載:文件
復(fù)制代碼
AT+BLEPOWERLEVEL?
-4
OK AT+BLEPOWERLEVEL?
-4
OK
注意:對(duì)于簡(jiǎn)單命令,“讀取”模式和“執(zhí)行”模式的行為相同。
標(biāo)準(zhǔn)AT
Bluefruit LE模塊上提供以下標(biāo)準(zhǔn)Hayes/AT命令:
AT
充當(dāng)ping來(lái)檢查我們是否處于命令模式。如果處于命令模式,則應(yīng)該收到“確定”響應(yīng)。
代碼庫(kù)修訂:0.3.0
參數(shù) 》:無(wú)
輸出:無(wú)
下載:文件
復(fù)制代碼
AT
OK AT
OK
ATI
顯示有關(guān)Bluefruit模塊的基本信息。
代碼庫(kù)修訂 :0.3.0
參數(shù):無(wú)
輸出:顯示以下值:
板名
微控制器/無(wú)線電SoC名稱
唯一的序列號(hào)
核心Bluefruit代碼庫(kù)修訂版
項(xiàng)目固件修訂版
固件構(gòu)建日期
軟設(shè)備,軟設(shè)備版本,引導(dǎo)加載程序版本(0.5.0 +)
下載:文件
復(fù)制代碼
ATI
BLEFRIEND
nRF51822 QFAAG00
FB462DF92A2C8656
0.5.0
0.5.0
Feb 24 2015
S110 7.1.0, 0.0
OK ATI
BLEFRIEND
nRF51822 QFAAG00
FB462DF92A2C8656
0.5.0
0.5.0
Feb 24 2015
S110 7.1.0, 0.0
OK
《強(qiáng)g》更新:
版本 0.4.7 + 的固件在可以檢測(cè)到芯片名稱之后添加芯片修訂(例如, ‘nRF51822 QFAAG00’)。
版本 0.5.0 + 會(huì)添加新的第七條記錄,其中包含軟件設(shè)備,軟件設(shè)備版本和引導(dǎo)加載程序版本(例如‘S110 7.1.0 ,0.0’)。
ATZ
執(zhí)行系統(tǒng)重置。
代碼庫(kù)修訂 :0.3.0
參數(shù):無(wú)
輸出:無(wú)
下載:文件
復(fù)制代碼
ATZ
OK ATZ
OK
ATE
使用AT解析器啟用或禁用輸入字符的回顯
代碼庫(kù)修訂:0.3.0
參數(shù):‘1’=啟用回顯,‘0’=禁用回顯
輸出:無(wú)
下載:文件
復(fù)制代碼
# Disable echo support
ATE=0
OK
#Enable echo support
ATE=1
OK # Disable echo support
ATE=0
OK
#Enable echo support
ATE=1
OK
+++
在DATA和COMMAND模式之間動(dòng)態(tài)切換,而無(wú)需更改物理CMD/UART選擇開(kāi)關(guān)
在COMMAND模式下,輸入‘+++ \ n’或‘+++ \ r \ n’將導(dǎo)致模塊切換到DATA模式,并且在控制臺(tái)中鍵入的所有內(nèi)容都會(huì)消失
要從DATA模式切換回COMMAND模式,只需再次輸入‘+++ \ n’或‘+++ \ r \ n’(確保包括換行符!),并顯示一個(gè)新的“ OK”響應(yīng),讓您知道您已回到COMMAND模式(請(qǐng)參見(jiàn)下面的示例代碼中的兩個(gè)“ OK”條目)。
代碼庫(kù)修訂:0.4.7
參數(shù):無(wú)
輸出:無(wú)
請(qǐng)注意,+++也可以在移動(dòng)設(shè)備上用于在iOS上發(fā)送和接收AT命令或Android,盡管應(yīng)始終謹(jǐn)慎使用。
請(qǐng)參閱AT + MODESWITCHEN命令以控制+++命令的可用性
下載:文件
復(fù)制代碼
ATI
BLEFRIEND
nRF51822 QFAAG00
B122AAC33F3D2296
0.4.6
0.4.6
Dec 22 2014
OK
+++
OK
OK ATI
BLEFRIEND
nRF51822 QFAAG00
B122AAC33F3D2296
0.4.6
0.4.6
Dec 22 2014
OK
+++
OK
OK
通用
所有Bluefruit LE模塊上均提供以下通用命令:
AT + FACTORYRESET
清除非易失性存儲(chǔ)器中的所有用戶配置數(shù)據(jù),并在重置之前執(zhí)行出廠重置
代碼庫(kù)修訂 :0.3.0
參數(shù):無(wú)
輸出:無(wú)
下載:文件
復(fù)制代碼
AT+FACTORYRESET
OK AT+FACTORYRESET
OK
從固件版本0.5.0+開(kāi)始,您可以通過(guò)按住DFU按鈕10秒鐘直到藍(lán)色的CONNECTED LED點(diǎn)亮,然后釋放按鈕來(lái)執(zhí)行出廠重置。
AT + DFU
強(qiáng)制該模塊進(jìn)入DFU模式,允許空中固定使用iOS或Android上的專用DFU應(yīng)用重新更新。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:無(wú)
輸入AT + DFU命令后,AT解析器將不再響應(yīng),因?yàn)檎5某绦驁?zhí)行有效地停止并且執(zhí)行了完整的系統(tǒng)重置以啟動(dòng)引導(dǎo)加載程序代碼
下載:文件
復(fù)制代碼
AT+DFU
OK AT+DFU
OK
AT + HELP
顯示以逗號(hào)分隔的列表系統(tǒng)上可用的所有AT解析器命令。
代碼庫(kù)版本:0.3.0
參數(shù):無(wú)
輸出:系統(tǒng)上可用的所有AT解析器命令的逗號(hào)分隔列表。
示例代碼為低可能與將來(lái)的固件版本不匹配,并且僅用于說(shuō)明目的
下載:file
復(fù)制代碼
AT+HELP
AT+FACTORYRESET,AT+DFU,ATZ,ATI,ATE,AT+DBGMEMRD,AT+DBGNVMRD,AT+HWLEDPOLARITY,AT+HWLED,AT+HWGETDIETEMP,AT+HWMODEPINPOLARITY,AT+HWMODEPIN,AT+HWGPIOMODE,AT+HWGPIO,AT+HWI2CSCAN,AT+HWADC,AT+HWVBAT,AT+HWPWM,AT+HWPWRDN,AT+BLEPOWERLEVEL,AT+BLEGETADDRTYPE,AT+BLEGETADDR,AT+BLEBEACON,AT+BLEGETRSSI,AT+GAPGETCONN,AT+GAPDISCONNECT,AT+GAPDEVNAME,AT+GAPDELBONDS,AT+GAPINTERVALS,AT+GAPSTARTADV,AT+GAPSTOPADV,AT+GAPAUTOADV,AT+GAPSETADVDATA,AT+BLEUARTTX,AT+BLEUARTRX,AT+GATTADDSERVICE,AT+GATTADDCHAR,AT+GATTCHAR,AT+GATTLIST,AT+GATTCLEAR,AT+HELP
OK AT+HELP
AT+FACTORYRESET,AT+DFU,ATZ,ATI,ATE,AT+DBGMEMRD,AT+DBGNVMRD,AT+HWLEDPOLARITY,AT+HWLED,AT+HWGETDIETEMP,AT+HWMODEPINPOLARITY,AT+HWMODEPIN,AT+HWGPIOMODE,AT+HWGPIO,AT+HWI2CSCAN,AT+HWADC,AT+HWVBAT,AT+HWPWM,AT+HWPWRDN,AT+BLEPOWERLEVEL,AT+BLEGETADDRTYPE,AT+BLEGETADDR,AT+BLEBEACON,AT+BLEGETRSSI,AT+GAPGETCONN,AT+GAPDISCONNECT,AT+GAPDEVNAME,AT+GAPDELBONDS,AT+GAPINTERVALS,AT+GAPSTARTADV,AT+GAPSTOPADV,AT+GAPAUTOADV,AT+GAPSETADVDATA,AT+BLEUARTTX,AT+BLEUARTRX,AT+GATTADDSERVICE,AT+GATTADDCHAR,AT+GATTCHAR,AT+GATTLIST,AT+GATTCLEAR,AT+HELP
OK
AT + NVMWRITE
將數(shù)據(jù)寫(xiě)入256字節(jié)用戶非易失性存儲(chǔ)器(NVM)區(qū)域。
代碼庫(kù)版本:0.7.0
參數(shù):
偏移:第一個(gè)數(shù)字偏移用戶NVM中從起始位置開(kāi)始的字節(jié)
數(shù)據(jù)類型:可以是STRING(1),BYTEARRAY(2)或INTEGER(3)之一
數(shù)據(jù):要寫(xiě)入NVM內(nèi)存的數(shù)據(jù)(確切的有效負(fù)載格式將根據(jù)指定的數(shù)據(jù)類型而變化)。
輸出 :沒(méi)事
下載:文件
復(fù)制代碼
# Write 32768 as an integer starting at byte 16 in user NVM
AT+NVMWRITE=16,INTEGER,32768
OK # Write 32768 as an integer starting at byte 16 in user NVM
AT+NVMWRITE=16,INTEGER,32768
OK
AT + NVMREAD
從256字節(jié)用戶非易失性存儲(chǔ)器(NVM)區(qū)域讀取數(shù)據(jù)。
代碼庫(kù)版本:0.7.0
參數(shù):
偏移:第一個(gè)數(shù)字偏移用戶NVM中起始位置的字節(jié)數(shù)
大?。阂x取的字節(jié)數(shù)
數(shù)據(jù)類型:使用的類型對(duì)于正在讀取的數(shù)據(jù),需要正確解析數(shù)據(jù)并將其顯示為響應(yīng)。該值可以是STRING(1),BYTEARRAY(2)或INTEGER(3)之一
輸出:回讀的數(shù)據(jù),根據(jù)數(shù)據(jù)類型進(jìn)行格式化
下載:文件
復(fù)制代碼
# Read an integer back from position 16 in user NVM
AT+NVMREAD=16, 4, INTEGER
32768
OK # Read an integer back from position 16 in user NVM
AT+NVMREAD=16, 4, INTEGER
32768
OK
AT + MODESWITCHEN
通過(guò)連接的BLE UART一側(cè)的BLE外設(shè)上的“ +++”命令啟用或禁用模式切換。
代碼庫(kù)版本:0.7 .1
參數(shù):
位置:這可以是字符串,可以是‘ local ”或“ ble ”,指示哪一方應(yīng)啟用或禁用“ +++”命令,“本地”是Bluefruit外圍設(shè)備,“ ble”是電話或平板電腦。
狀態(tài):“ 0 ”以禁用“ +++”模式開(kāi)關(guān),“ 1 ”以啟用它們。
輸出:無(wú)
默認(rèn)情況下,“ +++”在本地啟用,并在BLE中禁用
下載:文件
復(fù)制代碼
# Disable reomte ’+++‘ mode switches
AT+MODESWITCHEN=ble,0
OK # Disable reomte ’+++‘ mode switches
AT+MODESWITCHEN=ble,0
OK
硬件
以下命令使您可以與Bluefruit LE模塊上的低級(jí)硬件交互,例如讀取或切換GPIO引腳,執(zhí)行ADC轉(zhuǎn)換等。 。:
AT + BAUDRATE
更改nRF51822上的HW UART外設(shè)使用的波特率。 請(qǐng)注意,我們不建議使用高于9600的波特率,因?yàn)閚RF51 UART會(huì)丟棄字符!
代碼庫(kù)修訂:0.7.0
參數(shù):波特率,必須為以下值之一:
1200
2400
4800
9600
14400
19200
28800
38400
57600
76800
115200
230400
250000
460800
921600
1000000
輸出:當(dāng)前波特率
下載:文件
復(fù)制代碼
# Set the baud rate to 115200
AT+BAUDRATE=115200
OK
# Check the current baud rate
AT+BAUDRATE
115200
OK # Set the baud rate to 115200
AT+BAUDRATE=115200
OK
# Check the current baud rate
AT+BAUDRATE
115200
OK
AT + HWADC
在指定的ADC引腳上執(zhí)行ADC轉(zhuǎn)換
代碼庫(kù)修訂 :0.3.0
參數(shù):ADC通道(0..7)
輸出:ADC轉(zhuǎn)換的結(jié)果
下載:文件
復(fù)制代碼
AT+HWADC=0
178
OK AT+HWADC=0
178
OK
AT + HWGETDIETEMP
獲取溫度BLE模塊裸片的攝氏度。可以將其用于調(diào)試目的(較高的管芯溫度通常意味著較高的電流消耗),但不對(duì)應(yīng)于環(huán)境溫度,因此不能替代常規(guī)溫度傳感器。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:模具溫度(攝氏度)
下載:文件
復(fù)制代碼
AT+HWGETDIETEMP
32.25
OK AT+HWGETDIETEMP
32.25
OK
AT + HWGPIO
獲取或設(shè)置指定的GPIO引腳的值(取決于引腳的模式)。
代碼庫(kù)修訂:0.3.0
參數(shù):此命令的參數(shù)根據(jù)引腳模式而變化。
輸出模式:在更新引腳時(shí),可以使用以下逗號(hào)分隔的參數(shù)設(shè)置為輸出:
插針編號(hào)
插針狀態(tài),其中:
0 =清除引腳(邏輯低電平/GND)
1 =設(shè)置引腳(邏輯高電平/VCC)
輸入模式:要讀取輸入引腳或已配置為輸出的引腳的當(dāng)前狀態(tài),請(qǐng)輸入引腳號(hào)作為單個(gè)參數(shù)。
輸出:如果您正在讀取輸入或檢查輸入引腳的狀態(tài)(表示僅提供1個(gè)參數(shù),即引腳編號(hào)),則為引腳狀態(tài),其中:
0表示該引腳為邏輯低/GND
1表示該引腳為邏輯高/VCC
嘗試設(shè)置未配置為輸出的引腳的值將產(chǎn)生“錯(cuò)誤”響應(yīng)。
某些引腳保留用于Bluefruit模塊上的特定功能,不能用作GPIO。如果您嘗試使用保留的密碼,則會(huì)生成“錯(cuò)誤”響應(yīng)。
下載:文件
復(fù)制代碼
# Set pin 14 HIGH
AT+HWGPIO=14,1
OK
# Set pin 14 LOW
AT+HWGPIO=14,0
OK
# Read the current state of pin 14
AT+HWGPIO=14
0
OK
# Try to update a pin that is not set as an output
AT+HWGPIOMODE=14,0
OK
AT+HWGPIO=14,1
ERROR # Set pin 14 HIGH
AT+HWGPIO=14,1
OK
# Set pin 14 LOW
AT+HWGPIO=14,0
OK
# Read the current state of pin 14
AT+HWGPIO=14
0
OK
# Try to update a pin that is not set as an output
AT+HWGPIOMODE=14,0
OK
AT+HWGPIO=14,1
ERROR
AT + HWGPIOMODE
這將為指定的GPIO引腳(輸入,輸出等)設(shè)置模式。
代碼庫(kù)修訂:0.3.0
參數(shù):此命令一個(gè)或兩個(gè)值(在兩個(gè)參數(shù)的情況下用逗號(hào)分隔)
引腳號(hào)
新的GPIO模式,其中:
0 =輸入
1 =輸出
2 =啟用了上拉的輸入
3 =啟用了上拉的輸入
輸出:如果傳遞了單個(gè)參數(shù)(GPIO引腳號(hào)),則會(huì)返回當(dāng)前的引腳模式。
某些引腳保留用于Bluefruit模塊和ca上的特定功能n不能用作GPIO。如果您嘗試使用保留的密碼,則會(huì)生成“錯(cuò)誤”響應(yīng)。
下載:文件
復(fù)制代碼
# Configure pin 14 as an output
AT+HWGPIOMODE=14,0
OK
# Get the current mode for pin 14
AT+HWPGIOMODE=14
0
OK # Configure pin 14 as an output
AT+HWGPIOMODE=14,0
OK
# Get the current mode for pin 14
AT+HWPGIOMODE=14
0
OK
AT + HWI2CSCAN
掃描I2C總線以嘗試檢測(cè)任何已連接的I2C設(shè)備,并返回以前的設(shè)備地址
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:掃描I2C總線上的有效地址范圍時(shí)找到的任何I2C地址的逗號(hào)分隔列表,或者沒(méi)有找到任何設(shè)備。
下載:文件
復(fù)制代碼
# I2C scan with two devices detected
AT+HWI2CSCAN
0x23,0x35
OK
# I2C scan with no devices detected
AT+HWI2CSCAN
OK # I2C scan with two devices detected
AT+HWI2CSCAN
0x23,0x35
OK
# I2C scan with no devices detected
AT+HWI2CSCAN
OK
AT + HWVBAT
返回主電源電壓級(jí)別(以毫伏為單位)
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:VBAT電平(以毫伏為單位)
下載:文件
復(fù)制代碼
AT+HWVBAT
3248
OK AT+HWVBAT
3248
OK
AT + HWRANDOM
生成使用nRF51822上的硬件隨機(jī)數(shù)發(fā)生器生成一個(gè)32位隨機(jī)數(shù)(基于白噪聲)。
代碼庫(kù)修訂:0.4.7
參數(shù):無(wú)
輸出:隨機(jī)的32位十六進(jìn)制值(例如’0x12345678‘)
下載:文件
復(fù)制代碼
AT+HWRANDOM
0x769ED823
OK AT+HWRANDOM
0x769ED823
OK
AT + HWMODELED
允許您覆蓋MODE led的默認(rèn)行為(默認(rèn)情況下指示運(yùn)行模式)。
代碼庫(kù)修訂:0.6.6
參數(shù):LED運(yùn)行模式,可以是以下值之一:
禁用或 DISABLE 或 0 -完全禁用MODE LED以省電
模式或 MODE 或 1 -默認(rèn)行為,指示當(dāng)前操作模式
hwuart 或 HWUART 或 2 -在硬件UART總線上的任何活動(dòng)(TX或RX)上切換LED
bleuart 或 BLEUART 或 3 -切換LED上的任何活動(dòng)BLE UART服務(wù)(TX或RX特性)
spi 或 SPI 或 4 -在任何SPI活動(dòng)上切換LED
手動(dòng)或手動(dòng)或 5 -通過(guò)第二個(gè)逗號(hào)分隔的參數(shù)手動(dòng)設(shè)置MODE LED的狀態(tài),可以打開(kāi),關(guān)閉或切換。
輸出 :如果不帶參數(shù)運(yùn)行,則從上面的字段中返回一個(gè)大寫(xiě)的字符串,表示當(dāng)前的MODE LED操作模式
下載:文件
復(fù)制代碼
# Get the curent MODE LED setting
AT+HWMODELED
MODE
OK
# Change the MODE LED to indicate BLE UART activity
AT+HWMODELED=BLEUART
OK
# Manually toggle the MODE LED
AT+HWMODELED=MANUAL,TOGGLE
OK # Get the curent MODE LED setting
AT+HWMODELED
MODE
OK
# Change the MODE LED to indicate BLE UART activity
AT+HWMODELED=BLEUART
OK
# Manually toggle the MODE LED
AT+HWMODELED=MANUAL,TOGGLE
OK
AT + UARTFLOW
在nRF51822的UART外圍模塊上啟用或禁用硬件流控制(CTS + RTS)。/p》
代碼庫(kù)修訂:0.7.0
參數(shù):硬件流控制狀態(tài),可以是以下之一:
上
off
0
1
輸出:如果不帶參數(shù)運(yùn)行,返回一個(gè)數(shù)字,該數(shù)字表示流控制是啟用(1)還是禁用(0)。
下載:file
復(fù)制代碼
# Check the current flow control state
AT+UARTFLOW
1
OK
# Disable HW flow control
AT+UARTFLOW=off
OK # Check the current flow control state
AT+UARTFLOW
1
OK
# Disable HW flow control
AT+UARTFLOW=off
OK
信標(biāo)
Adafruit的Bluefruit LE模塊當(dāng)前支持以下“信標(biāo)”技術(shù):
信標(biāo)(Apple)通過(guò)AT + BLEBEACON
UriBeacon(Google)通過(guò)AT + BLEURIBEACON(已棄用)
Eddystone(Google)通過(guò)AT + EDDYSTONE *
可以使用以下命令將模塊配置為充當(dāng)“信標(biāo)”:
AT + BLEBEACON
代碼庫(kù)修訂:0.3.0
參數(shù):以下逗號(hào)-啟用信標(biāo)模式需要使用分隔的參數(shù):
藍(lán)牙制造商ID(uint16_t)
128位UUID
主要值(uint16_t)
次要值(uint16_t)
RSSI @ 1m(int8_t)
輸出:無(wú)
下載:文件
復(fù)制代碼
# Enable Apple iBeacon emulation
# Manufacturer ID = 0x004C
AT+BLEBEACON=0x004C,01-12-23-34-45-56-67-78-89-9A-AB-BC-CD-DE-EF-F0,0x0000,0x0000,-59
OK
# Reset to change the advertising data
ATZ
OK
# Enable Nordic Beacon emulation
# Manufacturer ID = 0x0059
AT+BLEBEACON=0x0059,01-12-23-34-45-56-67-78-89-9A-AB-BC-CD-DE-EF-F0,0x0000,0x0000,-59
OK
# Reset to change the advertising data
ATZ
OK # Enable Apple iBeacon emulation
# Manufacturer ID = 0x004C
AT+BLEBEACON=0x004C,01-12-23-34-45-56-67-78-89-9A-AB-BC-CD-DE-EF-F0,0x0000,0x0000,-59
OK
# Reset to change the advertising data
ATZ
OK
# Enable Nordic Beacon emulation
# Manufacturer ID = 0x0059
AT+BLEBEACON=0x0059,01-12-23-34-45-56-67-78-89-9A-AB-BC-CD-DE-EF-F0,0x0000,0x0000,-59
OK
# Reset to change the advertising data
ATZ
OK
AT + BLEBEACON將導(dǎo)致將信標(biāo)數(shù)據(jù)存儲(chǔ)在Bluefruit LE模塊上的非易失性配置存儲(chǔ)器中,并且這些值將在系統(tǒng)重置和關(guān)機(jī)后再啟動(dòng)時(shí)保持不變。要?jiǎng)h除或清除信標(biāo)數(shù)據(jù),您需要在命令模式下輸入“ AT + FACTORYRESET”命令。
使用上面的示例代碼輸入Nordic Beacon仿真,您可以在下面的Nordic的“信標(biāo)配置”工具中看到模擬的信標(biāo):
AT + BLEURIBEACON 》
將指定的URI轉(zhuǎn)換為UriBeaconadvertising數(shù)據(jù)包,并將該模塊配置為作為UriBeacon(Google物理Web項(xiàng)目的一部分)進(jìn)行廣告。
要查看UriBeacon URI,您可以使用以下移動(dòng)設(shè)備之一應(yīng)用程序:
Android 4.3+:Google Play商店上的物理Web
iOS:Apple的App Store中的物理Web
代碼庫(kù)修訂版:0.4.7
參數(shù):要編碼的URI(例如http://www.adafruit.com/blog)
輸出:未輸入有效的URI(長(zhǎng)度為acc
下載:文件
復(fù)制代碼
AT+BLEURIBEACON=http://www.adafruit.com/blog
OK
# Reset to change the advertising data
ATZ
OK AT+BLEURIBEACON=http://www.adafruit.com/blog
OK
# Reset to change the advertising data
ATZ
OK
如果提供的URI太長(zhǎng),您將獲得以下輸出:
下載:文件
復(fù)制代碼
AT+BLEURIBEACON=http://www.adafruit.com/this/uri/is/too/long
URL is too long
ERROR AT+BLEURIBEACON=http://www.adafruit.com/this/uri/is/too/long
URL is too long
ERROR
如果您要編碼的URI太長(zhǎng),請(qǐng)嘗試使用諸如bit.ly之類的縮短服務(wù),然后對(duì)縮短的URI。
UriBeacon應(yīng)該視為不推薦使用,和EddyStone應(yīng)該用于將來(lái)的任何開(kāi)發(fā)。在UriBeacon周圍的Bluefruit LE固件中不會(huì)進(jìn)行進(jìn)一步的開(kāi)發(fā)。
棄用:AT + EDDYSTONEENABLE
此命令將在Bluefruit LE模塊上啟用Eddystone支持。必須先啟用Eddystone支持,然后才能使用其他相關(guān)命令。
代碼庫(kù)修訂:0.6.6
參數(shù): 1或0(1 =啟用,0 =禁用)
輸出:如果未提供任何參數(shù),則Eddystone支持的當(dāng)前狀態(tài)(1 =啟用,0 =禁用)
此命令已在固件0.7.0中刪除,以避免造成混淆。在0.7.0及更高版本中使用AT + EDDYSTONESERVICEEN。
下載:文件
復(fù)制代碼
# Enable Eddystone support
AT+EDDYSTONEENABLE=1
OK
# Check the current Eddystone status on the module
AT+EDDYSTONEENABLE
1
OK # Enable Eddystone support
AT+EDDYSTONEENABLE=1
OK
# Check the current Eddystone status on the module
AT+EDDYSTONEENABLE
1
OK
AT + EDDYSTONEURL
此命令將設(shè)置Eddystone-URL協(xié)議的URL。
代碼庫(kù)修訂:0.6 .6
參數(shù):
要編碼的網(wǎng)址(強(qiáng)制性)
可選的第二個(gè)參數(shù)指示是否繼續(xù)即使外圍設(shè)備連接到中央設(shè)備,也要發(fā)布Eddystone URL。
固件 0.6.7 為RSSI的0米值添加了一個(gè)可選的第三個(gè)參數(shù)。最終用戶應(yīng)通過(guò)檢查接收設(shè)備上1m處的RSSI值,然后在該值上加上41(以補(bǔ)償超過(guò)1m的信號(hào)強(qiáng)度損失)來(lái)進(jìn)行測(cè)量,因此1m處的RSSI為-62意味著您應(yīng)該在0m輸入-21作為RSSI。默認(rèn)值為-18dBm。
輸出:固件《= 0.6.6:無(wú)。如果固件》 = 0.6.7 ,不帶任何參數(shù)運(yùn)行此命令,則會(huì)返回當(dāng)前URL。
下載:文件
復(fù)制代碼
# Set the Eddystone URL to adafruit
AT+EDDYSTONEURL=http://www.adafruit.com
OK
# Set the Eddystone URL to adafruit and advertise it even when connected
AT+EDDYSTONEURL=http://www.adafruit.com,1
OK # Set the Eddystone URL to adafruit
AT+EDDYSTONEURL=http://www.adafruit.com
OK
# Set the Eddystone URL to adafruit and advertise it even when connected
AT+EDDYSTONEURL=http://www.adafruit.com,1
OK
AT + EDDYSTONECONFIGEN
此命令使Bluefruit LE模塊在指定的秒數(shù)內(nèi)啟用Eddystone URL配置服務(wù)。
此命令應(yīng)與Google的Physical Web應(yīng)用程序結(jié)合使用,可用于Android或iOS。運(yùn)行此命令,然后從應(yīng)用程序中選擇“編輯URL”選項(xiàng)以空中更改目標(biāo)URL。
代碼庫(kù)修訂:0.6.6
參數(shù):發(fā)布配置服務(wù)UUID的秒數(shù)
輸出:無(wú)
下載:文件
復(fù)制代碼
# Start advertising the Eddystone config service for 5 minutes (300s)
AT+EDDYSTONECONFIGEN=300
OK # Start advertising the Eddystone config service for 5 minutes (300s)
AT+EDDYSTONECONFIGEN=300
OK
AT + EDDYSTONESERVICEEN
從GATT添加或刪除Eddystone服務(wù)表(需要重置才能生效)。
代碼庫(kù)修訂:0.7.0
參數(shù):是否應(yīng)該使用以下值中的一個(gè)啟用或不啟用Eddystone服務(wù):
on
off
1
0
輸出:如果命令不帶任何參數(shù)執(zhí)行,它將禁用一個(gè)數(shù)字值,該值指示服務(wù)是啟用(1)還是禁用(0)。/p》
您必須執(zhí)行系統(tǒng)重置才能使此命令生效。
下載:文件
復(fù)制代碼
# Enable Eddystone service
AT+EddyStonServiceEn=on
OK
AT+EddyStonServiceEn=1
OK
# Disable Eddystone service
AT+EddyStonServiceEn=off
OK
AT+EddyStonServiceEn=0
OK # Enable Eddystone service
AT+EddyStonServiceEn=on
OK
AT+EddyStonServiceEn=1
OK
# Disable Eddystone service
AT+EddyStonServiceEn=off
OK
AT+EddyStonServiceEn=0
OK
AT + EDDYSTONEBROADCAST
此命令可用于開(kāi)始使用存儲(chǔ)在非易失性存儲(chǔ)器(NVM)中的URL停止播發(fā)Eddystone有效載荷。
代碼庫(kù)修訂:0.7.0
參數(shù):是否使用以下值之一廣播有效載荷:
on
off
1
0
輸出:如果不執(zhí)行任何參數(shù),則當(dāng)前廣播狀態(tài)將顯示為數(shù)字值。
下載:文件
復(fù)制代碼
# Enable broadcasting current setting of EddyStone (stored previously on nvm)
AT+EddyStoneBroadcast=on
OK
AT+EddyStoneBroadcast=1
OK
# Disable broadcasting current setting of EddyStone (still stored on nvm)
AT+EddyStoneBroadcast=off
OK
AT+EddyStoneBroadcast=0
OK # Enable broadcasting current setting of EddyStone (stored previously on nvm)
AT+EddyStoneBroadcast=on
OK
AT+EddyStoneBroadcast=1
OK
# Disable broadcasting current setting of EddyStone (still stored on nvm)
AT+EddyStoneBroadcast=off
OK
AT+EddyStoneBroadcast=0
OK
BLE通用
Bluefruit LE模塊上提供以下通用BLE命令:
AT + BLEPOWERLEVEL
獲取或設(shè)置模塊無(wú)線電的當(dāng)前發(fā)射功率等級(jí)(更高的發(fā)射功率等于更好的范圍,更低的發(fā)射功率等于更長(zhǎng)的電池壽命。
代碼庫(kù)修訂 :0.3.0
參數(shù):TX功率電平(以dBm為單位),可以是以下值之一(從最低到更高的發(fā)射功率):
-40
-20
-16
-12
-8
-4
0
4
輸出:當(dāng)前發(fā)射功率電平(以dBm為單位)
更新的功率級(jí)別將在輸入命令后立即生效。如果該設(shè)備未連接到其他設(shè)備,則廣告將暫時(shí)停止,然后在新的功率水平生效后重新開(kāi)始。
下載:文件
復(fù)制代碼
# Get the current TX power level (in dBm)
AT+BLEPOWERLEVEL
0
OK
# Set the TX power level to 4dBm (maximum value)
AT+BLEPOWERLEVEL=4
OK
# Set the TX power level to -12dBm (better battery life)
AT+BLEPOWERLEVEL=-12
OK
# Set the TX power level to an invalid value
AT+BLEPOWERLEVEL=-3
ERROR # Get the current TX power level (in dBm)
AT+BLEPOWERLEVEL
0
OK
# Set the TX power level to 4dBm (maximum value)
AT+BLEPOWERLEVEL=4
OK
# Set the TX power level to -12dBm (better battery life)
AT+BLEPOWERLEVEL=-12
OK
# Set the TX power level to an invalid value
AT+BLEPOWERLEVEL=-3
ERROR
AT + BLEGETADDRTYPE
獲取地址類型(用于48位BLE設(shè)備地址)
通常這是’1‘(隨機(jī)),這意味著模塊使用48位地址,該地址是在制造過(guò)程中隨機(jī)生成的,并由制造商寫(xiě)入裸片。
隨機(jī)并不意味著每次都會(huì)隨機(jī)生成設(shè)備地址,而只是使用一個(gè)隨機(jī)數(shù)。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:地址類型,可以是以下值之一:
0 =公共
1 =隨機(jī)
下載:文件
復(fù)制代碼
AT+BLEGETADDRTYPE
1
OK AT+BLEGETADDRTYPE
1
OK
AT + BLEGETADDR
獲取48位BLE設(shè)備地址。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:48位BLE設(shè)備地址,格式如下:’AA:BB:CC:DD:EE:FF‘
下載:文件
復(fù)制代碼
AT+BLEGETADDR
E4:C6:C7:31:95:11
OK AT+BLEGETADDR
E4:C6:C7:31:95:11
OK
AT + BLEGETPEERADDR
獲取我們連接到的對(duì)等(中央)設(shè)備的48位地址。
代碼庫(kù)修訂:0.6.5
參數(shù):無(wú)
輸出:連接的中央設(shè)備的48位地址(十六進(jìn)制格式)。如果我們未連接到中央設(shè)備,該命令將返回錯(cuò)誤。
請(qǐng)注意,中央設(shè)備返回的地址幾乎始終是隨時(shí)間變化的隨機(jī)值,通常不應(yīng)信任該值。此命令是為某些特殊情況提供的,但在大多數(shù)日常情況下沒(méi)有用。
下載:文件
復(fù)制代碼
AT+BLEGETPEERADDR
48:B2:26:E6:C1:1D
OK AT+BLEGETPEERADDR
48:B2:26:E6:C1:1D
OK
AT + BLEGETRSSI
獲取RSSI值(接收信號(hào)強(qiáng)度指示器),可用于估計(jì)數(shù)據(jù)的可靠性在兩個(gè)設(shè)備之間傳輸(數(shù)字越小越好)。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:如果我們連接到設(shè)備,則RSSI級(jí)別(以dBm為單位),否則為’0‘
下載:文件
復(fù)制代碼
# Connected to an external device
AT+BLEGETRSSI
-46
OK
# Not connected to an external device
AT+BLEGETRSSI
0
OK # Connected to an external device
AT+BLEGETRSSI
-46
OK
# Not connected to an external device
AT+BLEGETRSSI
0
OK
BLE服務(wù)
以下命令允許您在命令模式下運(yùn)行時(shí)與Bluefruit LE模塊上存在的各種GATT服務(wù)進(jìn)行交互。
AT + BLEUARTTX
此命令將發(fā)送指定的文本消息在命令模式下運(yùn)行時(shí)通過(guò)UART服務(wù)。
代碼庫(kù)修訂:0.3.0
參數(shù):消息有效負(fù)載發(fā)送。有效載荷最多可以包含240個(gè)字符(因?yàn)锳T命令字符串的總長(zhǎng)度限制為最多256個(gè)字節(jié))。
輸出:此命令將產(chǎn)生錯(cuò)誤消息,如果您未連接到中央設(shè)備,或者Bluefruit LE模塊上的內(nèi)部TX FIFO已滿。
從固件版本開(kāi)始, 0.6 .2 及更高版本,AT + BLEUARTTX可以接受一組有限的轉(zhuǎn)義碼序列:
\ r =回車符
\ n =新行
\ t =選項(xiàng)卡
\ b =退格
\\ =反斜杠
從固件發(fā)行版開(kāi)始 0.6.7 及更高版本,由于AT + BLEUARTTX = ?, AT + BLEUARTTX可以接受以下轉(zhuǎn)義碼序列。對(duì)AT解析器有特定含義:
\? =發(fā)送單個(gè)問(wèn)號(hào)
從固件版本 0.7.6 起,AT + BLEUARTTX可以接受以下轉(zhuǎn)義碼序列:
\ + =傳輸單個(gè)’+‘字符而不必?fù)?dān)心`+++’模式開(kāi)關(guān)組合
ESCAPE SEQUENCE注意:如果您嘗試通過(guò)類似‘ble.print(“ 。..”);之類的代碼發(fā)送轉(zhuǎn)義序列,請(qǐng)注意,您需要發(fā)送一個(gè)雙反斜杠,轉(zhuǎn)義碼才能按預(yù)期到達(dá)AT命令。例如:ble.println(“ AT + BLEUARTTX = Some Test \\ r \\ n”);
您必須連接到其他設(shè)備才能執(zhí)行此命令
下載:文件
復(fù)制代碼
# Send a string when connected to another device
AT+BLEUARTTX=THIS IS A TEST
OK
# Send a string when not connected
AT+BLEUARTTX=THIS IS A TEST
ERROR # Send a string when connected to another device
AT+BLEUARTTX=THIS IS A TEST
OK
# Send a string when not connected
AT+BLEUARTTX=THIS IS A TEST
ERROR
TX FIFO緩沖區(qū)處理
從固件版本 0.6.7 開(kāi)始,當(dāng)TX FIFO緩沖區(qū)已滿時(shí),將使用200ms的阻塞延遲來(lái)查看返回ERROR之前FIFO中是否有可用空間。下面的流程圖詳細(xì)說(shuō)明了確切的過(guò)程:
注意:每個(gè)GATT事務(wù)都會(huì)進(jìn)行TX FIFO完全檢查(最多20字節(jié)的每個(gè)數(shù)據(jù)),因此大型數(shù)據(jù)傳輸可能具有多個(gè)200ms等待狀態(tài)。
您可以使用AT + BLEUARTFIFO = TX命令檢查T(mén)X FIFO的大小在發(fā)送數(shù)據(jù)之前,請(qǐng)確保緩沖區(qū)中有足夠的可用空間。
TX FIFO的大小取決于所使用的固件版本:
固件《= 0.6.6: 160個(gè)字符寬
固件》 = 0.6.7: 1024個(gè)字符寬
在進(jìn)行大型數(shù)據(jù)傳輸時(shí),可能會(huì)傳輸部分有效載荷,并且該命令仍會(huì)產(chǎn)生如果FIFO在第三個(gè)中間時(shí)間未及時(shí)清空,則發(fā)生錯(cuò)誤有效載荷傳輸(因?yàn)閿?shù)據(jù)以最大20字節(jié)的塊傳輸)。如果需要確保可靠的數(shù)據(jù)傳輸,則應(yīng)在發(fā)送數(shù)據(jù)之前始終檢查T(mén)X FIFO的大小,這可以使用AT + BLEUARTFIFO命令進(jìn)行。如果沒(méi)有足夠的空間用于整個(gè)有效負(fù)載,請(qǐng)?zhí)砑右粋€(gè)SW延遲,直到有足夠的可用空間為止。任何單個(gè)AT + BLEUARTTX命令都可以放入FIFO,但是此命令的多個(gè)大實(shí)例可能會(huì)導(dǎo)致FIFO在傳輸過(guò)程中填滿。
AT + BLEUARTTXF
這是一種便捷功能,其作用與 AT + BLEUARTTX ,但數(shù)據(jù)立即在單個(gè)BLE數(shù)據(jù)包(“ force 數(shù)據(jù)包”中為“ F”)中發(fā)送。此命令最多接受 20個(gè)字符,這是單個(gè)數(shù)據(jù)包中可以發(fā)送的字符數(shù)的限制。
代碼庫(kù)修訂:0.7。 6
參數(shù):請(qǐng)參見(jiàn) AT + BLEUARTTX
輸出:請(qǐng)參見(jiàn) AT + BLEUARTTX
AT + BLEUARTRX
如果在命令模式下運(yùn)行時(shí)從UART服務(wù)接收到任何數(shù)據(jù),此命令會(huì)將UART服務(wù)的RX緩沖區(qū)轉(zhuǎn)儲(chǔ)到顯示器。一旦使用此命令顯示數(shù)據(jù),數(shù)據(jù)就會(huì)從緩沖區(qū)中刪除。
切換回?cái)?shù)據(jù)模式時(shí),緩沖區(qū)中剩余的任何字符都會(huì)導(dǎo)致在模式切換后立即顯示緩沖的字符。完整(在可用緩沖區(qū)空間的限制內(nèi),在當(dāng)前黑色的32KB SRAM器件上為1024字節(jié),對(duì)于基于16KB SRAM的藍(lán)色第一代BLEFriend板為160字節(jié))。
代碼庫(kù)修訂版:0.3.0
參數(shù):無(wú)
輸出:RX緩沖區(qū)的內(nèi)容(如果有可用數(shù)據(jù))
,您也可以使用AT + BLEUARTFIFO = RX命令進(jìn)行檢查
下載:文件
復(fù)制代碼
# Command results when data is available
AT+BLEUARTRX
Sent from Android
OK
# Command results when no data is available
AT+BLEUARTRX
OK # Command results when data is available
AT+BLEUARTRX
Sent from Android
OK
# Command results when no data is available
AT+BLEUARTRX
OK
AT + BLEUARTFIFO
此該命令將返回BLE UART TX和RX FIFO中的可用空間。如果要傳輸大量數(shù)據(jù),則可能要在發(fā)送前檢查T(mén)X FIFO中是否有足夠的可用空間,請(qǐng)記住,單個(gè)GATT數(shù)據(jù)包每個(gè)最多可以包含20個(gè)用戶字節(jié)。
代碼庫(kù)修訂:0.6.7
參數(shù):不帶參數(shù)運(yùn)行此命令將返回兩個(gè)逗號(hào)分隔的值,指示TX緩沖區(qū)中的可用空間,然后是RX緩沖區(qū)。要請(qǐng)求特定的緩沖區(qū),可以使用“ TX”或“ RX”值(例如:“ AT + BLEUARTFIFO = TX”)執(zhí)行命令。
輸出 :如果不存在任何參數(shù),則TX和RX FIFO緩沖區(qū)中剩余的可用空間,否則,指定的FIFO緩沖區(qū)中剩余的可用空間。
下載:文件
復(fù)制代碼
AT+BLEUARTFIFO
1024,1024
OK
AT+BLEUARTFIFO=TX
1024
OK
AT+BLEUARTFIFO=RX
1024
OK AT+BLEUARTFIFO
1024,1024
OK
AT+BLEUARTFIFO=TX
1024
OK
AT+BLEUARTFIFO=RX
1024
OK
AT + BLEKEYBOARDEN
此命令將啟用GATT over HID(GoH)鍵盤(pán)支持,使您可以在支持的iOS和Android設(shè)備上模擬鍵盤(pán)。默認(rèn)情況下,HID鍵盤(pán)支持處于禁用狀態(tài),因此您需要將BLEKEYBOARDEN設(shè)置為1,然后執(zhí)行系統(tǒng)重置,然后才能枚舉鍵盤(pán)并出現(xiàn)在手機(jī)的Bluetooth(藍(lán)牙)首選項(xiàng)中,可以將其綁定為BLE鍵盤(pán)。 p》
代碼庫(kù)修訂:0.5.0
參數(shù):1或0(1 =啟用,0 =禁用)
輸出:無(wú)
固件版本版本0.6.6,此命令現(xiàn)在是AT + BLEHIDEN的別名
必須先執(zhí)行系統(tǒng)重置(ATZ),更改才能生效!
i》 在通過(guò)GATT鍵盤(pán)使用HID之前,您需要將移動(dòng)設(shè)備與Bluetooth偏好面板中的Bluefruit LE模塊綁定。
下載:文件
Co py代碼
# Enable BLE keyboard support then reset
AT+BLEKEYBOARDEN=1
OK
ATZ
OK
# Disable BLE keyboard support then reset
AT+BLEKEYBOARDEN=0
OK
ATZ
OK # Enable BLE keyboard support then reset
AT+BLEKEYBOARDEN=1
OK
ATZ
OK
# Disable BLE keyboard support then reset
AT+BLEKEYBOARDEN=0
OK
ATZ
OK
AT + BLEKEYBOARD
通過(guò)BLE鍵盤(pán)界面發(fā)送文本數(shù)據(jù)(如果以前已經(jīng)通過(guò)AT + BLEKEYBOARDEN啟用了該數(shù)據(jù))。
任何有效的alpha-可以發(fā)送數(shù)字字符,并且還支持以下轉(zhuǎn)義序列:
\ r-回車符
\ n-換行符
\ b-Backspace
\ t-Tab
\\-反斜杠
從0.6.7版本開(kāi)始,您還可以使用以下轉(zhuǎn)義代碼發(fā)送單個(gè)字符時(shí)(“ AT + BLEKEYBOARD =?”對(duì)于AT解析器具有另一種含義):
\? -問(wèn)號(hào)
代碼庫(kù)修訂:0.5.0
參數(shù):文本字符串(可選,包括轉(zhuǎn)義符)字符)以傳輸
輸出:無(wú)
下載:文件
復(fù)制代碼
# Send a URI with a new line ending to execute in Chrome, etc.
AT+BLEKEYBOARD=http://www.adafruit.com
OK
# Send a single question mark (special use case, 0.6.7+)
AT+BLEKEYBOARD=\?
OK # Send a URI with a new line ending to execute in Chrome, etc.
AT+BLEKEYBOARD=http://www.adafruit.com
OK
# Send a single question mark (special use case, 0.6.7+)
AT+BLEKEYBOARD=\?
OK
AT + BLEKEYBOARDCODE
將USB HID鍵碼的原始十六進(jìn)制序列發(fā)送到BLE鍵盤(pán)界面,包括鍵修飾符和最多六個(gè)字母數(shù)字
此命令接受以下字符串編碼的字節(jié)數(shù)組有效負(fù)載,與通過(guò)GATT的HID發(fā)送鍵盤(pán)數(shù)據(jù)的方式匹配:
字節(jié)0 :修飾符
字節(jié)1 :保留(應(yīng)始終為00)
字節(jié)2..7 :十六進(jìn)制值)對(duì)應(yīng)于HID鍵(如果不使用任何字符,則可以輸入’00‘或?qū)⑽搽S的字符留空)
與AT + BLEKEYBOARDCODE命令一起發(fā)送,您必須發(fā)送第二個(gè)AT + BLEKEYBOARDCODE命令,該命令至少包含兩個(gè)00個(gè)字符,以指示已釋放鍵!
修飾符值
修飾符字節(jié)可以設(shè)置以下一個(gè)或多個(gè)位:
位0(0x01):左控制
位1(0x02):左移
位2(0x04):左Alt
位3(0x08):左窗口
位4( 0x10):右控制
第5位(0x20):右移
第6位(0x40) :右Alt
第7位(0x80):右窗口
代碼庫(kù)修訂:0.5.0
參數(shù):一組用連字符(’-‘)分隔的十六進(jìn)制值。請(qǐng)注意,這些是HID掃描代碼值,而不是標(biāo)準(zhǔn)ASCII值!
輸出:無(wú)
HID鍵盤(pán)代碼
十六進(jìn)制格式的 HID鍵盤(pán)代碼列表可以可以在此處找到(請(qǐng)參閱第7節(jié)),為方便起見(jiàn),在下面列出:
HID鍵碼值與ASCII鍵碼不對(duì)應(yīng)!例如,“ a”的HID密鑰代碼值為“ 04”,并且由于使用修飾符設(shè)置了大寫(xiě)字母值,因此沒(méi)有大寫(xiě)字母“ A”的密鑰代碼。有關(guān)詳細(xì)信息,請(qǐng)使用谷歌“ usb隱藏鍵盤(pán)掃描代碼”,并查看以下示例。
下載:文件
復(fù)制代碼
0x00 Reserved (no event indicated)
0x01 Keyboard ErrorRollOver
0x02 Keyboard POSTFail
0x03 Keyboard ErrorUndefined
0x04 Keyboard a and A
0x05 Keyboard b and B
0x06 Keyboard c and C
0x07 Keyboard d and D
0x08 Keyboard e and E
0x09 Keyboard f and F
0x0A Keyboard g and G
0x0B Keyboard h and H
0x0C Keyboard i and I
0x0D Keyboard j and J
0x0E Keyboard k and K
0x0F Keyboard l and L
0x10 Keyboard m and M
0x11 Keyboard n and N
0x12 Keyboard o and O
0x13 Keyboard p and P
0x14 Keyboard q and Q
0x15 Keyboard r and R
0x16 Keyboard s and S
0x17 Keyboard t and T
0x18 Keyboard u and U
0x19 Keyboard v and V
0x1A Keyboard w and W
0x1B Keyboard x and X
0x1C Keyboard y and Y
0x1D Keyboard z and Z
0x1E Keyboard 1 and !
0x1F Keyboard 2 and @
0x20 Keyboard 3 and #
0x21 Keyboard 4 and $
0x22 Keyboard 5 and %
0x23 Keyboard 6 and ^
0x24 Keyboard 7 and &
0x25 Keyboard 8 and *
0x26 Keyboard 9 and (
0x27 Keyboard 0 and )
0x28 Keyboard Return (ENTER)
0x29 Keyboard ESCAPE
0x2A Keyboard DELETE (Backspace)
0x2B Keyboard Tab
0x2C Keyboard Spacebar
0x2D Keyboard - and (underscore)
0x2E Keyboard = and +
0x2F Keyboard [ and {
0x30 Keyboard ] and }
0x31 Keyboard \ and |
0x32 Keyboard Non-US # and ~
0x33 Keyboard ; and :
0x34 Keyboard ’ and “
0x35 Keyboard Grave Accent and Tilde
0x36 Keyboard, and 《
0x37 Keyboard 。 and 》
0x38 Keyboard / and ?
0x39 Keyboard Caps Lock
0x3A Keyboard F1
0x3B Keyboard F2
0x3C Keyboard F3
0x3D Keyboard F4
0x3E Keyboard F5
0x3F Keyboard F6
0x40 Keyboard F7
0x41 Keyboard F8
0x42 Keyboard F9
0x43 Keyboard F10
0x44 Keyboard F11
0x45 Keyboard F12
0x46 Keyboard PrintScreen
0x47 Keyboard Scroll Lock
0x48 Keyboard Pause
0x49 Keyboard Insert
0x4A Keyboard Home
0x4B Keyboard PageUp
0x4C Keyboard Delete Forward
0x4D Keyboard End
0x4E Keyboard PageDown
0x4F Keyboard RightArrow
0x50 Keyboard LeftArrow
0x51 Keyboard DownArrow
0x52 Keyboard UpArrow
0x53 Keypad Num Lock and Clear
0x54 Keypad /
0x55 Keypad *
0x56 Keypad -
0x57 Keypad +
0x58 Keypad ENTER
0x59 Keypad 1 and End
0x5A Keypad 2 and Down Arrow
0x5B Keypad 3 and PageDn
0x5C Keypad 4 and Left Arrow
0x5D Keypad 5
0x5E Keypad 6 and Right Arrow
0x5F Keypad 7 and Home
0x60 Keypad 8 and Up Arrow
0x61 Keypad 9 and PageUp
0x62 Keypad 0 and Insert
0x63 Keypad 。 and Delete
0x64 Keyboard Non-US \ and |
0x65 Keyboard Application
0x66 Keyboard Power
0x67 Keypad =
0x68 Keyboard F13
0x69 Keyboard F14
0x6A Keyboard F15
0x6B Keyboard F16
0x6C Keyboard F17
0x6D Keyboard F18
0x6E Keyboard F19
0x6F Keyboard F20
0x70 Keyboard F21
0x71 Keyboard F22
0x72 Keyboard F23
0x73 Keyboard F24
0x74 Keyboard Execute
0x75 Keyboard Help
0x76 Keyboard Menu
0x77 Keyboard Select
0x78 Keyboard Stop
0x79 Keyboard Again
0x7A Keyboard Undo
0x7B Keyboard Cut
0x7C Keyboard Copy
0x7D Keyboard Paste
0x7E Keyboard Find
0x7F Keyboard Mute
0x80 Keyboard Volume Up
0x81 Keyboard Volume Down
0x82 Keyboard Locking Caps Lock
0x83 Keyboard Locking Num Lock
0x84 Keyboard Locking Scroll Lock
0x85 Keypad Comma
0x86 Keypad Equal Sign
0x87 Keyboard International1
0x88 Keyboard International2
0x89 Keyboard International3
0x8A Keyboard International4
0x8B Keyboard International5
0x8C Keyboard International6
0x8D Keyboard International7
0x8E Keyboard International8
0x8F Keyboard International9
0x90 Keyboard LANG1
0x91 Keyboard LANG2
0x92 Keyboard LANG3
0x93 Keyboard LANG4
0x94 Keyboard LANG5
0x95 Keyboard LANG6
0x96 Keyboard LANG7
0x97 Keyboard LANG8
0x98 Keyboard LANG9
0x99 Keyboard Alternate Erase
0x9A Keyboard SysReq/Attention
0x9B Keyboard Cancel
0x9C Keyboard Clear
0x9D Keyboard Prior
0x9E Keyboard Return
0x9F Keyboard Separator
0xA0 Keyboard Out
0xA1 Keyboard Oper
0xA2 Keyboard Clear/Again
0xA3 Keyboard CrSel/Props
0xA4 Keyboard ExSel
0xE0 Keyboard LeftControl
0xE1 Keyboard LeftShift
0xE2 Keyboard LeftAlt
0xE3 Keyboard Left GUI
0xE4 Keyboard RightControl
0xE5 Keyboard RightShift
0xE6 Keyboard RightAlt
0xE7 Keyboard Right GUI 0x00 Reserved (no event indicated)
0x01 Keyboard ErrorRollOver
0x02 Keyboard POSTFail
0x03 Keyboard ErrorUndefined
0x04 Keyboard a and A
0x05 Keyboard b and B
0x06 Keyboard c and C
0x07 Keyboard d and D
0x08 Keyboard e and E
0x09 Keyboard f and F
0x0A Keyboard g and G
0x0B Keyboard h and H
0x0C Keyboard i and I
0x0D Keyboard j and J
0x0E Keyboard k and K
0x0F Keyboard l and L
0x10 Keyboard m and M
0x11 Keyboard n and N
0x12 Keyboard o and O
0x13 Keyboard p and P
0x14 Keyboard q and Q
0x15 Keyboard r and R
0x16 Keyboard s and S
0x17 Keyboard t and T
0x18 Keyboard u and U
0x19 Keyboard v and V
0x1A Keyboard w and W
0x1B Keyboard x and X
0x1C Keyboard y and Y
0x1D Keyboard z and Z
0x1E Keyboard 1 and !
0x1F Keyboard 2 and @
0x20 Keyboard 3 and #
0x21 Keyboard 4 and $
0x22 Keyboard 5 and %
0x23 Keyboard 6 and ^
0x24 Keyboard 7 and &
0x25 Keyboard 8 and *
0x26 Keyboard 9 and (
0x27 Keyboard 0 and )
0x28 Keyboard Return (ENTER)
0x29 Keyboard ESCAPE
0x2A Keyboard DELETE (Backspace)
0x2B Keyboard Tab
0x2C Keyboard Spacebar
0x2D Keyboard - and (underscore)
0x2E Keyboard = and +
0x2F Keyboard [ and {
0x30 Keyboard ] and }
0x31 Keyboard \ and |
0x32 Keyboard Non-US # and ~
0x33 Keyboard ; and :
0x34 Keyboard ‘ and ”
0x35 Keyboard Grave Accent and Tilde
0x36 Keyboard, and 《
0x37 Keyboard 。 and 》
0x38 Keyboard / and ?
0x39 Keyboard Caps Lock
0x3A Keyboard F1
0x3B Keyboard F2
0x3C Keyboard F3
0x3D Keyboard F4
0x3E Keyboard F5
0x3F Keyboard F6
0x40 Keyboard F7
0x41 Keyboard F8
0x42 Keyboard F9
0x43 Keyboard F10
0x44 Keyboard F11
0x45 Keyboard F12
0x46 Keyboard PrintScreen
0x47 Keyboard Scroll Lock
0x48 Keyboard Pause
0x49 Keyboard Insert
0x4A Keyboard Home
0x4B Keyboard PageUp
0x4C Keyboard Delete Forward
0x4D Keyboard End
0x4E Keyboard PageDown
0x4F Keyboard RightArrow
0x50 Keyboard LeftArrow
0x51 Keyboard DownArrow
0x52 Keyboard UpArrow
0x53 Keypad Num Lock and Clear
0x54 Keypad /
0x55 Keypad *
0x56 Keypad -
0x57 Keypad +
0x58 Keypad ENTER
0x59 Keypad 1 and End
0x5A Keypad 2 and Down Arrow
0x5B Keypad 3 and PageDn
0x5C Keypad 4 and Left Arrow
0x5D Keypad 5
0x5E Keypad 6 and Right Arrow
0x5F Keypad 7 and Home
0x60 Keypad 8 and Up Arrow
0x61 Keypad 9 and PageUp
0x62 Keypad 0 and Insert
0x63 Keypad 。 and Delete
0x64 Keyboard Non-US \ and |
0x65 Keyboard Application
0x66 Keyboard Power
0x67 Keypad =
0x68 Keyboard F13
0x69 Keyboard F14
0x6A Keyboard F15
0x6B Keyboard F16
0x6C Keyboard F17
0x6D Keyboard F18
0x6E Keyboard F19
0x6F Keyboard F20
0x70 Keyboard F21
0x71 Keyboard F22
0x72 Keyboard F23
0x73 Keyboard F24
0x74 Keyboard Execute
0x75 Keyboard Help
0x76 Keyboard Menu
0x77 Keyboard Select
0x78 Keyboard Stop
0x79 Keyboard Again
0x7A Keyboard Undo
0x7B Keyboard Cut
0x7C Keyboard Copy
0x7D Keyboard Paste
0x7E Keyboard Find
0x7F Keyboard Mute
0x80 Keyboard Volume Up
0x81 Keyboard Volume Down
0x82 Keyboard Locking Caps Lock
0x83 Keyboard Locking Num Lock
0x84 Keyboard Locking Scroll Lock
0x85 Keypad Comma
0x86 Keypad Equal Sign
0x87 Keyboard International1
0x88 Keyboard International2
0x89 Keyboard International3
0x8A Keyboard International4
0x8B Keyboard International5
0x8C Keyboard International6
0x8D Keyboard International7
0x8E Keyboard International8
0x8F Keyboard International9
0x90 Keyboard LANG1
0x91 Keyboard LANG2
0x92 Keyboard LANG3
0x93 Keyboard LANG4
0x94 Keyboard LANG5
0x95 Keyboard LANG6
0x96 Keyboard LANG7
0x97 Keyboard LANG8
0x98 Keyboard LANG9
0x99 Keyboard Alternate Erase
0x9A Keyboard SysReq/Attention
0x9B Keyboard Cancel
0x9C Keyboard Clear
0x9D Keyboard Prior
0x9E Keyboard Return
0x9F Keyboard Separator
0xA0 Keyboard Out
0xA1 Keyboard Oper
0xA2 Keyboard Clear/Again
0xA3 Keyboard CrSel/Props
0xA4 Keyboard ExSel
0xE0 Keyboard LeftControl
0xE1 Keyboard LeftShift
0xE2 Keyboard LeftAlt
0xE3 Keyboard Left GUI
0xE4 Keyboard RightControl
0xE5 Keyboard RightShift
0xE6 Keyboard RightAlt
0xE7 Keyboard Right GUI
以下示例顯示了如何使用此命令:
下載:文件
復(fù)制代碼
# send ’abc‘ with left shift key (0x02) --》 ’ABC‘
AT+BLEKEYBOARDCODE=02-00-04-05-06-00-00
OK
# Indicate that the keys were released (mandatory!)
AT+BLEKEYBOARDCODE=00-00
OK # send ’abc‘ with left shift key (0x02) --》 ’ABC‘
AT+BLEKEYBOARDCODE=02-00-04-05-06-00-00
OK
# Indicate that the keys were released (mandatory?。?/p>
AT+BLEKEYBOARDCODE=00-00
OK
AT + BLEHIDEN
此命令將啟用GATT over HID(GoH)支持,使您可以在受支持的iOS,Android,OSX和Windows 10設(shè)備上模擬鍵盤(pán),鼠標(biāo)或媒體控件。默認(rèn)情況下,HID支持處于禁用狀態(tài),因此您需要將BLEHIDEN設(shè)置為1,然后執(zhí)行系統(tǒng)重置,然后枚舉HID設(shè)備并出現(xiàn)在中央設(shè)備上。
代碼庫(kù)修訂 》:0.6.6
參數(shù):1或0(1 =啟用,0 =禁用)
輸出:無(wú)
您通常需要“綁定” Bluefruit LE外設(shè)才能使用HID命令,確切的綁定過(guò)程將從一個(gè)操作系統(tǒng)更改為另一個(gè)操作系統(tǒng)。
如果您以前已綁定到設(shè)備并需要清除綁定,則可以運(yùn)行AT + FACTORYRESET命令,該命令將刪除Bluefruit LE模塊上所有已存儲(chǔ)的綁定數(shù)據(jù)。
下載:文件
復(fù)制代碼
# Enable GATT over HID support on the Bluefruit LE module
AT+BLEHIDEN=1
OK
# Reset so that the changes take effect
ATZ
OK # Enable GATT over HID support on the Bluefruit LE module
AT+BLEHIDEN=1
OK
# Reset so that the changes take effect
ATZ
OK
AT + B LEHIDMOUSEMOVE
移動(dòng)HID鼠標(biāo)或滾動(dòng)指定位置的刻度數(shù)。
所有參數(shù)均為帶符號(hào)的8位值(-128至+127)。正值向右或向下移動(dòng),原點(diǎn)位于左上角。
代碼庫(kù)修訂:0.6.6
參數(shù):X刻度(+/-),Y刻度(+/-),滾輪(+/-),平移輪(+/-)
輸出:無(wú)
下載:文件
復(fù)制代碼
# Move the mouse 100 ticks right and 100 ticks down
AT+BLEHIDMOUSEMOVE=100,100
OK
# Scroll down 20 pixels or lines (depending on context)
AT+BLEHIDMOUSEMOVE=,,20,
OK
# Pan (horizontal scroll) to the right (exact behaviour depends on OS)
AT+BLEHIDMOUSEMOVE=0,0,0,100 # Move the mouse 100 ticks right and 100 ticks down
AT+BLEHIDMOUSEMOVE=100,100
OK
# Scroll down 20 pixels or lines (depending on context)
AT+BLEHIDMOUSEMOVE=,,20,
OK
# Pan (horizontal scroll) to the right (exact behaviour depends on OS)
AT+BLEHIDMOUSEMOVE=0,0,0,100
AT + BLEHIDMOUSEBUTTON
通過(guò)特定的字符串操作HID鼠標(biāo)按鈕。
代碼庫(kù)修訂:0.6.6
參數(shù):按鈕掩碼字符串[L] [R] [M] [B] [F],操作[PRESS] [CLICK] [DOUBLECLICK] [HOLD]
L =左按鈕
R =右按鈕
M =中間按鈕
B =后退按鈕
F =前進(jìn)按鈕
如果第二個(gè)參數(shù)(動(dòng)作)為“ HOLD”,則可以傳遞一個(gè)可選的第三個(gè)參數(shù),以指定按鈕應(yīng)保持的時(shí)間(以毫秒為單位)。
O utput :無(wú)
下載:文件
復(fù)制代碼
# Double click the left mouse button
AT+BLEHIDMOUSEBUTTON=L,doubleclick
OK
# Press the left mouse button down, move the mouse, then release L
# This is required to perform ’drag‘ then stop type operations
AT+BLEHIDMOUSEBUTTON=L
OK
AT+BLEHIDMOUSEMOVE=-100,50
OK
AT+BLEHIDMOUSEBUTTON=0
OK
# Hold the backward mouse button for 200 milliseconds (OS dependent)
AT+BLEHIDMOUSEBUTTON=B,hold,200
OK # Double click the left mouse button
AT+BLEHIDMOUSEBUTTON=L,doubleclick
OK
# Press the left mouse button down, move the mouse, then release L
# This is required to perform ’drag‘ then stop type operations
AT+BLEHIDMOUSEBUTTON=L
OK
AT+BLEHIDMOUSEMOVE=-100,50
OK
AT+BLEHIDMOUSEBUTTON=0
OK
# Hold the backward mouse button for 200 milliseconds (OS dependent)
AT+BLEHIDMOUSEBUTTON=B,hold,200
OK
AT + BLEHIDCONTROLKEY
為綁定的設(shè)備發(fā)送HID媒體控制命令(調(diào)整音量,屏幕亮度,歌曲選擇等)。
代碼庫(kù)修訂 :0.6.6
參數(shù):要發(fā)送的HID控制鍵,后跟可選的延遲時(shí)間(以毫秒為單位)以按住按鈕
控制鍵字符串可以可以是下列值之一:
您還可以發(fā)送’0xABCD‘格式的原始16位十六進(jìn)制值。可以在此處找到16位“ HID消費(fèi)者控制密鑰代碼”的完整列表(請(qǐng)參見(jiàn)第12節(jié))。
輸出:通常沒(méi)有。
系統(tǒng)控件(在大多數(shù)系統(tǒng)上都可以使用)
BRIGHTNESS +
BRIGHTNESS-
媒體控件(適用于大多數(shù)系統(tǒng))
PLAYPAUSE
MEDIANEXT
MEDIAPREVIOUS
MEDIASTOP
聲音控制(在大多數(shù)系統(tǒng)上都可以使用)
音量
靜音
低音
TREBLE
BASS_BOOST
VOLUME +
VOLUME-
BASS +
BASS-
TREBLE +
TREBLE-
應(yīng)用程序啟動(dòng)器(到目前為止僅Windows 10)
EMAILREADER
CALCULATOR
FILEBROWSER
瀏覽器/文件瀏覽器控件(僅適用于Windows/Android上的Firefox)
SEARCH
HOME
返回
前進(jìn)
停止
刷新
書(shū)簽
如果未綁定并連接到中央設(shè)備,此命令將返回ERROR。在運(yùn)行這些命令之前,請(qǐng)確保已連接并啟用了HID支持。
下載:文件
復(fù)制代碼
# Toggle the sound on the bonded central device
AT+BLEHIDCONTROLKEY=MUTE
OK
# Hold the VOLUME+ key for 500ms
AT+BLEHIDCONTROLKEY=VOLUME+,500
OK
# Send a raw 16-bit Consumer Key Code (0x006F = Brightness+)
AT+BLEHIDCONTROLKEY=0x006F
OK # Toggle the sound on the bonded central device
AT+BLEHIDCONTROLKEY=MUTE
OK
# Hold the VOLUME+ key for 500ms
AT+BLEHIDCONTROLKEY=VOLUME+,500
OK
# Send a raw 16-bit Consumer Key Code (0x006F = Brightness+)
AT+BLEHIDCONTROLKEY=0x006F
OK
AT + BLEHIDGAMEPADEN
在HID服務(wù)中啟用HID游戲手柄支持。默認(rèn)情況下,從0.7.6版固件開(kāi)始禁用游戲手柄,因?yàn)樗鼤?huì)在iOS和OS X上引起問(wèn)題,并且只能在基于Android和Windows的設(shè)備上使用。
代碼庫(kù)修訂版:0.7.6
參數(shù):是否應(yīng)通過(guò)以下值之一啟用游戲手柄服務(wù):
on
off
1
0
輸出:如果不帶參數(shù)執(zhí)行,則為數(shù)值將返回指示電池服務(wù)是啟用(1)還是禁用(0)。
此命令需要系統(tǒng)重置才能生效。
AT + BLEHIDGAMEPAD
通過(guò)BLE發(fā)送特定的HID游戲手柄有效載荷
代碼庫(kù)修訂:0.7.0
參數(shù):以下逗號(hào)分隔的參數(shù)可用:
x :左,右:如果X = -1,則按“ LEFT”;如果X = 1,則按“ RIGHT”;如果X = 0,則既不按左,也不按右
y :上,下:如果Y = -1,則按“ UP”;如果Y = 1,則按“ DOWN”;如果Y = 0,則既不按上,也不按
按鈕:0x00-0xFF,這是8個(gè)按鈕0-7的位掩碼
輸出:沒(méi)有任何
HID游戲手柄默認(rèn)從0.7.6版本開(kāi)始被禁用,并且必須首先通過(guò)AT + BLEHIDGAMEPADEN啟用= 1才能使用。
注意:您需要為每個(gè)按鈕發(fā)送’press‘和’release‘事件,否則系統(tǒng)會(huì)認(rèn)為按鈕一直處于按下?tīng)顟B(tài),直到收到釋放狀態(tài)為止。
下載:文件
復(fù)制代碼
# Press ’RIGHT‘ and ’Button0‘ at the same time
AT+BLEHIDGAMEPAD=1,0,0x01
# Press ’UP‘ and ’Button1‘ + ’Button0‘ at the same time
AT+BLEHIDGAMEPAD=0,-1,0x03 # Press ’RIGHT‘ and ’Button0‘ at the same time
AT+BLEHIDGAMEPAD=1,0,0x01
# Press ’UP‘ and ’Button1‘ + ’Button0‘ at the same time
AT+BLEHIDGAMEPAD=0,-1,0x03
AT + BLEMIDIEN
啟用或禁用BLE MIDI服務(wù)。
代碼庫(kù)修訂:0.7。 0
參數(shù):狀態(tài),可以是以下之一:
打開(kāi)
關(guān)閉
0
1
輸出:如果不執(zhí)行任何參數(shù),它將以整數(shù)形式返回MIDI服務(wù)的當(dāng)前狀態(tài),指示如果已啟用(1)或已禁用(0)。
注意:該命令將需要重置才能生效。
下載:文件
復(fù)制代碼
# Check the current state of the MIDI service
AT+BLEMIDIEN
1
OK
# Enable the MIDI Service
AT+BLEMIDIEN=1
OK # Check the current state of the MIDI service
AT+BLEMIDIEN
1
OK
# Enable the MIDI Service
AT+BLEMIDIEN=1
OK
AT + BLEMIDIRX
從緩沖區(qū)讀取傳入的MIDI字符數(shù)組。
代碼庫(kù)修訂:0.7.0
參數(shù):無(wú)
輸出:字節(jié)數(shù)組格式的midi事件
下載:文件
復(fù)制代碼
AT+BLEMIDIRX
90-3C-7F
OK AT+BLEMIDIRX
90-3C-7F
OK
》
AT + BLEMIDITX
發(fā)送MIDI事件到主機(jī)。
代碼庫(kù)修訂:0.7.0
參數(shù):十六進(jìn)制數(shù)組格式的MIDI事件,可以是:
一系列完整的MIDI事件(最多4個(gè)事件)
恰好是1個(gè)完整的MIDI事件+幾個(gè)無(wú)狀態(tài)的運(yùn)行事件(最多7個(gè))
輸出:無(wú)
下載:文件
復(fù)制代碼
# Send 1 event (middle C with max velocity)
AT+BLEMIDITX=90-3C-7F
OK
# Send 2 events
AT+BLEMIDITX=90-3C-7F-A0-3C-7F
OK
# Send 1 full event + running event
AT+BLEMIDITX=90-3C-7F-3C-7F
OK # Send 1 event (middle C with max velocity)
AT+BLEMIDITX=90-3C-7F
OK
# Send 2 events
AT+BLEMIDITX=90-3C-7F-A0-3C-7F
OK
# Send 1 full event + running event
AT+BLEMIDITX=90-3C-7F-3C-7F
OK
AT + BLEBATTEN
按照Bluetooth SIG的定義啟用電池服務(wù)。
代碼庫(kù)修訂:0.7.0
參數(shù):是否通過(guò)以下值中的一個(gè)啟用電池服務(wù):
on
off
1
0
輸出:如果不執(zhí)行任何參數(shù),則將返回一個(gè)數(shù)字值,指示是否維修電池啟用(1)或禁用(0)。
此命令需要系統(tǒng)重置以生效。
下載:文件
復(fù)制代碼
# Enable the Battery Service
AT+BLEBATTEN=1
OK # Enable the Battery Service
AT+BLEBATTEN=1
OK
AT + BLEBATTVAL
設(shè)置電池服務(wù)(如果已啟用)的當(dāng)前電池電量百分比(0..100)。
代碼庫(kù)修訂版:0.7.0
參數(shù):電池百分比在0..100范圍內(nèi)。
輸出:如果不執(zhí)行任何參數(shù),則將當(dāng)前電池電量存儲(chǔ)在特性中。
下載:文件
復(fù)制代碼
# Set the battery level to 72%
AT+BLEBATTVAL=72
OK # Set the battery level to 72%
AT+BLEBATTVAL=72
OK
BLE GAP
GAP代表通用訪問(wèn)配置文件,用于管理與低功耗藍(lán)牙設(shè)備的廣告和連接。
以下命令可用于配置BLE模塊上的GAP設(shè)置。
您可以使用這些命令來(lái)修改廣告數(shù)據(jù)(例如,廣告過(guò)程中出現(xiàn)的設(shè)備名稱),檢索有關(guān)已在兩個(gè)設(shè)備之間建立的連接或斷開(kāi)連接的信息,如果您不再希望保持連接。
AT + GAPCONNECTABLE
此命令可用于防止設(shè)備“可連接”。
代碼庫(kù)修訂:0.7.0
參數(shù):設(shè)備是否應(yīng)使用以下值之一將自身宣傳為可連接:
是
否
1
0
輸出:’connec
Download:file
Copy Code
# Make the device non-connectable (advertising only)
AT+GAPCONNECTABLE=0
OK
# Check the current connectability status
AT+GAPCONNECTABLE
1
OK # Make the device non-connectable (advertising only)
AT+GAPCONNECTABLE=0
OK
# Check the current connectability status
AT+GAPCONNECTABLE
1
OK
AT + GAPGETCONN
顯示當(dāng)前連接狀態(tài)(無(wú)論是否連接到其他BLE設(shè)備)。
代碼庫(kù)修訂 :0.3.0
參數(shù):無(wú)
輸出:如果我們已連接,則為1,否則為0
下載:文件
復(fù)制代碼
# Connected
AT+GAPGETCONN
1
OK
# Not connected
AT+GAPGETCONN
0
OK # Connected
AT+GAPGETCONN
1
OK
# Not connected
AT+GAPGETCONN
0
OK
AT + GAPDISCONNECT
如果我們當(dāng)前已連接,請(qǐng)斷開(kāi)與外部設(shè)備的連接。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:無(wú)
下載:文件
復(fù)制代碼
AT+GAPDISCONNECT
OK AT+GAPDISCONNECT
OK
AT + GAPDEVNAME
獲取或設(shè)置設(shè)備名稱,該名稱包含在Bluefruit LE模塊的廣告負(fù)載中
代碼庫(kù)修訂:0.3.0
參數(shù):
無(wú)法讀取當(dāng)前設(shè)備名稱
如果要更改值,則使用新設(shè)備名稱
輸出:如果命令以讀取模式執(zhí)行,則為設(shè)備名稱
更新設(shè)備名稱會(huì)將新值保留到非易失性存儲(chǔ)器中,并且在重置設(shè)備時(shí)將使用更新的名稱。要將設(shè)備重置為出廠設(shè)置并從內(nèi)存中清除配置數(shù)據(jù),請(qǐng)運(yùn)行AT + FACTORYRESET命令。
下載:文件
復(fù)制代碼
# Read the current device name
AT+GAPDEVNAME
UART
OK
# Update the device name to ‘BLEFriend’
AT+GAPDEVNAME=BLEFriend
OK
# Reset to take effect
ATZ
OK # Read the current device name
AT+GAPDEVNAME
UART
OK
# Update the device name to ‘BLEFriend’
AT+GAPDEVNAME=BLEFriend
OK
# Reset to take effect
ATZ
OK
AT + GAPDELBONDS
Bluefruit LE模塊上存儲(chǔ)的刪除和綁定信息。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:無(wú)
下載:文件
復(fù)制代碼
AT+GAPDELBONDS
OK AT+GAPDELBONDS
OK
AT + GAPINTERVALS
獲取或設(shè)置Bluefruit LE模塊的各種廣告和連接間隔。
使用此命令時(shí)要格外小心,因?yàn)楦拈g隔很容易引起問(wèn)題,并且取決于某些移動(dòng)設(shè)備可能選擇的值不再識(shí)別
代碼庫(kù)修訂:0.3.0
參數(shù):如果更新GAP時(shí)間間隔,可以輸入以下逗號(hào)分隔的值:
最小連接間隔(以毫秒為單位)
最大連接間隔(以毫秒為單位)
快速?gòu)V告間隔(以毫秒為單位)
快速?gòu)V告超時(shí)(以秒為單位)
》 = 0.7.0:低功耗廣告間隔(以毫秒為單位),默認(rèn)= 417.5 ms
為節(jié)省電量,Bluefruit模塊在投放廣告后會(huì)自動(dòng)降低到較低的廣告投放率“快速?gòu)V告超時(shí)”秒。默認(rèn)值為30秒(“快速?gòu)V告超時(shí)”)。在固件《0.7.0中,低功耗廣告間隔被硬編碼為大約0.6s。通過(guò)可選的第五個(gè)參數(shù)在0.7.0固件版本中增加了對(duì)控制低功率間隔的支持。
請(qǐng)注意以下最大和最大限制。 GAP參數(shù):
絕對(duì)最小連接間隔:10ms
絕對(duì)最大連接間隔:4000ms
絕對(duì)最小廣告投放間隔:20ms
絕對(duì)最大快速?gòu)V告投放間隔:10240ms
絕對(duì)最小低投放低功耗廣告間隔:20ms
絕對(duì)最大低功耗廣告間隔:10240ms
如果您只希望更新一個(gè)間隔值,則將其他以逗號(hào)分隔的值保留為空(例如,‘,110,只會(huì)更新第三個(gè)值,廣告間隔)。
輸出:如果讀取當(dāng)前的GAP間隔設(shè)置,則t他將顯示以下逗號(hào)分隔的信息:
最小連接間隔(以毫秒為單位)
最大連接間隔(以毫秒為單位)
廣告間隔(以毫秒為單位)
廣告超時(shí)(以毫秒為單位)
i》 更新GAP間隔會(huì)將新值保留在非易失性存儲(chǔ)器中,并且在重置設(shè)備時(shí)將使用更新后的值。要將設(shè)備重置為出廠設(shè)置并從內(nèi)存中清除配置數(shù)據(jù),請(qǐng)運(yùn)行AT + FACTORYRESET命令。
下載:文件
復(fù)制代碼
# Read the current GAP intervals
AT+GAPINTERVALS
20,100,100,30
# Update all values
AT+GAPINTERVALS=20,200,200,30
OK
# Update only the advertising interval
AT+GAPINTERVALS=,,150,
OK # Read the current GAP intervals
AT+GAPINTERVALS
20,100,100,30
# Update all values
AT+GAPINTERVALS=20,200,200,30
OK
# Update only the advertising interval
AT+GAPINTERVALS=,,150,
OK
AT + GAPSTARTADV
如果還沒(méi)有,則導(dǎo)致Bluefruit LE模塊開(kāi)始傳輸廣告包(假設(shè)我們尚未連接到外部設(shè)備。)
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
輸出:無(wú)
下載:文件
復(fù)制代碼
# Command results when advertising data is not being sent
AT+GAPSTARTADV
OK
# Command results when we are already advertising
AT+GAPSTARTADV
ERROR
# Command results when we are connected to another device
AT+GAPSTARTADV
ERROR # Command results when advertising data is not being sent
AT+GAPSTARTADV
OK
# Command results when we are already advertising
AT+GAPSTARTADV
ERROR
# Command results when we are connected to another device
AT+GAPSTARTADV
ERROR
AT + GAPSTOPADV
阻止廣告數(shù)據(jù)包通過(guò)Bluefruit LE模塊傳輸。
代碼庫(kù)修訂: 0.3.0
參數(shù):無(wú)
Ou tput :無(wú)
下載:文件
復(fù)制代碼
AT+GAPSTOPADV
OK AT+GAPSTOPADV
OK
AT + GAPSETADVDATA
遵循藍(lán)牙4.0或4.1核心規(guī)范中的指導(dǎo),將原始廣告數(shù)據(jù)有效載荷設(shè)置為指定的字節(jié)數(shù)組(覆蓋常規(guī)廣告數(shù)據(jù))。
特別是,核心規(guī)范補(bǔ)充(CSS)v4 包含有關(guān)常見(jiàn)廣告數(shù)據(jù)字段的詳細(xì)信息,例如“標(biāo)志”(A部分,第1.3節(jié))和各種服務(wù)UUID列表(A部分,第1.1節(jié))。藍(lán)牙SIG的通用訪問(wèn)配置文件頁(yè)面上提供了所有可能的GAP數(shù)據(jù)類型的列表。
廣告數(shù)據(jù)有效負(fù)載包含通用訪問(wèn)配置文件數(shù)據(jù),該數(shù)據(jù)以以下格式插入到廣告包中:[U8:LEN ] [U8:數(shù)據(jù)類型值] [n:值]
警告:此該命令要求您具備有關(guān)藍(lán)牙4.0或4.1核心規(guī)范的低級(jí)詳細(xì)信息的知識(shí),并且只能由專業(yè)用戶使用。濫用此命令很容易導(dǎo)致您的設(shè)備無(wú)法被無(wú)線電范圍內(nèi)的中央設(shè)備檢測(cè)到。
警告:此命令將覆蓋正常的廣告有效負(fù)載,并可能阻止某些服務(wù)按預(yù)期方式運(yùn)行。
要將廣告數(shù)據(jù)恢復(fù)為正常的默認(rèn)值,請(qǐng)使用AT + FACTORYRESET命令。
例如,要插入“標(biāo)志”數(shù)據(jù)類型(數(shù)據(jù)類型值為0x01)并將其值設(shè)置為0x06/0b00000110(不支持BR/EDR和LE常規(guī)可發(fā)現(xiàn)模式),我們將使用以下字節(jié)數(shù)組:
下載:文件
復(fù)制代碼
02-01-06 02-01-06
0x02表示條目中的字節(jié)數(shù)
0x01是“數(shù)據(jù)類型值”,并表示這是“ 標(biāo)記’
0x06(0b00000110)是F滯后值,并聲明以下字段(請(qǐng)參見(jiàn)Core Specification 4.0,第3卷,C部分,18.1):
LE常規(guī)可發(fā)現(xiàn)模式(即任何人都可以發(fā)現(xiàn)此設(shè)備)
不支持BR/EDR (即,這是僅適用于低功耗藍(lán)牙的設(shè)備)
如果我們還希望在廣告數(shù)據(jù)中包含兩個(gè)16位服務(wù)UUID(以便偵聽(tīng)設(shè)備知道我們支持這些服務(wù)),則可以將以下數(shù)據(jù)附加到字節(jié)數(shù)組:
下載:文件
復(fù)制代碼
05-02-0D-18-0A-18 05-02-0D-18-0A-18
0x05表示條目(5)中的字節(jié)數(shù)
0x02是“數(shù)據(jù)類型值”,并表示這是“ 16位服務(wù)類UUID的不完整列表”
0x0D 0x18是第一個(gè)16位UUID(轉(zhuǎn)換為 0x180D ,對(duì)應(yīng)于
0x0A 0x18是另一個(gè)16位UUID(轉(zhuǎn)換為 0x180A ,與設(shè)備信息服務(wù)相對(duì)應(yīng))。
包括服務(wù)UUID非常重要,因?yàn)槟承┮苿?dòng)應(yīng)用程序僅適用于在廣告數(shù)據(jù)包中廣告特定服務(wù)UUID的設(shè)備。例如,Nordic Semiconductors的大多數(shù)應(yīng)用程序都是如此。
代碼庫(kù)修訂:0.3.0
參數(shù):應(yīng)該插入廣告包的廣告數(shù)據(jù)部分的原始字節(jié)數(shù)組,請(qǐng)注意不要超出藍(lán)牙核心規(guī)范定義的空間限制。
響應(yīng):無(wú)
下載:文件
復(fù)制代碼
# Advertise as Discoverable and BLE only with 16-bit UUIDs 0x180D and 0x180A
AT+GAPSETADVDATA=02-01-06-05-02-0d-18-0a-18
OK # Advertise as Discoverable and BLE only with 16-bit UUIDs 0x180D and 0x180A
AT+GAPSETADVDATA=02-01-06-05-02-0d-18-0a-18
OK
此命令的結(jié)果可以在下面的截圖中看到,該截圖取自嗅探器,分析了Wireshark中的廣告數(shù)據(jù)包。廣告數(shù)據(jù)有效負(fù)載在圖像底部的原始字節(jié)數(shù)組中以藍(lán)色高亮顯示,而數(shù)據(jù)包分析在上部:
BLE GATT
GATT是通用ATTribute配置文件的標(biāo)準(zhǔn),用于管理連接設(shè)備之間的數(shù)據(jù)組織和數(shù)據(jù)交換。一臺(tái)設(shè)備(外圍設(shè)備)充當(dāng)GATT服務(wù)器,將數(shù)據(jù)存儲(chǔ)在 Attribute 記錄中,連接中的第二臺(tái)設(shè)備(中央設(shè)備)充當(dāng)GATT客戶端,在必要時(shí)向服務(wù)器請(qǐng)求數(shù)據(jù)
以下命令可用于在BLEFriend上創(chuàng)建自定義GATT服務(wù)和特征,用于存儲(chǔ)和交換數(shù)據(jù)。
請(qǐng)注意,您在此處定義的任何特征會(huì)自動(dòng)保存到設(shè)備上的非易失性FLASH配置存儲(chǔ)器中,并在下次設(shè)備啟動(dòng)時(shí)重新初始化。
您需要通過(guò)“ ATZ”執(zhí)行系統(tǒng)重置,然后以下大多數(shù)命令才會(huì)生效!
GATT限制
由于SRAM和資源可用性,以下命令具有以下限制:創(chuàng)建或使用custo時(shí)應(yīng)牢記mer GATT服務(wù)和特性。
這些值適用于固件0.7.0及更高版本:
最大服務(wù)數(shù)量:10
最大服務(wù)數(shù)量特性:30
每個(gè)特性的最大緩沖區(qū)大小:32字節(jié)
CCCD的最大數(shù)量:16
如果要清除以前的任何配置值,請(qǐng)?jiān)谶M(jìn)行新的外圍設(shè)備配置之前輸入“ AT + FACTORYRESET ”命令。
AT + GATTCLEAR
清除設(shè)備上定義的所有自定義GATT服務(wù)和特征。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
響應(yīng):無(wú)
下載:文件
復(fù)制代碼
AT+GATTCLEAR
OK AT+GATTCLEAR
OK
AT + GATTADDSERVICE
添加新的自定義服務(wù)
代碼庫(kù)修訂:0.3.0
參數(shù):此命令接受一組用逗號(hào)分隔的命令用于定義服務(wù)屬性的鍵值對(duì)??梢允褂靡韵骆I值對(duì):
UUID :用于此服務(wù)的16位UUID。 16位值應(yīng)為十六進(jìn)制格式(0x1234)。
UUID128 :用于此服務(wù)的128位UUID。 128位值應(yīng)采用以下格式:00-11-22-33-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
響應(yīng):自定義GATT服務(wù)查找表中服務(wù)的索引值。 (重要的是要跟蹤這些索引值以便以后與服務(wù)一起使用。)
注意:鍵值不區(qū)分大小寫(xiě)
僅可以為服務(wù)輸入一種UUID類型(UUID或UUID128)
下載:文件
復(fù)制代碼
# Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a battery service (UUID = 0x180F) to the peripheral
AT+GATTADDSERVICE=UUID=0x180F
1
OK
# Add a battery measurement characteristic (UUID = 0x2A19), notify enabled
AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100
1
OK # Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a battery service (UUID = 0x180F) to the peripheral
AT+GATTADDSERVICE=UUID=0x180F
1
OK
# Add a battery measurement characteristic (UUID = 0x2A19), notify enabled
AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100
1
OK
下載:文件
復(fù)制代碼
# Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a custom service to the peripheral
AT+GATTADDSERVICE=UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
1
OK
# Add a custom characteristic to the above service (making sure that there
# is no conflict between the 16-bit UUID and bytes 3+4 of the 128-bit service UUID)
AT+GATTADDCHAR=UUID=0x0002,PROPERTIES=0x02,MIN_LEN=1,VALUE=100
1
OK # Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a custom service to the peripheral
AT+GATTADDSERVICE=UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
1
OK
# Add a custom characteristic to the above service (making sure that there
# is no conflict between the 16-bit UUID and bytes 3+4 of the 128-bit service UUID)
AT+GATTADDCHAR=UUID=0x0002,PROPERTIES=0x02,MIN_LEN=1,VALUE=100
1
OK
AT + GATTADDCHAR
為自外圍設(shè)備(通過(guò)AT + GATTADDSERVICE)添加的最后一個(gè)服務(wù)添加自定義特征。
AT + GATTADDCHAR必須在AT + GATTADDSERVICE之后運(yùn)行,并將新特性添加到最后添加的服務(wù)定義。
從Bluefruit LE固件的0.6.6版本開(kāi)始,您現(xiàn)在可以在此命令中使用自定義的128位UUID。請(qǐng)參閱此命令說(shuō)明底部的示例。
代碼庫(kù)修訂:0.3.0
Parameters :此命令接受一組逗號(hào)分隔的鍵值對(duì),用于定義特征屬性??梢允褂靡韵骆I值pais:
UUID :用于特征的16位UUID(將插入到第3和第4個(gè)字節(jié)中父服務(wù)的128位UUID)。此值應(yīng)以十六進(jìn)制格式輸入(例如‘UUID = 0x1234’)。此值必須唯一,并且不得與父服務(wù)的128位UUID的字節(jié)3 + 4沖突。
PROPERTIES :8位特征屬性字段,已定義由Bluetooth SIG提供。可以使用以下值:
0x02-讀取
0x04-寫(xiě)入無(wú)響應(yīng)
0x08-寫(xiě)入
0x10 -通知
0x20-指示
MIN_LEN :此特征值的最小大小(以字節(jié)為單位,最小值= 1,最大值= 20,默認(rèn)= 1)
MAX_LEN :特征值的最大大?。ㄒ宰止?jié)為單位,最小值= 1,最大值= 20,默認(rèn)值= 1)
VALUE :分配給該特性的初始值(在‘MIN_LEN’和‘MAX_LEN’的范圍內(nèi))。值可以是整數(shù)(“ -100”,“ 27” ),十六進(jìn)制值(“ 0xABCD”),字節(jié)數(shù)組(“ aa-bb-cc-dd”)或字符串(“ GATT!”)。
》 = 0.7.0 -DATATYPE :此參數(shù)指示存儲(chǔ)在特征中的數(shù)據(jù)類型,用于幫助正確解析數(shù)據(jù)。它可以是以下值之一:
自動(dòng)(0,默認(rèn)值)
STRING(1)
BYTEARRAY(2)
INTEGER(3)
》 = 0.7.0-description :將指定的字符串添加為特征描述條目
》 = 0.7.0-演示:將指定的值添加為特征表示格式條目
響應(yīng):廣告的索引值自定義GATT特征查詢表中的特征。 (重要的是要跟蹤這些特征索引值,以便以后使用該特征。)
注意:鍵值不區(qū)分大小寫(xiě)
確保16位UUID是唯一的,并且與128位服務(wù)UUID的字節(jié)3 + 4不沖突
下載:文件
復(fù)制代碼
# Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a battery service (UUID = 0x180F) to the peripheral
AT+GATTADDSERVICE=UUID=0x180F
1
OK
# Add a battery measurement characteristic (UUID = 0x2A19), notify enabled
AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100
1
OK # Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a battery service (UUID = 0x180F) to the peripheral
AT+GATTADDSERVICE=UUID=0x180F
1
OK
# Add a battery measurement characteristic (UUID = 0x2A19), notify enabled
AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100
1
OK
下載:文件
復(fù)制代碼
# Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a custom service to the peripheral
AT+GATTADDSERVICE=UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
1
OK
# Add a custom characteristic to the above service (making sure that there
# is no conflict between the 16-bit UUID and bytes 3+4 of the 128-bit service UUID)
AT+GATTADDCHAR=UUID=0x0002,PROPERTIES=0x02,MIN_LEN=1,VALUE=100
1
OK # Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a custom service to the peripheral
AT+GATTADDSERVICE=UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
1
OK
# Add a custom characteristic to the above service (making sure that there
# is no conflict between the 16-bit UUID and bytes 3+4 of the 128-bit service UUID)
AT+GATTADDCHAR=UUID=0x0002,PROPERTIES=0x02,MIN_LEN=1,VALUE=100
1
OK
Bluefruit LE固件的版本 0.6.6 添加了使用新的“ UUID128 ”標(biāo)志添加與父服務(wù)無(wú)關(guān)的自定義128位UUID的功能。 UUID(在傳遞16位‘ UUID ’標(biāo)志時(shí)使用)。
要為您的客戶特征指定128位UUID,請(qǐng)輸入類似于以下內(nèi)容的值語(yǔ)法:
下載:文件
復(fù)制代碼
Bluefruit LE固件的# Add a custom characteristic to the above service using a
# custom 128-bit UUID
AT+GATTADDCHAR=UUID128=00-11-22-33-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF,PROPERTIES=0x02,MIN_LEN=1,VALUE=100
1
OK # Add a custom characteristic to the above service using a
# custom 128-bit UUID
AT+GATTADDCHAR=UUID128=00-11-22-33-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF,PROPERTIES=0x02,MIN_LEN=1,VALUE=100
1
OK
版本 0.7.0 添加了新的 DESCRIPTION 和 PRESENTATION 按鍵,對(duì)應(yīng)于GATT特征用戶描述和GATT特征表示格式描述符。
DESCRIPTION 字段是一個(gè)字符串,其中包含特征的簡(jiǎn)短文本描述。某些應(yīng)用程序可能不會(huì)顯示此數(shù)據(jù),但可以使用類似Nordic在iOS和Android上的“主控制面板”應(yīng)用程序看到。
PRESENTATION 字段包含7字節(jié)封裝特征表示格式數(shù)據(jù)的有效負(fù)載。它需要一組特定的字節(jié)和值才能正常工作。有關(guān)如何格式化有效負(fù)載的詳細(xì)信息,請(qǐng)參見(jiàn)以下鏈接:https://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u = org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml
以下示例顯示了如何使用這兩個(gè)新字段:
下載:文件
復(fù)制代碼
AT+GATTADDCHAR=UUID=0x2A37, PROPERTIES=0x10, MIN_LEN=2, MAX_LEN=3, VALUE=00-40,
DESCRIPTION=HRM Measurement, PRESENTATION=17-00-AC-27-01-00-00 AT+GATTADDCHAR=UUID=0x2A37, PROPERTIES=0x10, MIN_LEN=2, MAX_LEN=3, VALUE=00-40,
DESCRIPTION=HRM Measurement, PRESENTATION=17-00-AC-27-01-00-00
對(duì)于特征表示格式,我們有:
格式= IEEE-11073 32位FLOAT(十進(jìn)制23,十六進(jìn)制0x17)
指數(shù)= 0/無(wú)
單位=熱力學(xué)溫度:華氏度(0x27AC)-藍(lán)牙LE單元列表
命名空間= Bluetooth SIG分配的編號(hào)(0x01)
描述=無(wú)(0x0000)
Nordic的主控制面板應(yīng)用程序的結(jié)果可以在下面看到:
AT + GATTCHAR
獲取或獲取設(shè)置指定的自定義GATT特征的值(基于通過(guò)AT + GATTADDCHAR將特征添加到系統(tǒng)時(shí)返回的索引ID)。
代碼庫(kù)修訂:0.3.0
參數(shù):此函數(shù)采用一個(gè)或兩個(gè)逗號(hào)分隔的函數(shù)(一個(gè)參數(shù)=讀取,兩個(gè)參數(shù)=寫(xiě)入)。
第一個(gè)參數(shù)是從AT + GATTADDCHAR函數(shù)返回的特征索引值。此參數(shù)始終是必需的,如果未輸入第二個(gè)參數(shù),則將返回該特性的當(dāng)前值。
第二個(gè)(可選)參數(shù)是分配給該特性的新值(在MIN_SIZE和
響應(yīng):如果該命令在讀取模式下使用(僅提供特征索引作為值),則響應(yīng)將顯示特征的當(dāng)前值。如果在寫(xiě)模式下使用該命令(提供了兩個(gè)逗號(hào)分隔的值),則將更新特征以使用提供的值。
下載:文件
復(fù)制代碼
# Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a battery service (UUID = 0x180F) to the peripheral
AT+GATTADDSERVICE=UUID=0x180F
1
OK
# Add a battery measurement characteristic (UUID = 0x2A19), notify enabled
AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100
1
OK
# Read the battery measurement characteristic (index ID = 1)
AT+GATTCHAR=1
0x64
OK
# Update the battery measurement characteristic to 32 (hex 0x20)
AT+GATTCHAR=1,32
OK
# Verify the previous write attempt
AT+GATTCHAR=1
0x20
OK # Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a battery service (UUID = 0x180F) to the peripheral
AT+GATTADDSERVICE=UUID=0x180F
1
OK
# Add a battery measurement characteristic (UUID = 0x2A19), notify enabled
AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100
1
OK
# Read the battery measurement characteristic (index ID = 1)
AT+GATTCHAR=1
0x64
OK
# Update the battery measurement characteristic to 32 (hex 0x20)
AT+GATTCHAR=1,32
OK
# Verify the previous write attempt
AT+GATTCHAR=1
0x20
OK
AT + GATTLIST
列出設(shè)備上已定義的所有自定義GATT服務(wù)和特征。
代碼庫(kù)修訂:0.3.0
參數(shù):無(wú)
響應(yīng) 》:設(shè)備上定義的所有自定義服務(wù)和特征的列表。
下載:文件
復(fù)制代碼
# Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a battery service (UUID = 0x180F) to the peripheral
AT+GATTADDSERVICE=UUID=0x180F
1
OK
# Add a battery measurement characteristic (UUID = 0x2A19), notify enabled
AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100
1
OK
# Add a custom service to the peripheral
AT+GATTADDSERVICE=UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
2
OK
# Add a custom characteristic to the above service (making sure that there
# is no conflict between the 16-bit UUID and bytes 3+4 of the 128-bit service UUID)
AT+GATTADDCHAR=UUID=0x0002,PROPERTIES=0x02,MIN_LEN=1,VALUE=100
2
OK
# Get a list of all custom GATT services and characteristics on the device
AT+GATTLIST
ID=01,UUID=0x180F
ID=01,UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,MAX_LEN=1,VALUE=0x64
ID=02,UUID=0x11, UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
ID=02,UUID=0x02,PROPERTIES=0x02,MIN_LEN=1,MAX_LEN=1,VALUE=0x64
OK # Clear any previous custom services/characteristics
AT+GATTCLEAR
OK
# Add a battery service (UUID = 0x180F) to the peripheral
AT+GATTADDSERVICE=UUID=0x180F
1
OK
# Add a battery measurement characteristic (UUID = 0x2A19), notify enabled
AT+GATTADDCHAR=UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,VALUE=100
1
OK
# Add a custom service to the peripheral
AT+GATTADDSERVICE=UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
2
OK
# Add a custom characteristic to the above service (making sure that there
# is no conflict between the 16-bit UUID and bytes 3+4 of the 128-bit service UUID)
AT+GATTADDCHAR=UUID=0x0002,PROPERTIES=0x02,MIN_LEN=1,VALUE=100
2
OK
# Get a list of all custom GATT services and characteristics on the device
AT+GATTLIST
ID=01,UUID=0x180F
ID=01,UUID=0x2A19,PROPERTIES=0x10,MIN_LEN=1,MAX_LEN=1,VALUE=0x64
ID=02,UUID=0x11, UUID128=00-11-00-11-44-55-66-77-88-99-AA-BB-CC-DD-EE-FF
ID=02,UUID=0x02,PROPERTIES=0x02,MIN_LEN=1,MAX_LEN=1,VALUE=0x64
OK
AT + GATTCHARRAW
此只讀命令從特征讀取二進(jìn)制(而不是ASCII)數(shù)據(jù)。它不可打印,但開(kāi)銷較小,并且在Arduino中編寫(xiě)庫(kù)時(shí)更容易。
代碼庫(kù)修訂:0.7.0
參數(shù):用于顯示數(shù)據(jù)的特征的數(shù)字ID
輸出:與指定特征對(duì)應(yīng)的二進(jìn)制數(shù)據(jù)。
注意:這是一個(gè)專用命令,命令末尾沒(méi)有NEWLINE!
調(diào)試
以下調(diào)試命令在Bluefruit LE模塊上可用:
謹(jǐn)慎使用這些命令,因?yàn)樗鼈兒苋菀讓?dǎo)致ARM內(nèi)核出現(xiàn)HardFault錯(cuò)誤,這將導(dǎo)致設(shè)備停止響應(yīng)。
AT + DBGMEMRD
顯示原始內(nèi)存
代碼庫(kù)修訂:0.3.0
參數(shù):可以將以下逗號(hào)分隔的參數(shù)設(shè)置為:與此命令一起使用:
從中讀取內(nèi)存的起始地址(十六進(jìn)制形式,帶或不帶開(kāi)頭的“ 0x”)
字長(zhǎng)(可以為1 、、 2、4或8)
要讀取的字?jǐn)?shù)
輸出:使用指定的十六進(jìn)制格式的原始內(nèi)存內(nèi)容長(zhǎng)度和字長(zhǎng)(有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)下面的示例)
下載:文件
復(fù)制代碼
# Read 12 1-byte values starting at 0x10000009
AT+DBGMEMRD=0x10000009,1,12
FF FF FF FF FF FF FF 00 04 00 00 00
OK
# Try to read 2 4-byte values starting at 0x10000000
AT+DBGMEMRD=0x10000000,4,2
55AA55AA 55AA55AA
OK
# Try to read 2 4-byte values starting at 0x10000009
# This will fail because the Cortex M0 can‘t perform misaligned
# reads, and any non 8-bit values must start on an even address
AT+DBGMEMRD=0x10000009,4,2
MISALIGNED ACCESS
ERROR
# Read 12 1-byte values starting at 0x10000009
AT+DBGMEMRD=0x10000009,1,12
FF FF FF FF FF FF FF 00 04 00 00 00
OK
# Try to read 2 4-byte values starting at 0x10000000
AT+DBGMEMRD=0x10000000,4,2
55AA55AA 55AA55AA
OK
# Try to read 2 4-byte values starting at 0x10000009
# This will fail because the Cortex M0 can’t perform misaligned
# reads, and any non 8-bit values must start on an even address
AT+DBGMEMRD=0x10000009,4,2
MISALIGNED ACCESS
ERROR
AT + DBGNVMRD
顯示非以下內(nèi)容的配置數(shù)據(jù)部分的原始內(nèi)容:易失性內(nèi)存
代碼庫(kù)修訂:0.3.0
屬性:無(wú)
輸出:來(lái)自非易失性存儲(chǔ)器的原始配置數(shù)據(jù)
下載:文件
復(fù)制代碼
AT+DBGNVMRD
FE CA 38 05 00 03 00 00 01 12 01 00 55 41 52 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 00 64 00 64 00 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA FF 00 00
OK AT+DBGNVMRD
FE CA 38 05 00 03 00 00 01 12 01 00 55 41 52 54 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 14 00 64 00 64 00 1E 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 BA FF 00 00
OK
AT + DBGSTACKSIZE
返回當(dāng)前堆棧大小,以在優(yōu)化系統(tǒng)內(nèi)存使用時(shí)幫助檢測(cè)堆棧溢出或檢測(cè)堆棧內(nèi)存使用情況。
代碼庫(kù)修訂:0.4.7
參數(shù):無(wú)
輸出:當(dāng)前的大小堆棧內(nèi)存(以字節(jié)為單位)
下載:文件
復(fù)制編碼e
AT+DBGSTACKSIZE
1032
OK AT+DBGSTACKSIZE
1032
OK
AT + DBGSTACKDUMP
轉(zhuǎn)儲(chǔ)當(dāng)前堆棧內(nèi)容。堆棧存儲(chǔ)器中未使用的部分填充有“ 0xCAFEFOOD”,以幫助確定堆棧使用的停止位置。
此命令僅用于調(diào)試和開(kāi)發(fā)目的。
代碼庫(kù)修訂strong》:0.4.7
參數(shù):無(wú)
輸出:整個(gè)堆棧區(qū)域的內(nèi)存內(nèi)容
下載:文件
復(fù)制代碼
AT+DBGSTACKDUMP
0x20003800: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003810: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003820: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003830: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003840: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003850: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003860: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003870: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003880: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003890: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038A0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038B0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038C0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038D0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038E0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038F0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003900: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003910: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003920: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003930: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003940: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003950: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003960: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003970: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003980: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003990: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039A0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039B0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039C0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039D0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039E0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039F0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A00: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A10: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A20: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A30: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A40: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A50: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A60: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A70: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A80: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A90: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AA0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AB0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AC0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AD0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AE0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AF0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B00: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B10: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B20: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B30: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B40: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B50: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B60: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B70: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B80: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B90: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BA0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BB0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BC0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BD0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BE0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BF0: CAFEF00D CAFEF00D 00000000 CAFEF00D
0x20003C00: 00000004 20001D04 CAFEF00D FFFFEF68
0x20003C10: CAFEF00D 00001098 CAFEF00D CAFEF00D
0x20003C20: CAFEF00D CAFEF00D 00001006 200018D8
0x20003C30: 00000001 200018D8 20001C50 00000004
0x20003C40: 20001BB0 000134A5 0000100D 20001D28
0x20003C50: 00000006 00000006 20001C38 20001D44
0x20003C60: 20001C6C 20001D44 00000006 00000005
0x20003C70: 20001D38 00000005 20001D38 00000000
0x20003C80: 00000001 00012083 200018C8 000013D3
0x20003C90: 00550000 00000001 80E80000 4FC40000
0x20003CA0: 000080E8 00000009 60900000 000080E8
0x20003CB0: 60140000 20002764 0009608F 000080E8
0x20003CC0: 80000000 000080E8 00000000 00129F5F
0x20003CD0: 00000000 0001E4D9 80E80000 200018C8
0x20003CE0: 200018D4 00000000 80E80000 000000FF
0x20003CF0: 0000011C 0001BCE1 0000203A 0001BC1D
0x20003D00: 00000000 0001BC1D 80E80000 0001BCE1
0x20003D10: 0000011C 0001BDA9 80E80000 0001BDA9
0x20003D20: 0000011C FFFFFFF9 008B8000 0001BC1D
0x20003D30: 00000048 00000010 0000A000 00000009
0x20003D40: 0001E326 00000001 80E80000 51538000
0x20003D50: 000080E8 0001E9CF 00000000 00000009
0x20003D60: 61C78000 000080E8 00000048 00000504
0x20003D70: 0000A1FC 0002125C 00000000 000080E8
0x20003D80: 00000000 0012A236 00000000 0001E4D9
0x20003D90: 000080E8 00000009 00004998 000080E8
0x20003DA0: 622C8000 0012A29B 00000042 0001E479
0x20003DB0: 40011000 000185EF 00006E10 00000000
0x20003DC0: 00000000 00000004 0000000C 00000000
0x20003DD0: 62780000 00018579 2000311B 0001ACDF
0x20003DE0: 00000000 20003054 20002050 00000001
0x20003DF0: 20003DF8 0002085D 00000001 200030D4
0x20003E00: 00000200 0001F663 00000001 200030D4
0x20003E10: 00000001 2000311B 0001F631 00020A6D
0x20003E20: 00000001 00000000 0000000C 200030D4
0x20003E30: 2000311B 00000042 200030D4 00020AD7
0x20003E40: 20002050 200030D4 20002050 00020833
0x20003E50: 20002050 20003F1B 20002050 0001FF89
0x20003E60: 20002050 0001FFA3 00000005 20003ED8
0x20003E70: 20002050 0001FF8B 00000010 00020491
0x20003E80: 00000001 0012A54E 00000020 00022409
0x20003E90: 00000000 20002050 200030D4 0001FF8B
0x20003EA0: 00021263 00000005 0000000C 20003F74
0x20003EB0: 20003ED8 20002050 200030D4 00020187
0x20003EC0: 20003ED4 20003054 00000000 20003F75
0x20003ED0: 00000008 20003F64 00000084 FFFFFFFF
0x20003EE0: FFFFFFFF 00000008 00000001 00000008
0x20003EF0: 20302058 2000311B 0001F631 00020A6D
0x20003F00: 20002050 00000000 0000000C 200030D4
0x20003F10: 32002050 32303032 00323330 000258D7
0x20003F20: 20002050 200030D4 20002050 00020833
0x20003F30: 00000000 20002050 00000020 000001CE
0x20003F40: 20003F40 200030D4 00000004 0001ED83
0x20003F50: 200030D4 20003F60 000001D6 000001D7
0x20003F60: 000001D8 00016559 0000000C 00000000
0x20003F70: 6C383025 00000058 200030D4 FFFFFFFF
0x20003F80: 1FFF4000 00000028 00000028 000217F8
0x20003F90: 200020C7 000166C5 000166AD 00017ED9
0x20003FA0: FFFFFFFF 200020B8 2000306C 200030D4
0x20003FB0: 200020B4 000180AD 1FFF4000 200020B0
0x20003FC0: 200020B0 200020B0 1FFF4000 0001A63D
0x20003FD0: CAFEF00D CAFEF00D 200020B4 00000002
0x20003FE0: FFFFFFFF FFFFFFFF 1FFF4000 00000000
0x20003FF0: 00000000 00000000 00000000 00016113
OK AT+DBGSTACKDUMP
0x20003800: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003810: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003820: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003830: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003840: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003850: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003860: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003870: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003880: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003890: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038A0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038B0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038C0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038D0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038E0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200038F0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003900: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003910: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003920: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003930: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003940: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003950: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003960: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003970: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003980: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003990: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039A0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039B0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039C0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039D0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039E0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x200039F0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A00: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A10: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A20: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A30: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A40: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A50: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A60: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A70: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A80: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003A90: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AA0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AB0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AC0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AD0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AE0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003AF0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B00: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B10: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B20: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B30: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B40: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B50: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B60: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B70: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B80: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003B90: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BA0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BB0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BC0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BD0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BE0: CAFEF00D CAFEF00D CAFEF00D CAFEF00D
0x20003BF0: CAFEF00D CAFEF00D 00000000 CAFEF00D
0x20003C00: 00000004 20001D04 CAFEF00D FFFFEF68
0x20003C10: CAFEF00D 00001098 CAFEF00D CAFEF00D
0x20003C20: CAFEF00D CAFEF00D 00001006 200018D8
0x20003C30: 00000001 200018D8 20001C50 00000004
0x20003C40: 20001BB0 000134A5 0000100D 20001D28
0x20003C50: 00000006 00000006 20001C38 20001D44
0x20003C60: 20001C6C 20001D44 00000006 00000005
0x20003C70: 20001D38 00000005 20001D38 00000000
0x20003C80: 00000001 00012083 200018C8 000013D3
0x20003C90: 00550000 00000001 80E80000 4FC40000
0x20003CA0: 000080E8 00000009 60900000 000080E8
0x20003CB0: 60140000 20002764 0009608F 000080E8
0x20003CC0: 80000000 000080E8 00000000 00129F5F
0x20003CD0: 00000000 0001E4D9 80E80000 200018C8
0x20003CE0: 200018D4 00000000 80E80000 000000FF
0x20003CF0: 0000011C 0001BCE1 0000203A 0001BC1D
0x20003D00: 00000000 0001BC1D 80E80000 0001BCE1
0x20003D10: 0000011C 0001BDA9 80E80000 0001BDA9
0x20003D20: 0000011C FFFFFFF9 008B8000 0001BC1D
0x20003D30: 00000048 00000010 0000A000 00000009
0x20003D40: 0001E326 00000001 80E80000 51538000
0x20003D50: 000080E8 0001E9CF 00000000 00000009
0x20003D60: 61C78000 000080E8 00000048 00000504
0x20003D70: 0000A1FC 0002125C 00000000 000080E8
0x20003D80: 00000000 0012A236 00000000 0001E4D9
0x20003D90: 000080E8 00000009 00004998 000080E8
0x20003DA0: 622C8000 0012A29B 00000042 0001E479
0x20003DB0: 40011000 000185EF 00006E10 00000000
0x20003DC0: 00000000 00000004 0000000C 00000000
0x20003DD0: 62780000 00018579 2000311B 0001ACDF
0x20003DE0: 00000000 20003054 20002050 00000001
0x20003DF0: 20003DF8 0002085D 00000001 200030D4
0x20003E00: 00000200 0001F663 00000001 200030D4
0x20003E10: 00000001 2000311B 0001F631 00020A6D
0x20003E20: 00000001 00000000 0000000C 200030D4
0x20003E30: 2000311B 00000042 200030D4 00020AD7
0x20003E40: 20002050 200030D4 20002050 00020833
0x20003E50: 20002050 20003F1B 20002050 0001FF89
0x20003E60: 20002050 0001FFA3 00000005 20003ED8
0x20003E70: 20002050 0001FF8B 00000010 00020491
0x20003E80: 00000001 0012A54E 00000020 00022409
0x20003E90: 00000000 20002050 200030D4 0001FF8B
0x20003EA0: 00021263 00000005 0000000C 20003F74
0x20003EB0: 20003ED8 20002050 200030D4 00020187
0x20003EC0: 20003ED4 20003054 00000000 20003F75
0x20003ED0: 00000008 20003F64 00000084 FFFFFFFF
0x20003EE0: FFFFFFFF 00000008 00000001 00000008
0x20003EF0: 20302058 2000311B 0001F631 00020A6D
0x20003F00: 20002050 00000000 0000000C 200030D4
0x20003F10: 32002050 32303032 00323330 000258D7
0x20003F20: 20002050 200030D4 20002050 00020833
0x20003F30: 00000000 20002050 00000020 000001CE
0x20003F40: 20003F40 200030D4 00000004 0001ED83
0x20003F50: 200030D4 20003F60 000001D6 000001D7
0x20003F60: 000001D8 00016559 0000000C 00000000
0x20003F70: 6C383025 00000058 200030D4 FFFFFFFF
0x20003F80: 1FFF4000 00000028 00000028 000217F8
0x20003F90: 200020C7 000166C5 000166AD 00017ED9
0x20003FA0: FFFFFFFF 200020B8 2000306C 200030D4
0x20003FB0: 200020B4 000180AD 1FFF4000 200020B0
0x20003FC0: 200020B0 200020B0 1FFF4000 0001A63D
0x20003FD0: CAFEF00D CAFEF00D 200020B4 00000002
0x20003FE0: FFFFFFFF FFFFFFFF 1FFF4000 00000000
0x20003FF0: 00000000 00000000 00000000 00016113
OK
歷史記錄
此頁(yè)面根據(jù)固件版本號(hào)(您可以通過(guò)“ ATI”命令獲得)跟蹤對(duì)AT命令集的添加或更改:
版本0.7.7
在0.7.7發(fā)行版中添加了以下AT命令和功能:
添加了 AT + BLEUARTTXF (強(qiáng)制使用F)以立即在BLE中發(fā)送指定的數(shù)據(jù)UART數(shù)據(jù)包(最大20個(gè)字節(jié)),繞過(guò)任何FIFO延遲,避免了可能在兩個(gè)事務(wù)中傳輸數(shù)據(jù)包。
調(diào)整后的BLE UART服務(wù)使用最小連接間隔作為發(fā)送間隔
AT + DFUIRQ ,以在nRF51822上存在支持的事件時(shí)啟用將DFU引腳用于IRQ
為Bluefruit SPI板啟用CS引腳上的內(nèi)部上拉電阻
添加了 AT + MODESWITCHEN ,以啟用/禁用從本地(串行或S PI)或BLE UART端。默認(rèn)情況下,本地=啟用,布爾=禁用,這意味著默認(rèn)情況下只能通過(guò)本地接口執(zhí)行命令。
實(shí)施了‘\ +’轉(zhuǎn)義碼以立即發(fā)送‘+’字符而不觸發(fā)++ +延遲等待進(jìn)一步的相似輸入
添加了 AT + BLEHIDGAMEPADEN 以分別啟用HID游戲手柄,因?yàn)閕OS/OSX與游戲手柄設(shè)備發(fā)生沖突,導(dǎo)致HID鍵盤(pán)無(wú)法正常工作。
以下錯(cuò)誤已在0.7.7版中修復(fù):
修復(fù)了當(dāng)app_error_handler()出現(xiàn)長(zhǎng)時(shí)間延遲時(shí)的出廠重置問(wèn)題
修復(fù)了在UART中字符串被截?cái)酁?4個(gè)字符的問(wèn)題
修復(fù)了HID鍵盤(pán)支持,不適用于iOS 9和10
》
版本0.7.0
0.7中添加了以下AT命令。 0版本:
AT + BAUDRATE
更改HWUART波特率
AT + UARTFLOW
啟用或禁用硬件UARTflow控制
AT + BLEMIDIEN =打開(kāi)/關(guān)閉/0/1
啟用/禁用MIDI服務(wù),需要重置才能生效
AT + BLEMIDITX
發(fā)送MIDI事件
AT + BLEMIDIRX
接收可用的MIDI事件
AT + GATTCHARRAW
添加了此只讀命令,以從特征讀取二進(jìn)制(而不是ASCII)數(shù)據(jù)。它是不可打印的,但開(kāi)銷較小,并且更容易在Arduino中編寫(xiě)庫(kù)
AT + NVMWRITE = offset,datatype,data
將數(shù)據(jù)寫(xiě)入256字節(jié)用戶NVM。數(shù)據(jù)類型必須為STRING(1),BYTEARRAY(2)或INTEGER(3)
AT + NVMREAD = offset,size,datatype
從256個(gè)字節(jié)的用戶NVM中讀取數(shù)據(jù)
AT + NVMREADRAW = offset,size二進(jìn)制數(shù)據(jù)
返回二進(jìn)制數(shù)據(jù)(而不是ASCII),以“ OK \ r \ n”結(jié)尾。它是不可打印的,但開(kāi)銷較小,在某些情況下更易于使用。
AT + BLEHIDGAMEPAD = x,y,按鈕
X是左,右:X =按下-1 LEFT,按下X = 1 RIGHT,按下X = 0,沒(méi)有按下
Y是UP,DOWN:Y = -1 i UP,Y = 1是按下,Y = 0,沒(méi)有按下
按鈕[0x00-0xFF]是8個(gè)按鈕0-7的位掩碼
AT + GAPCONNECTABLE = on/off/1/0
允許/禁止連接到設(shè)備
AT + EDDYSTONESERVICEEN
將EddyStone服務(wù)添加/刪除到GATT表(需要重置)
AT + EDDYSTONEBROADCAST = on/off/0/1
使用NVM中的設(shè)置開(kāi)始/停止廣播url
AT + BLEBATTEN = on/off/1/0
啟用電池服務(wù)。由于服務(wù)更改而需要重置。
AT + BLEBATTVAL = percent
更新電池電量,百分比為0到100
以下命令已更改: 0.7.0版本:
AT + GATTADDCHAR
添加了DATATYPE選項(xiàng)以指示GATT特征有效負(fù)載的數(shù)據(jù)類型。有效選項(xiàng)為:AUTO( 0,默認(rèn)值),STRING(1),BYTEARRAY(2),INTEGER(3)
通過(guò)Description標(biāo)志添加了特征用戶描述選項(xiàng)
通過(guò)PRESENTATION添加了特征表示格式支持標(biāo)志
AT + GAPINTERVALS
添加了新的“ adv_lowpower_interval”參數(shù),默認(rèn)值為417.5 ms?,F(xiàn)在,當(dāng)前參數(shù)為:min_conn,max_conn,adv_interval,adv_timeout,adv_lowpower_interval
此版本中的主要錯(cuò)誤修復(fù)和更改:
重要的BTLE UART速度和可靠性改進(jìn)
為以下項(xiàng)添加了回調(diào)支持(正在進(jìn)行中):
BLE UART RX
GATT特性RX
MIDI RX
連接/斷開(kāi)
每個(gè)特性的MAX_LEN從20字節(jié)增加到32字節(jié)
更改了默認(rèn)的GAP參數(shù):
廣告間隔= 20ms
最小連接間隔= 20 ms
最大連接間隔= 40 ms
增加了默認(rèn)情況下,保存為Flash的CCCD的最大數(shù)量從8減少到16
Eddystone配置服務(wù)
刪除了AT + EDDYSTONEENABLE以避免混淆
將Eddystone的廣告超時(shí)更改為‘unlimited’
修復(fù)了寫(xiě)-無(wú)響應(yīng)特征屬性,該屬性未得到正確處理
修復(fù)了時(shí)序限制,無(wú)法滿足App le設(shè)計(jì)指南
將系統(tǒng)固定到ms計(jì)算
使用google eddystone驗(yàn)證器固定所有測(cè)試,但寫(xiě)入tx_power = 1 dB(在nrf51上無(wú)效)
已固定一個(gè)錯(cuò)誤,其中從中央進(jìn)行寫(xiě)入無(wú)法正確更新特征上的值
修復(fù)了HID示例的問(wèn)題,當(dāng)與中央進(jìn)行配對(duì)時(shí),斷開(kāi)連接然后重新連接就無(wú)法再發(fā)送HID報(bào)告了
版本0.6.7
0.6.7版本中添加了以下AT命令:
AT + BLEUARTFIFO
返回藍(lán)牙UART服務(wù)的TX和RX FIFO中可用的可用字節(jié)數(shù)。
在0.6.7版本中更改了以下命令:
AT + BLEUARTTX
如果TX FIFO已滿,則該命令將等待最多200ms,以查看由于FIFO已滿而在退出并返回錯(cuò)誤響應(yīng)之前FIFO大小是否減小。
AT + BLEURIBEACON
Th命令將返回使用舊的(不建議使用的)UriBeacon UUID(0xFED8),并且只有AT + EDDYSTONEURL命令將使用較新的Eddystone UUID(0xFEAA)。
AT + BLEKEYBOARD和AT + BLEUARTTX
這些命令現(xiàn)在接受‘\?’因?yàn)椤瓵T + BLEKEYBOARD =?對(duì)于AT解析器還有另一個(gè)含義。要發(fā)送單個(gè)問(wèn)號(hào),應(yīng)使用以下命令:’AT + BLEKEYBOARD = \?‘或’AT + BLEUARTTX = \?‘
AT + EDDYSTONEURL
此命令現(xiàn)在接受RSSI的第三個(gè)可選參數(shù),值為0m(默認(rèn)值為-18dBm)。
不帶此命令運(yùn)行此命令參數(shù)(’AT + EDDYSTONEURL \ r \ n‘)現(xiàn)在將返回當(dāng)前URL。
此版本中的主要錯(cuò)誤修復(fù):
FIFO處理改進(jìn)了UART UART服務(wù)的速度和穩(wěn)定性,并且TX和RF FIFO分別增加到1024字節(jié)。
解決了計(jì)時(shí)器溢出每4小時(shí)左右導(dǎo)致工廠重置的問(wèn)題。
修復(fù)了GATT服務(wù)器的一個(gè)問(wèn)題,其中錯(cuò)誤地為’max_len‘》 4
版本0.6.6
0.6中添加了以下AT命令.6版本:
AT + EDDYSTONEURL
更新信標(biāo)的URL并切換到信標(biāo)模式
AT + EDDYSTONEENABLE
啟用/禁用信標(biāo)mod e使用已配置的url
AT + EDDYSTONECONFIGEN
在指定的秒數(shù)內(nèi)為Eddystone配置服務(wù)啟用廣告
AT + HWMODELED
允許用戶覆蓋默認(rèn)MODE LED行為,具有以下選項(xiàng)之一:DISABLE,MODE,HWUART,BLEUART,SPI,MANUAL
AT + BLECONTROLKEY
允許將HID媒體控制值發(fā)送到綁定的中央設(shè)備(音量,屏幕亮度等)。
AT + BLEHIDEN
啟用或禁用Bluefruit LE固件(鼠標(biāo),鍵盤(pán)和媒體控件)中的BLE HID支持
AT + BLEMOUSEMOVE
移動(dòng)HID鼠標(biāo)
AT + BLEMOUSEBUTTON
設(shè)置HID鼠標(biāo)按鈕的狀態(tài)
在0.6中更改了以下命令。 6版本:
此版本中的主要錯(cuò)誤修復(fù):
此發(fā)行版的已知問(wèn)題:
AT + BLEKEYBOARDEN-現(xiàn)在是AT + BLEHIDEN的別名
AT + GATTADDCHAR-添加了一個(gè)新的UUID128字段以允許自定義UUID
修復(fù)了帶有長(zhǎng)信標(biāo)URL的問(wèn)題
修復(fù)了at + blebeacon中主要號(hào)碼和次要號(hào)碼的大端序問(wèn)題
Windows 10似乎支持以下特征的有限數(shù)量DIS服務(wù)。我們必須禁用序列號(hào)特性才能在Windows 10中啟用HID支持。
版本0.6.5
在0.6.5版本中添加了以下AT命令:
AT + BLEGETPEERADDR
在0.6.5版本中更改了以下命令:
(在nRF51上)將UART緩沖區(qū)大小從128字節(jié)增加到256字節(jié)
+++現(xiàn)在以當(dāng)前操作模式做出響應(yīng)
修復(fù)了有時(shí)未保存到NVM的AT + GATTCHAR值的錯(cuò)誤
修復(fù)了AT + GATTCHAR的錯(cuò)誤重置后未考慮值(重新填充值時(shí)始終使用min_len)
版本0.6.2
這是第一個(gè)針對(duì) 32KB SRAM部件(QFAC)的發(fā)行版。由于內(nèi)存管理問(wèn)題,此固件無(wú)法使用16KB SRAM部件,而應(yīng)使用早期的0.5.0固件。
在0.6.2版本中更改了以下AT命令:
AT + BLEUARTTX
添加了用于新行,制表符和退格鍵的基本轉(zhuǎn)義碼
AT + BLEKEYBOARD
現(xiàn)在也適用于OS X,并且可以功能與其他支持BLE HID鍵盤(pán)的操作系統(tǒng)
版本0.5.0
在0.5.0版本中添加了以下AT命令:
AT + BLEKEYBOARDEN
AT + BLEKEYBOARD
AT + BLEKEYBOARDCODE
在0.5.0版本中更改了以下AT命令:
ATI
SoftDevice,SoftDevice版本和Bootloader版本被添加為新記錄(第7個(gè))。例如:“ S110 7.1.0,0.0”表示S110軟設(shè)備的7.1.0版本與0.0引導(dǎo)程序一起使用(將來(lái)的板將使用較新的0.1引導(dǎo)程序)。
其他說(shuō)明關(guān)于0.5.0:
從版本0.5.0開(kāi)始,可以通過(guò)按住DFU按鈕的任意位置(無(wú)需終端仿真器)在任意位置執(zhí)行 AT + FACTORYRESET 命令保持10秒鐘,直到藍(lán)色的CONNECTED LED開(kāi)始閃爍,然后釋放它。
版本0.4.7
在0.4.7版本中添加了以下AT命令:
+++
AT + HWRANDOM
AT + BLEURIBEACON
AT + DBGSTACKSIZE
AT + DBGSTACKDUMP
以下命令在0.4中進(jìn)行了更改。 7版本:
ATI
在芯片名稱之后添加了芯片修訂版。 ATI以前會(huì)報(bào)告’nRF51822‘,但現(xiàn)在會(huì)添加特定的硬件版本(如果可以檢測(cè)到的話)(例如’nRF51822 QFAAG00‘)
版本0.3.0
首次公開(kāi)發(fā)行
》命令示例
在命令模式下操作以執(zhí)行特定任務(wù)時(shí),可以使用以下代碼段。
心率監(jiān)視器服務(wù)
下面的命令列表將向BLEFriend的心率表添加心率服務(wù)屬性表,具有兩個(gè)特征:
心率測(cè)量
身體傳感器位置
下載:文件
復(fù)制代碼
# Perform a factory reset to make sure we get a clean start
AT+FACTORYRESET
OK
# Add the Heart Rate service entry
AT+GATTADDSERVICE=UUID=0x180D
1
OK
# Add the Heart Rate Measurement characteristic
AT+GATTADDCHAR=UUID=0x2A37, PROPERTIES=0x10, MIN_LEN=2, MAX_LEN=3, VALUE=00-40
1
OK
# Add the Body Sensor Location characteristic
AT+GATTADDCHAR=UUID=0x2A38, PROPERTIES=0x02, MIN_LEN=1, VALUE=3
2
OK
# Create a custom advertising packet that includes the Heart Rate service UUID
AT+GAPSETADVDATA=02-01-06-05-02-0d-18-0a-18
OK
# Reset the device to start advertising with the custom payload
ATZ
OK
# Update the value of the heart rate measurement (set it to 0x004A)
AT+GATTCHAR=1,00-4A
OK # Perform a factory reset to make sure we get a clean start
AT+FACTORYRESET
OK
# Add the Heart Rate service entry
AT+GATTADDSERVICE=UUID=0x180D
1
OK
# Add the Heart Rate Measurement characteristic
AT+GATTADDCHAR=UUID=0x2A37, PROPERTIES=0x10, MIN_LEN=2, MAX_LEN=3, VALUE=00-40
1
OK
# Add the Body Sensor Location characteristic
AT+GATTADDCHAR=UUID=0x2A38, PROPERTIES=0x02, MIN_LEN=1, VALUE=3
2
OK
# Create a custom advertising packet that includes the Heart Rate service UUID
AT+GAPSETADVDATA=02-01-06-05-02-0d-18-0a-18
OK
# Reset the device to start advertising with the custom payload
ATZ
OK
# Update the value of the heart rate measurement (set it to 0x004A)
AT+GATTCHAR=1,00-4A
OK
》
Python腳本
以下代碼執(zhí)行相同的功能,但已放置使用PySerial在Python包裝器中顯示如何為AT解析器編寫(xiě)動(dòng)作腳本。
下載:文件
復(fù)制代碼
import io
import sys
import serial
import random
from time import sleep
filename = “hrm.py”
ser = None
serio = None
verbose = True # Set this to True to see all of the incoming serial data
def usage():
“”“Displays information on the command-line parameters for this script”“”
print “Usage: ” + filename + “ ”
print “For example: ”
print “ Windows : ” + filename + “ COM14”
print “ OS X : ” + filename + “ /dev/tty.usbserial-DN009WNO”
print “ Linux : ” + filename + “ /dev/ttyACM0”
return
def checkargs():
“”“Validates the command-line arguments for this script”“”
if len(sys.argv) 《 2:
print “ERROR: Missing serialPort”
usage()
sys.exit(-1)
if len(sys.argv) 》 2:
print “ERROR: Too many arguments (expected 1)。”
usage()
sys.exit(-2)
def errorhandler(err, exitonerror=True):
“”“Display an error message and exit gracefully on ”ERROR “ responses”“”
print “ERROR: ” + err.message
if exitonerror:
ser.close()
sys.exit(-3)
def atcommand(command, delayms=0):
“”“Executes the supplied AT command and waits for a valid response”“”
serio.write(unicode(command + “ ”))
if delayms:
sleep(delayms/1000)
rx = None
while rx != “OK ” and rx != “ERROR ”:
rx = serio.readline(2000)
if verbose:
print unicode(rx.rstrip(“ ”))
# Check the return value
if rx == “ERROR ”:
raise ValueError(“AT Parser reported an error on ’” + command.rstrip() + “‘”)
if __name__ == ’__main__‘:
# Make sure we received a single argument (comPort)
checkargs()
# This will automatically open the serial port (no need for ser.open)
ser = serial.Serial(port=sys.argv[1], baudrate=9600, rtscts=True)
serio = io.TextIOWrapper(io.BufferedRWPair(ser, ser, 1),
newline=’ ‘,
line_buffering=True)
# Add the HRM service and characteristic definitions
try:
atcommand(“AT+FACTORYRESET”, 1000) # Wait 1s for this to complete
atcommand(“AT+GATTCLEAR”)
atcommand(“AT+GATTADDSERVICE=UUID=0x180D”)
atcommand(“AT+GATTADDCHAR=UUID=0x2A37, PROPERTIES=0x10, MIN_LEN=2, MAX_LEN=3, VALUE=00-40”)
atcommand(“AT+GATTADDCHAR=UUID=0x2A38, PROPERTIES=0x02, MIN_LEN=1, VALUE=3”)
atcommand(“AT+GAPSETADVDATA=02-01-06-05-02-0d-18-0a-18”)
# Perform a system reset and wait 1s to come back online
atcommand(“ATZ”, 1000)
# Update the value every second
while True:
atcommand(“AT+GATTCHAR=1,00-%02X” % random.randint(50, 100), 1000)
except ValueError as err:
# One of the commands above returned “ERROR ”
errorhandler(err)
except KeyboardInterrupt:
# Close gracefully on CTRL+C
ser.close()
sys.exit()
import io
import sys
import serial
import random
from time import sleep
filename = “hrm.py”
ser = None
serio = None
verbose = True # Set this to True to see all of the incoming serial data
def usage():
“”“Displays information on the command-line parameters for this script”“”
print “Usage: ” + filename + “ ”
print “For example: ”
print “ Windows : ” + filename + “ COM14”
print “ OS X : ” + filename + “ /dev/tty.usbserial-DN009WNO”
print “ Linux : ” + filename + “ /dev/ttyACM0”
return
def checkargs():
“”“Validates the command-line arguments for this script”“”
if len(sys.argv) 《 2:
print “ERROR: Missing serialPort”
usage()
sys.exit(-1)
if len(sys.argv) 》 2:
print “ERROR: Too many arguments (expected 1)?!?/p>
usage()
sys.exit(-2)
def errorhandler(err, exitonerror=True):
“”“Display an error message and exit gracefully on ”ERROR “ responses”“”
print “ERROR: ” + err.message
if exitonerror:
ser.close()
sys.exit(-3)
def atcommand(command, delayms=0):
“”“Executes the supplied AT command and waits for a valid response”“”
serio.write(unicode(command + “ ”))
if delayms:
sleep(delayms/1000)
rx = None
while rx != “OK ” and rx != “ERROR ”:
rx = serio.readline(2000)
if verbose:
print unicode(rx.rstrip(“ ”))
# Check the return value
if rx == “ERROR ”:
raise ValueError(“AT Parser reported an error on ’” + command.rstrip() + “‘”)
if __name__ == ’__main__‘:
# Make sure we received a single argument (comPort)
checkargs()
# This will automatically open the serial port (no need for ser.open)
ser = serial.Serial(port=sys.argv[1], baudrate=9600, rtscts=True)
serio = io.TextIOWrapper(io.BufferedRWPair(ser, ser, 1),
newline=’ ‘,
line_buffering=True)
# Add the HRM service and characteristic definitions
try:
atcommand(“AT+FACTORYRESET”, 1000) # Wait 1s for this to complete
atcommand(“AT+GATTCLEAR”)
atcommand(“AT+GATTADDSERVICE=UUID=0x180D”)
atcommand(“AT+GATTADDCHAR=UUID=0x2A37, PROPERTIES=0x10, MIN_LEN=2, MAX_LEN=3, VALUE=00-40”)
atcommand(“AT+GATTADDCHAR=UUID=0x2A38, PROPERTIES=0x02, MIN_LEN=1, VALUE=3”)
atcommand(“AT+GAPSETADVDATA=02-01-06-05-02-0d-18-0a-18”)
# Perform a system reset and wait 1s to come back online
atcommand(“ATZ”, 1000)
# Update the value every second
while True:
atcommand(“AT+GATTCHAR=1,00-%02X” % random.randint(50, 100), 1000)
except ValueError as err:
# One of the commands above returned “ERROR ”
errorhandler(err)
except KeyboardInterrupt:
# Close gracefully on CTRL+C
ser.close()
sys.exit()
此腳本的結(jié)果可以在下面的“ HRM”應(yīng)用程序中看到北歐的nR F工具箱應(yīng)用程序:
請(qǐng)注意,nRF工具箱僅在以下情況下顯示HRM數(shù)據(jù):值更改,因此在打開(kāi)HRM應(yīng)用程序并連接到BLEFriend之后,您至少需要更新一次心率測(cè)量特征
SDEP(SPI數(shù)據(jù)傳輸)
為了便于在基于UART和SPI的Bluefruit LE模塊之間進(jìn)行切換,Bluefruit LE SPI Friend和Shield在以下位置使用了相同的AT命令集: UART模塊(ATI,AT+HELP等)。
這些基于文本的AT命令使用我們稱為 SDEP (簡(jiǎn)單數(shù)據(jù)交換協(xié)議)的簡(jiǎn)單二進(jìn)制協(xié)議對(duì)二進(jìn)制消息進(jìn)行編碼。
在大多數(shù)情況下,您永遠(yuǎn)不需要直接處理SDEP,但是我們已經(jīng)在此處記錄了該協(xié)議,以防您需要深入了解Bluefruit LE SPI界面!
SDEPOverview
SDEP被設(shè)計(jì)為總線中立協(xié)議,以標(biāo)準(zhǔn),易于擴(kuò)展的方式處理二進(jìn)制命令和響應(yīng)(包括錯(cuò)誤響應(yīng))。 “總線中性”意味著無(wú)論傳輸機(jī)制(USB HID,SPI,I2C,空中無(wú)線數(shù)據(jù)等)如何,我們都可以使用SDEP。
所有SDEP消息都有一個(gè)四個(gè)字節(jié)標(biāo)頭,對(duì)于Bluefruit LE模塊,最多16個(gè)字節(jié)有效負(fù)載。大型消息被分解為幾個(gè)4 + 16字節(jié)的消息塊,這些消息塊在傳輸總線的任一端重建。選擇20字節(jié)限制(4字節(jié)報(bào)頭+ 16字節(jié)有效負(fù)載)以考慮到藍(lán)牙低功耗4.0中的最大數(shù)據(jù)包大?。總€(gè)數(shù)據(jù)包20字節(jié))。
SPI設(shè)置
對(duì)于Bluefruit LE SPI Friend,SDEP是總線中立的或Shield,使用SPI傳輸時(shí)要遵循以下約束和假設(shè),主要是要考慮nRF51822片上系統(tǒng)的硬件限制:
SPI硬件要求
SPI時(shí)鐘應(yīng)運(yùn)行在《= 4MHz
之間應(yīng)增加100us的延遲CS線有效的那一刻,以及在SPI總線上傳輸任何數(shù)據(jù)之前
對(duì)于整個(gè)數(shù)據(jù)包,CS線必須保持有效,而不是在每個(gè)字節(jié)之間切換CS
但是,可以將CS線置為無(wú)效,然后在各個(gè)SDEP數(shù)據(jù)包(每個(gè)最多20個(gè)字節(jié))之間重新置位。
SPI通訊必須將ands設(shè)置為先發(fā)送MSB(最高有效位)(而不是先發(fā)送LSB)
IRQ引腳
只要在nRF51822的緩沖區(qū)中有完整的SDEP數(shù)據(jù)包,Bluefruit LE SPI Friend/Shield就會(huì)斷言IRQ線。讀取數(shù)據(jù)包,并在整個(gè)事務(wù)中保持CS線有效(如上所述)。
只要有一個(gè)或多個(gè)數(shù)據(jù)包可用,IRQ線就會(huì)保持有效,因此讀取后該線可能會(huì)保持高電平一個(gè)數(shù)據(jù)包,這意味著SPI從設(shè)備側(cè)的FIFO中仍然有更多數(shù)據(jù)包。
SDEP數(shù)據(jù)包和SPI錯(cuò)誤標(biāo)識(shí)符
一旦聲明了CS并經(jīng)過(guò)了強(qiáng)制的100us延遲,應(yīng)從SPI總線讀取一個(gè)字節(jié),這將指示SPI上可用負(fù)載的類型。 nRF51822(有關(guān)SDEP消息的更多信息,請(qǐng)參見(jiàn)下面的消息類型指示器) ge類型)。如果需要繼續(xù)讀取幀的其余部分,則在讀取此字節(jié)后保持CS置為有效。
如果遇到標(biāo)準(zhǔn)SDEP消息類型指示符(0x10、0x20、0x40或0x80),請(qǐng)繼續(xù)讀取像平常一樣。但是,還應(yīng)考慮其他兩個(gè)指標(biāo),它們指示nRF51822 SPI從設(shè)備側(cè)存在問(wèn)題:
0xFE :從設(shè)備未準(zhǔn)備就緒(等待有點(diǎn),然后再試一次)
0xFF :從設(shè)備讀取溢出指示符(您讀取的數(shù)據(jù)多于可用數(shù)據(jù))
此表示有六個(gè)可能的響應(yīng)字節(jié)讀取消息類型指示符(發(fā)送SDEP命令后讀取的第一個(gè)字節(jié)):0x10、0x20、0x40、0x80指示有效的消息類型,或0xFE,0xFF指示錯(cuò)誤情況。
示例交易
下圖顯示了一個(gè)示例SDEP響應(yīng)分布在兩個(gè)數(shù)據(jù)包中(因?yàn)轫憫?yīng)的大小》 20個(gè)字節(jié))。請(qǐng)注意,由于在Bluefruit LE SPI端的FIFO中有多個(gè)數(shù)據(jù)包可用,因此在數(shù)據(jù)包之間IRQ線保持?jǐn)嘌裕?/p>
SDEP(簡(jiǎn)單數(shù)據(jù)交換協(xié)議)
簡(jiǎn)單數(shù)據(jù)交換協(xié)議(SDEP)可用于使用任何二進(jìn)制串行總線(USB HID, USB Bulk,SPI,I2C,無(wú)線等),使用四種不同的消息類型(命令,響應(yīng),警報(bào)和錯(cuò)誤消息)之一交換數(shù)據(jù)。
該協(xié)議旨在靈活,可擴(kuò)展,唯一的要求是單個(gè)消息小于等于20個(gè)字節(jié),并且每個(gè)消息的第一個(gè)字節(jié)是一個(gè)單字節(jié)(U8)標(biāo)識(shí)符,用于指示消息類型,該標(biāo)識(shí)符定義了其余消息的格式
字節(jié)序
所有大于8位的值均以小字節(jié)序格式編碼。
div》消息類型指示器
每條消息的第一個(gè)字節(jié)是8位標(biāo)識(shí)符,稱為消息類型指示器。此值指示要發(fā)送的消息的類型,并允許我們確定消息其余部分的格式。
消息類型
命令
響應(yīng)
警告
錯(cuò)誤ID(U8)
0x10
0x20
0x40
0x80
SDEP數(shù)據(jù)事務(wù)
盡管某些傳輸協(xié)議對(duì)誰(shuí)可以發(fā)起傳輸施加了限制,但兩個(gè)連接的設(shè)備都可以發(fā)起SDEP事務(wù)。例如,主設(shè)備始終使用低功耗藍(lán)牙或USB發(fā)起事務(wù),這意味著從設(shè)備只能回復(fù)傳入的命令。
每個(gè)接收到 Command Message 的設(shè)備都必須回復(fù)響應(yīng)消息,錯(cuò)誤消息或警告消息。
消息類型 命令消息
命令消息(消息類型= 0x10 )具有以下結(jié)構(gòu):
名稱
消息類型
命令I(lǐng)D
有效載荷長(zhǎng)度
有效載荷類型
U8
U16
U8
。..含義
始終為“ 0x10”
唯一命令標(biāo)識(shí)符
[7]更多數(shù)據(jù)
[6-5]保留
[4-0]有效載荷長(zhǎng)度(0..16)
可選命令有效載荷(參數(shù)等)
命令I(lǐng)D (字節(jié)1-2)和有效載荷長(zhǎng)度(字節(jié)3)在任何命令中都是必需的信息。消息有效負(fù)載是可選的,如果有效負(fù)載長(zhǎng)度設(shè)置為0個(gè)字節(jié),則將被忽略。存在消息有效負(fù)載時(shí),其長(zhǎng)度可以為1..16字節(jié),以保持最大消息長(zhǎng)度20字節(jié)以內(nèi)。
長(zhǎng)命令(有效負(fù)載》 16字節(jié))必須分為多個(gè)數(shù)據(jù)包。為方便起見(jiàn),更多數(shù)據(jù)字段(字節(jié)3的第7位)用于指示其他數(shù)據(jù)包是否可用于同一命令。 SDEP接收器必須繼續(xù)讀取數(shù)據(jù)包,直到找到具有 More data == 0 的數(shù)據(jù)包,然后在必要時(shí)將所有子數(shù)據(jù)包組合為一個(gè)命令。
有效負(fù)載是用戶定義的,并且可以從一個(gè)命令更改為另一個(gè)命令。
示例命令消息為:
下載:文件
復(fù)制代碼
10 34 12 01 FF 10 34 12 01 FF
0:消息類型(U8)
1 + 2:命令I(lǐng)D(U16)
3:有效載荷鏡頭(U8)
4:有效載荷(。..)0x10
0x34 0x12
0x01
0xFF
第一個(gè)字節(jié)是消息類型(0x10),它將其標(biāo)識(shí)為命令消息。
第二個(gè)和第三個(gè)字節(jié)為0x1234(little-endian表示法為34 12),這是唯一的命令I(lǐng)D。如果找到匹配的條目,該值將與命令查找表進(jìn)行比較,并重定向到適當(dāng)?shù)拿钐幚沓绦蚝瘮?shù)。
第四個(gè)字節(jié)表示我們的消息有效載荷為1個(gè)字節(jié)
第五個(gè)字節(jié)是1個(gè)字節(jié)的有效負(fù)載:0xFF
響應(yīng)消息
響應(yīng)消息(消息類型= 0x20)在以下位置生成對(duì)傳入命令的響應(yīng),并具有以下結(jié)構(gòu):
Name
消息類型
命令I(lǐng)D
有效載荷長(zhǎng)度
有效載荷類型
U8
U16
U8
含義
始終“ 0x20’
命令I(lǐng)D,此消息是對(duì)
的響應(yīng)。[7]更多數(shù)據(jù)
[6-5]保留
[4-0]有效載荷長(zhǎng)度(0 。.16)
可選響應(yīng)有效載荷(參數(shù)等)
通過(guò)包括與該響應(yīng)消息相關(guān)的命令I(lǐng)D ,收件人可以更輕松地將響應(yīng)和命令相關(guān)聯(lián)。這在發(fā)送多個(gè)命令的情況下很有用,并且某些命令的執(zhí)行時(shí)間可能比具有不同命令I(lǐng)D的后續(xù)命令要花更長(zhǎng)的時(shí)間。
響應(yīng)消息只能在響應(yīng)命令時(shí)生成消息,因此命令I(lǐng)D字段應(yīng)始終存在。
長(zhǎng)響應(yīng)(有效載荷》 16字節(jié))必須分為多個(gè)數(shù)據(jù)包。與長(zhǎng)命令類似,更多數(shù)據(jù)字段(字節(jié)3的第7位)用于指示其他數(shù)據(jù)包是否可用于同一響應(yīng)。在跨越一個(gè)以上數(shù)據(jù)包的響應(yīng)中,最終數(shù)據(jù)包上的 More data 位將設(shè)置為0,以指示這是序列中的最后一個(gè)數(shù)據(jù)包。 SDEP接收器必須在必要時(shí)將所有子數(shù)據(jù)包重新組合為一個(gè)有效載荷。
如果需要更精確的命令/響應(yīng)相關(guān)性,則應(yīng)開(kāi)發(fā)自定義協(xié)議,該協(xié)議中應(yīng)包含唯一的消息標(biāo)識(shí)符。每個(gè)命令/響應(yīng)的有效負(fù)載,但這不在此高級(jí)協(xié)議定義的范圍內(nèi)。
示例響應(yīng)消息為:
下載:文件
復(fù)制代碼
20 34 12 01 FF 20 34 12 01 FF
0:消息類型(U8)
1 + 2:命令I(lǐng)D(U16)
3:有效載荷鏡頭(U8)
4:有效載荷0x20
0x34 0x12
0x01
0xFF
第一個(gè)字節(jié)是消息類型(0x20),它將其標(biāo)識(shí)為響應(yīng)消息。
第二個(gè)和第三個(gè)字節(jié)為0x1234,這是唯一的命令I(lǐng)D此響應(yīng)與之相關(guān)。
第四個(gè)字節(jié)表示我們的消息有效負(fù)載為1個(gè)字節(jié)。
第五個(gè)字節(jié)為1個(gè)字節(jié)的負(fù)載:0xFF
警報(bào)消息
每當(dāng)系統(tǒng)出現(xiàn)警報(bào)情況(電池電量低等)時(shí),都會(huì)發(fā)送警報(bào)消息(消息類型= 0x40)以下結(jié)構(gòu):
《表類=“ editor-table”》
名稱
消息類型
警告ID
有效載荷長(zhǎng)度
有效載荷
類型
U8
U16
U8
。..
含義
始終為“ 0x40”
警報(bào)條件的唯一ID
有效負(fù)載長(zhǎng)度(0..16)
可選響應(yīng)有效載荷
示例警報(bào)消息為:
下載:文件
復(fù)制代碼
40 CD AB 04 42 07 00 10 40 CD AB 04 42 07 00 10
0:消息類型(U8)
1 + 2:警報(bào)ID(U16)
3:有效負(fù)載長(zhǎng)度
4 + 5 + 6 + 7:有效載荷 0x40
0xCD 0xAB
0x04
0x42 0x07 0x00 0x10
第一個(gè)字節(jié)是消息類型(0x40),它將其標(biāo)識(shí)為警報(bào)消息。
第二個(gè)和第三個(gè)字節(jié)是0xABCD,這是唯一的警報(bào)ID。
第四個(gè)字節(jié)表示我們有4個(gè)字節(jié)的消息有效負(fù)載。
最后四個(gè)字節(jié)是實(shí)際有效負(fù)載:在這種情況下,假設(shè)我們正在傳輸32-字節(jié),則為0x10000742
標(biāo)準(zhǔn)警報(bào)ID
范圍為0x0000到0x00FF的警報(bào)ID保留給標(biāo)準(zhǔn)SDEP警報(bào),并且可能不會(huì)被自定義警報(bào)使用。
以下警報(bào)已定義為協(xié)議的標(biāo)準(zhǔn)部分:
ID
0x0000
0x0001
0x0002
0x0003警告
保留
系統(tǒng)重置
電池電量低
電池嚴(yán)重說(shuō)明
保留供將來(lái)使用
系統(tǒng)即將重置
電池電量不足
電池電量嚴(yán)重不足
錯(cuò)誤消息
每當(dāng)系統(tǒng)出現(xiàn)錯(cuò)誤情況時(shí),都會(huì)返回錯(cuò)誤消息(消息類型= 0x80),并具有以下結(jié)構(gòu):
名稱
消息類型
錯(cuò)誤ID
保留類型
U8
U16
U8含義
始終為“ 0x80”
錯(cuò)誤條件的唯一ID
保留以供將來(lái)使用
每當(dāng)出現(xiàn)錯(cuò)誤情況并且系統(tǒng)需要正常運(yùn)行錯(cuò)誤(例如請(qǐng)求失敗,嘗試訪問(wèn)不存在的資源等)后,系統(tǒng)可能會(huì)返回帶有適當(dāng)錯(cuò)誤ID的特定錯(cuò)誤消息。
示例錯(cuò)誤消息為:
下載:文件
復(fù)制代碼
80 01 00 00 80 01 00 00
《表類=“ editor-table”》
0:消息ID(U8)
1 + 2:錯(cuò)誤ID(U16)
3:保留(U8)
0x80
0x01 0x00
0x00
標(biāo)準(zhǔn)錯(cuò)誤ID
0x0000到0x00FF范圍內(nèi)的錯(cuò)誤ID保留用于標(biāo)準(zhǔn)SDEP錯(cuò)誤,并且不能由自定義錯(cuò)誤使用。
以下錯(cuò)誤已被定義為協(xié)議的標(biāo)準(zhǔn)部分:
ID
0x0000
0x0001
0x0003錯(cuò)誤
保留
無(wú)效CMD ID
無(wú)效負(fù)載說(shuō)明
保留供將來(lái)使用
在查找表中未找到CMDID
消息有效負(fù)載無(wú)效
現(xiàn)有命令
目前,在該命令中僅實(shí)現(xiàn)了四個(gè)SDEP命令Bluefruit SPIFRIEND32固件:
SDEP_CMDTYPE_INITIALIZE = 0xBEEF
SDEP_CMDTYPE_AT_WRAPPER = 0x0A00
SDEP_CMDTYPE_BLE_UARTTX = 0x0A01
li》 SDEP_CMDTYPE_BLE_UARTRX = 0x0A02
SDH_CMDTYPE_INITIALIZE 可用于在硬件RST線路不可用時(shí)重置SDEP系統(tǒng)。
兩條 SDEP_CMDTYPE_UART * 命令通過(guò)BLE UART服務(wù)發(fā)送數(shù)據(jù)。
SDEP_CMDTYPE_AT_WRAPPER 是您大部分時(shí)間使用的命令,它是一個(gè)包裝器通過(guò)二進(jìn)制SDEP傳輸發(fā)送AT命令。這并不是非常有效,二進(jìn)制機(jī)制每個(gè)命令占用的字節(jié)數(shù)更少,但是它允許重用所有早期的AT解析器命令,而不必為每個(gè)命令實(shí)現(xiàn)一個(gè)包裝器,這將大大增加整體代碼的大小。
SDEP AT包裝使用
使用SDEP您只需在AT Wrapp中發(fā)送正確的標(biāo)頭以及要發(fā)送到解析器的AT命令即可。例如:
下載:文件
復(fù)制代碼
10-00-0A-03-‘a(chǎn)’-‘t’-‘I’ 10-00-0A-03-‘a(chǎn)’-‘t’-‘I’
消息類型:0x10(命令)
命令I(lǐng)D:0x0A00
命令有效載荷長(zhǎng)度:3個(gè)字節(jié)
命令有效載荷:‘a(chǎn)’+‘t’+‘i’
這將導(dǎo)致ATI命令被執(zhí)行,這將返回基本系統(tǒng)信息。
GATT服務(wù)詳細(xì)信息
Bluetooth Low Energy中的數(shù)據(jù)圍繞名為“ GATT服務(wù)”和“ GATT特性”的單位進(jìn)行組織。要將數(shù)據(jù)公開(kāi)給另一臺(tái)設(shè)備,您必須在該設(shè)備上實(shí)例化至少一個(gè)服務(wù)。
Adafruit的Bluefruit LE Pro模塊支持某些“標(biāo)準(zhǔn)”服務(wù),如下所述(將來(lái)可能會(huì)添加更多)。/p》
UART服務(wù)
UART服務(wù)是在連接的設(shè)備之間發(fā)送和接收數(shù)據(jù)的標(biāo)準(zhǔn)方法,它模擬了熟悉的兩線UART接口(一根線用于傳輸數(shù)據(jù),另一線用于接收數(shù)據(jù))。
專用UART服務(wù)頁(yè)面上有詳細(xì)信息。
UART服務(wù)
基本UUID: 6E40 0001 -B5A3-F393-E0A9-E50E24DCCA9E
此服務(wù)模擬TXD和RXD兩行上的基本UART連接。
它基于Nordic Semiconductors專有的UART服務(wù)規(guī)范??梢允褂肗ordic Semiconductors用于Android和iOS的nRFUART應(yīng)用查看與該服務(wù)之間發(fā)送和發(fā)送的數(shù)據(jù)。
此服務(wù)在每個(gè)Bluefruit LE模塊上均可用,并在加電序列中自動(dòng)啟動(dòng)。
特征
Nordic的UART服務(wù)包括以下特征:
名稱
TX
RX必填
是
是UUID
0x0002
0x0003類型
U8 [20]
U8 [20] R
XW
XN
XI
R =讀??; W =寫(xiě)N =通知; I =指示
從中央設(shè)備的角度分配特性名稱
TX(0x0002)
此特征用于將數(shù)據(jù)發(fā)送回傳感器節(jié)點(diǎn),并且可以由連接的中央設(shè)備(移動(dòng)電話,平板電腦等)寫(xiě)入。
RX(0x0003)
此特征用于將數(shù)據(jù)發(fā)送到連接的中央設(shè)備。通知可以由連接的設(shè)備啟用,以便每次更新TX通道時(shí)都會(huì)發(fā)出警報(bào)。
軟件資源
為幫助您使Bluefruit LE模塊與其他Central設(shè)備進(jìn)行通信,我們?yōu)榇蠖鄶?shù)支持主要平臺(tái)的平臺(tái)匯集了許多開(kāi)源工具低功耗藍(lán)牙。
Bluefruit LE Client Apps和庫(kù)
Adafruit已將以下移動(dòng)或桌面應(yīng)用和庫(kù)組合在一起,以使您的Bluefruit LE模塊與移動(dòng)設(shè)備或筆記本電腦進(jìn)行通訊變得盡可能容易,并盡可能提供完整的源代碼:/p》
Bluefruit LE Connect(Android/Java)
從Android 4.3開(kāi)始,已向Android添加了藍(lán)牙低功耗支持(盡管從4.4開(kāi)始才非常穩(wěn)定),并且我們已經(jīng)將Bluefruit LE Connect發(fā)布到Play商店。
Github上也提供了適用于Android的Bluefruit LE Connect的完整代碼,可幫助您g et從您自己的Android應(yīng)用開(kāi)始。您需要使用最新版本的Android Studio才能使用此項(xiàng)目。
Bluefruit LE Connect(iOS/Swift )
蘋(píng)果公司很早就采用低功耗藍(lán)牙技術(shù),并且蘋(píng)果的應(yīng)用程序商店中也有iOS版的Bluefruit LE Connectapp。
Bluefruit LE的完整快速源代碼Github也提供適用于iOS的Connect。您需要XCode并訪問(wèn)Apple的developerper程序才能使用此項(xiàng)目:
版本1.x源代碼:https://github.com/adafruit/Bluefruit_LE_Connect
版本2.x源代碼:https://github.com/adafruit/Bluefruit_LE_Connect_v2
該應(yīng)用程序的2.x版是一個(gè)完整的重寫(xiě),在單個(gè)代碼庫(kù)中包含iOS,OS X GUI和OS X命令行工具。
OS X(Swift)的Bluefruit LE Connect
此OS X桌面應(yīng)用程序基于相同的V2.x代碼庫(kù)作為iOS應(yīng)用程序,并允許您從筆記本電腦或Mac的便利性訪問(wèn)BLE UART,基本的Pin I/O和OTA DFU固件更新。
這是在本地記錄傳感器數(shù)據(jù)并進(jìn)行記錄的理想選擇將其導(dǎo)出為CSV,JSON或XML文件以在另一個(gè)應(yīng)用程序中進(jìn)行解析,并使用nati
Github上也提供了完整的源代碼。
用于OS X的Bluefruit LE命令行更新程序(Swift)
此實(shí)驗(yàn)性命令行工具不受支持,僅作為概念證明提供,但可用于允許從命令行對(duì)Bluefruit設(shè)備進(jìn)行固件更新。
此實(shí)用程序通過(guò)檢查Bluefruit設(shè)備上的固件版本(通過(guò)設(shè)備信息服務(wù))來(lái)執(zhí)行類似于GUI應(yīng)用程序的自動(dòng)固件更新,并將其與在線可用的固件版本進(jìn)行比較,并在適當(dāng)?shù)那闆r下在后臺(tái)下載文件。
只需通過(guò)DMG文件安裝預(yù)編譯的工具,然后將其放置在系統(tǒng)路徑中的某個(gè)位置,或在本地運(yùn)行該文件通過(guò)“ 。/bluefruit”查看幫助菜單:
下載:文件
復(fù)制代碼
$ 。/bluefruit
bluefruit v0.3
Usage:
bluefruit
[options.。.]
Commands:
Scan peripherals: scan
Automatic update: update [--enable-beta] [--uuid ]
Custom firmware: dfu --hex [--init ] [--uuid ]
Show this screen: --help
Show version: --version
Options:
--uuid If present the peripheral with that uuid is used. If not present a list of peripherals is displayed
--enable-beta If not present only stable versions are used
Short syntax:
-u = --uuid, -b = --enable-beta, -h = --hex, -i = --init, -v = --version, -? = --help $ 。/bluefruit
bluefruit v0.3
Usage:
bluefruit
[options.。.]
Commands:
Scan peripherals: scan
Automatic update: update [--enable-beta] [--uuid ]
Custom firmware: dfu --hex [--init ] [--uuid ]
Show this screen: --help
Show version: --version
Options:
--uuid If present the peripheral with that uuid is used. If not present a list of peripherals is displayed
--enable-beta If not present only stable versions are used
Short syntax:
-u = --uuid, -b = --enable-beta, -h = --hex, -i = --init, -v = --version, -? = --help
已棄用:Bluefruit Buddy(OS X)
此本地OS X應(yīng)用程序是概念驗(yàn)證的基本應(yīng)用程序,可讓您使用最新的Macbook或iMac連接到Bluefruit LE模塊。您可以獲取有關(guān)模塊的基本信息,并使用UART服務(wù)發(fā)送和接收數(shù)據(jù)。
該應(yīng)用程序的完整源代碼可在github存儲(chǔ)庫(kù)中的Adafruit_BluefruitLE_OSX中找到。
ABLE(跨平臺(tái)/節(jié)點(diǎn)+電子)
ABLE(Adafruit Bluefruit LE Desktop)是一個(gè)跨平臺(tái)的桌面應(yīng)用程序基于Sandeep Misty的貴族庫(kù)和Github的Electronproject(由Atom使用)。
它可在OS X,Windows 7+和精選Linux上運(yùn)行(Ubuntu已在本地測(cè)試)。 Windows 7支持特別有趣,因?yàn)閃indows 7沒(méi)有對(duì)低功耗藍(lán)牙的本機(jī)支持,但是貴族庫(kù)直接與受支持的藍(lán)牙4.0 USB dongle對(duì)話,在系統(tǒng)上模擬BLE(盡管目前仍處于BETA早期,并且斷開(kāi)了連接并采取了
此應(yīng)用程序可讓您收集傳感器數(shù)據(jù)或執(zhí)行移動(dòng)Bluefruit LE Connect應(yīng)用程序所提供的許多相同功能,但只能在臺(tái)式機(jī)上進(jìn)行。
該應(yīng)用程序仍處于測(cè)試階段,但除了易于使用的預(yù)編譯二進(jìn)制文件之外,還提供了完整的源代碼。
div》 Bluefruit LE Python包裝器
作為概念證明,我們?cè)谑筆ython與OS X上的本機(jī)Bluetooth API以及某些Linux目標(biāo)上的最新版Bluez一起工作方面做了一些努力。/p》
當(dāng)前有一些示例草圖顯示了h由于獲取了BLE UART數(shù)據(jù)以及來(lái)自設(shè)備信息服務(wù)(DIS)的一些基本詳細(xì)信息。
這不是一個(gè)積極支持的項(xiàng)目,而只是一個(gè)實(shí)驗(yàn),但是如果您有最新的Macbook或Raspberry Pi并了解Python,您可能想在我們的github帳戶中查看Adafruit_Python_BluefruitLE。
調(diào)試工具
如果您的冒險(xiǎn)意識(shí)變得更好,并且您的Bluefruit LE模塊陷入了困境,那么以下工具可能會(huì)有用
這些調(diào)試工具純粹是為高級(jí)用戶提供的便利出于設(shè)備恢復(fù)目的,不建議您這樣做,除非您對(duì)可能的開(kāi)發(fā)板感到滿意。使用它們需要您自擔(dān)風(fēng)險(xiǎn)。
AdaLink(Python)
此命令行工具是基于python的包裝程序,可使用Segger J-Link或STLink/V2對(duì)ARM MCU進(jìn)行編程。您可以使用它重新刷新Bluefruit LE模塊
在Github上Adafruit_Adalinkrepo主文件上的readme.md文件中提供了有關(guān)如何使用該工具的詳細(xì)信息。
使用AdaLink完全重新編程Bluefruit LE模塊將需要四個(gè)文件,并且看起來(lái)像這樣(使用JLink):
下載:文件
復(fù)制代碼
adalink nrf51822 --programmer jlink --wipe
--program-hex “Adafruit_BluefruitLE_Firmware/softdevice/s110_nrf51_8.0.0_softdevice.hex”
--program-hex “Adafruit_BluefruitLE_Firmware/bootloader/bootloader_0002.hex”
--program-hex “Adafruit_BluefruitLE_Firmware/0.6.7/blefriend32/blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex”
--program-hex “Adafruit_BluefruitLE_Firmware/0.6.7/blefriend32/blefriend32_s110_xxac_0_6_7_150917_blefriend32_signature.hex” adalink nrf51822 --programmer jlink --wipe
--program-hex “Adafruit_BluefruitLE_Firmware/softdevice/s110_nrf51_8.0.0_softdevice.hex”
--program-hex “Adafruit_BluefruitLE_Firmware/bootloader/bootloader_0002.hex”
--program-hex “Adafruit_BluefruitLE_Firmware/0.6.7/blefriend32/blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex”
--program-hex “Adafruit_BluefruitLE_Firmware/0.6.7/blefriend32/blefriend32_s110_xxac_0_6_7_150917_blefriend32_signature.hex”
您也可以使用AdaLink工具獲取有關(guān)模塊的一些基本信息,例如通過(guò)--info命令當(dāng)前正在編程哪個(gè)SoftDevice或IC版本(16KB SRAM或32KB SRAM):
下載:文件
復(fù)制代碼
$ adalink nrf51822 -p jlink --info
Hardware ID : QFACA10 (32KB)
Segger ID : nRF51822_xxAC
SD Version : S110 8.0.0
Device Addr : **:**:**:**:**:**
Device ID : **************** $ adalink nrf51822 -p jlink --info
Hardware ID : QFACA10 (32KB)
Segger ID : nRF51822_xxAC
SD Version : S110 8.0.0
Device Addr : **:**:**:**:**:**
Device ID : ****************
Adafruit nRF51822 Flasher(Python)
Adafruit的nRF51822 Flasheris是我們?cè)谏a(chǎn)中使用的內(nèi)部Python工具來(lái)燒寫(xiě)電路板當(dāng)他們通過(guò)測(cè)試程序并下線時(shí),或者只是在調(diào)試時(shí)針對(duì)不同的固件版本進(jìn)行測(cè)試。
它依賴于表面下的AdaLink或OpenOCD(請(qǐng)參見(jiàn)上文),但是您可以使用此命令行
該工具目前支持使用特定的SoftDevice,Bootloader和Bluefruit固件組合來(lái)刷新nRF51822。
該工具目前支持通過(guò)AdaLink使用Segger J-Link或STLink/V2,或者在Raspberry Pi上使用GPIO可以訪問(wèn)傳統(tǒng)的ARM SWD調(diào)試器。 (該存儲(chǔ)庫(kù)中包含用于RPi的OpenOCD的預(yù)構(gòu)建版本,因?yàn)樵谠糝Pi上從頭開(kāi)始構(gòu)建它需要很長(zhǎng)時(shí)間。)
由于該工具的純粹是一個(gè)內(nèi)部項(xiàng)目,但將其公開(kāi),以防萬(wàn)一它可以幫助冒險(xiǎn)的客戶自行清理木板。
下載:文件
復(fù)制代碼
$ python flash.py --jtag=jlink --board=blefriend32 --softdevice=8.0.0 --bootloader=2 --firmware=0.6.7
jtag : jlink
softdevice : 8.0.0
bootloader : 2
board : blefriend32
firmware : 0.6.7
Writing Softdevice + DFU bootloader + Application to flash memory
adalink -v nrf51822 --programmer jlink --wipe --program-hex “Adafruit_BluefruitLE_Firmware/softdevice/s110_nrf51_8.0.0_softdevice.hex” --program-hex “Adafruit_BluefruitLE_Firmware/bootloader/bootloader_0002.hex” --program-hex “Adafruit_BluefruitLE_Firmware/0.6.7/blefriend32/blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex” --program-hex “Adafruit_BluefruitLE_Firmware/0.6.7/blefriend32/blefriend32_s110_xxac_0_6_7_150917_blefriend32_signature.hex”
。.. $ python flash.py --jtag=jlink --board=blefriend32 --softdevice=8.0.0 --bootloader=2 --firmware=0.6.7
jtag : jlink
softdevice : 8.0.0
bootloader : 2
board : blefriend32
firmware : 0.6.7
Writing Softdevice + DFU bootloader + Application to flash memory
adalink -v nrf51822 --programmer jlink --wipe --program-hex “Adafruit_BluefruitLE_Firmware/softdevice/s110_nrf51_8.0.0_softdevice.hex” --program-hex “Adafruit_BluefruitLE_Firmware/bootloader/bootloader_0002.hex” --program-hex “Adafruit_BluefruitLE_Firmware/0.6.7/blefriend32/blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex” --program-hex “Adafruit_BluefruitLE_Firmware/0.6.7/blefriend32/blefriend32_s110_xxac_0_6_7_150917_blefriend32_signature.hex”
。..
BLE FAQ
我可以和帶有Bluefruit LE模塊的Classic藍(lán)牙設(shè)備通話嗎?
否。低功耗藍(lán)牙和“經(jīng)典”藍(lán)牙都是由藍(lán)牙SIG定義和維護(hù)的同一藍(lán)牙核心規(guī)范的一部分,但是它們是完全不同的協(xié)議,具有不同的物理約束和要求。這兩個(gè)協(xié)議不能直接互相通信。
我的Bluefruit LE模塊能否連接到其他Bluefruit LE外設(shè)
否,Adafruit的Bluefruit LE固件目前僅是外圍設(shè)備,并且無(wú)法在中央模式下運(yùn)行導(dǎo)致該模塊的行為類似于您的手機(jī)或啟用BLE的筆記本電腦。
如果需要中央支持,則應(yīng)查看基于nRF52832的較新產(chǎn)品,例如Adafruit Feather nRF52 Bluefruit LE,其中包含一個(gè)SoftDevice,能夠在中央或外圍模式下運(yùn)行?;趎RF518322的產(chǎn)品(例如本學(xué)習(xí)指南中使用的產(chǎn)品)不不能在中央模式下運(yùn)行,因?yàn)樗鼈兪褂玫能浽O(shè)備不支持該產(chǎn)品,并且無(wú)法更新
我剛得到我的Bluefruit板,當(dāng)我運(yùn)行草圖時(shí),它會(huì)永遠(yuǎn)掛在“ Connecting 。..”階段!/strong》
此處有幾種可能的解釋,但是首先要嘗試的是:
斷開(kāi)連接并關(guān)閉Bluefruit LE Connect應(yīng)用程序(如果打開(kāi)的話)
在移動(dòng)設(shè)備上禁用BLE
重新啟動(dòng)Bluefruit草圖和硬件
(在移動(dòng)設(shè)備上)重新打開(kāi)BLE
再次打開(kāi)Bluefruit LE Connect移動(dòng)應(yīng)用并嘗試重新連接
如果問(wèn)題仍然存在,嘗試執(zhí)行工廠重置(請(qǐng)參閱相應(yīng)的學(xué)習(xí)指南,以獲取有關(guān)如何執(zhí)行此操作的詳細(xì)信息,因?yàn)樗谝粔K板上可能會(huì)有所不同)。
為什么都不是重置示例草圖后,我的更改是否仍然存在?
Bluefruit LE模塊處于Adafruit演示草圖的已知狀態(tài),其中大多數(shù)在草圖開(kāi)始時(shí)執(zhí)行出廠重置。
這對(duì)于確保草圖正常運(yùn)行很有用,但是具有每次板退出復(fù)位并運(yùn)行草圖時(shí),都會(huì)擦除NVM中的所有自定義用戶數(shù)據(jù)并將所有設(shè)置都恢復(fù)為出廠默認(rèn)值的副作用。
要禁用恢復(fù)出廠設(shè)置,請(qǐng)打開(kāi)演示草圖并找到 FACTORYRESET_ENABLE 標(biāo)志并將其設(shè)置為“ 0”,這將防止啟動(dòng)時(shí)恢復(fù)出廠設(shè)置。
如果您不會(huì)在.ino草圖文件中看到‘FACTORYRESET_ENABLE’標(biāo)志,您可能具有較舊的草圖版本,并且可能需要通過(guò)Arduino庫(kù)管理器更新為最新版本。
我在基于UART的Bluefruit LE模塊上需要CTS和RTS嗎?
在使用HW串行時(shí)并不一定要使用CTS和RTS,但是它們都應(yīng)與SW串行一起使用,或者在任何傳輸大量數(shù)據(jù)的時(shí)間使用。
之所以需要CTS和RTS,是因?yàn)閚RF51822上的UART模塊不是很健壯,并且該芯片的早期版本具有非常小的FIFO,這意味著UART外設(shè)很快就不堪重負(fù)了。
使用CTS和RTS大大提高了UART連接的可靠性,因?yàn)檫@兩個(gè)引腳在另一端告訴設(shè)備何時(shí)需要等待t要處理現(xiàn)有的緩沖數(shù)據(jù)。
要啟用CTS和RTS支持,請(qǐng)進(jìn)入草圖文件夾中的BluefruitConfig.h文件,并為這些功能專用的宏分配一個(gè)適當(dāng)?shù)囊_(可以將它們?cè)O(shè)置為
同時(shí)啟用這兩個(gè)引腳應(yīng)該可以解決大型命令或連續(xù)傳輸多個(gè)命令時(shí)遇到的任何數(shù)據(jù)可靠性問(wèn)題。
如何更新到最新的Bluefruit LE固件?
使Bluefruit LE模塊保持最新?tīng)顟B(tài)的最簡(jiǎn)單方法是使用適用于Android的Bluefruit LE Connect應(yīng)用程序或適用于iOS的Bluefruit LE Connect。這兩個(gè)應(yīng)用程序均具有固件更新功能,可讓您自動(dòng)下載最新固件并以盡可能安全,輕松的方式刷新Bluefruit LE設(shè)備。如果需要在先前版本上進(jìn)行一些測(cè)試,您還可以使用這些應(yīng)用程序回滾到較舊版本的Bluefruit LE固件。
支持的固件版本‘xxx’?
我們會(huì)定期發(fā)布帶有錯(cuò)誤修復(fù)和新功能的Bluefruit LE固件映像特征。本學(xué)習(xí)指南中的每個(gè)AT命令都列出了使用該命令所需的最低固件版本,但是要獲得從一個(gè)固件版本到另一個(gè)固件版本的更改的更高層次概述,請(qǐng)查閱固件歷史記錄頁(yè)面。
我的Bluefruit LE設(shè)備是否支持ANCS?
ANCS在我們的路線圖上(很可能在0.7.x版本家族中),但是我們目前不支持它,因?yàn)樵趯⑵渥鳛榉?wù)實(shí)現(xiàn)時(shí)存在一些異常情況。
我的Bluefruit LE設(shè)備卡在DFU模式下,該怎么辦?
如果您的設(shè)備由于某種原因而處于DFU模式,并且固件已損壞,則有幾種選擇。
首先,按住DFU按鈕約10秒鐘,直到CONN LED開(kāi)始閃爍,然后嘗試嘗試恢復(fù)出廠設(shè)置,然后釋放DFU按鈕以執(zhí)行恢復(fù)出廠設(shè)置。
如果此操作無(wú)效,則可能需要從DFU模式開(kāi)始刷新固件,可以通過(guò)以下方式之一進(jìn)行刷新:
Bluefruit LE Connect(Android)
將模塊置于DFU模式(恒定LED閃爍)
打開(kāi)Bluefruit LE Connect
連接到“ DfuTarg”設(shè)備
連接后,您將看到一個(gè)包含一些基本設(shè)備信息的屏幕。點(diǎn)擊右上角的“ 。..”,然后選擇固件更新
點(diǎn)擊使用自定義固件按鈕
為BLEFRIEND32固件版本0.6.7選擇適當(dāng)?shù)?hex和.init文件(從Bluefruit LE固件存儲(chǔ)庫(kù)復(fù)制)。..,該文件將是:
十六進(jìn)制文件:blefriend32_s110_xxac_0_6_7_150917_blefriend32。 hex
初始化文件:blefriend32_s110_xxac_0_6_7_150917_blefriend32_init.dat
單擊開(kāi)始更新
不幸的是,iOS應(yīng)用尚未支持DFU模式下的自定義固件更新,但我們會(huì)將其更新到下一個(gè)版本中。
北歐nRF工具箱
您還可以使用Nordic的nRF工具箱應(yīng)用來(lái)使用OTA引導(dǎo)加載程序更新固件。
在 Android 上:
打開(kāi)nRF Toolbox(使用最新版本)
單擊 DFU 圖標(biāo)
單擊選擇文件按鈕
選擇應(yīng)用程序,然后單擊確定
找到適當(dāng)?shù)?hex文件(例如“ blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex”)
“ 初始化數(shù)據(jù)包”,指示是,然后選擇適當(dāng)?shù)? _init.dat文件(例如:“ blefriend32_s110_xxac_0_6_7_150917_blefriend32_init.dat”)。
點(diǎn)擊主屏幕底部的選擇設(shè)備按鈕,找到 DfuTarg 設(shè)備,點(diǎn)擊該設(shè)備
點(diǎn)擊上傳按鈕,現(xiàn)在應(yīng)該在主屏幕上啟用該按鈕
這將開(kāi)始DFU更新過(guò)程,這將導(dǎo)致在Bluefruit LE模塊上更新或恢復(fù)固件
在 iOS 上:
創(chuàng)建一個(gè).zip文件,其中包含用于固件更新的.hex文件和init.dat文件。例如:
將‘blefriend32_s110_xxac_0_6_7_150917_blefriend32.hex’重命名為 application.hex
重命名‘blefriend32_s110_xxac_0_6_7_15017_blefriend32_init.dat’為 application.dat
使用uTunes將包含application.hex和application.dat文件的 .zip文件上傳到iPhone,如此處所述
打開(kāi)nRF工具箱應(yīng)用程序(使用最新版本)
單擊 DFU 圖標(biāo)
單擊選擇文件文本標(biāo)簽
切換到用戶文件以查看您在上方上傳的.zip文件
選擇.zip文件(例如blefriend32_065.zip)
在主屏幕上選擇選擇文件類型
選擇應(yīng)用程序
在主屏幕上選擇選擇設(shè)備
選擇 DfuTarg
單擊上傳按鈕,該按鈕現(xiàn)在應(yīng)該已啟用
這將開(kāi)始DFU程序,并且更新完成后,您的Bluefruit LE模塊將重置。
如果您獲得正常的2或3脈沖閃爍模式,則更新有效!
Adafruit_nRF51822_Flasher
作為最后的選擇,如果您可以訪問(wèn)Raspberry Pi,Segger J-Link或STLink/V2,則也可以嘗試手動(dòng)刷新整個(gè)設(shè)備,如上面的FAQ中所述,并提供更多詳細(xì)信息在“軟件資源”頁(yè)面上。
如何通過(guò)SWD重新刷新Bluefruit LE模塊?
通過(guò)SWD重新刷新Bluefruit LE模塊(例如切換到嗅探器固件并返回)的風(fēng)險(xiǎn)由您自己承擔(dān),并且可能會(huì)導(dǎo)致設(shè)備變磚,并且我們無(wú)法為該操作提供任何支持!不幸的是,有1,000,000處可能出錯(cuò)的東西,這就是為什么我們提供兩個(gè)單獨(dú)的Bluefruit LE Friend板-嗅探器和帶有非嗅探器固件的普通Bluefruit LE Friend板,這提供了具有故障保護(hù)功能的引導(dǎo)加載程序,可防止您
AdaLink(SWD/JTAG調(diào)試器包裝)
在兩種類型的板(嗅探器和Bluefruit LE模塊)之間轉(zhuǎn)換不幸的是,這不是無(wú)風(fēng)險(xiǎn)的操作,并且需要外部硬件,軟件和專有技術(shù)來(lái)解決問(wèn)題,這就是為什么我們的支持團(tuán)隊(duì)不對(duì)此進(jìn)行覆蓋。
那。..確定要走那條孤獨(dú)的路,而您擁有Segger J-Link(這是我們內(nèi)部用于生產(chǎn)和開(kāi)發(fā)的J-Link),或者已經(jīng)擁有升級(jí)Bluefruit LE設(shè)備后,您應(yīng)該查看AdaLink,這是我們內(nèi)部使用的工具,用于刷新恢復(fù)Bluefruit LE模塊所需的四個(gè)文件。 (注意:最新版本的AdaLink還支持便宜的STLink/V2,但是如果您要購(gòu)買調(diào)試器以長(zhǎng)期使用,則J-Link通常更健壯。)
必需的Intel Hex文件可在Bluefruit LE固件庫(kù)中找到。您需要刷新:
適當(dāng)?shù)囊龑?dǎo)程序映像
適當(dāng)?shù)腟oftDevice映像
Bluefruit LE固件映像
包含CRC檢查的匹配簽名文件,以便引導(dǎo)程序接受上面的固件映像(與固件映像位于同一文件夾中)
適當(dāng)?shù)奈募ǔA性诠碳鎯?chǔ)庫(kù)中的版本控制.xml文件中。
如果您嘗試刷新嗅探器固件(后果自負(fù)?。?,則只需刷新單個(gè).hex文件,您可以在這里找到。嗅探器不需要SoftDevice映像,也不需要使用故障安全的引導(dǎo)加載程序-這就是為什么如果沒(méi)有受支持的SWD調(diào)試器,則更改是一種單向操作且冒險(xiǎn)的操作。
Adafruit_nF51822_Flasher
我們還提供了一個(gè)內(nèi)部python工具,該工具比AdaLink(上面引用)高出一個(gè)級(jí)別,并且可以更輕松地將特定版本的官方固件閃存到Bluefruit LE模塊。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)Adafruit_nRF51822_Flasherrepo。
我可以訪問(wèn)BETA固件版本嗎?
適用于iOS和Android的Bluefruit LE Connect應(yīng)用程序的最新版本使您可以選擇使用預(yù)發(fā)行版本或BETA固件更新Bluefruit LE模塊。
此功能主要是作為論壇中支持問(wèn)題的調(diào)試和測(cè)試機(jī)制提供的,僅應(yīng)在嘗試識(shí)別和解決模塊中的特定問(wèn)題時(shí)使用!
在iOS上啟用BETA版本
確保您至少具有版本1.7.1 的Bluefruit LE Connect
Go到“設(shè)置”頁(yè)面
滾動(dòng)到“設(shè)置”頁(yè)面底部,直到找到 Bluefruit LE
單擊Bluefruit LE圖標(biāo)并啟用顯示beta版本開(kāi)關(guān)
使用Bluefruit LE Connect時(shí),您現(xiàn)在應(yīng)該可以在固件存儲(chǔ)庫(kù)中看到所有可用的Beta版本。
在Android上啟用BETA版本
確保您具有最新版本的Bluefruit LE Connect
打開(kāi)Bluefruit LE Connect應(yīng)用程序
點(diǎn)擊應(yīng)用程序主屏幕右上角的“ 。..”圖標(biāo)
選擇設(shè)置
向下滾動(dòng)到軟件更新部分并啟用顯示測(cè)試版
您應(yīng)該可以看到任何測(cè)試版現(xiàn)在,當(dāng)您使用Bluefruit LE Connect
為什么升級(jí)到Android 6.0后看不到我的Bluefruit LE設(shè)備
在Android 6.0中,有一些重要的安全更改會(huì)影響低功耗藍(lán)牙設(shè)備。如果無(wú)法使用定位服務(wù)(這意味著GPS已關(guān)閉),您也將無(wú)法看到藍(lán)牙低功耗設(shè)備的廣告。有關(guān)詳細(xì)信息,請(qǐng)參見(jiàn)此問(wèn)題。
請(qǐng)確保在Android 6.0上啟用定位服務(wù)將Bluefruit LE Connect或其他Bluetooth Low Energy應(yīng)用程序與Bluefruit LE模塊配合使用時(shí)。
BLE的理論速度限制是什么?
這取決于多種因素,并且取決于中央設(shè)備的功能(
考慮到nR51822的硬件限制(每個(gè)連接間隔最多6個(gè)數(shù)據(jù)包,最小連接間隔7.5ms),您最終會(huì)以下是各種移動(dòng)操作系統(tǒng)的理論限制:
iPhone 5/6 + IOS 8.0/8.1
6個(gè)數(shù)據(jù)包* 20個(gè)字節(jié)* 1/0.030 s = 4 kB/s = 32 kbps
iPhone 5/6 + IOS 8.2/8.3
3個(gè)數(shù)據(jù)包* 20字節(jié)* 1/0.030 s = 2 kB/s = 16 kbps
帶nRF8001的iPhone 5/6 + IOS 8.x
1個(gè)數(shù)據(jù)包* 20字節(jié)* 1/0.030 s = 0.67 kB/s = 5.3 kbps
Nexus 4
4個(gè)數(shù)據(jù)包* 20字節(jié)* 1/0.0075 s = 10.6 kB/s = 84 kbps
帶有nRF51822 0.9.0的北歐主仿真器固件(MEFW)1個(gè)數(shù)據(jù)包* 20字節(jié)* 1/0.0075 = 2.67 kB/s = 21.33 kbps
帶有nRF51822的北歐主仿真器固件(MEFW)0.11.0
6個(gè)數(shù)據(jù)包* 20字節(jié)* 1/0.0075 = 16 kB/s = 128 kbps
Bluefruit LE固件還存在一些限制,但是我們正在積極努力以顯著提高即將在2016年第二季度發(fā)布的即將發(fā)布的0.7.0版本的吞吐量。以上數(shù)據(jù)可作為理論上的最大值,用于確定是否BLE是否適合您的項(xiàng)目。
UPDATE :有關(guān)各種 Android 版本和手機(jī)的限制的更多詳細(xì)信息,請(qǐng)參閱Nordic Semiconductors的這篇有用的文章。
我的Bluefruit板可以檢測(cè)到其他Bluefruit板或Central設(shè)備嗎?
否。目前,我們所有的Bluefruit LE模塊都在外圍模式下運(yùn)行,這意味著它們只能通過(guò)廣告有效載荷來(lái)廣告自己的存在。中央設(shè)備(通常是手機(jī)或筆記本電腦)負(fù)責(zé)偵聽(tīng)這些廣告數(shù)據(jù)包,啟動(dòng)連接過(guò)程以及啟動(dòng)設(shè)備之間的任何交易。 Bluefruit模塊無(wú)法檢測(cè)范圍內(nèi)的其他Bluefruit模塊或中央設(shè)備,它們只能發(fā)送自己的廣告數(shù)據(jù)并等待連接請(qǐng)求進(jìn)入。
如何確定以m/ft為單位的Bluefruit模塊和手機(jī)之間的距離?
簡(jiǎn)單的答案是:您不能。
RF設(shè)備通常使用RSSI來(lái)測(cè)量信號(hào)強(qiáng)度,RSSI代表接收信號(hào)強(qiáng)度指示器,單位為dBm。設(shè)備越接近RSSI值通常就越強(qiáng)(例如,-90dBm比-60dBm弱得多),但是現(xiàn)實(shí)中,以dBm為單位的RSSI值與距離之間沒(méi)有可靠的關(guān)系。如果設(shè)備之間存在隔離墻,RSSI將掉落。如果在相同的2.4GHz頻帶上存在很多干擾,RSSI將下降。根據(jù)設(shè)備的不同,如果僅更改天線方向,RSSI將會(huì)下降。您可以使用AT+BLEGETRSSI命令讀取兩個(gè)連接的設(shè)備之間的RSSI值,但是從該值中得出的關(guān)于距離的信息沒(méi)有有意義且可重復(fù)的結(jié)論,而在非常松散的情況下可能不是“更遠(yuǎn)”或“更近”
我的Bluefruit LE模塊可以距手機(jī)多遠(yuǎn)?
這取決于模塊本身以外的許多因素,例如天線方向,手機(jī)上的天線設(shè)計(jì),發(fā)送時(shí)的發(fā)射功率節(jié)點(diǎn),相同2.4GHz帶寬內(nèi)的競(jìng)爭(zhēng)流量,端點(diǎn)之間的障礙物等。
它的低至幾米,最高可達(dá)10米的視線,但通常設(shè)計(jì)為低功耗藍(lán)牙假設(shè)Bluefr正常,則在非常短的范圍內(nèi)工作,并且在5-6米或更小的范圍內(nèi)最有效以實(shí)現(xiàn)可靠的通信uit固件設(shè)置。
我可以創(chuàng)建多少個(gè)GATT服務(wù)和特征?
對(duì)于固件0.7.0及更高版本,存在以下限制:
最大服務(wù)數(shù)量:10
最大特征數(shù):30
每個(gè)特征的最大緩沖區(qū)大小:32字節(jié)
CCCD的最大數(shù):16
是否可以修改或禁用內(nèi)置的GATT服務(wù)和特征(DIS,DFU等)?
不,不幸的是你不能。我們依靠設(shè)備信息服務(wù)(DIS)的內(nèi)容來(lái)了解您正在運(yùn)行的固件和引導(dǎo)程序版本,并且在不能夠信任此信息的情況下無(wú)法提供固件更新,這就是為什么它既是必需的又是只讀的。
類似地,DFU服務(wù)是強(qiáng)制性的,用于維護(hù)空中更新,并且禁用它會(huì)創(chuàng)建它所帶來(lái)的更多問(wèn)題。
如何將BlueZ和gatttool與Bluefruit模塊一起使用?
BlueZ有一個(gè)與之相關(guān)的一點(diǎn)學(xué)習(xí)曲線,但是您可以在下面的某個(gè)選項(xiàng)中找到一些注意事項(xiàng),以使用我們所有Bluefruit LE模塊和板卡中內(nèi)置的BLE UART服務(wù)發(fā)送和接收數(shù)據(jù)。
這些命令可能隨BlueZ的不同版本進(jìn)行更改。以下使用版本5.21。
下載:文件
復(fù)制代碼
# Initialise the USB dongle
$ sudo hciconfig hci0 up
# Scan for the UART BLE device
$ sudo hcitool lescan
D6:4E:06:4F:72:86 UART
# Start gatttool, pointing to the UART device found above
$ sudo gatttool -b D6:4E:06:4F:72:86 -I -t random --sec-level=high
[D6:4E:06:4F:72:86][LE]》 connect
Attempting to connect to D6:4E:06:4F:72:86
Connection successful
# Scan for primary GATT Services
[D6:4E:06:4F:72:86][LE]》 primary
attr handle: 0x0001, end grp handle: 0x0007 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0008, end grp handle: 0x0008 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0009, end grp handle: 0x000e uuid: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
attr handle: 0x000f, end grp handle: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb
# Get the handles for the entries in the UART service (handle 0x0009)
[D6:4E:06:4F:72:86][LE]》 char-desc
handle: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0002, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0006, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0007, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x0008, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0009, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x000a, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000b, uuid: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
handle: 0x000c, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000d, uuid: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
handle: 0x000e, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x000f, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0011, uuid: 00002a27-0000-1000-8000-00805f9b34fb
# 6e400002 (handle 0x000b) = TX characteristic
# 6e400003 (handle 0x000d) = RX characteristic
# Optional (but maybe helpful) 。.. scan for CCCD entries
[D6:4E:06:4F:72:86][LE]》 char-read-uuid 2902
handle: 0x000e value: 00 00
# Enable notifications on the RX characteristic (CCCD handle = 0x000e)
# 0100 = get notifications
# 0200 = get indications
# 0300 = get notifications + indications
# 0000 = disable notifications + indications
[D6:4E:06:4F:72:86][LE]》 char-write-req 0x000e 0100
Characteristic value was written successfully
# Just to make sure it was updated
[D6:4E:06:4F:72:86][LE]》 char-read-hnd 0x000e
Characteristic value/descriptor: 01 00
# Writing “test” in the Serial Monitor of the Arduino sketch should
# cause this output not that notifications are enabled:
Notification handle = 0x000d value: 74 65 73 74
# Write something to the TX characteristic (handle = 0x000b)
# This should cause E F G H to appear in the Serial Monitor
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000b 45
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000b 46
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000b 47
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000b 48
# To send multiple bytes
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000B 707172737475
# If you are running the callbackEcho sketch and notifications
# are enabled you should get this response after the above cmd:
Notification handle = 0x000d value: 70 71 72 73 74 75
--------------
# If you just want to enable constant listening, enter the following command from the CLI:
$ sudo gatttool -b D6:4E:06:4F:72:86 -t random --char-write-req -a 0x000e -n 0100 --listen
# This should give us the following output as data is written on the Uno,
# though we can‘t send anything back:
Characteristic value was written successfully
Notification handle = 0x000d value: 74 65 73 74
Notification handle = 0x000d value: 6d 6f 72 65 20 74 65 73 74
# Initialise the USB dongle
$ sudo hciconfig hci0 up
# Scan for the UART BLE device
$ sudo hcitool lescan
D6:4E:06:4F:72:86 UART
# Start gatttool, pointing to the UART device found above
$ sudo gatttool -b D6:4E:06:4F:72:86 -I -t random --sec-level=high
[D6:4E:06:4F:72:86][LE]》 connect
Attempting to connect to D6:4E:06:4F:72:86
Connection successful
# Scan for primary GATT Services
[D6:4E:06:4F:72:86][LE]》 primary
attr handle: 0x0001, end grp handle: 0x0007 uuid: 00001800-0000-1000-8000-00805f9b34fb
attr handle: 0x0008, end grp handle: 0x0008 uuid: 00001801-0000-1000-8000-00805f9b34fb
attr handle: 0x0009, end grp handle: 0x000e uuid: 6e400001-b5a3-f393-e0a9-e50e24dcca9e
attr handle: 0x000f, end grp handle: 0xffff uuid: 0000180a-0000-1000-8000-00805f9b34fb
# Get the handles for the entries in the UART service (handle 0x0009)
[D6:4E:06:4F:72:86][LE]》 char-desc
handle: 0x0001, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0002, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0003, uuid: 00002a00-0000-1000-8000-00805f9b34fb
handle: 0x0004, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0005, uuid: 00002a01-0000-1000-8000-00805f9b34fb
handle: 0x0006, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0007, uuid: 00002a04-0000-1000-8000-00805f9b34fb
handle: 0x0008, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0009, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x000a, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000b, uuid: 6e400002-b5a3-f393-e0a9-e50e24dcca9e
handle: 0x000c, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x000d, uuid: 6e400003-b5a3-f393-e0a9-e50e24dcca9e
handle: 0x000e, uuid: 00002902-0000-1000-8000-00805f9b34fb
handle: 0x000f, uuid: 00002800-0000-1000-8000-00805f9b34fb
handle: 0x0010, uuid: 00002803-0000-1000-8000-00805f9b34fb
handle: 0x0011, uuid: 00002a27-0000-1000-8000-00805f9b34fb
# 6e400002 (handle 0x000b) = TX characteristic
# 6e400003 (handle 0x000d) = RX characteristic
# Optional (but maybe helpful) 。.. scan for CCCD entries
[D6:4E:06:4F:72:86][LE]》 char-read-uuid 2902
handle: 0x000e value: 00 00
# Enable notifications on the RX characteristic (CCCD handle = 0x000e)
# 0100 = get notifications
# 0200 = get indications
# 0300 = get notifications + indications
# 0000 = disable notifications + indications
[D6:4E:06:4F:72:86][LE]》 char-write-req 0x000e 0100
Characteristic value was written successfully
# Just to make sure it was updated
[D6:4E:06:4F:72:86][LE]》 char-read-hnd 0x000e
Characteristic value/descriptor: 01 00
# Writing “test” in the Serial Monitor of the Arduino sketch should
# cause this output not that notifications are enabled:
Notification handle = 0x000d value: 74 65 73 74
# Write something to the TX characteristic (handle = 0x000b)
# This should cause E F G H to appear in the Serial Monitor
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000b 45
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000b 46
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000b 47
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000b 48
# To send multiple bytes
[D6:4E:06:4F:72:86][LE]》 char-write-cmd 0x000B 707172737475
# If you are running the callbackEcho sketch and notifications
# are enabled you should get this response after the above cmd:
Notification handle = 0x000d value: 70 71 72 73 74 75
--------------
# If you just want to enable constant listening, enter the following command from the CLI:
$ sudo gatttool -b D6:4E:06:4F:72:86 -t random --char-write-req -a 0x000e -n 0100 --listen
# This should give us the following output as data is written on the Uno,
# though we can’t send anything back:
Characteristic value was written successfully
Notification handle = 0x000d value: 74 65 73 74
Notification handle = 0x000d value: 6d 6f 72 65 20 74 65 73 74
當(dāng)BLE UART數(shù)據(jù)可用時(shí),我可以使用IRQ引腳將MCU從睡眠狀態(tài)喚醒嗎?
否,在基于SPI的板上,IRQ引腳用于指示SDEP響應(yīng)可用于SDEP命令。例如,當(dāng)您以SDEP消息形式發(fā)送“ AT + BLEUARTRX”命令時(shí),運(yùn)行在nRF51822上的Bluefruit固件將解析該消息,準(zhǔn)備SDEP響應(yīng),并觸發(fā)IRQ引腳以告知MCU響應(yīng)已準(zhǔn)備就緒。這完全獨(dú)立于目前沒(méi)有中斷功能的BLE UART服務(wù)。
我是否還可以使用Bluefruit更新在設(shè)備上運(yùn)行的草圖LE Connect?
不,只能通過(guò)空中更新核心固件。草圖需要使用Arduino IDE和串行引導(dǎo)程序加載。
DFU Bluefruit更新
有關(guān)使用Bluefruit LE Connect的最新更新過(guò)程的視頻,請(qǐng)參見(jiàn):
iOS:https://learn。 adafruit.com/introducing-adafruit-ble-bluetooth-low-energy-friend/dfu-on-ios
Android:https://learn.adafruit.com/introducing-adafruit-ble-bluetooth-低能耗朋友/dfu-on-android-4-dot-3-plus
下面的視頻已過(guò)期,并且適用于Bluefruit LE Connect應(yīng)用在相應(yīng)應(yīng)用商店中的iOS,Android和OS X之前的早期版本。為了使您的設(shè)備保持最新?tīng)顟B(tài),只需安裝并打開(kāi)Bluefruit LE Connect應(yīng)用程序并連接到Bluefruit設(shè)備。如果有可用的固件更新,它將自動(dòng)提出,并且整個(gè)更新過(guò)程將為您透明地處理。
您可以使用Android或iOS手機(jī)/平板電腦對(duì)Bluefruit LE模塊本身進(jìn)行無(wú)線編程。這不會(huì)重新編程Bluefruit Micro中的ATmega32u4,而僅是BLE模塊本身。由于這不是一件普通的事情,所以要做起來(lái)有些挑戰(zhàn)。
您需要斷開(kāi)/斷開(kāi)Bluefruit Micro的電源,暫時(shí)在 DFU 引腳和 GND ,然后通過(guò)USB或電池為開(kāi)發(fā)板供電。
紅色LED指示燈將連續(xù)閃爍,以使其處于DFU模式。然后按照我們的指南現(xiàn)場(chǎng)更新固件
下載
GitHub上的PCB文件
MDBT數(shù)據(jù)表
Adafruit Fritzing庫(kù)中的Fritzing對(duì)象
羽毛32u4 Bluefruit LE引腳排列圖
示意圖
點(diǎn)擊以嵌入
我們已將調(diào)節(jié)器從SPX3819更改為AP2112-壓降較低,但不能處理高于6V的電壓
織物印刷
尺寸以英寸為單位
設(shè)備恢復(fù)
有時(shí),不幸的事情會(huì)發(fā)生。值得慶幸的是,有99%的時(shí)間純粹是軟件問(wèn)題,并且Bluefruit設(shè)備具有強(qiáng)大的引導(dǎo)加載程序以及一些故障保險(xiǎn)柜,幾乎可以隨時(shí)恢復(fù)設(shè)備。
如何恢復(fù)藍(lán)果板 1。在啟動(dòng)時(shí)強(qiáng)制DFU模式
第一步是強(qiáng)制您的板進(jìn)入特殊的引導(dǎo)加載程序模式,這將防止任何錯(cuò)誤的用戶草圖或損壞的配置數(shù)據(jù)引起問(wèn)題。
使用跳線電纜將DFU引腳連接到GND,或者如果板上有DFU按鈕,則在為板上電路板供電(連接USB電纜等)時(shí),請(qǐng)按住該按鈕。
通電后,您應(yīng)該會(huì)看到一個(gè)更快的DFU MODE閃爍模式,讓您知道自己處于引導(dǎo)加載程序模式。
現(xiàn)在卸下DFU和GND之間的跨接電纜(以防止進(jìn)入DFU重置時(shí)的模式)
拔下DFU和一旦進(jìn)入DFU模式,便可以在下次重置時(shí)退出GND!
2。更新Bluefruit固件
下一步,使用Bluefruit LE Connect應(yīng)用程序?qū)⒃O(shè)備更新到最新的Bluefruit固件。我們會(huì)定期修復(fù)錯(cuò)誤,因此,始終在最新版本中發(fā)布是一個(gè)好主意。
您可以在DFU模式下執(zhí)行固件更新,盡管Bluefruit板可能在其中顯示為 DfuTarg 。
由于引導(dǎo)加載程序模式是一種故障安全模式,并且具有Bluefruit功能的一小部分,因此,我們可以為Bluefruit LE Connect應(yīng)用程序選擇合適的固件“系列”。
告訴Bluefruit LE Connect應(yīng)用程序有關(guān)我們硬件的很多詳細(xì)信息。因此,您需要指明要刷新的固件類型,尤其是是否要刷新基于SPI固件的UART。請(qǐng)確保根據(jù)您的產(chǎn)品和下表選擇正確的固件:
BLEFRIEND32固件(UART,32KB SRAM)
Bluefruit UART Friend V2
Bluefruit LE UART Friend
BLESPIFRIEND固件(SPI)
Bluefruit LE SPI朋友
Bluefruit LE Shield
Bluefruit LE Micro
羽毛32u4 Bluefruit LE
羽毛M0 Bluefruit LE
3。刷新測(cè)試草圖
一旦更新了Bluefruit核心固件,請(qǐng)從Arduino IDE刷新測(cè)試草圖至設(shè)備,例如以下閃爍代碼:
下載:文件
復(fù)制代碼
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
} // the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}
4。執(zhí)行出廠重置
一旦Bluefruit核心固件已更新,最后一步就是執(zhí)行出廠重置。
在電路板上電的情況下,連接 DFU 引腳連接到 GND
將該引腳設(shè)置為GND(或按住DFU按鈕不放)超過(guò)5秒鐘,直到藍(lán)色狀態(tài)LED開(kāi)始閃爍
拔下DFU跳線或釋放DFU按鈕
這將導(dǎo)致恢復(fù)出廠設(shè)置,這將清除所有配置數(shù)據(jù),并應(yīng)還原您的電路板,讓您恢復(fù)原狀在大多數(shù)情況下恢復(fù)到正常狀態(tài)!
還是有問(wèn)題嗎?
跳到我們的支持論壇,清楚地說(shuō)明您的問(wèn)題以及以下信息,我們將很樂(lè)意為您提供幫助:
您的產(chǎn)品名稱和理想的產(chǎn)品ID
您正在使用的Bluefruit固件版本(在大多數(shù)示例草圖中的“串行監(jiān)視器”輸出的頂部提供) es)
您正在使用的操作系統(tǒng)
您正在使用的Arduino IDE版本
在第一篇文章中提供上述信息將被跳過(guò)來(lái)回兩個(gè)回合,您會(huì)更快地得到我們的答復(fù),節(jié)省了大家的時(shí)間和精力!
請(qǐng)務(wù)必同時(shí)閱讀本學(xué)習(xí)指南的“常見(jiàn)問(wèn)題解答”部分,該部分回答了許多常見(jiàn)問(wèn)題!
羽毛幫助!
即使此常見(jiàn)問(wèn)題解答已標(biāo)記為羽毛,但仍存在問(wèn)題
拔出USB時(shí),ItsyBitsy/Feather停止工作!
我們的許多示例草圖在setup()中都有
while (!Serial);
行,使板子等到USB打開(kāi)。這使調(diào)試程序變得容易得多,因?yàn)槟梢钥吹剿蠻SB數(shù)據(jù)輸出。如果您想在沒(méi)有USB連接的情況下運(yùn)行Feather,請(qǐng)刪除該行或?qū)⑵渥⑨尩?/p>
我的羽毛從未在Arduino IDE中顯示為COM或串行端口
A 其數(shù)量眾多/羽毛“故障”是由于僅充電的USB電纜
我們每天收到5起以上的投訴,這些投訴最終歸因于僅充電的電纜!
僅使用您知道用于數(shù)據(jù)同步的電纜
如果您有任何僅用于充電的電纜,請(qǐng)將其切成兩半,將其丟棄。我們是認(rèn)真的!它們通常質(zhì)量低劣,只會(huì)在以后給您和其他人造成困擾,只是獲得了一條優(yōu)質(zhì)的數(shù)據(jù)+充電USB電纜
確認(rèn)!我“做了些什么”,現(xiàn)在插入Itsy/Feather時(shí),它不再顯示為設(shè)備,因此我無(wú)法上載或修復(fù)它。..
沒(méi)問(wèn)題!您可以輕松地“修復(fù)”錯(cuò)誤的代碼上傳。請(qǐng)注意,如果您設(shè)置了看門(mén)狗定時(shí)器或睡眠模式以停止USB,或任何“破壞”了電路板的草圖,則可能會(huì)發(fā)生這種情況
在計(jì)算機(jī)中打開(kāi)詳細(xì)上傳 Arduino IDE偏好設(shè)置
插入Itsy或Feather 32u4/M0,它不會(huì)顯示為可以正常使用的COM/串行端口
打開(kāi)Blink示例(示例-》基礎(chǔ)-》閃爍)
在“工具”菜單中選擇正確的板,例如羽毛32u4,羽毛M0,Itsy 32u4或M0 (物理檢查以確保您選擇了正確的主板?。?/p>
編譯它(確保可以正常工作)
單擊“上載”以嘗試上載代碼
IDE在嘗試上載時(shí)將打印出一些COM端口。 在這段時(shí)間內(nèi),雙擊重置按鈕,您將看到紅色的脈沖LED指示您現(xiàn)在處于引導(dǎo)加載模式
該板將顯示為Bootloader的COM/串行端口
IDE應(yīng)該看到Bootloader的COM/串行端口并正確上傳
我無(wú)法顯示Itsy/Feather USB設(shè)備-我收到“ USB設(shè)備故障”錯(cuò)誤!
這似乎發(fā)生在人們從Arduino開(kāi)發(fā)板菜單中選擇錯(cuò)誤的開(kāi)發(fā)板。
如果您有Feather 32u4(在板上看一下以了解其內(nèi)容),請(qǐng)確保選擇 Feather 32u4 基于ATMega32u4的主板!請(qǐng)勿使用其他任何東西,請(qǐng)勿使用32u4分支電路板線。
如果您有羽毛M0(在板上查看以了解其含義),請(qǐng)確保選擇羽毛M0 -不要使用32u4或Arduino Zero
如果您有ItsyBitsy M0(在板上看一下它的內(nèi)容),請(qǐng)確保選擇 ItsyBitsy M0 》-不要使用32u4或Arduino零
我遇到了COM端口和我的Ity/Feather 32u4/M0的問(wèn)題
32u4/M0可以具有兩個(gè) COM端口,一個(gè)是用戶端口,其中之一是引導(dǎo)程序端口。它們不是相同的COM端口號(hào)!
上載新用戶程序時(shí),它將附帶一個(gè)用戶com端口,特別是如果您在用戶程序中使用串行端口。
如果您崩潰了用戶程序,或者程序中止或失敗,則用戶COM端口可以消失。
當(dāng)用戶COM端口消失時(shí),Arduino將無(wú)法自動(dòng)啟動(dòng)Bootloader并上傳新軟件。
因此,您需要通過(guò)執(zhí)行上載單擊過(guò)程來(lái)重新啟動(dòng)Bootloader并上傳一些可以已知像“眨眼”一樣工作
我不明白為什么COM端口消失了,這在我的Arduino UNO上不會(huì)發(fā)生!
UNO類型的Arduinos有一個(gè)分開(kāi)的串行端口芯片(又名“ FTDI芯片”或“ Prolific PL2303”等)w hich與主芯片分開(kāi)處理所有串行端口功能。這樣,如果主芯片出現(xiàn)故障,您可以始終使用COM端口。
基于M0和32u4的Arduinos沒(méi)有單獨(dú)的芯片,而是由主處理器為您執(zhí)行此任務(wù)。它可以實(shí)現(xiàn)更低的成本,更高的功率設(shè)置。..但是需要付出更多的努力,因?yàn)槟鷮⒉粫r(shí)需要手動(dòng)“踢”入引導(dǎo)程序
我正在嘗試上傳到我的32u4,并收到“ avrdude:butterfly_recv():程序員沒(méi)有響應(yīng)”錯(cuò)誤
這可能是因?yàn)橐龑?dǎo)加載程序未啟動(dòng),并且您意外地試圖上傳到 錯(cuò)誤的COM端口
最好的解決方案是上面的詳細(xì)介紹:通過(guò)手動(dòng)啟動(dòng)引導(dǎo)加載程序手動(dòng)手動(dòng)上傳Blink或類似的工作草圖
我是嘗試上傳到我的Feather M0上時(shí),出現(xiàn)此錯(cuò)誤“連接到程序員:.avrdude:butterfly_recv():程序員不是響應(yīng)”
您可能沒(méi)有在下拉面板中選擇Feather M0 -下。確保選擇了Feather M0。
我正在嘗試將其上傳到我的羽毛中,但出現(xiàn)此錯(cuò)誤“ avrdude:ser_recv():程序員未響應(yīng)“
您可能沒(méi)有在菜單中選擇Feather M0/Feather 32u4板下拉菜單。確保選擇了Feather M0(或Feather 32u4)。
我在羽毛上安裝了一些護(hù)翼,現(xiàn)在無(wú)法讀取電池電壓!
請(qǐng)確保您的機(jī)翼不使用引腳9,這與脂電池!
我的羽毛上的黃色LED閃爍,但是沒(méi)有插入電池,為什么?
充電LED由Lipoly充電器電路自動(dòng)驅(qū)動(dòng)。它將嘗試檢測(cè)電池,并期望將其安裝。如果沒(méi)有電池,則在使用電源時(shí)可能會(huì)偶爾閃爍一次,因?yàn)樗趪L試為(不存在的)電池充電。
這無(wú)害,而且完全正常!
責(zé)任編輯:wv
-
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5121瀏覽量
98036
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論