如何使用Arduino和HC-05藍(lán)牙模塊在OLED顯示器上接收和顯示數(shù)據(jù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
我們已經(jīng)看到了如何通過HC-05發(fā)送和接收數(shù)據(jù),但大多數(shù)藍(lán)牙應(yīng)用程序需要的不僅僅是發(fā)送和接收。在本教程中,我們將看到如何將HC-05與0.91英寸。OLED顯示屏打印HC-05接收到的數(shù)據(jù)。
軟件
為了發(fā)送數(shù)據(jù),我們將使用Arduino藍(lán)牙控制器。
注意:HC-05藍(lán)牙模塊僅適用于Android設(shè)備。
硬件
HC-05藍(lán)牙模塊
?藍(lán)牙版本:HC-05模塊支持藍(lán)牙2.0+EDR (Enhanced Data Rate,增強(qiáng)數(shù)據(jù)速率),提供相對穩(wěn)定可靠的連接。
?串行通信:該模塊使用串行通信接口與Arduino進(jìn)行通信。它使用UART引腳連接到Arduino板,標(biāo)記為RX(接收)和TX(發(fā)送)。
?工作模式:模塊主要有兩種工作模式:命令模式(AT模式)和數(shù)據(jù)模式(接收和發(fā)送數(shù)據(jù))。在“AT模式”下,您可以向模塊發(fā)送配置命令,指定藍(lán)牙名稱、PIN碼和工作模式等參數(shù)。在“數(shù)據(jù)模式”中,您可以發(fā)送和接收數(shù)據(jù)。
?電源:HC-05模塊需要3.3V左右的電源。然而,它通常容忍5V邏輯電平,使其與大多數(shù)Arduino板兼容。
注意:如果我們看原理圖,我們可以看到HC-05模塊的關(guān)鍵引腳連接到Arduino nano的VCC。在上電Arduino之前,應(yīng)將關(guān)鍵引腳連接到VCC,一旦HC-05模塊開始緩慢閃爍,必須斷開連接。
雖然我們在這個(gè)項(xiàng)目中使用的是HC-05藍(lán)牙模塊,它非常便宜和耐用,但我們使用分壓器電路來確保RXD引腳不會(huì)損壞。它是通過連接橫跨RXD和引腳11的1k Ω電位器和橫跨RXD和地的2k Ω電位器制成的。
OLED顯示器:
?體積小巧:由于體積小巧,非常適合智能手表和健身追蹤器等小型設(shè)備。
?高對比度和亮度:提供深黑色和充滿活力的顏色,具有高對比度和亮度。
?低功耗:功耗低于lcd,提高可穿戴設(shè)備的電池壽命。
?寬視角:保持一致的顏色和清晰度,從不同的視角。
?快速響應(yīng)時(shí)間:提供快速的響應(yīng)時(shí)間,減少動(dòng)態(tài)內(nèi)容的運(yùn)動(dòng)模糊。
OLED顯示器因其卓越的圖像質(zhì)量、效率和設(shè)計(jì)靈活性而廣泛應(yīng)用于智能手機(jī)、電視、可穿戴設(shè)備和數(shù)字標(biāo)牌等各種設(shè)備。
這兩種模塊都是智能手表、智能眼鏡等小型應(yīng)用的理想選擇。
代碼
讓我們一步一步來了解它是如何工作的:
庫和常量
庫包含:包括必要的軟件串行通信(SoftwareSerial), SPI通信(SPI), I2C通信(Wire)和控制OLED顯示器(Adafruit_GFX和Adafruit_SSD1306)的庫。
常量定義:定義檢查藍(lán)牙模塊連接狀態(tài)的STATEPIN和OLED顯示器復(fù)位引腳的OLED_RESET。
對象和變量初始化
對象創(chuàng)建:使用復(fù)位引腳為OLED顯示器創(chuàng)建對象顯示,并在引腳10和11上為軟件串行通信創(chuàng)建對象藍(lán)牙。
變量聲明:聲明一個(gè)字符串變量數(shù)據(jù)來保存從藍(lán)牙模塊接收到的數(shù)據(jù)。
設(shè)置函數(shù)
串行和藍(lán)牙初始化:使用Serial.begin(9600)初始化串行通信以進(jìn)行調(diào)試,并使用Bluetooth .begin(9600)設(shè)置藍(lán)牙模塊。
引腳設(shè)置:配置STATEPIN作為檢查連接狀態(tài)的輸入。
OLED初始化:用I2C地址0x3C初始化OLED顯示器,清除之前的任何內(nèi)容,設(shè)置文本大小和顏色,定位光標(biāo),并向顯示器打印初始消息“Data Received:”。
循環(huán)函數(shù)
Connection Check: loop函數(shù)首先通過讀取STATEPIN來檢查藍(lán)牙模塊的狀態(tài)。如果讀數(shù)為1,則表示客戶端已連接。
斷開連接更新:如果沒有客戶端連接(STATEPIN讀取0),則重置數(shù)據(jù)變量,將“Disconnected”打印到串行監(jiān)視器,并更新OLED顯示為“Not connected”。
讀取數(shù)據(jù):如果客戶端已連接,代碼將進(jìn)入一個(gè)循環(huán),該循環(huán)檢查是否有來自藍(lán)牙模塊的可用數(shù)據(jù)。它將可用數(shù)據(jù)讀入data變量,打印到串行監(jiān)視器,并通過發(fā)送“read”來響應(yīng)藍(lán)牙模塊。stoppllistening()和listen()方法用于暫時(shí)停止和恢復(fù)軟件串口上的偵聽。
更新OLED顯示屏:讀取數(shù)據(jù)后,代碼更新OLED顯示屏。它清除顯示器,打印接收到的數(shù)據(jù),并顯示“已連接”以指示活動(dòng)連接。此更新提供了接收到的數(shù)據(jù)和連接狀態(tài)的可視化確認(rèn)。
應(yīng)用程序
應(yīng)用說明設(shè)置:
?為Arduino供電。
?現(xiàn)在,HC-05模塊應(yīng)該會(huì)快速閃爍。
?接下來,打開應(yīng)用程序。
?允許它訪問藍(lán)牙設(shè)置。
?在列表中選擇HC-05。
?選擇控制臺(tái)/終端模式。
?現(xiàn)在模塊應(yīng)該每2秒閃爍一次。
?OLED顯示屏應(yīng)該顯示已連接。
?應(yīng)該彈出一個(gè)帶有鍵盤的控制臺(tái)(見下文)。
?現(xiàn)在你輸入的任何東西都應(yīng)該出現(xiàn)在OLED顯示屏上。
?享受吧!
本文編譯自hackster.io