第1步:獲取所有部件
現(xiàn)在讓我們看看如何構(gòu)建這個項目。我們需要ESP32板,2.8“ILI9341顯示器,小米溫度和濕度傳感器,面包板和一些電線。
ESP32
2.8“顯示
小米傳感器
面包板
電線
USB電表
Powerbank
第2步:ESP32 Board
如果您不熟悉它,ESP32芯片是我們過去多次使用的流行的ESP8266芯片的繼承者.ESP32是一個野獸!它提供兩個32處理內(nèi)核,工作頻率為160MHz ,大量的內(nèi)存,WiFi,藍牙和許多其他功能,成本約7美元!迷茫的東西!
請觀看我為此委員會準備的詳細評論。我已將視頻附加到此Instructable上。它將有助于理解為什么這個芯片會改變我們永遠做事的方式!關(guān)于ESP32最激動人心的事情之一就是即使它非常強大,它也提供深度睡眠模式,只需要10μA的電流。這使得ESP32成為低功耗應(yīng)用的理想芯片。
步驟3:2.8“用于Arduino和ESP32的TFT顯示器
顯示屏很大,分辨率為320x240像素。與我最喜歡的顯示器相比,1.8英寸彩色TFT顯示屏可以看到它更大。屏幕還提供觸摸功能,后面還有一個額外的獎勵和SD卡插槽。它使用SPI接口,因此與Arduino或ESP32板的連接非常簡單。顯示器的成本相對較低;我認為它的成本約為11美元對于這個顯示器提供的是一個合理的價格。
關(guān)于這個顯示器的另一件事是它不像我們目前使用的觸摸顯示器那樣作為屏蔽。這樣,我們可以連接顯示器任何電路板,Arduino Pro mini,STM32,ESP8266和ESP32。這非常重要,因為我們現(xiàn)在有一個低成本的顯示器,我們可以在每個電路板上使用。現(xiàn)在,我們可以在這些主板上使用的唯一觸控顯示器是Nextion顯示器,它們更貴,而且說實話,即使我不時使用它們,我也不太喜歡它們。
步驟4:連接顯示器
首先,我們必須連接ESP32板到2.8“顯示器。您可以找到附加到Instructable的原理圖。我正在使用大約兩年前發(fā)布的DOIT ESP32板。這個版本的電路板已不再可用,因為現(xiàn)在有更新版本的電路板提供更多引腳,這個版本。我使用舊版電路板的唯一原因是電路板的GND引腳位于電路板的同一側(cè),靠近SPI引腳,這使得面包板友好。
連接后我們可以通過電路板向電路板顯示項目。幾秒鐘后,我們會從附近的小米設(shè)備接收實時數(shù)據(jù)。由于該設(shè)備使用藍牙4,它的范圍非常好。我們可以輕松獲取此設(shè)備從最遠10米或更遠的距離傳輸?shù)臄?shù)據(jù)!我們也可以收到小米設(shè)備的電池電量,但我沒有在屏幕上顯示這個值。
如果我們使用這個USB儀表,我們可以看到這個項目的當(dāng)前抽獎是120左右使用這個大顯示器-150 mA。如果我們使用電子紙顯示器,將ESP32板置于深度睡眠模式,并且每隔幾分鐘從傳感器獲取數(shù)據(jù),我們就可以使該項目對電池友好。我將在未來的視頻中嘗試這一點。這個項目只是一個演示,我們可以無線地從這個設(shè)備獲取數(shù)據(jù)。
第5步:項目代碼
現(xiàn)在讓我們看一下項目的軟件方面。
我使用了從小米設(shè)備獲取數(shù)據(jù)的代碼,并用它構(gòu)建了一個獨立的項目。
在這個變量中,我們聲明我們需要每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板的顯示屏和藍牙模塊,然后在屏幕上繪制用戶界面。
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秒搜索附近的藍牙設(shè)備。我們不與小米設(shè)備建立連接,因為它不需要。我們只掃描附近的藍牙低功耗外設(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);
}
濕度和溫度值存儲在這些數(shù)據(jù)包中,因此我們只需要讀取它們。在我們讀取值后,我們在屏幕上顯示它們。與往常一樣,您可以在此Instructable附帶的說明中找到指向此項目代碼的鏈接。
步驟6:最終版本&改進
現(xiàn)在我們知道如何從這個傳感器無線獲取數(shù)據(jù),我們可以建立一個完整的電池供電氣象站。由于這款小米設(shè)備是商用產(chǎn)品,因此可提供出色的電池壽命。不幸的是,我們的項目還沒有實現(xiàn)類似的電池消耗。因此,我計劃將此傳感器用作氣象站項目的戶外傳感器,該項目將使用大型電子紙顯示器。這會很酷。
-
藍牙
+關(guān)注
關(guān)注
114文章
5775瀏覽量
169870 -
監(jiān)測器
+關(guān)注
關(guān)注
0文章
171瀏覽量
38769 -
小米
+關(guān)注
關(guān)注
69文章
14331瀏覽量
143883 -
ESP32
+關(guān)注
關(guān)注
18文章
960瀏覽量
17114
發(fā)布評論請先 登錄
相關(guān)推薦
評論