【雕爺學編程】Arduino動手做(96)---BT05藍牙4.0BLE模塊


37款傳感器與執行器的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止這37種的。鑒於本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里准備逐一動手嘗試系列實驗,不管成功(程序走通)與否,都會記錄下來---小小的進步或是搞不掂的問題,希望能夠拋磚引玉。

【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)

實驗九十六:BT-05藍牙4.0BLE 模塊 串口引出 CC2541兼容HM-10 藍牙AT09模塊

 

CC2541

是一款針對低能耗以及私有 2.4GHz 應用的功率優化的真正片載系統 (SoC) 解決方案。 它使得使用低總體物料清單成本建立強健網絡節點成為可能。 CC2541 將領先 RF 收發器的出色性能和一個業界標准的增強型 8051 MCU、系統內可編程閃存存儲器、8kB RAM 和很多其它功能強大的特性和外設組合在一起。 CC2541 非常適合應用於需要超低能耗的系統。 這由多種不同的運行模式指定。 運行模式間較短的轉換時間進一步使低能耗變為可能 。

 

CC2540/41特性

(1)射頻

–2.4GHz藍牙符合低能耗規范和私有的RF片載系統

–支持250kbps,500kbps,1Mbps,2Mbps的制器內核數據速率–出色的鏈路預算,不使用外部前段而支持長距離應用–高達0dBm的可編程輸出功率

–出色的接收器靈敏度(1Mbps時為-94dBm),可選擇性,和阻擋性能

–適合於針對符合世界范圍內的無線電頻率調節系統:ETSIEN300328和EN3004402類(歐洲),FCCCFR4715部分(美國),和ARIBSTD-T66(日本)

(2)布局

–極少的外部組件–提供參考設計支持

–6mm×6mm方形扁平無引腳(QFN)-40封裝

–與CC2540引腳兼容(當不使用USB或者I2C時)(ADC)

(3)低功率

–工作模式RX低至:17.9mA

–工作模式TX(0dBm):18.2mA–功率模式1(4μs喚醒):270μs–功率模式2(睡眠定時器打開):1μs–功率模式3(外部中斷):0.5μs

(4)工作模式下TPS62730兼容低功率

–RX低至:14.7mA(3V電源)–TX(0dBm):14.3mA(3V電源)

(5)微控制器

–具有代碼預取功能的高性能和低功率8051微控制器內核

–系統內可編程閃存,128或者256KB

–在所有功率模式下具有保持功能的8KBRAM

–支持硬件調試

–擴展基帶自動化,包括自動確認和地址解碼

–所有功率模式中對所有相關寄存器的保持

(6)外設

–功能強大的5通道直接內存訪問(DMA)

–通用定時器(1個16位,2個8位)

–紅外(IR)生成電路

–具有捕捉功能的32kHz睡眠定時器

–精確數字接收到的數字信號強度指示器(RSSI)支持

–電池監視器和溫度感應器

–含8通道和可配置分辨率的12位模數轉換器(ADC)

–高級加密標准(AES)安全協處理器

–2個功能強大的支持幾個串行協議的通用異步接收發器(UART)

–23個通用I/O引腳(21×4mA,2×20mA)

–I2C接口

–2個具有LED驅動功能的I/O引腳

–安全裝置定時器

–集成的高性能比較器(7)開發工具

–CC2541評估模塊工具包(CC2541EMK)

–CC2541小型開發工具包(CC2541DK-MINI)

–SmartRF™軟件

–提供IAR嵌入式Workbench™

 

CC2540/41軟件特性

(1)符合針對單模式藍牙低能耗(BLE)解決方案的符合藍牙4.0協議的堆棧器

–完全功率優化堆棧,包括控制器和主機

–GAP-中心設備,外設,或者廣播器(包括組合角色)

–屬性協議(ATT)/通用屬性配置文件(GATT)

–客戶端和服務器

–L2CAP說明

(2)示例應用和配置文件

–針對GAP中心和外圍作用的一般應用

–距離臨近,加速計,簡單關鍵字,和電池GATT服務

–BLE軟件棧內支持更多應用

(3)多重配置選項

–單芯片配置,允許應用運行在CC2541上

–用於運行在一個外部微處理器接口

–BTool-用於評估、開發和測試的視窗(Windows)PC應用

應用范圍

•2.4GHz藍牙低能耗系統

•私有的2.4GHz系統

•人機接口器件(鍵盤,鼠標,遙控)

•體育和休閑設備1個HWI2C接口。

•移動電話附件•消費類電子產品

 

CC2540/41經典應用電路

 

CC2540/41

射頻部分: 支持BLE協議棧及私有2.4G RF片載系統;

傳輸速率:250kbps,500kbps,1Mbps,2Mbps;

輸出功率:0dBm(支持可編程輸出功率)

接收靈敏度:-94dBm@1Mbps;

適合針對符合世界范圍內的無線電頻率應用系統 出色的鏈路預算,支持超長距離應用;

低功耗: 工作模式RX低至17.9mA; 工作模式TX(0dBm):18.2mA; 功率模式1(4us喚醒):270uA; 功率模式2(睡眠定時器開):1uA; 功率模式3(外部中斷):0.5uA;

寬電源電壓范圍(2V-3.6V);

MCU: 具有代碼預取功能的高性能和低功耗8051內核;

可編程Flash:CC2541F128 128KB 和CC2541F256 256KB;

支持硬件調試;

擴展基帶自動化,包括自動確認和低至解碼;

各個功率模式下,相關寄存器數據保持;

外設: 功能強大的5通道直接內存訪問(DMA);

通用定時器(1個16bit,2 個8bit);

紅外生產電路;

32kHz 具有捕獲功能的睡眠定時器;

支持RSSI(數字信號強度指示器);

電池監視器和溫度傳感器 8通道12位模數轉化器(可配置分辨率);

高級加密標准安全協處理器;

2個功能強大的支持多個串口協議的異步串口通信接口(UART);

23個通用I/O接口(21*4mA;2*20mA);

IIC 接口;

2個大電流I/O(直接驅動LED);

安全裝置定時器;

集成的高性能比較器;

開發工具: CC2541 評估模塊工具包(CC2541EMK); CC2541 小型開發工具包(CC2541DK-MINI); SmartRF 軟件; 提供IAR嵌入式Workbench。

 

 

BT05藍牙4.0BLE模塊亮點:

1.超低待機功耗 90uA~400uA

2.超遠連接距離32.8英尺/10米

3.超快反應速度0.4秒

4.安卓、蘋果、PC、MAC全通用.

5.收發無字節限制,最高可達3K Bytes/秒

6.不需要做MFI

7.IOS系統完美支持

8.Android4.3系統完美支持.

9.主從一體模塊,具透傳、遠控、PIO采集三種功能,通過AT指令集進行切換和設置,

與您之前用過的藍牙串口模塊一樣,在不改PCB和下位機程序的情況下輕松升級到藍4.0!

模塊電原理圖

 

BT09藍牙4.0BLE模塊特點:

使用條件:蘋果手機限定:4S及以上型號,系統版本iOS6及以上

安卓手機限定:系統為4.3版本及以上,手機藍牙版本為4.0。

1、核心模塊使用BT05從模塊,引出接口包括VCC,GND,TXD,RXD,STATE。預留LED狀態輸出腳,單片機可通過該腳狀態判斷藍牙是否已經連接,

2、LED指示藍牙連接狀態,閃爍表示沒有藍牙連接,常亮表示藍牙已連接並打開了端口,STATE腳輸出高電平為已連接,其他狀態為低電平。

3、設置模塊為主模式:模塊已經為軟件設置主從模塊,通過串口發送AT+ROLE1(回車或者加\r\n),返回OK,則表示設置成功,此時模塊LED燈進入快閃。主模塊連接從模塊需要通過AT指令進行連接(詳情請參照BT05 AT指令集)。

4、底板3.3V LDO,輸入電壓3.6~6V,輸入電壓禁止超過7V!

5、接口電平3.3V,可以直接連接各種單片機(51,AVR,PIC,ARM,MSP430等),5V單片機也可直接連接,無需MAX232也不能經過MAX232!

6、空曠地有效距離7-10米,超過10米也是可能的,但不對此距離的連接質量做保證

7、配對以后當全雙工串口使用,無需了解任何藍牙協議,但僅支持8位數據位、1位停止位、無奇偶校驗的通信格式,這也是最常用的通信格式,不支持其他格式。

8、在未建立藍牙連接時支持通過AT指令設置波特率、名稱、配對密碼,設置的參數掉電保存。藍牙連接以后自動切換到透傳模式

9、體積小巧(3.57cm*1.52cm),工廠貼片生產,保證貼片質量。並套透明熱縮管,防塵美觀,且有一定的防靜電能力。

10、該鏈接為從機,從機能與各種帶藍牙功能的電腦、藍牙主機、大部分帶藍牙的手機、PDA、PSP等智能終端配對,從機之間不能配對。

 

模塊接線

輸入電壓:3.3V/5V  只需要一組電源供電。

內置電平轉換功能。

如果用5.0V MCU與藍牙模塊通訊,5.0V電源端口供電,RX TX 邏輯電平5V

如果用3.3V MCU與藍牙模塊通訊,3.3V電源端口供電,RX TX 邏輯電平3.3V

RX,藍牙模塊串口接收端與MCU的TXD連接。

TX,藍牙模塊串口發送端與MCU的RXD連接。

GND,地端電源負極

3.3V,電源端3.3V電源

5V,電源端5V電源

模塊使用注意事項
MLT-BT05 4.0 藍牙模塊工作在 2.4G 無線頻段,應盡量避免各種因素對無線收發
的影響,注意以下幾點:
1、包圍藍牙模塊的產品外殼避免使用金屬,當使用部分金屬外殼時,應盡量讓模塊天線部分遠離金屬部分。
2、產品內部金屬連接線或者金屬螺釘,應盡量遠離模塊天線部分。
3、模塊天線部分應靠載板 PCB 四圍放置,不允許放置於板中,且天線下方載板銑空,與天線平行的方向,不允許鋪銅或走線。直接把天線部分直接露出載板,也是比較好的選擇。
4、模塊下方盡量鋪大片 GND,走線盡量往外圍延伸。
5、建議在基板上的模塊貼裝位置使用絕緣材料進行隔離,例如在該位置放一個
整塊的絲印(TopOverLay)。

小常識(非常重要)
TXD:發送端,一般表示為自己的發送端,正常通信必須接另一個設備的RXD。
RXD:接收端,一般表示為自己的接收端,正常通信必須接另一個設備的TXD。
正常通信時候本身的TXD永遠接設備的RXD!
自收自發:正常通信時RXD接其他設備的TXD,因此如果要接收自己發送的數據顧名思義,也就是自己接收自己發送的數據,即自身的TXD直接連接到RXD,用來測試本身的發送和接收是否正常,是最快最簡單的測試方法,當出現問題時首先做該測試確定是否產品故障,也稱回環測試。

 

藍牙4.0BLE
藍牙發展至今經歷了8個版本的更新,1.1、1.2、2.0、2.1、3.0、4.0、4.1、4.2。那么在1.x~3.0之間的我們稱之為傳統藍牙,4.x開始的藍牙我們稱之為低功耗藍牙也就是藍牙ble,當然4.x版本的藍牙也是向下兼容的。android手機必須系統版本4.3及以上才支持BLE API。低功耗藍牙較傳統藍牙,傳輸速度更快,覆蓋范圍更廣,安全性更高,延遲更短,耗電極低等等優點。(現在的穿戴設備都是使用BLE藍牙技術的)
傳統藍牙與低功耗藍牙通信方式也有所不同,傳統的一般通過socket方式,而低功耗藍牙是通過Gatt協議來實現。

主要優點
低功耗,使用標准有機電池,可運行一年乃至數年,成本低,可以完全實現兼容,速度支持1M的數據傳輸,可以最大程度的減少4G的串擾,更加智能,最大可以在3毫秒內完成數據的傳輸,安全性采用加密算法,會有數據包的加密和認證。所以藍牙4.0的優點就是3種規格於一體,包括傳統藍牙的技術,與3.0的版本最大的區別就是功耗更低了,4.0的版本比老版本的功耗低了90%,隨着藍牙技術由手機,游戲,電腦,汽車等傳統領域向物聯網,醫療等新領域的發展,對用戶的要求也就會越來越高,4.0的版本強化了數據傳輸的技術,又更注重了低功耗的性能。

 

 

 

 

  實驗開源代碼

 

 

/*

【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)

實驗九十六:BT-05藍牙4.0BLE 模塊 串口引出 CC2541兼容HM-10模塊

1、實驗項目:Arduino 調試源代碼

2、實驗接腳:

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");

      }

  }

}

  實驗串口返回情況

 

實驗開源圖形編程(Mind+、Mixly、編玩邊學)

 

實驗場景圖

 

這幾天在網上一直搜索藍牙4.0BLE的電腦端調試軟件和手機上調試app,也去了微信平台查詢相關調試小程序,感覺比傳統藍牙(2.0,3.0)模塊要復雜一些,老是不得要領.......

 

 

 

 

 

 實驗開源代碼

/*

【Arduino】168種傳感器模塊系列實驗(資料代碼+仿真編程+圖形編程)

實驗九十六:BT-05藍牙4.0BLE 模塊 串口引出 CC2541兼容HM-10模塊

1、實驗項目:通過BLE藍牙模塊與Arduino通信控制LED

2、實驗接腳:

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);

    }

  }

}

  實驗串口返回情況

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM