步驟1:示例構建
如果您只是在這里進行說明,則可以跳過此步驟,但是逐步進行可能會使您更加清楚。。
首先,我是將建立一個示例項目,然后我將嘗試解釋其工作原理以及如何復制藍牙通信。我們將構建一個便攜式溫度傳感器,該實時傳感器將實時提要發(fā)送到您的智能手機。該構建可以在一個鋰電池上運行數(shù)天,并輕松演示BLE的優(yōu)勢。
您可以將該模塊用作杯墊來隔離飲料,并在飲料到達瓶中時立即收到通知。最佳溫度。因為如果您要喝40度以上的茶會很麻煩。
您唯一需要的硬件是ESP32開發(fā)板和數(shù)字溫度傳感器。我的電路板支持外部電池,因此我使用從舊設備中回收的 3.7v鋰電池使該項目可移植。
硬件
溫度傳感器的連接很簡單。紅線連接到3.3v,黑線連接到地(gnd),黃線連接到GPIO 2,在我的板上標記為D9。在紅色和黃色電線之間連接一個4.7k歐姆的電阻。我沒有使用電阻,而是使用了傳感器隨附的3針可插拔端子。它具有一個內(nèi)置的上拉電阻。
li-po確實應該使用JST連接器進行連接,但是我不愿意購買它,所以我只是將一些(母對母)跳線插入了連接器中,并焊接了另一對電池端子。這樣可以實現(xiàn)可靠的連接和臨時的電源開關。
現(xiàn)在,作為項目附件,我正在使用從較大的薄片上切下的聚苯乙烯泡沫塑料磁盤。這使得絕緣體更好。另一個小得多的磁盤卡在頂部,但稍稍偏向側面。這是為了包裹多余的電線,這樣它們就不會在整個地方晃來晃去。大量使用膠水和傳感器探針的小孔后,即可開始使用該軟件。
軟件
如果您尚未安裝arduino IDE,請轉到此鏈接下載。默認情況下,arduino軟件不附帶各種ESP32板的板定義。要讓他們訪問此鏈接并以zip格式下載文件。您需要將它們解壓縮到以下位置:
C:/Users//Documents/Arduino/hardware/espserrif/ESP32
其中是您PC上的用戶名。確保各種文件在ESP32文件夾下可用,并且不在另一個文件夾下。
現(xiàn)在,如果您啟動arduino軟件并轉到 tools-》 boards ,則向下滾動時應會看到各種ESP32主板。
大多數(shù)數(shù)字溫度傳感器使用OneWire協(xié)議與微控制器通信,因此我們需要獲取庫。 轉到草繪-》包括庫-》管理庫并搜索 onewire 并安裝太多作者的庫。您不需要onewire集線器。忽略它。
現(xiàn)在,您可以下載并打開此步驟附帶的代碼( temperature-example.ino )。
如果您使用的傳感器與我不同,則必須相應地更改代碼。替換getTemp()下的代碼。只需以
Return ;
的形式返回最終溫度,其中包含溫度的浮點數(shù)在哪里。
插入板子,從工具下面選擇正確的板子和端口,然后單擊上載。
如果代碼拒絕上傳,請斷開傳感器的連接并將GPIO 0接地。上傳后恢復連接。
您的ESP現(xiàn)在應該向全世界大喊咖啡的溫度,但您需要能夠理解它的人。
Android應用
對不起,iPhone用戶(。..并非如此)。
從此處下載apk并安裝。當您啟動該應用程序時,您會看到一個非常簡單的界面。
如果收到錯誤消息“不支持廣告”,請單擊“確定”并忽略它,但是如果收到“不支持BLE”消息,則說明您的手機沒有藍牙4.0或更高版本,并且將無法運行該應用程序。
請確保手機上的藍牙功能已打開,然后單擊“開始掃描”,只要esp處于有效范圍內(nèi)且已開機,則您應該接收到一定溫度值。
可能的錯誤:
-1000 ::這表示您的設備找不到ESP。確保藍牙已打開,然后嘗試重新啟動ESP。
SNA ::這意味著您的手機正在從ESP接收數(shù)據(jù),但ESP本身在GPIO 2上找不到溫度傳感器。請確保連接牢固,請查看是否正在使用正確值的電阻。仔細檢查電路板原理圖,確認您已連接到GPIO 2,而不是連接到標記為D2的引腳。
步驟2:說明
例如名為“氣象站”的設備可以在其下進行維護,例如“溫度”,“濕度”和“風”。當另一個BLE設備(如您的智能手機)掃描設備時,它將看到氣象站,并且在連接到它時,它將能夠接收與不同服務相對應的數(shù)據(jù)流。
目前可供我們使用的庫(用于ESP32)使我們能夠創(chuàng)建一個信標,其他人可以發(fā)現(xiàn),但僅此而已。我們無法創(chuàng)建服務,也無法連接任何設備。
因此,我如何在不創(chuàng)建服務的情況下發(fā)送數(shù)據(jù),就是采用一種類似于WiFi協(xié)議的技術,稱為信標填充。這意味著我將在信標名稱本身中包含要發(fā)送的數(shù)據(jù)。這樣一來,我就可以播發(fā)數(shù)據(jù),而無需其他設備連接到信標。
ble.begin(beaconMsg); //beaconMsg is the advertised name
我們正在使用SimpleBLE庫來創(chuàng)建一個信標,其名稱為ESP格式。其中,“ ESP”始終在名稱開頭保持不變,并且每隔100毫秒就會由getValue()函數(shù)返回的最新數(shù)據(jù)替換。
float getValue(){return sensorValue;}
Android應用會查找以“ ESP”開頭的BLE設備名稱,一旦找到,它就會拆分名稱并僅從末尾顯示數(shù)據(jù)。
通信只是一種方式,應用程序不會發(fā)回任何東西。
步驟3:結論
最終,這種方法不能替代正確實現(xiàn)的BLE庫,但它可能足以完成一些項目,直到Arduino完全支持BLE。希望此Instructables對您有所幫助。
一個大的感謝DFRobot.com向我發(fā)送了以下產(chǎn)品:
ESP32 FireBeetle Board
FireBeetle Expantion Shield
DS18B20溫度傳感器
-
BlueTooth
+關注
關注
3文章
213瀏覽量
61788 -
ESP32
+關注
關注
18文章
977瀏覽量
17463
發(fā)布評論請先 登錄
相關推薦
評論