<video id="5jvlp"></video>

                  24小時聯系電話:18217114652、13661815404

                  中文

                  您當前的位置:
                  首頁>
                  電子資訊>
                  行業資訊>
                  帶有 ESP8266 和 DS18...

                  行業資訊

                  帶有 ESP8266 和 DS18B20 的 WIFI 溫度監控器


                  帶有 ESP8266 DS18B20 WIFI 溫度監控器

                  今天,我們將創建一個wifi溫度監控系統。對于讀數,我們將使用 DS18B20 傳感器。對于數據處理和網頁創建,我們將使用我們已知的 ESP8266。

                  該項目將建設如下:

                  電路組裝

                  讀取 DS18B20 傳感器的代碼(我們將使用串行進行測試)。

                  創建網頁(我們將使用 SPIFFS 存儲在 FLASH 中)。

                  但首先,讓我們了解一下傳感器及其使用的通信模型。

                  DS18B20

                  DS18B20是一款精度好、定制性好、實用、可靠、成本低的數字溫度傳感器。組合好?

                  傳感器監測范圍內的溫度:-55°C +125°C-67°F +257°F),在 -10°C +85°C 的范圍內精度為 +-0.5°C (在該范圍之外,這種不準確性會增加,但沒什么可笑的)。

                  它使用三個引腳進行操作:

                  VDD(電源)

                  GND(接地)

                  DQ(數字通信)

                  VDD 3V 5.5V 的值工作,甚至可以省略。傳感器具有寄生模式,僅使用 DQ GND 引腳,其電源來自通信引腳。這種模式效果很好,但更容易受到噪音的影響。

                  數據通信使用 DQ 引腳通過 1-Wire (OneWire) 協議進行。我們稍后將討論該協議,但現在重要的是要知道,盡管只有一根電線,但它允許雙向通信。

                  讀取是主動執行的,微控制器發送命令并接收回包含信息的數據包。

                  除了讀取請求,傳感器還可以接收報警配置和數據格式命令。DallasTemperature 庫已經為我們處理了大部分。包括為我們提供一些附加功能,例如在法拉第接收讀數。

                  市場上最常見的型號是TO-92封裝(看起來像晶體管)和防水封裝。由于其實際應用,這第二種更常見,1m 長的帶不銹鋼尖端的電纜。例如,它可用于控制水溫。讀取是主動執行的,微控制器發送命令并接收回包含信息的數據包。

                  除了讀取請求,傳感器還可以接收報警配置和數據格式命令。DallasTemperature 庫已經為我們處理了大部分。包括為我們提供一些附加功能,例如在法拉第接收讀數。

                  市場上最常見的型號是TO-92封裝(看起來像晶體管)和防水封裝。由于其實際應用,這第二種更常見,1m 長的帶不銹鋼尖端的電纜。例如,它可用于控制水溫。

                  單線

                  OneWire(或 1-Wire)是由 Dallas Semiconductor 設計的一種通信方法,它僅使用一條線路傳輸數據,并帶有發送誰和何時發送的信號系統。

                  該方法與 i2C 非常相似,但它的數據傳輸速度要有限得多。另一個區別是在 1-wire 的情況下,可以省略電源引腳,在寄生模式下使用數據引腳(現在,您可能已經注意到,盡管名稱如此,該方法至少需要兩條線:數據和地)。

                  通信在主從模式下完成,其中微控制器發送所有請求,其他設備僅在名義上請求時發送數據。

                  每個設備都有一個唯一的地址/名稱。這允許我們在同一條數據線上連接多個設備。請求以廣播方式發送,在其中識別自身的設備會做出響應。

                  電路

                  我們應用的電路很簡單。我們將傳感器的 VDD 引腳連接到 NodeMCU 3V3,GND GND,我們將使用 D4 引腳作為傳感器數據。它可以是任何其他數字引腳。

                  此外,必須在數據引腳和 3V3 之間放置一個 4k7 歐姆電阻以增加穩定性。

                  查找 DS18B20 地址

                  正如我們之前看到的,每個傳感器都有一個唯一的地址,這個地址對于通信至關重要。我們可以將其理解為制造序列號。但是如何識別這個數字呢?

                  我們將創建一個幫助程序代碼來查找此地址。在這種情況下,代碼會掃描連接到引腳 D4 的任何設備。我們將使用串行監視器來可視化結果。

                  我們從導入 OneWire DallasTemperature 庫開始(不要忘記維護順序)。如果出現任何導入錯誤,您可以將它們添加到 Arduino IDE 的庫管理器中。

                  接下來,我們在引腳 D4 上啟動一個 OneWire 對象,并使用該對象創建一個傳感器。從那一刻起,傳感器對象具有 DallasTemperature 庫提供的所有屬性和功能。

                  我們將使用兩個函數 Search(),它執行 OneWire 中的設備搜索,以及 reset_search() 重新開始搜索。

                  我們的代碼所做的是開始搜索,將結果保存在 addr 變量中,如果變量不為空,則將其寫入串行中。

                  我們在串行監視器上找到了結果。如果有其他設備,它們也會出現在這里。留下地址,我們會需要的。

                  串行監視器讀取傳感器

                  現在我們知道了傳感器的地址。讓我們開始讀取溫度的主要代碼。這里的目標是啟動傳感器并每 10 秒讀取一次讀數。

                  我們以同樣的方式開始,但這次我們使用收集到的地址創建了 sensor1 變量。

                  readDs18b20() 函數中,我們將使用兩個函數:

                  requestTemperatures() – 此函數不專門與任何傳感器通信,而是與所有傳感器通信。就像它說的:如果你是 ds18b20,現在運行一個新的讀取并等待我的以及傳感器的作用。

                  getTempC(address) – 在這里,我們將信息定向到每個感興趣的傳感器,這些傳感器以最后的讀數響應我們

                  Setup() 函數中,我們使用 begin() 函數啟動傳感器,它會自動執行讀數,如果您沒有發出新請求,傳感器仍會響應 getTemp() 函數,但會使用過時的值。

                  在循環中,我們有一個帶有 millis() 函數的計時器,以便每 10 秒讀取一次。

                  在串行監視器上,我們應該得到以下結果:

                  請注意,在第 15 行,我們向 Serial.println() 函數添加了另一個參數。有了這個,我們定義了小數位數。

                  創建監控頁面

                  準備好閱讀后,讓我們創建一個網頁以在瀏覽器中查看此信息。請記住,稍后我們會將這些文件放在帶有 SPIFFS FLASH ESP8266 中。

                  我們將構建以下屏幕:

                  為此,我們將使用兩個文件:

                  索引.html

                  樣式文件

                  頁面結構不是本文的重點,但基本上,我們有 index.html 文件創建頁面本身并觸發一個 javascript 函數來更新閱讀。

                  style.css 文件改進了頁面的外觀,但不影響其功能。

                  兩個文件都必須在項目文件夾內的數據文件夾中,并使用 ESP8266 Sketch Data Upload 傳輸。

                  完整代碼

                  將頁面保存到 FLASH 后,我們需要創建為頁面提供服務的結構。

                  wifi 上連接

                  創建一個網絡服務器

                  為對此的請求創建回調

                  這一步對我們來說并不新鮮,但有幾點值得注意。

                  現在 readDs18b20() 函數也更新了一個 String 類型的變量。我們這樣做是因為服務器回調函數不接受整數或浮點變量。

                  對于服務器,我們有三個路由:

                  “/”將發送帶有最新傳感器讀數的 html 文件。

                  “/styled.css” 將發送 css 文件

                  “/state”將返回要更新的溫度變量。

                  請輸入搜索關鍵字

                  確定
                  中文字幕亚洲无线码在线一区_国产日产韩国精品视频_自拍偷精品亚洲手机在线_加勒比中文无码久久综合

                          <video id="5jvlp"></video>