<strike id="0k9r3"><p id="0k9r3"></p></strike>
  • <form id="0k9r3"></form>
    <nav id="0k9r3"></nav>
    <em id="0k9r3"><p id="0k9r3"></p></em>
  • <tr id="0k9r3"><source id="0k9r3"></source></tr>
    <form id="0k9r3"></form>
    <sub id="0k9r3"></sub>

      <sub id="0k9r3"><address id="0k9r3"></address></sub>
      1. <form id="0k9r3"></form>

        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”將返回要更新的溫度變量。

        請輸入搜索關鍵字

        確定
        国产在线视频在线