在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>Nodemcu數據記錄器

Nodemcu數據記錄器

2022-07-04 | zip | 0.06 MB | 次下載 | 2積分

資料介紹

PCB圖如下:
poYBAGKxtgqAYAzzAADou7eMl1g222.png
poYBAGKxtg2AMDJ1AACHAGUx0Hs803.png


?

成分

ESP8266-DEVKITC-02D-F
樂鑫系統
× 1
DHT22
亞馬遜
× 1
MQ135空氣質量傳感器模塊 × 1
SD卡模塊 × 1
40 針跳線母對母 20 厘米 × 1

描述

Nodemcu 數據記錄器

您大多已經在 ThingSpeak 和其他物聯網平臺上看到了帶有實時圖表和表格的數據記錄 Web 服務器。但我們也可以創建自己的網絡服務器并實時更新數據,我們之前使用不同的板創建了許多網絡服務器。在這里,我們還將使用 DHT11 傳感器創建 ESP8266 Web 服務器數據記錄器。這里的溫度和濕度數據將使用AJAX在網頁上更新。

AJAX(異步 JavaScript 和 XML)允許通過在后臺與服務器共享少量數據來自動更新網站,而無需刷新整個網頁。這可確保在不重新加載整個網站的情況下更改網頁的某些部分。所以讓我們開始吧!

所需組件

NodeMCU ESP8266

DHT11 傳感器

跳線

DHT11傳感器用于測量溫度和濕度,通常用于創建氣象站。

電路原理

pYYBAGKxtimAER1MAADgAMu8QqQ120.jpg

將 DHT11 連接到 NodeMCU 很容易。DHT11 的 VCC 和 GND 引腳連接到 3.3V 和 GND NodeMCU,而 DHT 的 Data 引腳連接到 NodeMCU 的 D5 (GPIO 14) 引腳。

pYYBAGKxti-AV25FAADoLGPb7es138.jpg

為數據記錄編程 NodeMCU ESP8266

在直接開始編碼之前,安裝所需的庫,ESP8266 庫已預先安裝在 IDE 上;你只需要安裝 DHT11 庫

安裝庫后,包括所有必需的庫。

#include

#include

#include

#include "DHT.h"

現在在接下來的幾行中,輸入您的 Wi-Fi 名稱和密碼。

const char* ssid = "Wi-Fi 名稱";

const char* 密碼 = "密碼";

然后定義 DHT 傳感器的類型和傳感器連接的引腳。如果您使用的是 DHT22,則將 DHT 類型更改為 DHT22。在我的例子中,DHT 傳感器連接到 NodeMCU 的 GPIO14 (D5)。

#define LED 2 //板載LED

#define DHTTYPE DHT11 // DHT 11

uint8_t DHTPin = 14;

DHT dht(DHTPin, DHTTYPE);

當我們使用 NodeMCU IP 地址打開網頁瀏覽器時,會執行 handleRoot 函數。

無效句柄根()

{

字符串 s = MAIN_page; //讀取HTML內容

server.send(200, "text/html", s); //發送網頁

}

下一個函數 readData() 用于從 DHT11 傳感器讀取數據并將其發送到網頁。在這個循環中,NodeMCU 將 DHT11 值存儲到兩個浮點變量中:溫度和濕度,之后它將浮點變量轉換為字符串并將它們的數據存儲到另一個字符串變量“數據”中,并在請求時將其發送到網頁。

無效讀取數據()

{

String data = "{"溫度":""+ String(溫度) +"", "濕度":""+ String(濕度) +""}";

數字寫入(LED,!數字讀取(LED));

server.send(200, "文本/平面", 數據);

延遲(2000);

溫度 = dht.readTemperature();

濕度 = dht.readHumidity();

Serial.print(濕度,1);

Serial.print(溫度,1);

}

在 void setup() 函數中,我們使用 .begin() 函數初始化波特率,DHT 傳感器,使用 server.begin() 函數初始化網頁,然后使用 Wi-Fi 名稱和密碼將模塊與 Wi-Fi 連接。

序列號.開始(115200);

pinMode(DHTPin,輸入);

dht.begin();

WiFi.begin(ssid, 密碼);

server.begin();

第一個函數用于在客戶端請求 URI(統一資源標識符)“/”時調用“handleRoot”函數,而第二個函數用于在對 URI“/readData”進行 POST 請求時調用“readData”函數

server.on("/", handleRoot);

server.on("/readData", readData);

void loop() 函數持續監聽來自客戶端的 HTTP 請求

無效循環(無效)

{

server.handleClient();

}

數據記錄

ESP8266 等物聯網設備的常見用途是監控傳感器。使用前面示例中的代碼,我們可以請求時間,并將一些傳感器值保存到文件中。如果我們也運行服務器,我們可以在網頁的漂亮圖表中顯示這些數據。

溫度記錄儀

在以下示例中,我們將使用 DS18S20 溫度傳感器記錄一段時間內的溫度并將其保存到 SPIFFS。然后它可以顯示在瀏覽器的圖表中。

安裝庫

首先,下載 Miles Burton 的 Dallas Temperature 庫和 Jim Studt 的 OneWire 庫:轉到 Sketch > Include Library ... > Manage Libraries 并搜索“Dallas Temperature”和“OneWire”(確保下載正確的版本) .

硬件

將 DS18S20 溫度傳感器的地(引腳 1)連接到 ESP 的地,將數據引腳(引腳 2)連接到 GPIO5,將 VCC(引腳 3)連接到 ESP 的 3.3V。最后,在數據引腳和 VCC 之間連接一個 4k7Ω 電阻

庫、常量和全局變量

#include

#include <達拉斯溫度.h>

#include

#include

#include

#include

#include

#include

#include

#define ONE_HOUR 3600000UL

#define TEMP_SENSOR_PIN 5

單線單線(TEMP_SENSOR_PIN);// 設置 OneWire 實例以與 OneWire 設備通信

DallasTemperature tempSensors(&oneWire); // 創建溫度傳感器類的實例

ESP8266WebServer 服務器(80);// 創建一個監聽 80 端口上的 HTTP 請求的 webserver 對象

文件 fsUploadFile; // 一個 File 變量來臨時存儲接收到的文件

ESP8266WiFiMulti wifiMulti;// 創建一個 ESP8266WiFiMulti 類的實例,名為 'wifiMulti'

const char *OTAName = "ESP8266"; // OTA 服務的名稱和密碼

const char *OTAPassword = "esp8266";

const char* mdnsName = "esp8266"; // mDNS 響應者的域名

WiFiUDP UDP;// 創建一個 WiFiUDP 類的實例來發送和接收 UDP 消息

IPAddress timeServerIP; // time.nist.gov NTP 服務器的 IP 地址

const char* ntpServerName = "time.nist.gov";

常量 int NTP_PACKET_SIZE = 48; // NTP 時間戳在消息的前 48 個字節中

字節數據包緩沖區[NTP_PACKET_SIZE];// 用于保存傳入和傳出數據包的緩沖區

這里唯一的新東西是 OneWire 和 DallasTemperature 庫,用于從傳感器獲取溫度。

設置

無效設置(){

序列號.開始(115200);// 啟動串口通信向計算機發送消息

延遲(10);

Serial.println("\r\n");

tempSensors.setWaitForConversion(false); // 不要在溫度傳感器讀取時阻塞程序

tempSensors.begin(); // 啟動溫度傳感器

if (tempSensors.getDeviceCount() == 0) {

Serial.printf("在引腳 %d 上找不到 DS18x20 溫度傳感器。正在重新啟動。\r\n", TEMP_SENSOR_PIN);

Serial.flush();

ESP.reset();

}

開始WiFi();// 啟動一個 Wi-Fi 接入點,并嘗試連接到一些給定的接入點。然后等待 AP 或 STA 連接

startOTA(); // 啟動OTA服務

開始SPIFFS();// 啟動 SPIFFS 并列出所有內容

開始MDNS();// 啟動 mDNS 響應者

啟動服務器();// 使用文件讀取處理程序和上傳處理程序啟動 HTTP 服務器

開始UDP();// 開始監聽 UDP 消息到端口 123

WiFi.hostByName(ntpServerName, timeServerIP); // 獲取NTP服務器的IP地址

Serial.print("時間服務器 IP:\t");

Serial.println(timeServerIP);

發送NTP包(時間服務器IP);

}

在設置中,也沒有太多新的東西,我們只是啟動溫度傳感器,并檢查我們是否可以與之通信。如果未找到溫度傳感器,ESP 將重置。

從傳感器獲取溫度可能需要一些時間(最多 750 毫秒)。我們不希望我們的循環花費超過幾毫秒的時間,所以我們不能等待 750 毫秒。如果我們這樣做了,HTTP 服務器等就會開始出現問題。

解決方法是先請求溫度。然后傳感器將開始讀取模擬溫度,并將其存儲在內存中。與此同時,循環繼續運行,服務器刷新等。750毫秒后,我們再次聯系傳感器,并從其內存中讀取溫度。

為了告訴庫我們不想等待傳感器的模數轉換,我們使用 setWaitForConversion。

環形

常量無符號長間隔NTP = ONE_HOUR; // 每小時更新時間

無符號長 prevNTP = 0;

unsigned long lastNTPResponse = millis();

const unsigned long intervalTemp = 60000; // 每分鐘進行一次溫度測量

無符號長 prevTemp = 0;

布爾 tmpRequested = 假;

常量無符號長 DS_delay = 750; // 從 DS18x20 讀取溫度可能需要 750 毫秒

uint32_t timeUNIX = 0; // 從時間服務器接收到的最新時間戳

無效循環(){

無符號長 currentMillis = millis();

if (currentMillis - prevNTP > intervalNTP) { // 每小時向時間服務器請求時間

prevNTP = currentMillis;

發送NTP包(時間服務器IP);

}

uint32_t 時間 = getTime(); // 檢查時間服務器是否有響應,如果有,獲取UNIX時間

如果(時間){

timeUNIX = 時間;

Serial.print("NTP 響應:\t");

Serial.println(timeUNIX);

lastNTPResponse = 毫秒();

} else if ((millis() - lastNTPResponse) > 24UL * ONE_HOUR) {

Serial.println("自上次 NTP 響應以來已超過 24 小時。重新啟動。");

Serial.flush();

ESP.reset();

}

如果(時間UNIX!= 0){

if (currentMillis - prevTemp > intervalTemp) { // 每分鐘,請求溫度

tempSensors.requestTemperatures(); // 從傳感器請求溫度(讀取它需要一些時間)

tmpRequested = 真;

prevTemp = currentMillis;

Serial.println("溫度要求");

}

if (currentMillis - prevTemp > DS_delay && tmpRequested) { // 請求溫度后 750 毫秒

uint32_t 實際時間 = timeUNIX + (currentMillis - lastNTPResponse) / 1000;

// 實際時間是上次 NTP 時間加上自上次 NTP 響應以來經過的時間

tmpRequested = 假;

浮動溫度 = tempSensors.getTempCByIndex(0); // 從傳感器獲取溫度

溫度=圓形(溫度* 100.0)/ 100.0;// 將溫度四舍五入到 2 位

Serial.printf("附加溫度到文件:%lu,", actualTime);

Serial.println(temp);

文件 tempLog = SPIFFS.open("/temp.csv", "a"); // 將時間和溫度寫入 csv 文件

tempLog.print(實際時間);

tempLog.print(',');

tempLog.println(temp);

tempLog.close();

}

} else { // 如果我們還沒有收到 NTP 響應,發送另一個請求

發送NTP包(時間服務器IP);

延遲(500);

}

server.handleClient(); // 運行服務器

ArduinoOTA.handle(); // 監聽 OTA 事件

}

循環看起來要復雜得多,但實際上非常簡單。這一切都基于Blink without Delay。

有兩件事發生:

概述

這是一款帶有板載傳感器DHT22(AM2302)的校準數字溫濕度模塊,與DHT11相比具有更高的精度和更寬的測量范圍。

通過標準的單線接口,可用于檢測環境溫度和濕度。

規格

溫度

分辨率:0.1°C

精度:±0.5℃

測量范圍:-40°C ~ 80°C

濕度

分辨率:0.1%RH

精度:±2%RH (25°C)

測量范圍:0%RH ~ 99.9%RH

工作電壓:3.3V~5.5V

推薦儲存條件

溫度 : 10°C ~40°C

濕度:60%RH或以下

MQ135材質是SnO2,它是一種特殊的材料:暴露在干凈的空氣中幾乎不導電,但放在有可燃氣體的環境中,它的導電性能很好。只需制作一個簡單的電子電路,將電導率的變化轉換為相應的輸出信號。MQ135氣體傳感器對氨、硫化物、苯蒸汽、煙霧等有害氣體敏感。用于家庭、周邊環境有害氣體檢測裝置,適用于氨氣、芳烴、硫磺、苯蒸氣等有害氣體/煙霧、氣體檢測,檢測濃度范圍:10-1000ppm。在正常環境下,沒有檢測到氣體的環境下,將傳感器的輸出電壓設置為參考電壓,模擬輸出電壓約為1V,當傳感器檢測到氣體時,

pYYBAGKxtjGAdPUjAAAnpfNeTUk233.jpg

每隔一小時,ESP 就會向 NTP 服務器請求時間。然后它會不斷檢查響應,并在收到 NTP 響應時更新時間。如果超過 24 小時沒有收到任何響應,則說明有問題,ESP 會自行重置。

每分鐘,ESP 都會向 DS18x20 傳感器請求溫度,并設置“tmpRequested”標志。傳感器將啟動模數轉換。

請求后 750 毫秒,當轉換應該完成時,ESP 從傳感器讀取溫度,并重置標志(否則,它將一遍又一遍地讀取相同的溫度)。然后它將時間和溫度寫入 SPIFFS 中的文件。

通過將其保存為文件系統中的 CSV 文件,我們可以輕松地將其下載到客戶端(使用正在運行的 Web 服務器),并且很容易使用 JavaScript 進行解析。

如果我們錯過了第一個 NTP 響應,timeUNIX 將為零。如果是這種情況,我們發送另一個 NTP 請求(否則,下一個請求將在一個小時后,并且溫度記錄僅在時間已知時開始)。

我們還需要運行服務器和 OTA 函數來處理 HTTP 和 OTA 請求。

設置函數、服務器處理程序和輔助函數

這些函數自上一個示例以來沒有改變,因此這里沒有必要介紹它們。不過,您確實需要它們來運行程序。下載帶有完整草圖示例的 ZIP 存檔。

SD卡模塊

該模塊(microsd卡適配器)是?micro sd卡讀卡器模塊,通過文件系統驅動和spi接口,微控制器系統完成micro sd卡文件的讀寫。用戶可以直接使用arduino ide自帶的sd卡完成借書卡的初始化和讀寫。

poYBAGKxtjSAC9y9AACJryK3fOI294.jpg

HTML 和 JavaScript

有一些 HTML 和 JavaScript 文件可以使用 Google Graphs 繪制溫度。我不會在這里介紹它,但如果你想知道它是如何工作的,你可以在 ZIP 存檔中找到這些文件。

使用示例

poYBAGKxtjaAGdg1AAAelttmDYI408.jpg

如果您打算長時間使用它,請將 SPIFFS 大小設置為 64KB 或更大。(您也可以增加第 80 行的記錄間隔以節省空間。)

代碼

用法

[代碼]

詮釋 LED=13;//內置LED引腳

整數 MQ135=5;//MQ135的輸出引腳

無效設置()

{

?pinMode(LED,輸出);//LED為輸出

?pinMode(MQ135,輸入);//MQ135為輸入

?序列號.開始(9600);//串口監視器的波特率為9600

??}

??無效循環()

??{

????int MQValue=digitalRead(MQ135);

????如果(MQValue==0)

????{

??????數字寫入(LED,高);//寫高電平到LED

??????Serial.print("有有害氣體");

????}

??????別的

??????{

????????數字寫入(LED,低);//將低電平寫入LED

????????Serial.print("很干凈");

??????}

????}

在第 138-140 行輸入您的 Wi-Fi 憑據,然后點擊上傳。然后使用 Tools > ESP8266 Sketch Data Upload 將網頁和腳本上傳到 SPIFFS。

代碼

代碼

Nodemcu_Datalogger.ino

?

?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1涂鴉各WiFi模塊原理圖加PCB封裝
  2. 11.75 MB   |  76次下載  |  1 積分
  3. 2錦銳科技CA51F2 SDK開發包
  4. 24.06 MB   |  29次下載  |  1 積分
  5. 3錦銳CA51F005 SDK開發包
  6. 19.47 MB   |  3次下載  |  1 積分
  7. 4蘋果iphone 11電路原理圖
  8. 4.98 MB   |  3次下載  |  2 積分
  9. 5基礎模擬電子電路
  10. 3.80 MB   |  3次下載  |  1 積分
  11. 6RA-Eco-RA6M4-100PIN-V1.0開發板資料
  12. 34.89 MB  |  1次下載  |  免費
  13. 7STM32F3系列、STM32F4系列、STM32L4系列和STM32L4+系列Cortex-M4編程手冊
  14. 3.32 MB   |  1次下載  |  免費
  15. 8聯想A820t手機維修圖紙包括主板原理圖 尾板原理圖 點位圖
  16. 0.62 MB   |  次下載  |  5 積分

本月

  1. 1AI智能眼鏡產業鏈分析
  2. 4.43 MB   |  383次下載  |  免費
  3. 2蘇泊爾電磁爐線路的電路原理圖資料合集
  4. 2.02 MB   |  296次下載  |  5 積分
  5. 3貼片三極管上的印字與真實名稱的對照表詳細說明
  6. 0.50 MB   |  94次下載  |  1 積分
  7. 4長虹液晶電視R-HS310B-5HF01的電源板電路原理圖
  8. 0.46 MB   |  91次下載  |  5 積分
  9. 5涂鴉各WiFi模塊原理圖加PCB封裝
  10. 11.75 MB   |  76次下載  |  1 積分
  11. 6錦銳科技CA51F2 SDK開發包
  12. 24.06 MB   |  29次下載  |  1 積分
  13. 7AO4803A雙P通道增強型場效應晶體管的數據手冊
  14. 0.11 MB   |  28次下載  |  2 積分
  15. 8長虹液晶彩電LS29機芯的技術資料說明
  16. 3.42 MB   |  16次下載  |  2 積分

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935127次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191388次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183342次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81588次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73815次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65988次下載  |  10 積分
主站蜘蛛池模板: 天天色影综合网 | 在线黄色大片 | 在线麻豆国产传媒60在线观看 | 色视频一区二区三区 | 四虎影库网址 | 国产婷婷综合在线精品尤物 | 可以直接看的黄色网址 | 久久精品免费观看久久 | 久久精品国产精品亚洲婷婷 | 在线免费观看一级毛片 | 日本黄页网 | 色激情综合 | 艹逼视频免费看 | baoyu污污网站入口免费 | 三级网站在线免费观看 | 天天干天天色综合 | 欧美亚洲综合另类成人 | 亚洲一卡2卡4卡5卡6卡在线99 | 在线免费看片a | 91视频看看 | 蜜月mv国产精品 | 欧美精品一区在线看 | 日本黄页网站 | 五月婷婷深爱 | 天天拍拍天天爽免费视频 | 久久综合九色综合97婷婷群聊 | 毛片8| 四虎永久免费观看 | 色视频在线观看免费 | 黄色免费在线网址 | 久久久久无码国产精品一区 | 韩日中文字幕 | 成人国产一区二区三区 | 国产v69| 日本黄色小视频在线观看 | 一区二区三区在线观看免费 | 亚洲精品日韩专区silk | 1000部啪啪未满十八勿入 | 色婷婷激情综合 | 看黄视频免费 | 久久久久国产一级毛片高清片 |