使用ESP32在SD卡上記錄溫濕度數(shù)據(jù)
數(shù)據(jù)是任何分析和預(yù)測的關(guān)鍵資源。它總是需要創(chuàng)建任何信息或統(tǒng)計。有很多在線和離線平臺可用于記錄數(shù)據(jù),我們已經(jīng)使用了許多基于物聯(lián)網(wǎng)的平臺和web服務(wù)器來存儲和可視化數(shù)據(jù)。這里我們使用最流行的離線存儲數(shù)據(jù)的方式,即SD卡。
之前我們使用Arduino Uno來記錄SD卡上的數(shù)據(jù),今天我們將使用ESP32來記錄SD卡上的溫濕度數(shù)據(jù)。ESP32從DHT11傳感器收集溫度和濕度值,并將這些值存儲在SD卡上。保存在SD卡中的數(shù)據(jù)文件可以很容易地打開為文本文件進行進一步分析。
組件的要求
?ESP32
?DHT11溫濕度傳感器
?SD卡模塊
?SD卡讀卡器
?跳線
SD卡適配器
Micro - SD卡適配器是Micro - SD卡讀卡器模塊,用于讀寫SD卡上的數(shù)據(jù)。MicroSD卡適配器的引腳直接與Arduino或任何其他微控制器兼容。該模塊具有與任何SD卡兼容的SPI接口,并使用5V或3.3V電源。
特性
?支持Micro SD卡(<=2G), Micro SDHC卡(<=32G)
?可接口電平為5V或3.3V的電平轉(zhuǎn)換電路板
?電源為4.5V ~ 5.5V,穩(wěn)壓電路板為3.3V
?通信接口為標準SPI接口。
線路圖
ESP32 SD卡數(shù)據(jù)記錄電路圖如下:
如電路圖所示,由于所有組件都用作模塊,因此連接非常簡單,我們可以直接在面包板上構(gòu)建它們。SD卡模塊與ESP32通過SPI通信連接。ESP32上的SPI引腳為5、18、19和23引腳。連接進一步分類如下表所示:
我們之前使用DHT11傳感器構(gòu)建了一個使用不同微控制器的氣象站。
代碼的解釋
ESP32 SD卡記錄器的完整代碼在頁面末尾給出。這里我們將解釋代碼的一些重要部分。
在對ESP32進行編程之前,需要安裝將在此代碼中使用的SPI.h、SD.h、NTPClient.h和DHT.h庫。這些資料庫可從以下連結(jié)下載:
?SPI.h
?SD.h
?DHT.h
?NTPClient.h
下載這些庫之后,通過包含microSD卡模塊、DHT11和NTP服務(wù)器所需的庫來啟動代碼。
在接下來的幾行中,定義DHT傳感器的類型和連接DHT11傳感器的ESP32引腳。如果您使用的是DHT22,那么將DHT類型更改為DHT22。在我的情況下,DHT傳感器連接到ESP32的GPIO4。
然后創(chuàng)建字符串和浮點變量來存儲Time、Date和DHT11傳感器數(shù)據(jù)。存儲在這些變量中的數(shù)據(jù)將保存在microSD卡上。
然后在SSID和密碼變量中輸入網(wǎng)絡(luò)憑據(jù),以便ESP32能夠與本地網(wǎng)絡(luò)建立連接。
在下一行中,定義連接到GPIO 5的SD卡CS引腳。
在接下來的兩行代碼中,為NTPClient創(chuàng)建一個實例,以便從NTP服務(wù)器請求日期和時間。
在setup()函數(shù)中,初始化串行通信、DHT11傳感器,并使用前面定義的憑據(jù)將ESP32連接到Wi-Fi網(wǎng)絡(luò)。
在接下來的幾行中,初始化NTP客戶端以從NTP服務(wù)器獲取日期和時間。根據(jù)您的時區(qū),更改timeClient.setTimeOffset(time)函數(shù)中的time值。按照給定的鏈接獲取GMT偏移時區(qū)的列表。
然后初始化SD卡。if條件檢查microSD卡是否正常工作。
如果SD卡正常工作,那么創(chuàng)建一個新的文本文件并寫入數(shù)據(jù)的名稱。
在loop()函數(shù)內(nèi)部,調(diào)用Read_TempHum()、logSDCard()和getTimeStamp()函數(shù)來獲取DH11傳感器、時間和日期值,然后將這些值發(fā)送到SD卡。
Read_TempHum()函數(shù)用于從DHT11傳感器和dht獲取溫度和濕度值。Read函數(shù)從傳感器讀取這些值。
getTimeStamp()函數(shù)用于從NTP服務(wù)器獲取日期和時間值。使用getFormattedDate()方法將原始日期和時間值轉(zhuǎn)換為可讀格式。之后,時間和日期值都存儲在兩個單獨的字符串變量中。
logSDCard()函數(shù)用于將所有信息記錄到SD卡的data.txt文件中。
測試ESP32數(shù)據(jù)記錄項目
一旦硬件和代碼準備好了,將ESP32板連接到筆記本電腦并上傳代碼。一旦程序上傳,帶有日期和時間戳的溫度和濕度值將開始存儲在SD卡的一個名為“data.txt”的文件中。要檢查這是否工作,從模塊中取出SD卡,在手機或筆記本電腦中打開它,并打開‘ data.txt ’文件。它看起來是這樣的:
這就是如何將數(shù)據(jù)從ESP32存儲到SD卡。
本文編譯自iotdesignpro