吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

HC05藍(lán)牙模塊編程實例

CHANBAEK ? 來源:嵌入式大本營 ? 作者:小小飛飛哥 ? 2023-05-26 16:01 ? 次閱讀

今天分享一個實踐項目——HC05藍(lán)牙模塊的編程

實現(xiàn)的目標(biāo)是利用藍(lán)牙模塊,實現(xiàn)手機(jī)單片機(jī)通信,在手機(jī)上點擊按鈕,點亮單片機(jī)上面的小燈。

使用到的器件是HC05藍(lán)牙模塊,單片機(jī)(51或者stm32都可以),杜邦線若干。 手機(jī)端的調(diào)試工具為“藍(lán)牙串口助手app”

圖片

圖片

先稍微介紹一下HC05藍(lán)牙模塊,管腳如下:

圖片

HC05 藍(lán)牙串口模塊所有功能都是通過 AT 指令集控制,比較簡單,該部分使用的詳細(xì)信息,請參考 HC05 藍(lán)牙指令集。 今天主要是介紹建立通信的過程,對于模塊具體的一些其他方面的應(yīng)用暫時不多說。

HC05 藍(lán)牙串口模塊有兩種狀態(tài),一種是AT指令狀態(tài),一種是連接狀態(tài)。 在AT指令狀態(tài)下,可以向模塊發(fā)送一些指令,退出AT狀態(tài)后,可以與藍(lán)牙設(shè)備比如手機(jī)建立連接。

進(jìn)入AT 指令狀態(tài)有兩種方法:①上電同時/上電之前將 SET 腳設(shè)置為 VCC,上電后,模塊即進(jìn)入 AT 指令 狀態(tài)。 ②模塊上電后,通過將SET 腳接 VCC,使模塊進(jìn)入AT 狀態(tài)。 方法1進(jìn)入AT 狀態(tài)后,模塊的波特率為:38400(8位數(shù)據(jù)位, 1位停止位)。 方法2進(jìn)入 AT 狀態(tài)后,模塊波特率和通信波特率一致。 在編程中我們通過改變SET管腳電平來切換狀態(tài)。

從模塊管腳可以看出,它是利用串口通信的,所以,帶串口的單片機(jī)都可以作為主控芯片。 我們分別使用stm32和51單片機(jī)進(jìn)行了驗證,完全是沒有問題的。

一、連線

根據(jù)管腳說明來與單片機(jī)連線,VCC接3.3V或5V都可以。 模塊發(fā)送管腳連單片機(jī)接收管腳,接收管腳連發(fā)送管腳,這個千萬要注意,SET腳隨便連一個IO口即可,STATE管腳可連可不連,不影響。

二、整體編程思路

藍(lán)牙模塊接收手機(jī)發(fā)送的信號,將信號通過串口發(fā)送給單片機(jī),單片機(jī)接收到信號后,執(zhí)行相應(yīng)的操作。 如果要向模塊發(fā)送指令,通常是采用按鍵的方式,可以使用掃描按鍵,也可以使用外部中斷,按下按鍵就執(zhí)行發(fā)送指令的程序,比如通過按鍵來切換模塊主從模式,修改密碼,修改波特率,修改名字等等。

涉及到的單片機(jī)部分主要是串口和定時器,串口用來向模塊發(fā)送指令或者接收來自外部的信號,定時器主要用來產(chǎn)生定時中斷,用來界定兩幀數(shù)據(jù),比如約定接收的相鄰兩個字節(jié)時間間隔超過5ms,則認(rèn)定為是兩幀數(shù)據(jù),這個間隔是自定義的。

三、具體編程思路

1、串口部分

串口部分是整個最重要的一部分,大致要完成一下事情:

初始化串口,設(shè)置好串口的通信波特率,開啟串口中斷,編寫串口中斷函數(shù)。在串口中斷函數(shù)里面把接收的數(shù)據(jù)存入一個數(shù)組當(dāng)中。編寫串口發(fā)送函數(shù),用來向模塊發(fā)送指令。stm32有現(xiàn)成函數(shù)可以調(diào)用,51單片機(jī)要自己去編寫單字節(jié)的發(fā)送函數(shù)和字符串發(fā)送函數(shù)。

2、定時器部分

初始化定時器,設(shè)置好定時時間,使能中斷,在中斷函數(shù)里面關(guān)閉定時器(后面再解釋為什么)。

圖片

上面是我大致畫的一個思路圖。其實在整個過程當(dāng)中,我們定義了一個全局變量sta,初始值為0,它有兩個作用,最高位用來標(biāo)記一幀數(shù)據(jù)是否接收完成,為1表示一幀數(shù)據(jù)接收完成,為0相反。剩下的位用來記錄接收字節(jié)的個數(shù)。

我們來大致理一下思路:sta初始值為0,假設(shè)現(xiàn)在收到一串?dāng)?shù)據(jù)若干個字節(jié),那么就會觸發(fā)串口中斷。第一個字節(jié)觸發(fā)中斷時,顯然sta為0,此時程序?qū)⒍〞r器計數(shù)值清零,并且開啟定時器,然后sta+1,把數(shù)據(jù)存放在數(shù)組里面,表示接收到了一個數(shù)據(jù),那么緊接著可能第二個字節(jié)也收到了,再次觸發(fā)中斷,這個時候因為sta為1,所以不必開啟定時器,只要把計數(shù)值清零即可,此時定時器仍在計時,只是因為你把計數(shù)值清零了,所以不會發(fā)生定時中斷,然后重復(fù)這樣的動作直到接收完最后一個字節(jié)。接收完最后一個字節(jié)后就不再觸發(fā)串口中斷,也就是不再將定時器清零,也就意味著會發(fā)生定時器中斷,而在定時器中斷函數(shù)里面,我們將sta最高位置1,表示一幀數(shù)據(jù)接收完成,同時關(guān)閉定時器。

這樣我們就可以把剛剛接收后存放在數(shù)組里的數(shù)據(jù)拿來用了,比如對接收的數(shù)據(jù)進(jìn)行判斷,然后執(zhí)行不同的操作。使用完之后一定要及時把sta清零,這樣進(jìn)入串口中斷之后才會保存數(shù)據(jù)。

所以sta的最高位主要就是用來標(biāo)記一幀數(shù)據(jù)是否接收完成。 當(dāng)接收的兩個字節(jié)數(shù)據(jù)時間間隔超過了定時器設(shè)置的時間時,定時器中斷函數(shù)就會把它最高位置1,置1后串口中斷函數(shù)里面將不再保存后面接收的數(shù)據(jù)(認(rèn)為這不是同一幀數(shù)據(jù)),使用完后把sta最高位及時清零,方便后面再次進(jìn)入串口中斷并保存數(shù)據(jù)。

這個是接收部分。 對于發(fā)送部分來說就更簡單了,直接通過串口把數(shù)據(jù)發(fā)送至藍(lán)牙模塊即可。

另外需要注意的就是,使用51單片機(jī)要注意串口會占用一個定時器來產(chǎn)生波特率,所以要使用另一個定時器避免干擾。 經(jīng)過實驗驗證,stm32接收一串字符時能夠很好的還原,而51單片機(jī)則容易丟失數(shù)據(jù),可能是因為51單片機(jī)代碼執(zhí)行速度太慢,接收一個字節(jié)之后還沒處理完就又來了一個數(shù)據(jù),從而導(dǎo)致數(shù)據(jù)丟失,所以最好只發(fā)送一個字節(jié)。

總的來說,51的代碼會更簡單一些,但是51非常不方便調(diào)試,每次修改程序后都要重新燒錄,51單片機(jī)燒錄必須冷啟動,燒錄時還得把杜邦線拔了(至少要拔掉VCC才能燒錄進(jìn)去),所以反復(fù)的修改程序和燒錄是一件非常麻煩的事情。 當(dāng)然,在考慮成本的清空下,同樣都能完成功能,肯定是選擇51了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6043

    文章

    44622

    瀏覽量

    638533
  • 通信
    +關(guān)注

    關(guān)注

    18

    文章

    6070

    瀏覽量

    136424
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10923

    瀏覽量

    357559
  • 編程
    +關(guān)注

    關(guān)注

    88

    文章

    3637

    瀏覽量

    93981
  • 藍(lán)牙模塊
    +關(guān)注

    關(guān)注

    30

    文章

    578

    瀏覽量

    55886
收藏 人收藏

    評論

    相關(guān)推薦

    HC05藍(lán)牙模塊資料

    HC05藍(lán)牙模塊資料(基于stm32)
    發(fā)表于 06-03 20:35

    請問安卓手機(jī)怎么與HC05藍(lán)牙模塊通信?

    程序,發(fā)現(xiàn)Android需要建立BluetoothSocket(android.bluetooth.BluetoothSocket)才行,HC05模塊支持這么做嗎?要與HC05通信Android端需要怎么
    發(fā)表于 05-08 23:02

    hc05藍(lán)牙串口通信模塊介紹

    hc05藍(lán)牙串口通信模塊介紹,HC-05藍(lán)牙串口通信模塊應(yīng)該是使用最廣泛的一種
    發(fā)表于 07-14 07:21

    藍(lán)牙HC05是什么

    stm 32 串口通信藍(lán)牙篇1. HC-05藍(lán)牙1.1藍(lán)牙模塊使用介紹藍(lán)牙
    發(fā)表于 08-11 09:29

    藍(lán)牙HC05是什么?hc05藍(lán)牙模塊如何使用

    藍(lán)牙HC05是主從一體的藍(lán)牙串口模塊,簡單的說,當(dāng)藍(lán)牙設(shè)備與藍(lán)牙設(shè)備配對連接成功后,我們可以忽視
    發(fā)表于 01-11 07:46

    藍(lán)牙HC05資料

    藍(lán)牙HC05資料
    發(fā)表于 12-19 14:01 ?100次下載

    HC05藍(lán)牙手冊,藍(lán)牙的調(diào)試手冊

    HC05藍(lán)牙手冊,藍(lán)牙的調(diào)試手冊
    發(fā)表于 10-24 13:44 ?90次下載
    <b class='flag-5'>HC05</b><b class='flag-5'>藍(lán)牙</b>手冊,<b class='flag-5'>藍(lán)牙</b>的調(diào)試手冊

    串口轉(zhuǎn)藍(lán)牙模塊HC05資料

    串口轉(zhuǎn)藍(lán)牙模塊HC05資料
    發(fā)表于 11-29 16:33 ?75次下載

    hc05hc06有什么不同_hc05hc06區(qū)別

    hc05hc06是兩種藍(lán)牙串口模塊,兩者經(jīng)常被拿來比較,他們之間有何區(qū)別呢?
    發(fā)表于 01-11 15:51 ?7.8w次閱讀
    <b class='flag-5'>hc05</b>和<b class='flag-5'>hc</b>06有什么不同_<b class='flag-5'>hc05</b>和<b class='flag-5'>hc</b>06區(qū)別

    hc05藍(lán)牙模塊如何使用_兩個hc05藍(lán)牙模塊配對

    藍(lán)牙HC05是主從一體的藍(lán)牙串口模塊,簡單的說,當(dāng)藍(lán)牙設(shè)備與藍(lán)牙設(shè)備配對連接成功后,我們可以忽視
    發(fā)表于 01-11 16:09 ?11.1w次閱讀

    HC05主從機(jī)一體藍(lán)牙模塊資料合集免費下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是HC-05主從機(jī)一體藍(lán)牙模塊資料合集免費下載包括了:藍(lán)牙測試軟件,電路圖,HC05指令集
    發(fā)表于 05-06 17:11 ?89次下載
    <b class='flag-5'>HC05</b>主從機(jī)一體<b class='flag-5'>藍(lán)牙</b><b class='flag-5'>模塊</b>資料合集免費下載

    HC05藍(lán)牙串口模塊的原理圖和源代碼配套軟件及實驗說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是HC05藍(lán)牙串口模塊的原理圖和源代碼配套軟件及實驗說明包括了:ATK-HC05藍(lán)牙串口
    發(fā)表于 03-18 08:00 ?155次下載
    <b class='flag-5'>HC05</b><b class='flag-5'>藍(lán)牙</b>串口<b class='flag-5'>模塊</b>的原理圖和源代碼配套軟件及實驗說明

    嵌入式單片機(jī)基礎(chǔ)篇(二十八)之藍(lán)牙模塊HC05與BT05 AT指令

    藍(lán)牙模塊HC05與BT05 AT指令1、HC05:2、BT05
    發(fā)表于 11-24 12:06 ?23次下載
    嵌入式單片機(jī)基礎(chǔ)篇(二十八)之<b class='flag-5'>藍(lán)牙</b><b class='flag-5'>模塊</b><b class='flag-5'>HC05</b>與BT<b class='flag-5'>05</b> AT指令

    HC05 藍(lán)牙模塊 連接 ESP32 經(jīng)典藍(lán)牙

    概述HC05是一款常用的經(jīng)典藍(lán)牙模塊,某寶有大量銷售,主從機(jī)一體,而ESP32的藍(lán)牙兼容經(jīng)典藍(lán)牙和低功耗
    發(fā)表于 11-24 12:36 ?65次下載
    <b class='flag-5'>HC05</b> <b class='flag-5'>藍(lán)牙</b><b class='flag-5'>模塊</b> 連接 ESP32 經(jīng)典<b class='flag-5'>藍(lán)牙</b>

    HC05藍(lán)牙開源項目

    電子發(fā)燒友網(wǎng)站提供《HC05藍(lán)牙開源項目.zip》資料免費下載
    發(fā)表于 07-18 14:28 ?16次下載
    <b class='flag-5'>HC05</b><b class='flag-5'>藍(lán)牙</b>開源項目
    百家乐平注资讯| 百家乐官网博彩通博彩网皇冠网澳门赌场真人赌博 | 澳门百家乐怎样下注| 六合彩投注网| 百家乐官网免费下| 大发888游戏平台 df888ylcxz46| 个人百家乐官网策略| 大发888 58| 墓地附近做生意风水| 新世纪百家乐官网现金网| 海港城百家乐的玩法技巧和规则| 百家乐官网大小点桌子| 云鼎娱乐城优惠活动| 百家乐如何看| 百家乐金海岸娱乐| 实战百家乐官网博彩正网| 威尼斯人娱乐场28gxpjwnsr| 24山之巽山乾向水法及兼家分针| 百家乐官网太阳城菲律宾| 网上百家乐| 百家乐新注册送彩金| 杨公风水24山分金水法| 百家乐官网四式正反路| 德州扑克牌型| 百家乐加牌规| 2024年九运的房屋风水吉凶| 申博百家乐官网有假吗| 澳门葡京| 百家乐官网视频游365| 皇冠现金网是真的吗| bbin赌场| 飞天百家乐的玩法技巧和规则| 海立方百家乐海立方| 休闲百家乐官网的玩法技巧和规则 | 战神百家乐官网的玩法技巧和规则 | 百家乐官网怎样玩的| 百家乐官网桌子豪华| 百家乐官网有多少种游戏| 视频百家乐| 皇冠最新投注网| 普兰县|