<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>智能水表開源分享

智能水表開源分享

2022-10-27 | zip | 0.01 MB | 次下載 | 免費

資料介紹

描述

1. 故事

雖然能源價格每天都在上漲,但與天然氣和電力相比,水的價格(仍然)適中。然而,節約用水是有充分理由的,例如,當您意識到淋浴時會使用大量熱水并且加熱水會消耗能源時。換句話說:每天都有大量的能量被沖走。

雖然您可以在儀表本身上看到用水量,但它并不能告訴您淋浴或沖馬桶或澆灌花園里的植物所用的水量。

在互聯網上,您可以找到幾種出售的水表(有時價格不菲),也有一些 DIY 水表的出版物。這些 DIY 設計為制作提供了很好的指導,但始終基于設計師的特定知識、技能和可用手段。

這就是為什么我開始這個項目是為了自己設計和建造一個智能水表,當然要考慮到其他人已經發布的解決方案和信息。感謝開源社區。

這里描述的設計自然也是由我自己可用的手段和技能驅動的,但我希望它可以幫助您構建自己的版本,或者至少它可以激發您進行自己的設計。

1.1 設計

智能水表的設計基于以下要求:

  • 它應該提供以升為單位的每分鐘用水量以及每日和總用水量的在線數據
  • 數據應在具有可選時間軸縮放的圖表中顯示,并且應可通過 PC/筆記本電腦、平板電腦或智能手機訪問
  • 它應該能夠測量以升/分鐘為單位的瞬時水流量
  • 它應該在離家時提供水流警報
  • 它應該被包裝成一個簡單的夾在現有水表上,不需要對水表進行任何物理修改。

這些要求是開發完整智能水表的基礎,因此產生了以下硬件產品

pYYBAGNX-g2AaseJAAGlWkyad9o106.png
?

嵌入式軟件已使用 ARDUINO IDE 進行編程并閃存到 ESP32 微控制器,內置于上述外殼中,該外殼只是作為現有水表的夾子制成。

該項目的一個基本要素是使用 BLYNK 作為 IOT 服務器。

使用 Blynk,該設備連接到 Internet,并創建了一個 Web 儀表板以及在手機上使用的儀表板。因此,智能水表可以在世界任何地方進行監控。

在 PC/筆記本電腦或平板電腦上生成的 Blynk 儀表板示例如下所示:

pYYBAGNX-hOAZULGAALmY53kOro822.png
?

為了在手機上使用,創建了以下儀表板:

poYBAGNX-heAfhaOAAH9kp4gHrg154.png
?

在這兩種類型的儀表板上,可以觀察到以升/分鐘為單位的瞬時水流以及目前使用的以升為單位的水量:

poYBAGNX-hqADYk9AACa5zMobhY750.png
?

如果您不在家并且有水流,可以生成警報,作為平板電腦或手機上的推送通知:

pYYBAGNX-hyAC7FiAABK_pmCi50803.jpg
?

也可以在 Blynk 中進行自動化,例如當今天的用水量超過每日平均值時發出警告(通過將年總消耗量除以 365 減去假期來計算):

pYYBAGNX-h6AKkbEAABeoGCFWek211.png
?

1.2 現有水表

我項目中使用的現有水表是SENSUS 620型號,如下圖:

poYBAGNX-iGARMwPAAEgqdEZ35w820.png
?

該模型最顯著的特點是:

  • 最小計量單位是 1 升(見小紅圈)
  • 升指示器上有一塊金屬板(1轉為1升)
  • 透明蓋上有 2 個“存根”(藍色箭頭)
  • 最大流量 2.5m3 每小時(2500/60= 41, 6 Lit/min or 0, 6944 lit/sec)

旋轉表盤上的金屬板是這個項目最重要的項目,因為它開啟了在設計中使用以下傳感器的可能性:

poYBAGNX-iOAOd5YAACMV3c9bck936.png
電感式接近傳感器 LJ18A3-8-Z/BX
?

這是一款能夠在距離頂部最大 8 毫米處感應金屬的傳感器。

它最重要的特點是:

  • 3 線連接(+ 電源,- 電源或 GND,數據)
  • 電源:5V DC(這是我訂購的,但收到的是 6V-36V 型號,幸好它也可以在 5V 上工作,所以我可以保持電子設計簡單,并使用 5V 手機充電器作為電源)
  • 數據引腳給出一個信號,當傳感器附近檢測到金屬時為“高”,沒有時為“低”
  • 直徑:18 毫米
  • 螺紋 (M18) 長度 45 毫米

我在自行設計的 3D 打印支架中構建傳感器。支架可以放在現有水表的“2根”頂部。對于初始實驗,傳感器連接到帶有 Mini ESP32 TTGO T7 V1.3 的面包板設置。

一個重要方面是傳感器與旋轉金屬板的正確對齊。為此,支架設計有一個槽,可以將傳感器定位在支架內。為了正確的檢測行為,傳感器不應正好位于旋轉板上方。

傳感器的軸心應稍微偏離升數刻度盤的旋轉軸:

poYBAGNX-iaAXWD-AAFhp-Gym7I230.png
?

此圖在 Fusion360 中制作,構成傳感器支架的基礎草圖。

設計的 3D 打印結果如下所示:

pYYBAGNX-iiADI0YAAEZq_Q3gEU807.png
傳感器安裝在現有儀表上
?

為了測試正確的定位,可以將傳感器連接到 5V DC 并監控當升表盤的金屬部分從下方通過時傳感器頂部的紅色 LED 是否閃爍。

2. 事情

下圖顯示了智能水表使用的項目:

poYBAGNX-iuATSqAAAL1iQbWQ-8449.jpg
用于智能水表的項目
?

不可見的是帶電纜的 5V USB 適配器。應切割焊板以適合 3D 打印外殼。

3. 第 1 步:系統設計

水表設備將通過 Mini ESP32 微控制器 (MCU) 的板載 Wi-Fi 功能持續連接到互聯網。因此,在此應用中使用電池并不是一個非常實用的解決方案。傳感器和 MCU 的功率要求很低,因此使用 1A(最大電流)的 5V DC USB 充電器綽綽有余。在測試期間使用連接到 USB 充電器的簡單 USB 功率計顯示,在正常情況下電流低于 10 mA。在通過 WiFi 測量和傳輸數據流期間,在 20mA 和最大 50mA 之間會有短暫的波動。

該系統的主要元件是 ESP32 微控制器 (MCU)、接近傳感器和 5V 電源。

藍色 LED 用于指示與最近的接入點 (AP) 的 Wi-Fi 連接狀態。紅色 LED 用作開機指示燈,黃色 LED 將指示傳感器何時被觸發。

除 5V 充電器外,所有電子設備都將構建在 3D 打印外殼內。外殼有一個開口,用于將微型 USB 插頭連接到 MCU,以便在需要時修改軟件。

4.第2步:制作智能水表

4.1 使用的東西

智能水表使用以下材料:

pYYBAGNX-i6AM2N4AACNZVaplCM225.jpg
?

4.2 電子設計

電子設計如下圖所示:

poYBAGNX-jCANxYiAAB_zpnA98I700.png
智能水表電路圖
?

上圖是使用 EasyEDA 制作的。

請注意,ESP32 的管腳布局,如上圖所示,與實際不同。它已被修改以使圖表更易于理解。實際管腳分配如下圖所示:

pYYBAGNX-jOAISkyAAFNEEjv6cs299.png
ESP32 TTGO T7 V1.3 管腳分配
?

請注意,引腳 27 實際上是 GPIO27(而不是打印的 GPIO17)

用于使用 ARDUINO IDE 測試和構建軟件的面包板設置如下圖所示:

poYBAGNX-jaAUE5LAALnoxrDRrA992.jpg
面包板設置
?

仔細看看迷你 ESP32:

pYYBAGNX-jmACtf2AAF1ctQy80Q119.png
迷你ESP32 TTGO T7 V1.3
?

4.2.1 電路圖的一些特定方面

讓我們仔細看看結合光電耦合器(PC817)的電感式接近傳感器LJ18A3-8ZBX(檢測金屬或不檢測金屬)金屬傳感器。

電路圖的相關部分如下所示。

poYBAGNX-juAH5eeAABy2D7uA-U069.png
?

如果沒有金屬檢測,傳感器的數據輸出將為LOW ,這意味著在 PCF817 光耦合器內部,IR 二極管將不會輻射,因此 IR 接收“晶體管”將不會導通。由于 GPIO 04 使用“上拉”電阻進行編程,因此 ESP32 MCU 上運行的固件會將 GPIO 04 視為高電平。

當有金屬檢測時,會發生相反的過程。換句話說,當水表中的刻度盤順時針旋轉時,GPIO 04 的狀態會從 HIGH 變為 LOW,然后過一會兒又回到 HIGH。

可以使用特定的 Arduino 代碼以微秒為單位測量兩次轉換之間的持續時間。該持續時間取決于刻度盤的旋轉速度,因此是瞬時水流(流速)的量度。

此屬性可用于確定以升/秒或升/分鐘為單位的瞬時水流量!

當然,同時可以通過計算 GPIO 04 從 HIGH 變為 LOW 的次數來測量用水量(以升為單位)。

這種方法有一個問題,那就是當表盤停止旋轉,傳感器下方的金屬板時,GPIO04 保持低電平。

幸運的是,這可以在軟件中解決。

同時,光耦有助于解決傳感器數據輸出端5V高電平的問題。當直接連接到 ESP32 GPIO 引腳時,5V 會立即炸掉該 GPIO。光耦合器將 5V 電平降至 3.3V,可由 GPIO 引腳(使用內部 PULLUP 編程)處理。

另一個需要注意的方面是 RST 引腳和 GND 之間的 10uF 電容。當將新代碼從 PC 上的 Arduino IDE 刷新到 ESP32 時,這將啟用啟動過程(無需按下其板載啟動按鈕)。

4.3 機電組裝

可焊接原型板 (5 * 7 cm) 可安裝在外殼內:

poYBAGNX-j6AKeAGAAKMGVGs_1E648.jpg
?

面包板上的組件被轉移到一個小的(5 * 7 厘米)單面原型板上,然后安裝在 3D 打印外殼內。

pYYBAGNX-kGAOUWjAAJFuZWVcK0476.jpg
所有組件都放在原型面包板上并內置在外殼中
?

然后用 2 個螺釘將外殼和傳感器支架固定在一起,并定位在現有水表的 2 個短柱上。

?
?
?
poYBAGNX-kSAbIlgAALEtiM4LTk015.jpg
?
1 / 2 ?電子外殼和傳感器支架的組裝
?

4.4 軟件設計

該項目的關鍵要素是使用 BLYNK 作為物聯網服務器。

使用 Blynk,您可以將您的設備連接到 Internet,并創建移動和 Web 儀表板,以便從世界任何地方控制您的設備。

設備通常是 ESP32、Arduino 等微控制器 (MCU)。它們可以使用 Wi-Fi 連接到 Internet。您可以將傳感器和執行器連接到此 MCU,并使用 Blynk 遠程監控或控制它們。

如果您是 Blynk 的新手,則需要創建一個 Blynk 帳戶才能將其用于此項目。免費的 Blynk 帳戶使您可以使用其基本功能和最多 2 個在線設備(這對于本項目中的應用程序來說已經足夠了)。

事實上,你可以用 Blynk 做一些令人驚奇的事情,它有很好的文檔記錄,甚至還有一個示例代碼生成器可以幫助你快速入門。

成為有經驗的用戶后,有可能以合理的費用獲得很多額外的功能。

此后,您應該對儀表板上的模板、設備、數據流和小部件之間的關系有更多的了解。

復制模板 ID、設備名稱和身份驗證令牌并將數據存儲在臨時 TXT 文件中,保存此文件以備后用。

現在打開為此項目提供的 Arduino 草圖,并在創建自己的模板時填寫前 3 行代碼,其中包含從 Blynk 獲得的日期:

#define BLYNK_TEMPLATE_ID "Own TMPL-code"            // put here your own template code as obtained from BLYNK
#define BLYNK_DEVICE_NAME "My Smart Watermeter"      // put here the name of your own device 
#define BLYNK_AUTH_TOKEN "My template token code"    // put here your TOKEN code

此后,Arduino 中包含以下庫:

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

接下來,您必須在 Arduino 草圖中填寫以下幾行:

char auth[] = BLYNK_AUTH_TOKEN;       // variable using the above defined TOKEN code specific to your device
char ssid[] = "my WIFI";              // your own WiFi credentials
char pass[] = "my password";          // Set the password of your own WiFi, set as "" for an open netwerk

下表給出了為您的智能水表制作的數據流的數據,這些數據與 Arduino Sketch 中使用的代碼相匹配。

必須先定義這些數據流,然后才能開始使用自己的 Web 儀表板版本。

poYBAGNX-kmAPKDxAACS6YM1-Cs579.png
?

下面是我為自己的智能水表創建的儀表板示例。我沒有找到制作儀表板副本并將其作為文件提供的方法,因此這是您必須自己完成的工作。習慣 UI 需要一些時間,但經過一段時間的使用后,您會發現制作漂亮的儀表板實際上是多么容易(您可以在世界任何地方的筆記本電腦或平板電腦上看到) )。在這里您可以找到制作自己的儀表板所需的所有信息:https ://docs.blynk.io/en/getting-started/template-quick-setup

示例 Web 儀表板。

pYYBAGNX-hOAZULGAALmY53kOro822.png
?

移動儀表板示例

為了在手機上使用,Blynk 中還有另一個工具“Mobile Dashboard”,它使您能夠創建一個適合手機小顯示屏的漂亮儀表板。這個工具使用起來有點困難,但是經過一段時間的演奏,您將能夠獲得良好的結果。

poYBAGNX-k-AQ-asAAC3YFJrBrw559.jpg
?

在 Blynk 中,還可以進行“自動化”,例如,可用于向您的手機發送推送通知和/或向您在 Blynk 個人資料中設置的電子郵件地址發送電子郵件。例如,如果在 Web Dashboard 中設置了離開家的開關按鈕時檢測到水流。

推送通知示例

pYYBAGNX-hyAC7FiAABK_pmCi50803.jpg
?

或者這個:

poYBAGNX-lSASUY0AABiQdZ7uQI263.png
?

示例電子郵件

pYYBAGNX-laAeZ2pAADmZWTcvTM316.png
?

4.4.1 Arduino 草圖

現在是時候仔細看看 Arduino Sketch。

使用以下常量:

const int Liter_count_Pin = 4; 
const int B_LEDPin = 27; 
const int Or_LEDPin = 25; 
float Flowrate_factor = 288330.00;

前 3 個用于將所需的 GPIO 引腳分配給命名參數。Flowrate_factor 是一個數字,用于計算以升/秒或升/分鐘為單位的正確水流量。正確校準后,需要調整此數字。這是如何完成的,將進一步解釋。

接下來定義以下全局變量:

int LitCount = 0; 
int PastMinuteUse = 0; 
int PrevLitCount = 0;  
int Stopcount = 0; 
float FlowLitPerSec = 0.00; 
float FlowLitPerMin = 0.00; 
int UpTimeMin = 0;   
double UpTimeHr = 0.00;  
double UpTimeDay = 0.00; 
int DayCount = 1;   
int TodayUse = 0;     
int PastDayUse = 0;  
int PrevDayLitCount = 0;  
int PastYearCub = 0; 
boolean WaterFlow_state = false;  
boolean Home = true; 
unsigned long Count_Duration = 0.00;  
BlynkTimer timer;  

Arduino Sketch 中列出的注釋更詳細地進一步闡明了這些變量的目的和含義。

最重要的變量是最后一個變量:“ Count_Duration ”,它將保持“ Liter_count_Pin ”變為“ LOW ”和再次返回“ HIGH ”之間的時間(以微秒為單位)。

這個測量的時間在草圖中用于計算以升/秒為單位的瞬時水流。這是一種獨特的方法,因為它可以即時測量水流量,從而計算“ FlowLitPerSec ”和“ FlowLitPerMin ”的值。

同時,當檢測到從 HIGH 到 LOW 時,將通過將變量“ LitCount ”增加 +1 來計算一升水。

接下來,將創建一個 Blynk Timer 對象:

BlynkTimer timer;

這似乎是一個簡單的陳述,但實際上它是 BLYNK 巨大優勢的關鍵,即能夠為許多不同的功能創建單獨的計時器。

在此草圖中,以下計時器用于以下功能:

timer.setInterval(10000L, MEASUREWATER);          // Set the function MEASUREWATER to excute every 10 seconds
timer.setInterval(60000L, SendPeriodicWaterUse);  // Set the function SendPeriodicWaterUse to excute every 60s
timer.setInterval(86400000L, SendDailyUseData);   // Set the function SendDailyUseData to excute every 24 hours

函數“ MEASUREWATER ”每 10 秒調用一次,同樣,函數“ SendPeriodicWaterUse ”每 60 秒調用一次,函數“ SendDailyUseData ”每 24 小時(或 86400000 毫秒)調用一次。

在每個函數中,許多全局變量都會收到一個新值。這些變量被分配給所謂的“虛擬引腳”編號,例如LitCount ”的“ V5 ” ,然后發送到 BLYNK 云進行定期更新。

4.4.2 測量水功能

此功能是草圖中最重要的功能。它檢測是否有水流,以升/秒和升/分鐘為單位計算流量,并在云端設置“不在家”指示器時觸發“水警報”。

函數的第一部分,負責升數和流量計算:

pYYBAGNX-lmAZUuYAACl8xfteH8108.png
?

這個函數的一個重要部分是這一行:

Count_Duration = pulseInLong(Liter_count_Pin, LOW, 9000000);

在這種情況下,函數將讀取 Liter_count_Pin 上的脈沖(變為低電平)。該函數測量引腳轉換為低電平和再次變為高電平之間的時間(以微秒為單位)。當引腳在 9 秒(9000000 微秒)的超時限制內沒有變為高電平時,函數將放棄并返回值 0。:

else if (Count_Duration == 0) {

這種情況可能發生在低于 33 毫升/秒 (2 L/min) 的非常低的水流旋轉升刻度盤停止在傳感器下方的情況下,

if (digitalRead(Liter_count_Pin) == LOW) {

這很容易發生。在這兩種情況下,這種效果都會導致 1 升被計算一次:

if (Stopcount == 0) {

為了指示一升的計數,橙色 LED(連接到 GPIO25 的 330 歐姆的黃色 LED)通過以下方式“打開”:

digitalWrite(Or_LEDPin,HIGH);

并在函數結束時切換到“關閉”:

digitalWrite(Or_LEDPin,LOW);

每次向 Blynk 傳輸數據之前,藍色 LED 都會“打開”,其中:

digitalWrite(B_LEDPin,HIGH);

并在此類傳輸結束時“關閉”。

“ MEASUREWATER ”功能的第二部分負責設置水流警報。:

if (!Home && WaterFlow_state ) {   
    Blynk.virtualWrite(V4, true);
    Blynk.logEvent("WaterAlarm", "There is waterflow and nobody is home");}  
    else 
    {Blynk.virtualWrite(V4, false); }

如果檢測到水流,(“ WaterFlow_state ” == “ true ”),而布爾“ Home ”為“ 0 ”,換句話說,當條件“ !Home ”(不是 Home )== “ true ”時,在 Blynk 云中, Virtual Pin V4將設置為“true”。

將創建一個 logEvent 以使 Blynk 能夠向智能水表的所有者發送推送通知或電子郵件。

如果“Home”為“true”或“WaterFlow_state”為“false”,V4將設置為“false”

“Home”狀態如下:

使用 Blynk 控制臺構建 Blynk 儀表板時,可以將“切換”小部件添加到儀表板。

poYBAGNX-luARFfiAAAzTzo6j5Y657.jpg
?

完成后,轉到小部件的“設置”并設置以下屬性:

pYYBAGNX-l2AGAqXAABMwX4atI0626.png
?

不要忘記“保存并應用”更改。

現在“ V0 ”的值已經與DataStream名稱“Home”連接,可以控制為“Home”或“Not Home”,并賦予值“1”或“0”。

在 Arduino Sketch 中,您將看到以下代碼行:

BLYNK_WRITE(V0) {
  int value = param.asInt();          // assign incomming value of pin V0 to variable "value"
if(value == 1)                        // excute this code in case value is "1" (meaning Home is on)
  { Home = true; }                    // make boolean Home true
  else                                // excute this code in case value is "0" (meaning Home is off)
  { Home = false; }                   // make boolean Home false
  Blynk.virtualWrite(V1, value);      // Update Home state on the Blynk dashboard
}

此代碼的效果是,每當通過 PC/筆記本電腦或平板電腦上的 Blynk 儀表板更改開關狀態時,V0 的更改值將發送到智能水表設備,其布爾變量“Home”的值將進行相應修改。

如果完成,更改將通過虛擬引腳“ V1 ”報告回 Blynk 云。在儀表板上,分配給 V1 的“LED”小部件將更改其狀態(在本示例中,從“綠色”變為“白色”,反之亦然。

在“測量水”功能結束時,橙色 LED 和藍色 LED 都將關閉

digitalWrite(Or_LEDPin,LOW);   
digitalWrite(B_LEDPin,LOW);

4.4.3 SendPeriodicWaterUse函數

這個函數負責每分鐘向 Blynk 發送最重要的數據:

poYBAGNX-mGAILPxAACdx1-tQuo915.png
?

“UpTimeMin”,即設備上線后(或重置后)經過的時間,使用毫秒 () / 60000 計算,從而導致正常運行時間分鐘數。

UpTimeHr 和 UpTimeDay 的后續計算應該是顯而易見的。

過去一分鐘使用的升量計算如下:

PastMinuteUse = LitCount - PrevLitCount;

其中 LitCount 是自設備啟動以來計算的總升數,PrevLitCount 是 1 分鐘前的總數量。

到目前為止,今天使用的金額是通過以下方式計算的:

TodayUse = TodayUse + PastMinuteUse;

此后,所有的數據都一個接一個地發送到 Blynk。

4.4.4 SendDailyUseData 函數

最后,函數 SendDailyUseData 負責向 Blynk 發送關于過去 24 小時內使用的公升總量 (PastDayUse) 的每日報告。

pYYBAGNX-mSAJF27AACXDlzJ7BQ597.png
?

變量“ DayCount ”在此函數中起著重要作用。

365 天過去后,計算過去一年的總用水量并作為V13發送到 Blynk 。只有在整年未重置設備時才會發生這種情況(因此不會斷電)。當前版本的 Sketch 還沒有針對這種情況的內置補救措施,但這可以通過添加額外的代碼來完成,該代碼在斷電后從 Blynk 讀取最新值。根據功率下降持續的時間,將不考慮更多或更少的數據(升)。

另一種可能性是使用 ESP32 的內置 EEPROM 存儲器或 SPIFFS。

4.5 校準 WaterFlow 功能

在“ MEASUREWATER ”函數的代碼中,您可以找到以下行:

FlowLitPerSec = Flowrate_factor/Count_Duration ;

Flowrate_factor 的值最初設置為:

float Flowrate_factor = 300000.00;

這意味著如果 Count_Duration 測量值為 300 毫秒 (=300000 μSec),“FlowLitPerSec”的值將為 1 l/S(相當于 60 升/分鐘),這是一個相當高的流速,通常甚至無法達到沖馬桶時。

然而,300000 的“Flowrate_factor”是一個估計值,需要通過校準來驗證。該估計是基于假設水表升刻度盤上的金屬板約為 . 一整圈時間的 1/3(對于 1 升)位于傳感器頭下方。

如果估計正確,那么 1 秒內 1 升(1 轉)將導致“Count_Duration”為 333333 μSec。

“Flowrate_factor”取決于傳感器相對于帶有金屬板的旋轉刻度盤的精確位置。甚至金屬板的尺寸和形狀也會產生影響。

獲得正確“Flowrate_factor”值的最佳方法是校準。

為此,取一桶 10 升水,將其放在水龍頭下,并使用秒表記錄注滿 10 升水所需的時間(在恒定的最大水流量下)。

在 Blynk 儀表板上,您應該看到當前測量的流量(以 lit/min 為單位)(在 10 秒的響應時間之后)。將此值記為“measuredFlow”

在裝滿水桶后,還要檢查儀表板上的升數是否確實增加了 10。(如果沒有,請驗證您的傳感器位置并根據需要進行調整)。

10 升的時間(以秒為單位)用于計算實際水流量,如下所示:

RealFlow (X) = 10 / time in seconds (in L/sec)

“adjustedFlowrate_factor”現在可以計算如下:

“adjustedFlowrate_factor” = (measuredFlow * 300000) / RealFlow (X)

校準后,Excel 工作表中的計算結果如下所示:

poYBAGNX-maAXSulAAAON8hzgRk518.png
?

這會導致調整后的 Flowrate_factor,然后將其作為 288330.00 放入 Arduino 代碼中。現在您的系統已校準!

將修改后的代碼閃爍到您的智能水表后,現在應該在 Blynk 儀表板上盡可能準確地生成瞬時水流。如有疑問,只需再次運行校準過程。

4.6 完整的 ARDUINO 草圖

智能水表的完整 ARDUINO 草圖包含 188 行代碼。完整清單包含在本教程中,ARDUINO 代碼提供了大量注釋,有助于理解程序。草圖提供英文注釋或選擇荷蘭文注釋。

在整個 Sketch 中包含了許多打印命令,以便在開發過程中提供幫助并能夠在 Arduino IDE(在 PC 上運行)的串行監視器上監控過程。如果您想在 Arduino IDE 的串行監視器上監控進程,請取消注釋這些行。

5. 第三步:使用說明

當正確安裝在現有水表頂部并連接到 5V 充電器并與您的 Wi-Fi 接入點建立連接時,設備應該可以啟動并運行。在 Blynk 中構建美觀的儀表板或在手機上使用的儀表板取決于您自己的創造力。

可以通過斷開 5V 充電器的連接并重新插入來重置系統。

6. 最后的話

這是一個非常有趣的項目,開發和構建它很有趣,尤其是當您在漂亮的 Blynk Dashboard 上看到結果時。

通過 ESP32 TTGO T7 建立的 Wi-Fi 連接效果很好,但我必須承認我的水表設備靠近接入點。

當然,總是有改進的余地。我想到的一些改進是:

  • 介紹在重置后設置現有水表的實際讀數的可能性,以便在 Blynk Dashboard 上也可以提供實際準備好的水表。
  • 添加對 ESP32 固件進行無線更新的可能性
  • 創造避免硬編碼 Wi-Fi 憑據的可能性

為您編寫本教程也是一件令人愉快的事情。

享受閱讀和/或制作自己的智能水表的樂趣!


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>