基于物聯(lián)網(wǎng)的智能電表
大家都會同意,我們的家用電器耗電量高,令人十分困擾,我們每個月都在盡力減少電費。不僅如此,為了了解和監(jiān)測電力使用情況,我們不斷檢查安裝在家里或辦公室的電表。如果我們可以通過智能手機(jī)隨時隨地監(jiān)控電費會怎么樣?是的,在物聯(lián)網(wǎng)的幫助下,我們可以使用智能電表輕松監(jiān)控功耗。我們之前做過其他基于物聯(lián)網(wǎng)的遠(yuǎn)程監(jiān)控項目,如溫度和濕度監(jiān)測,電池監(jiān)測,食品監(jiān)測,空氣質(zhì)量監(jiān)測等。
很長一段時間以來,我一直在試圖找到一種簡單而準(zhǔn)確的方法來測量和監(jiān)控任何地方的電力使用情況,無論是在家里、辦公室還是在旅途中。經(jīng)過一番研究,我決定通過使用帶有NodeMCU的電流傳感器構(gòu)建一個簡單的電流值,并將測量的電流值發(fā)送到物聯(lián)網(wǎng)云平臺。這可以在Adafruit MQTT物聯(lián)網(wǎng)平臺的幫助下完成,該平臺是免費的,不需要訂閱。要制作這個電能表,你只需要很少的組件和互聯(lián)網(wǎng)連接。
所需的材料
?ACS712電流傳感器
?NODE MCU ESP8266模塊
?移動充電器和USB連接線(用于供電和程序上傳&用于串行監(jiān)視器讀取)
?燈座
?穩(wěn)定負(fù)載-這里是100瓦的燈泡
?一些電線
電流傳感的不同方法
測量導(dǎo)線電流的方法有很多種,本文討論了常用的電流傳感方法。電流傳感有兩種方式,即直接傳感法和間接傳感法。直接感應(yīng)法使用歐姆定律來測量電流流過導(dǎo)線時發(fā)生的電壓降,但ACS712使用間接電流感應(yīng)法(通過應(yīng)用法拉第定律或安培定律計算磁場來測量),因此載流導(dǎo)線上不會有外部負(fù)載,也不需要直接接觸。它類似于鉗形儀表的工作原理。我們將在本文后面討論更多關(guān)于ACS712工作的內(nèi)容。
另一種流行的電流傳感方法是使用電流互感器(CT)。它也是一種間接電流傳感方法。它的工作原理與載流導(dǎo)線穿過CT變壓器的中心孔相同,CT變壓器由一個線圈組成,該線圈將接收載流導(dǎo)線產(chǎn)生的磁通量。通過測量線圈中感應(yīng)的電壓,我們可以計算出通過導(dǎo)線的電流。一個典型的電流互感器如下所示。
ACS712電流傳感器
ACS712基于1879年埃德溫·霍爾博士發(fā)現(xiàn)的霍爾效應(yīng)理論。根據(jù)這一原理,當(dāng)載流導(dǎo)體置于磁場中時,會在其邊緣產(chǎn)生垂直于電流和磁場方向的電壓。這個電壓被稱為霍爾電壓,它的典型值是幾毫伏。因此,通過測量霍爾電壓,我們將能夠計算流過傳感器的電流量。典型的ACS712電流傳感器如下圖所示。
當(dāng)電子流過導(dǎo)線或路徑時,會在其周圍產(chǎn)生磁場。該磁場由霍爾效應(yīng)IC感測并產(chǎn)生電壓輸出,該輸出可直接饋送到微控制器或ESP板。該傳感器位于從相位輸入輸出的粗銅導(dǎo)電路徑上的IC表面。
ACS712傳感器有4個變體(185mV=5A模塊,100mV=10A和66mV,適用于20A和30A模塊),每個變體的額定電流值不同。您可以根據(jù)自己的要求選擇其中任何一個,但為了更好地校準(zhǔn),每安培的毫伏值應(yīng)正確分配給編碼。請注意,隨著傳感器電流額定值的增加,精度會降低。
NodeMCU電能表電路圖
基于物聯(lián)網(wǎng)的電能表的完整電路圖如下所示。雖然它非常簡單,但您應(yīng)該遵循圖形表示以更好地理解并確保連接是正確的。請注意,使用主電源需要練習(xí),因此,如果您不確定如何做,請不要構(gòu)建此電路。
我們將NodeMCU與ACS712電流傳感器一起使用,電流傳感器將測量交流負(fù)載消耗的電流,NodeMCU將測量該電流,計算功率(假設(shè)電壓恒定)并將功率值發(fā)送到Adafruit IO等云平臺。為了您的方便,下面還提供了一個直觀的信息圖形電路圖。
正如您所看到的,NodeMCU將通過USB端口使用5V移動充電器供電,交流負(fù)載將通過我們的ACS712電流傳感器連接到220V交流電源。
該傳感器在VCC上的最大輸入電壓為5V,但在較低電壓下也能正常工作。請注意,ASC712輸出偏置電壓依賴于其工作電壓(一般為工作電壓的一半)。由于我們從ESP 3V輸出引腳上電模塊,當(dāng)沒有電流流過時,ACS712模塊輸出偏置電壓為1.5伏(1500 mv)。ESP內(nèi)部有一個板載分壓器電路,所以我們從ACS712輸出直接輸入到A0輸入引腳。
按照上面的電路進(jìn)行連接。我直接焊接了NodeMCU和ACS712傳感器之間的電線,但您也可以使用面包板和連接線。準(zhǔn)備好后,我的設(shè)置如下所示。
Adafruit IO能源監(jiān)測
當(dāng)一切完成后,是時候在“Adafruit IO”物聯(lián)網(wǎng)平臺上開設(shè)賬戶,并將我們的電路與Adafruit服務(wù)器連接起來,實時監(jiān)控電能表讀數(shù)。請按照以下步驟逐步操作:
對于Adafruit IO設(shè)置,您需要做的第一件事是注冊Adafruit IO。
2. 在此之后,將彈出一個窗口,您需要在其中填寫詳細(xì)信息。
在注冊窗口,填寫您的詳細(xì)信息,如您的姓名,郵件id,用戶名等。然后點擊保存設(shè)置,你的賬戶就創(chuàng)建好了。要獲得AIO密鑰,請單擊“查看AIO密鑰”。
3. 一個窗口將彈出與您的Adafruit IO AIO密鑰。復(fù)制這個鍵,稍后在python代碼中會用到它。
4. 現(xiàn)在,您需要創(chuàng)建一個提要。要創(chuàng)建提要,請單擊“feed”。然后點擊“Actions”,你會看到一些選項,點擊“Create a New Feed”。
5. 在此之后,將打開一個新窗口,您需要輸入:
名稱-在名稱選項中,為提要寫一個簡短的描述性名稱。您可以使用字母、數(shù)字和空格。
描述-對數(shù)據(jù)的長格式描述。該字段不是必需的,但是您可以編寫數(shù)據(jù)的描述。
6. 點擊“創(chuàng)建”,您將被重定向到您的新提要。
7. 接下來,要添加一個新的Toggle Block,您需要創(chuàng)建一個儀表板。創(chuàng)建Dashboard和創(chuàng)建Feed是一樣的。所以請遵循相同的步驟?,F(xiàn)在要添加一個塊,單擊屏幕右上角的“加號”,然后單擊第一個選項。
8. 現(xiàn)在,選擇我們之前創(chuàng)建的提要,然后點擊“下一步”。
9. 如果你想改變塊的設(shè)置,或者保持原樣,然后點擊“創(chuàng)建塊”。
NodeMCU物聯(lián)網(wǎng)電能表程序
完整的物聯(lián)網(wǎng)電能表代碼可以在本文末尾找到,但我們需要下載一些代碼庫。你可以通過庫管理器下載,也可以從下面的鏈接下載,并使用Arduino IDE上的“import library”選項添加。
?ESP8266WIFI
?Adafruit MQTT
?Adafruit MQTT客戶機(jī)
首先,我們將包括ESP8266和Adafruit MQTT的所有庫。
然后,我們定義您的wifi網(wǎng)絡(luò)的SSID和PASSWORD。
這部分代碼定義了“Adafruit服務(wù)器”,這是網(wǎng)站本身的鏈接,以及Adafruit服務(wù)器“端口”,您的帳戶“用戶名”和您的“AIO密鑰”。
然后我們有一個可變的毫伏/安培靈敏度,必須在編碼中提到,這對于ACS712傳感器的所有變體都是不同的(5Amp模塊185mV, 10A 100mV, 20 & 30安培模塊66mv)。
在VOID設(shè)置下,我們剛剛連接到wifi。
在loop函數(shù)中,首先,我們連接MQTT并從傳感器獲取電壓值。
在這個函數(shù)中,我們在1秒內(nèi)取值,在這1秒內(nèi),我們將從傳感器讀取值,然后我們將計算最大值和最小值。所以,基本上在這1秒內(nèi)我們要存儲電壓的最小值和電壓的最大值結(jié)果是電壓的最大值和最小值之間的差值乘以5再除以1024所有這些都是用來轉(zhuǎn)換成電流的它與校準(zhǔn)因子有關(guān)。
如果你看一下我為大家準(zhǔn)備的手工圖表,你可以看到有兩條線,上面的線是我給的名字(Vp),表示電壓的最大值,下面是(-Vp),表示電壓的最小值。如果你取這兩條線之間的差,你會得到(Vpp)電壓峰值到峰值的值。
然后我們回到main函數(shù)。在環(huán)路下,您可以看到我們將使用上面解釋的公式將峰值電壓轉(zhuǎn)換為有效值。注意,我們將測量電壓除以2,得到正極或負(fù)極的值。
之后,我們將電壓轉(zhuǎn)換為電流,為此我們將Vrms值除以電流傳感器的毫伏/安培值(我使用30安培模塊,因此它是66毫安培)并乘以1000,以便我們將其轉(zhuǎn)換為安培而不是毫安。
然后,我們將在Arduino IDE的串行監(jiān)視器以及MQTT物聯(lián)網(wǎng)平臺上打印此當(dāng)前值。
基于NodeMCU的物聯(lián)網(wǎng)電能表的工作
通過這種方式,您可以構(gòu)建基于物聯(lián)網(wǎng)的電能表,可以從世界任何地方進(jìn)行監(jiān)控。建立連接并上傳代碼之后,您應(yīng)該會在AdafruitIO控制臺上看到電源讀數(shù)。
我們在不同的負(fù)載條件下測試了它,比如100瓦的燈泡,200瓦的燈泡,500瓦的鹵素?zé)舻取R韵率荕QTT物聯(lián)網(wǎng)平臺上0到100瓦負(fù)載條件下的屏幕截圖。
除了圖形之外,MQTT上還打印了該值,并將其與串行監(jiān)視器進(jìn)行比較,如下所示。
本文編譯自iotdesignpro