第1步:獲取所有部件
現(xiàn)在讓我們看看如何構(gòu)建這個(gè)項(xiàng)目。我們需要ESP32板,2.8“ILI9341顯示器,小米溫度和濕度傳感器,面包板和一些電線。
ESP32
2.8“顯示
小米傳感器
面包板
電線
USB電表
Powerbank
第2步:ESP32 Board
如果您不熟悉它,ESP32芯片是我們過去多次使用的流行的ESP8266芯片的繼承者.ESP32是一個(gè)野獸!它提供兩個(gè)32處理內(nèi)核,工作頻率為160MHz ,大量的內(nèi)存,WiFi,藍(lán)牙和許多其他功能,成本約7美元!迷茫的東西!
請(qǐng)觀看我為此委員會(huì)準(zhǔn)備的詳細(xì)評(píng)論。我已將視頻附加到此Instructable上。它將有助于理解為什么這個(gè)芯片會(huì)改變我們永遠(yuǎn)做事的方式!關(guān)于ESP32最激動(dòng)人心的事情之一就是即使它非常強(qiáng)大,它也提供深度睡眠模式,只需要10μA的電流。這使得ESP32成為低功耗應(yīng)用的理想芯片。
步驟3:2.8“用于Arduino和ESP32的TFT顯示器
顯示屏很大,分辨率為320x240像素。與我最喜歡的顯示器相比,1.8英寸彩色TFT顯示屏可以看到它更大。屏幕還提供觸摸功能,后面還有一個(gè)額外的獎(jiǎng)勵(lì)和SD卡插槽。它使用SPI接口,因此與Arduino或ESP32板的連接非常簡(jiǎn)單。顯示器的成本相對(duì)較低;我認(rèn)為它的成本約為11美元對(duì)于這個(gè)顯示器提供的是一個(gè)合理的價(jià)格。
關(guān)于這個(gè)顯示器的另一件事是它不像我們目前使用的觸摸顯示器那樣作為屏蔽。這樣,我們可以連接顯示器任何電路板,Arduino Pro mini,STM32,ESP8266和ESP32。這非常重要,因?yàn)槲覀儸F(xiàn)在有一個(gè)低成本的顯示器,我們可以在每個(gè)電路板上使用。現(xiàn)在,我們可以在這些主板上使用的唯一觸控顯示器是Nextion顯示器,它們更貴,而且說實(shí)話,即使我不時(shí)使用它們,我也不太喜歡它們。
步驟4:連接顯示器
首先,我們必須連接ESP32板到2.8“顯示器。您可以找到附加到Instructable的原理圖。我正在使用大約兩年前發(fā)布的DOIT ESP32板。這個(gè)版本的電路板已不再可用,因?yàn)楝F(xiàn)在有更新版本的電路板提供更多引腳,這個(gè)版本。我使用舊版電路板的唯一原因是電路板的GND引腳位于電路板的同一側(cè),靠近SPI引腳,這使得面包板友好。
連接后我們可以通過電路板向電路板顯示項(xiàng)目。幾秒鐘后,我們會(huì)從附近的小米設(shè)備接收實(shí)時(shí)數(shù)據(jù)。由于該設(shè)備使用藍(lán)牙4,它的范圍非常好。我們可以輕松獲取此設(shè)備從最遠(yuǎn)10米或更遠(yuǎn)的距離傳輸?shù)臄?shù)據(jù)!我們也可以收到小米設(shè)備的電池電量,但我沒有在屏幕上顯示這個(gè)值。
如果我們使用這個(gè)USB儀表,我們可以看到這個(gè)項(xiàng)目的當(dāng)前抽獎(jiǎng)是120左右使用這個(gè)大顯示器-150 mA。如果我們使用電子紙顯示器,將ESP32板置于深度睡眠模式,并且每隔幾分鐘從傳感器獲取數(shù)據(jù),我們就可以使該項(xiàng)目對(duì)電池友好。我將在未來的視頻中嘗試這一點(diǎn)。這個(gè)項(xiàng)目只是一個(gè)演示,我們可以無線地從這個(gè)設(shè)備獲取數(shù)據(jù)。
第5步:項(xiàng)目代碼
現(xiàn)在讓我們看一下項(xiàng)目的軟件方面。
我使用了從小米設(shè)備獲取數(shù)據(jù)的代碼,并用它構(gòu)建了一個(gè)獨(dú)立的項(xiàng)目。
在這個(gè)變量中,我們聲明我們需要每10秒獲取一次新數(shù)據(jù)。
#define SCAN_TIME 10 // seconds
這里,我們聲明要以攝氏度顯示溫度。如果要使用Imperial系統(tǒng),只需將此變量設(shè)置為false即可。
boolean METRIC = true; //Set true for metric system; false for imperial
在設(shè)置功能中,我們初始化ESP32板的顯示屏和藍(lán)牙模塊,然后在屏幕上繪制用戶界面。
void setup() {
WRITE_PERI_REG(RTC_CNTL_BROWN_OUT_REG, 0); //disable brownout detector
tft.begin();
Serial.begin(115200);
Serial.println(“ESP32 XIAOMI DISPLAY”);
initBluetooth();
drawUI();
}
接下來,我們每隔10秒搜索附近的藍(lán)牙設(shè)備。我們不與小米設(shè)備建立連接,因?yàn)樗恍枰N覀冎粧呙韪浇乃{(lán)牙低功耗外設(shè)并檢查廣播廣告包。
void loop() {
char printLog[256];
Serial.printf(“Start BLE scan for %d seconds.。. ”, SCAN_TIME);
BLEScanResults foundDevices = pBLEScan-》start(SCAN_TIME);
int count = foundDevices.getCount();
printf(“Found device count : %d ”, count);
delay(100);
}
濕度和溫度值存儲(chǔ)在這些數(shù)據(jù)包中,因此我們只需要讀取它們。在我們讀取值后,我們?cè)谄聊簧巷@示它們。與往常一樣,您可以在此Instructable附帶的說明中找到指向此項(xiàng)目代碼的鏈接。
步驟6:最終版本&改進(jìn)
現(xiàn)在我們知道如何從這個(gè)傳感器無線獲取數(shù)據(jù),我們可以建立一個(gè)完整的電池供電氣象站。由于這款小米設(shè)備是商用產(chǎn)品,因此可提供出色的電池壽命。不幸的是,我們的項(xiàng)目還沒有實(shí)現(xiàn)類似的電池消耗。因此,我計(jì)劃將此傳感器用作氣象站項(xiàng)目的戶外傳感器,該項(xiàng)目將使用大型電子紙顯示器。這會(huì)很酷。
-
藍(lán)牙
+關(guān)注
關(guān)注
114文章
5860瀏覽量
170920 -
監(jiān)測(cè)器
+關(guān)注
關(guān)注
0文章
176瀏覽量
38813 -
小米
+關(guān)注
關(guān)注
70文章
14381瀏覽量
144615 -
ESP32
+關(guān)注
關(guān)注
18文章
977瀏覽量
17460
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論