37款傳感器與執(zhí)行器的提法,在網(wǎng)絡(luò)上廣泛流傳,其實(shí)Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒于本人手頭積累了一些傳感器和執(zhí)行器模塊,依照實(shí)踐出真知(一定要?jiǎng)邮肿觯┑睦砟睿詫W(xué)習(xí)和交流為目的,這里準(zhǔn)備逐一動(dòng)手嘗試系列實(shí)驗(yàn),不管成功(程序走通)與否,都會(huì)記錄下來(lái)---小小的進(jìn)步或是搞不掂的問(wèn)題,希望能夠拋磚引玉。
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)九十六:BT-05藍(lán)牙4.0BLE 模塊 串口引出 CC2541兼容HM-10 藍(lán)牙AT09模塊
CC2541
是一款針對(duì)低能耗以及私有 2.4GHz 應(yīng)用的功率優(yōu)化的真正片載系統(tǒng) (SoC) 解決方案。 它使得使用低總體物料清單成本建立強(qiáng)健網(wǎng)絡(luò)節(jié)點(diǎn)成為可能。 CC2541 將領(lǐng)先 RF 收發(fā)器的出色性能和一個(gè)業(yè)界標(biāo)準(zhǔn)的增強(qiáng)型 8051 MCU、系統(tǒng)內(nèi)可編程閃存存儲(chǔ)器、8kB RAM 和很多其它功能強(qiáng)大的特性和外設(shè)組合在一起。 CC2541 非常適合應(yīng)用于需要超低能耗的系統(tǒng)。 這由多種不同的運(yùn)行模式指定。 運(yùn)行模式間較短的轉(zhuǎn)換時(shí)間進(jìn)一步使低能耗變?yōu)榭赡? 。
CC2540/41特性
(1)射頻
–2.4GHz藍(lán)牙符合低能耗規(guī)范和私有的RF片載系統(tǒng)
–支持250kbps,500kbps,1Mbps,2Mbps的制器內(nèi)核數(shù)據(jù)速率–出色的鏈路預(yù)算,不使用外部前段而支持長(zhǎng)距離應(yīng)用–高達(dá)0dBm的可編程輸出功率
–出色的接收器靈敏度(1Mbps時(shí)為-94dBm),可選擇性,和阻擋性能
–適合于針對(duì)符合世界范圍內(nèi)的無(wú)線電頻率調(diào)節(jié)系統(tǒng):ETSIEN300328和EN3004402類(歐洲),F(xiàn)CCCFR4715部分(美國(guó)),和ARIBSTD-T66(日本)
(2)布局
–極少的外部組件–提供參考設(shè)計(jì)支持
–6mm×6mm方形扁平無(wú)引腳(QFN)-40封裝
–與CC2540引腳兼容(當(dāng)不使用USB或者I2C時(shí))(ADC)
(3)低功率
–工作模式RX低至:17.9mA
–工作模式TX(0dBm):18.2mA–功率模式1(4μs喚醒):270μs–功率模式2(睡眠定時(shí)器打開(kāi)):1μs–功率模式3(外部中斷):0.5μs
(4)工作模式下TPS62730兼容低功率
–RX低至:14.7mA(3V電源)–TX(0dBm):14.3mA(3V電源)
(5)微控制器
–具有代碼預(yù)取功能的高性能和低功率8051微控制器內(nèi)核
–系統(tǒng)內(nèi)可編程閃存,128或者256KB
–在所有功率模式下具有保持功能的8KBRAM
–支持硬件調(diào)試
–擴(kuò)展基帶自動(dòng)化,包括自動(dòng)確認(rèn)和地址解碼
–所有功率模式中對(duì)所有相關(guān)寄存器的保持
(6)外設(shè)
–功能強(qiáng)大的5通道直接內(nèi)存訪問(wèn)(DMA)
–通用定時(shí)器(1個(gè)16位,2個(gè)8位)
–紅外(IR)生成電路
–具有捕捉功能的32kHz睡眠定時(shí)器
–精確數(shù)字接收到的數(shù)字信號(hào)強(qiáng)度指示器(RSSI)支持
–電池監(jiān)視器和溫度感應(yīng)器
–含8通道和可配置分辨率的12位模數(shù)轉(zhuǎn)換器(ADC)
–高級(jí)加密標(biāo)準(zhǔn)(AES)安全協(xié)處理器
–2個(gè)功能強(qiáng)大的支持幾個(gè)串行協(xié)議的通用異步接收發(fā)器(UART)
–23個(gè)通用I/O引腳(21×4mA,2×20mA)
–I2C接口
–2個(gè)具有LED驅(qū)動(dòng)功能的I/O引腳
–安全裝置定時(shí)器
–集成的高性能比較器(7)開(kāi)發(fā)工具
–CC2541評(píng)估模塊工具包(CC2541EMK)
–CC2541小型開(kāi)發(fā)工具包(CC2541DK-MINI)
–SmartRF?軟件
–提供IAR嵌入式Workbench?
CC2540/41軟件特性
(1)符合針對(duì)單模式藍(lán)牙低能耗(BLE)解決方案的符合藍(lán)牙4.0協(xié)議的堆棧器
–完全功率優(yōu)化堆棧,包括控制器和主機(jī)
–GAP-中心設(shè)備,外設(shè),或者廣播器(包括組合角色)
–屬性協(xié)議(ATT)/通用屬性配置文件(GATT)
–客戶端和服務(wù)器
–L2CAP說(shuō)明
(2)示例應(yīng)用和配置文件
–針對(duì)GAP中心和外圍作用的一般應(yīng)用
–距離臨近,加速計(jì),簡(jiǎn)單關(guān)鍵字,和電池GATT服務(wù)
–BLE軟件棧內(nèi)支持更多應(yīng)用
(3)多重配置選項(xiàng)
–單芯片配置,允許應(yīng)用運(yùn)行在CC2541上
–用于運(yùn)行在一個(gè)外部微處理器接口
–BTool-用于評(píng)估、開(kāi)發(fā)和測(cè)試的視窗(Windows)PC應(yīng)用
應(yīng)用范圍
?2.4GHz藍(lán)牙低能耗系統(tǒng)
?私有的2.4GHz系統(tǒng)
?人機(jī)接口器件(鍵盤(pán),鼠標(biāo),遙控)
?體育和休閑設(shè)備1個(gè)HWI2C接口。
?移動(dòng)電話附件?消費(fèi)類電子產(chǎn)品
CC2540/41經(jīng)典應(yīng)用電路
CC2540/41
射頻部分: 支持BLE協(xié)議棧及私有2.4G RF片載系統(tǒng);
傳輸速率:250kbps,500kbps,1Mbps,2Mbps;
輸出功率:0dBm(支持可編程輸出功率)
接收靈敏度:-94dBm@1Mbps;
適合針對(duì)符合世界范圍內(nèi)的無(wú)線電頻率應(yīng)用系統(tǒng) 出色的鏈路預(yù)算,支持超長(zhǎng)距離應(yīng)用;
低功耗: 工作模式RX低至17.9mA; 工作模式TX(0dBm):18.2mA; 功率模式1(4us喚醒):270uA; 功率模式2(睡眠定時(shí)器開(kāi)):1uA; 功率模式3(外部中斷):0.5uA;
寬電源電壓范圍(2V-3.6V);
MCU: 具有代碼預(yù)取功能的高性能和低功耗8051內(nèi)核;
可編程Flash:CC2541F128 128KB 和CC2541F256 256KB;
支持硬件調(diào)試;
擴(kuò)展基帶自動(dòng)化,包括自動(dòng)確認(rèn)和低至解碼;
各個(gè)功率模式下,相關(guān)寄存器數(shù)據(jù)保持;
外設(shè): 功能強(qiáng)大的5通道直接內(nèi)存訪問(wèn)(DMA);
通用定時(shí)器(1個(gè)16bit,2 個(gè)8bit);
紅外生產(chǎn)電路;
32kHz 具有捕獲功能的睡眠定時(shí)器;
支持RSSI(數(shù)字信號(hào)強(qiáng)度指示器);
電池監(jiān)視器和溫度傳感器 8通道12位模數(shù)轉(zhuǎn)化器(可配置分辨率);
高級(jí)加密標(biāo)準(zhǔn)安全協(xié)處理器;
2個(gè)功能強(qiáng)大的支持多個(gè)串口協(xié)議的異步串口通信接口(UART);
23個(gè)通用I/O接口(214mA;220mA);
IIC 接口;
2個(gè)大電流I/O(直接驅(qū)動(dòng)LED);
安全裝置定時(shí)器;
集成的高性能比較器;
開(kāi)發(fā)工具: CC2541 評(píng)估模塊工具包(CC2541EMK); CC2541 小型開(kāi)發(fā)工具包(CC2541DK-MINI); SmartRF 軟件; 提供IAR嵌入式Workbench。
BT05藍(lán)牙4.0BLE模塊亮點(diǎn):
1.超低待機(jī)功耗 90uA~400uA
2.超遠(yuǎn)連接距離32.8英尺/10米
3.超快反應(yīng)速度0.4秒
4.安卓、蘋(píng)果、PC、MAC全通用.
5.收發(fā)無(wú)字節(jié)限制,最高可達(dá)3K Bytes/秒
6.不需要做MFI
7.IOS系統(tǒng)完美支持
8.Android4.3系統(tǒng)完美支持.
9.主從一體模塊,具透?jìng)鳌⑦h(yuǎn)控、PIO采集三種功能,通過(guò)AT指令集進(jìn)行切換和設(shè)置,
與您之前用過(guò)的藍(lán)牙串口模塊一樣,在不改PCB和下位機(jī)程序的情況下輕松升級(jí)到藍(lán)4.0!
模塊電原理圖
BT05藍(lán)牙4.0BLE模塊特點(diǎn):
使用條件:蘋(píng)果手機(jī)限定:4S及以上型號(hào),系統(tǒng)版本iOS6及以上
安卓手機(jī)限定:系統(tǒng)為4.3版本及以上,手機(jī)藍(lán)牙版本為4.0。
1、核心模塊使用BT05從模塊,引出接口包括VCC,GND,TXD,RXD,STATE。預(yù)留LED狀態(tài)輸出腳,單片機(jī)可通過(guò)該腳狀態(tài)判斷藍(lán)牙是否已經(jīng)連接,
2、LED指示藍(lán)牙連接狀態(tài),閃爍表示沒(méi)有藍(lán)牙連接,常亮表示藍(lán)牙已連接并打開(kāi)了端口,STATE腳輸出高電平為已連接,其他狀態(tài)為低電平。
3、設(shè)置模塊為主模式:模塊已經(jīng)為軟件設(shè)置主從模塊,通過(guò)串口發(fā)送AT+ROLE1(回車或者加\r\n),返回OK,則表示設(shè)置成功,此時(shí)模塊LED燈進(jìn)入快閃。主模塊連接從模塊需要通過(guò)AT指令進(jìn)行連接(詳情請(qǐng)參照BT05 AT指令集)。
4、底板3.3V LDO,輸入電壓3.6~6V,輸入電壓禁止超過(guò)7V!
5、接口電平3.3V,可以直接連接各種單片機(jī)(51,AVR,PIC,ARM,MSP430等),5V單片機(jī)也可直接連接,無(wú)需MAX232也不能經(jīng)過(guò)MAX232!
6、空曠地有效距離7-10米,超過(guò)10米也是可能的,但不對(duì)此距離的連接質(zhì)量做保證
7、配對(duì)以后當(dāng)全雙工串口使用,無(wú)需了解任何藍(lán)牙協(xié)議,但僅支持8位數(shù)據(jù)位、1位停止位、無(wú)奇偶校驗(yàn)的通信格式,這也是最常用的通信格式,不支持其他格式。
8、在未建立藍(lán)牙連接時(shí)支持通過(guò)AT指令設(shè)置波特率、名稱、配對(duì)密碼,設(shè)置的參數(shù)掉電保存。藍(lán)牙連接以后自動(dòng)切換到透?jìng)髂J?/p>
9、體積小巧(3.57cm*1.52cm),工廠貼片生產(chǎn),保證貼片質(zhì)量。并套透明熱縮管,防塵美觀,且有一定的防靜電能力。
10、該鏈接為從機(jī),從機(jī)能與各種帶藍(lán)牙功能的電腦、藍(lán)牙主機(jī)、大部分帶藍(lán)牙的手機(jī)、PDA、PSP等智能終端配對(duì),從機(jī)之間不能配對(duì)。
模塊接線
輸入電壓:3.3V/5V 只需要一組電源供電。
內(nèi)置電平轉(zhuǎn)換功能。
如果用5.0V MCU與藍(lán)牙模塊通訊,5.0V電源端口供電,RX TX 邏輯電平5V
如果用3.3V MCU與藍(lán)牙模塊通訊,3.3V電源端口供電,RX TX 邏輯電平3.3V
RX,藍(lán)牙模塊串口接收端與MCU的TXD連接。
TX,藍(lán)牙模塊串口發(fā)送端與MCU的RXD連接。
GND,地端電源負(fù)極
3.3V,電源端3.3V電源
5V,電源端5V電源
模塊使用注意事項(xiàng)
MLT-BT05 4.0 藍(lán)牙模塊工作在 2.4G 無(wú)線頻段,應(yīng)盡量避免各種因素對(duì)無(wú)線收發(fā)
的影響,注意以下幾點(diǎn):
1、包圍藍(lán)牙模塊的產(chǎn)品外殼避免使用金屬,當(dāng)使用部分金屬外殼時(shí),應(yīng)盡量讓模塊天線部分遠(yuǎn)離金屬部分。
2、產(chǎn)品內(nèi)部金屬連接線或者金屬螺釘,應(yīng)盡量遠(yuǎn)離模塊天線部分。
3、模塊天線部分應(yīng)靠載板 PCB 四圍放置,不允許放置于板中,且天線下方載板銑空,與天線平行的方向,不允許鋪銅或走線。直接把天線部分直接露出載板,也是比較好的選擇。
4、模塊下方盡量鋪大片 GND,走線盡量往外圍延伸。
5、建議在基板上的模塊貼裝位置使用絕緣材料進(jìn)行隔離,例如在該位置放一個(gè)
整塊的絲印(TopOverLay)。
小常識(shí)(非常重要)
TXD:發(fā)送端,一般表示為自己的發(fā)送端,正常通信必須接另一個(gè)設(shè)備的RXD。
RXD:接收端,一般表示為自己的接收端,正常通信必須接另一個(gè)設(shè)備的TXD。
正常通信時(shí)候本身的TXD永遠(yuǎn)接設(shè)備的RXD!
自收自發(fā):正常通信時(shí)RXD接其他設(shè)備的TXD,因此如果要接收自己發(fā)送的數(shù)據(jù)顧名思義,也就是自己接收自己發(fā)送的數(shù)據(jù),即自身的TXD直接連接到RXD,用來(lái)測(cè)試本身的發(fā)送和接收是否正常,是最快最簡(jiǎn)單的測(cè)試方法,當(dāng)出現(xiàn)問(wèn)題時(shí)首先做該測(cè)試確定是否產(chǎn)品故障,也稱回環(huán)測(cè)試。
藍(lán)牙4.0BLE
藍(lán)牙發(fā)展至今經(jīng)歷了8個(gè)版本的更新,1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2。那么在1.x~3.0之間的我們稱之為傳統(tǒng)藍(lán)牙,4.x開(kāi)始的藍(lán)牙我們稱之為低功耗藍(lán)牙也就是藍(lán)牙ble,當(dāng)然4.x版本的藍(lán)牙也是向下兼容的。android手機(jī)必須系統(tǒng)版本4.3及以上才支持BLE API。低功耗藍(lán)牙較傳統(tǒng)藍(lán)牙,傳輸速度更快,覆蓋范圍更廣,安全性更高,延遲更短,耗電極低等等優(yōu)點(diǎn)。(現(xiàn)在的穿戴設(shè)備都是使用BLE藍(lán)牙技術(shù)的)
傳統(tǒng)藍(lán)牙與低功耗藍(lán)牙通信方式也有所不同,傳統(tǒng)的一般通過(guò)socket方式,而低功耗藍(lán)牙是通過(guò)Gatt協(xié)議來(lái)實(shí)現(xiàn)。
主要優(yōu)點(diǎn)
低功耗,使用標(biāo)準(zhǔn)有機(jī)電池,可運(yùn)行一年乃至數(shù)年,成本低,可以完全實(shí)現(xiàn)兼容,速度支持1M的數(shù)據(jù)傳輸,可以最大程度的減少4G的串?dāng)_,更加智能,最大可以在3毫秒內(nèi)完成數(shù)據(jù)的傳輸,安全性采用加密算法,會(huì)有數(shù)據(jù)包的加密和認(rèn)證。所以藍(lán)牙4.0的優(yōu)點(diǎn)就是3種規(guī)格于一體,包括傳統(tǒng)藍(lán)牙的技術(shù),與3.0的版本最大的區(qū)別就是功耗更低了,4.0的版本比老版本的功耗低了90%,隨著藍(lán)牙技術(shù)由手機(jī),游戲,電腦,汽車等傳統(tǒng)領(lǐng)域向物聯(lián)網(wǎng),醫(yī)療等新領(lǐng)域的發(fā)展,對(duì)用戶的要求也就會(huì)越來(lái)越高,4.0的版本強(qiáng)化了數(shù)據(jù)傳輸?shù)募夹g(shù),又更注重了低功耗的性能。
實(shí)驗(yàn)開(kāi)源代碼
/*
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)九十六:BT-05藍(lán)牙4.0BLE 模塊 串口引出 CC2541兼容HM-10模塊
1、實(shí)驗(yàn)項(xiàng)目:Arduino 調(diào)試源代碼
2、實(shí)驗(yàn)接腳:
TXD = D0
RXD = D1
GND = GND
VCC = 3.3V
*/
void setup(){
Serial.begin(9600);
}
void loop(){
while(Serial.available())
{
char c=Serial.read();
if(c=='A')
{
Serial.println("Hello I am eagler8");
}
}
}
實(shí)驗(yàn)串口返回情況
實(shí)驗(yàn)開(kāi)源圖形編程(Mind+、Mixly、編玩邊學(xué))
實(shí)驗(yàn)場(chǎng)景圖
這幾天在網(wǎng)上一直搜索藍(lán)牙4.0BLE的電腦端調(diào)試軟件和手機(jī)上調(diào)試app,也去了微信平臺(tái)查詢相關(guān)調(diào)試小程序,感覺(jué)比傳統(tǒng)藍(lán)牙(2.0,3.0)模塊要復(fù)雜一些,老是不得要領(lǐng).......
實(shí)驗(yàn)開(kāi)源代碼
/*
【Arduino】168種傳感器模塊系列實(shí)驗(yàn)(資料代碼+仿真編程+圖形編程)
實(shí)驗(yàn)九十六:BT-05藍(lán)牙4.0BLE 模塊 串口引出 CC2541兼容HM-10模塊
1、實(shí)驗(yàn)項(xiàng)目:通過(guò)BLE藍(lán)牙模塊與Arduino通信控制LED
2、實(shí)驗(yàn)接腳:
CC2541模塊與Uno:
VCC——3.3V
GND——GND
TXD——RX
RXD——TX
*/
#include <SoftwareSerial.h>
char c=' ';
const byte led=13;
void setup() {
Serial.begin(9600);
Serial.println("BT is ready!");
pinMode(led, OUTPUT);
}
void loop(){
if(Serial.available())
{
c=Serial.read();
Serial.println("Got input:");
Serial.println(c);
//1的ASCII為49,0的ASCII為48
if(c==49)
{
Serial.write("Serial--13--high");
digitalWrite(13, HIGH);
}
if(c==48)
{
Serial.write("Serial--13--low");
digitalWrite(13, LOW);
}
}
}
實(shí)驗(yàn)串口返回情況