09.15 Arduino 製造用水量智能監測儀

Arduino 製造用水量智能監測儀

智能家居系列已經出過不同的項目。例如幫你管理衣物的《MAKER的衣櫃:樹莓派+RFID實現智能衣櫃》,一手操作的《炫酷的「滅霸手套」家電控制終端》,看家護院的《貓咪走開!計算機視覺噴水驅貓裝備》。本期我們來做一個環保節能的項目——噴頭水量監測儀。在噴頭上安裝流器傳感器,通過記錄用水量、實時水費等信息,鼓勵人們節約用水、提高用水效率。

Arduino 製造用水量智能監測儀

項目將顯示每次洗澡所用水量,水的流量以及水費等數據,是個實用性很強的項目,製作思路也非常嚴謹。這個功能當然也可以被用在其他需要用水的地方。

材料清單

Arduino 製造用水量智能監測儀

Arduino Nano × 1

流量傳感器 × 1

液晶屏顯示器 × 1

升壓轉換器 × 1

鋰電池充電器 × 1

防水開關 × 1

防水按鈕 × 1

M3 螺絲 × 若干

M3 螺母 × 若干

銅鑼柱 × 4

銅鑼柱帶螺栓 × 4

3.5mm 母頭插座 × 2

3.5mm 公頭插頭 × 1

3.5mm 3英寸電纜組件 × 若干

USB電纜組件 × 若干

1/2英寸 NPS 母對母連接器 × 1

500mAh 3.7V 鋰電池 × 1

烙鐵×1 × 1

焊錫 × 1

線 × 若干

鉗子 × 1

雙面膠 × 1

十字螺絲刀 × 1

3D打印機(可選) × 1

3D 打印外殼

外殼的防水處理應該是這個項目最難的部分。因為節水裝置要安裝在噴頭旁,必須防潮以及偶爾飛濺的水花。你可以有兩種選擇,自己定製一款 3D 打印外殼或者直接買現成的外殼。我選擇自制外殼。

Arduino 製造用水量智能監測儀

Arduino 製造用水量智能監測儀

使用 Fusion 360 軟件對外殼進行設計。

所有材料 100% 填充。

Arduino 製造用水量智能監測儀

外殼底部:三個圓形孔用於安裝兩個母頭 3.5mm 的插孔和一個開關。

Arduino 製造用水量智能監測儀

外殼蓋子:一個 16mm 的孔用於瞬時按鈕,一個矩形窗口用於安裝屏幕,四個孔用於固定屏幕以及角落上的另外四個孔用於固定外殼的蓋子。使用 3M 螺絲。

Arduino 製造用水量智能監測儀

用於安裝屏幕的矩形窗口需要添加防水薄膜防止水分從縫隙中流入。如果你使用的是透明蓋子的外殼,則不需要此步驟。

Arduino 製造用水量智能監測儀

防水薄膜的尺寸大約為 5mm 厚,27x77mm 大的透明塑料矩形。安裝時要修剪一下邊角,以便不妨礙四周的孔。用強力膠水將防水薄膜粘貼在窗口上。

溫馨提示:膠水封口時,用小風扇幫助吹乾,最後靜置十二個小時,確保它完全乾燥。

安裝 LCD 屏幕

液晶顯示器是 16×2 字符顯示器,支持 I2C,接線很簡單,兩根電源線和兩根信號線。

Arduino 製造用水量智能監測儀

使用了四個 10mm 的銅鑼柱來安裝屏幕。每個銅鑼柱的一端是公頭螺絲,另一端是母頭螺絲。如圖所示逐步安裝。

1、將公頭螺絲穿過 LCD 並用 M3 螺母檸緊。

Arduino 製造用水量智能監測儀

2、用四個 M3 螺釘將支座的一端固定在外殼的蓋子上。

3、固定好螺柱。注意不要過度擰緊螺絲,以免塑料蓋變形。安裝 LCD 時,要注意方向,要將帶有十六根排針的放於頂部。

Arduino 製造用水量智能監測儀

安裝瞬時按鈕

採用的是瞬時按鈕,鍍鉻材質並帶有橡膠圈防止溼氣通過螺絲進入外殼。

Arduino 製造用水量智能監測儀

如圖所示安裝按鈕。

1、鬆開螺母,但橡膠圈要套在上面。

Arduino 製造用水量智能監測儀

2、將按鈕插入蓋子上的孔中,然後從背面擰緊螺母。注意不要過度擰緊螺母,防止橡膠圈被破壞而起不到防水的作用。

Arduino 製造用水量智能監測儀

電源和充電電路

這一步要將電池組件放在一起。包括電池,主開關,鋰電池保護板和升壓轉換器。使用 3.7V 1500 mAh 的單節鋰電池,它的大小剛好與外殼匹配。你也可以使用 18650 電池,不過外殼的大小要進行調整。

Arduino 製造用水量智能監測儀

1、將電池焊接到 TP4056 充電板上。將 JST RCY 連接器焊接到電池和充電器(此步驟可選)。焊接時請注意電池的正負極性,確保安裝正確。

Arduino 製造用水量智能監測儀

2、將電線從充電器的正極輸出端口(位於正極電池線旁邊)焊接到升壓轉換器的正極輸入端口。然後將負極輸出(位於負極電池線旁邊)的電線焊接到主開關的公共(中心)針腳。最後,將電線從開關的常開引腳焊接到升壓轉換器的負極輸入。如果將萬用表連接到升壓轉換器的輸出並打開主開關,則會顯示電壓。

3、Arduino、LCD 屏幕和流量傳感器都需要 5V 電源,所以升壓轉換器的輸出設置為 5V。使用螺絲刀轉動電位器上的按鈕來調整。打開主開關,連接電池,讓萬用表連接到升壓轉換器的輸出,慢慢轉動電位器,直到輸出讀數為 5V。

Arduino 製造用水量智能監測儀

4、使用 3.5mm 耳機插座用於充電,避免每次打開外殼。將連接器插入外殼最底部的孔中(因為充電的插頭,大部分時間會被拔掉,為了防止水濺到裡面,孔必須在下方)。安裝鎖緊墊圈並擰緊螺母后,將兩根電線分別焊接到連接器上的“頭”和“地”線上。

Arduino 製造用水量智能監測儀

5、連接器的引腳分佈如圖所示。將“地”線的另一端焊接到充電器的負極輸入端口(在微型 USB 端口旁)。將“頭”的線焊接到 USB 端口另一側的 +5V 焊盤上。不使用充電器上的 USB 端口,因為不能保證防水。

Arduino 製造用水量智能監測儀

製作充電線

Arduino 製造用水量智能監測儀

Arduino 製造用水量智能監測儀

如圖所示,自制一根電源適配器,使用一根帶有 USB A 插頭的線和一根帶有 3.5mm 插孔的線,最後將 3.5mm 音頻插孔作為充電端口,USB A 作為插頭。

1、處理 USB 線。從白色電線上剝下白色線管,露出紅線和黑線,然後剝開紅線和黑線的絕緣層。有些 USB 線裡面有四根線:紅線、黑線、綠線和白線。綠線和白線用於數據傳輸,可以不用管。

Arduino 製造用水量智能監測儀

2、將 3.5mm 插頭連接到 USB 線上。將 USB 的紅線連接到中間的焊接腳上,黑線連接到接地端的焊接腳上。

Arduino 製造用水量智能監測儀

Arduino 製造用水量智能監測儀

Arduino 製造用水量智能監測儀

流量傳感器

Arduino 製造用水量智能監測儀

Arduino 製造用水量智能監測儀

1、流量傳感器的工作原理:

流量傳感器十分簡潔、小巧且防水。傳感器帶有一個轉子組件,根據水流的大小而轉動。轉子組件上帶有磁鐵。在傳感器的外部帶有一個小型 PCB 板並附帶一個電阻器、一個霍爾效應傳感器。每當磁鐵經過霍爾效應傳感器時,就會高低切換。也就是說,每當轉子組件旋轉時,它在 5V 和 0V 之間切換。

為了讀取傳感器,將紅線連在 +5V 上,將黑線連到負極上,從黃線讀取數字信號。

Arduino 製造用水量智能監測儀

如圖所示,流量打開時,信號的變化。起初信號始終為零。當流量開始時,脈衝頻率快速上升並趨於穩定。

編寫程序時需要注意,根據數據顯示,傳感器每升輸出450個脈衝。

2、流量傳感器接線

流量傳感器配有三針 JST-XH 連接器。由於連接器的導線太短並且帶有容易引起短路的暴露點,所以要連到一個帶有 3.5mm 音頻插頭的線上。大約三英寸長,是鍍錫線,易於焊接。

Arduino 製造用水量智能監測儀

打開流量傳感器蓋子取出電路板,用烙鐵加熱三根電線並將它們分別焊接到三根電線上。

Arduino 製造用水量智能監測儀

再將 3.5mm 音頻電線焊接到焊盤上。按照電線的顏色來焊接。+5V 在頂端,信號在環上,接地線在地上。與充電端口的設置相同。如果你不小心將充電器插入傳感器端口,也不會對設備造成傷害。

Arduino 製造用水量智能監測儀

3、安裝流量傳感器

Arduino 製造用水量智能監測儀

取下噴頭,將流量傳感器與噴頭導管相連,由於傳感器兩端都是公頭,需要製作一個母對母聯軸器。用1/2英寸黃銅管制作一個聯軸器,其他材質亦可(確保管道與傳感器端口的尺寸相匹配)。

Arduino 製造用水量智能監測儀

將聯軸器的一端與流量傳感器相連,另一端與管道相連。流量傳感器有個箭頭代表水流流動的方向。確保不要反向安裝,否則測量結果會不準確。最後,將噴頭安裝到流量傳感器的末端。

Arduino 製造用水量智能監測儀

安裝時,為防止漏水,管道之間可以纏繞生膠帶。

將 Arduino 安裝到電路板

Arduino 製造用水量智能監測儀

1、取一塊 1×2英寸的矩形電路板,將 Arduino Nano 安裝到電路板中間並標記了針腳穿過的位置。

Arduino 製造用水量智能監測儀

2、取兩個母頭針頭,每個帶十五個針頭。將其焊接到電路板上。Arduino 可以移除便於編程。

Arduino 製造用水量智能監測儀

Arduino 製造用水量智能監測儀

注意標記 Arduino USB 端口的方向,以同樣的方向插入到電路板上。

組裝

Arduino 製造用水量智能監測儀

組件連接方法如圖所示。

Arduino 製造用水量智能監測儀

1、切割了一些公頭排針並將它們焊接到電路板的 +5V 和接地導軌上。再焊接兩個排針分別連接到 Arduino 的 A4 引腳和 A5 引腳。使用母對母跳線連接 LCD 屏幕。

2、將升壓轉換器輸出端口的兩根線分別焊接到 +5V 和接地導軌上。為 Arduino、LCD 和流量傳感器供電。切割兩根電線並將它們連接到按鈕的端口上。一根電線接到地線,另一根線接到數字引腳 3。

Arduino 製造用水量智能監測儀

3、焊接流量傳感器。由於傳感器上已經安裝 3.5mm 插頭,只需要再安裝一個 3.5mm 的母頭插孔。首先焊接了三根電線,每一根都標記好。然後將插頭插入外殼並用螺母固定到位。將地(sleeve)焊接到接地端,頭(tip)焊接到 +5V,環(ring)焊接到數字引腳 2。我將數字引腳 2 和 3 分別連接到按鈕和流量傳感器,因為它們是中斷引腳,易於編程。

Arduino 製造用水量智能監測儀

4、固定 LCD。需要四根母對母的跳線。將“Vcc”引腳連接到 +5V,將“Gnd”引腳連接到接地端,將“SCL”引腳連接到 A5,將“SDA”引腳連接到 A4。為了使 LCD 屏幕更好的與外殼相吻合,需要向後彎曲引腳。操作時需要小心處理,不要重複彎曲引腳。

Arduino 編程

Arduino 製造用水量智能監測儀

通過編程實現以下幾個功能:

1、LCD 第一行顯示水量的總升數,第二行顯示水的總成本或流速。

2、打開噴頭時,切換按鈕時可以別分顯示成本和流速。

3、噴頭關閉時,按鈕清除所有數據並重置屏幕。

4、使用中斷程序讀取傳感器,避免計數誤差。

5、更新屏幕時,只更新已改變的值,而不是每次刷新整個屏幕(這會導致閃屏)。

該程序遵循一個簡單的結構。通過使用 millis() 函數,創建一個延遲,但不會停止程序的執行。請點擊參考這個教程https://www.arduino.cc/en/tutorial/BlinkWithoutDelay ,這是一個關於不使用 delay() 函數的情況下閃爍 LED 的案例。

Arduino 打開後,millis() 函數將返回其毫秒數。通過創建變量“previousMillis”並減去 Millis() -previousMillis(),就可以看到 previous Millis 更新用的時間。

如果希望每秒發生一次,可以編寫以下代碼:

Arduino 製造用水量智能監測儀

這將幫助檢查 millis()(當前時間)和 previous Millis(最後一次)之間的差異是否大於或等於 1000 毫秒。如果是,將 previous Millis 設置為當前時間。然後再進行其他步驟。

在該項目中,接下來切換 LED。然後退出這段代碼並完成 loop() 函數的其餘部分,然後再回到開始並重復。使用這種方式比簡單 delay() 函數要好。因為 delay() 在指令之間設置了時間間隔,但沒有考慮執行 loop() 函數中的運行其他指令所花費的時間。如果你要做的事情比閃爍 LED 更費時,例如更新 LCD 屏幕,那麼它所花費的時間是不可忽視的並且運行幾個週期之後它會累積。如果你準備更新時鐘上的 LCD 屏幕,它將會出現延遲。

整個程序的結構介紹完畢,現在可以插入指令。請認真查看流程圖。每一段 Arduino 代碼都有說明,請認真閱讀。相關文件請在項目文件庫中下載。

https://make.quwj.com/project/137

因為每個城市的水費存在差異,請根據事情情況進行更改,修改每升水的成本。在本市水費每升為0.2523¢。請自行更改:

1const float COST_PER_LITRE = 0.2523; // cost per litre, in cents, from city website

如果你選擇計量水的單位是加侖而不是升,請將所有“LCD.print()”行中的“L”或“L/s”更改為“G”或“G/s”。然後刪除以下行:

1const float CONVERSION = 450.0; // keep this uncommented for litres

並取消註釋這一行。

1

const float CONVERSION = 1703.0; // uncomment this and delete the line above for gallons

你會注意到“¢”字符,我不想使用美元,因為大多數情況下成本會顯示為“$ 0.01”或更低。因此,我自定義一個特性。以下字節數組用於表示此符號:

Arduino 製造用水量智能監測儀

創建此數組後,必須“創建”並存儲這個特性。

1

lcd.createChar(0, cent_sign);

完成後,打印自定義特性,使用以下行:

1

lcd.write(byte(0)); // print cents sign (¢)

顯示屏最多可包含8個自定義特性。

同時使用在線工具,它幫助你使用圖形界面繪製自定義特性並自動生成自定義字節數組。

封閉外殼

到目前為止,項目快要完成。將所有電子設備放入殼中併合上外殼。

Arduino 製造用水量智能監測儀

1、取四根 30mm 連接的銅螺柱。我用四個 M3 螺絲將其固定到外殼底部的孔中。

Arduino 製造用水量智能監測儀

2、檢查所有電子設備是否固定好。將充電器和升壓轉換器連接到帶有雙面膠的蓋子上。

3、在兩個 3.5mm 插孔的外部的金屬周圍纏上一些膠帶,確保連到連接器上不短路。

Arduino 製造用水量智能監測儀

4、將 Arduino 安裝至側面的左下角,USB 端口朝右。使用雙面膠將電池固定在 LCD 屏幕下方,朝向外殼底部。

Arduino 製造用水量智能監測儀

5、所有組件安裝好後,用四個 M3 合上外殼。

測試

Arduino 製造用水量智能監測儀

1、將 3.5mm 連接器插入流量傳感器。再打開設備請進行操作。

2、打開主電源開關。沒有水流入時,除了清除總數和清屏外,前板按鈕不會執行任何操作。默認總數為零,按鈕不會執行任何操作。

Arduino 製造用水量智能監測儀

3、如果打開噴頭時,總量就會開始增加。默認情況下,會顯示成本。如果按下前板按鈕,水的流量將顯示在最後一行。按下前板按鈕將切換顯示流速和成本。關閉噴頭時,按下前按鈕將重新測量並清除屏幕。

注意事項

1、如何安裝設備將取決於你浴室的佈局。可以放置在浴室的鐵架上,如果沒有可以使用吸盤,但只適合於表面光滑的外殼。

2、故障排除

屏幕打開,背光關閉——確保跳線安裝在 I2C 模塊側面的兩個引腳上。

屏幕空白,背光打開——通過 I2C 掃描儀檢查 I2C 地址是否正確。

屏幕打開,數值為零——通過測量引腳 2 上的電壓來檢查傳感器是否有信號。如果沒有信號,請檢查傳感器是否連接正確。

屏幕空白,背光關閉——檢查 Arduino 上的電源的 LED 是否亮起,並檢查屏幕是否有電。

屏幕閃開,然後一切都停止——你可能將升壓轉換器的電壓設置得太高(組件無法承受超過 5V 的電壓)。

設備工作,數值不正確——確保你使用的流量傳感器具有相同的轉換系數,即每升450個脈衝。不同的傳感器具有不同的值。

改進方向

目前,該軟件運行良好,但還可以添加不同用戶(如家庭其他成員,室友等)的能力。該設備將存儲每個人的統計數據(總水量和淋浴總數)並顯示每個人的平均用水量。這可以鼓勵更多人節約用水。

1、添加安裝 EEPROM,Arduino 的內置非易失存儲器。這樣即使在設備關閉後也可以保留數據。我們可以創建一些特定的電子表格,通過查看數據並繪製成圖形,這樣就可以更清楚明瞭的看出,一年中人們哪個季節更頻繁洗澡和用更長的時間沐浴。

2、添加電池指示器。目前,設備需要充電的唯一指示是電池管理器板切斷電源。連接額外的模擬輸入以測量電池電壓非常的簡單。由於電池電壓始終小於 5V,不需要安裝分壓器。


分享到:


相關文章: