基于物聯(lián)網(wǎng)的電池監(jiān)測(cè)系統(tǒng),使用NodeMCU和ThingSpeak
掃描二維碼
隨時(shí)隨地手機(jī)看文章
電池是任何設(shè)備最重要的部件,因?yàn)樗鼮檎麄€(gè)系統(tǒng)供電。鋰電池的充電和放電不當(dāng)可能會(huì)導(dǎo)致很大的安全問題,因此監(jiān)測(cè)電池的電壓水平非常重要。電動(dòng)汽車中有一個(gè)單獨(dú)的系統(tǒng),稱為電池管理系統(tǒng)(BMS),它監(jiān)控電池組的所有屬性,如電壓、電流、溫度等,并確保鋰電池的安全性和可操作性。
以前,電池監(jiān)測(cè)系統(tǒng)只監(jiān)測(cè)電池的狀況,并通過車內(nèi)的電池指示燈向用戶發(fā)出警報(bào)。由于技術(shù)的進(jìn)步,現(xiàn)在物聯(lián)網(wǎng)(IoT)可以用來遠(yuǎn)程通知制造商和用戶有關(guān)電池狀態(tài)。他們可以在世界任何地方用智能手機(jī)檢查汽車電池的電池狀態(tài),這被認(rèn)為是制造商提供的維護(hù)支持之一。
因此,在這個(gè)項(xiàng)目中,我們還將建立一個(gè)基于物聯(lián)網(wǎng)的電池監(jiān)控系統(tǒng),您不僅可以監(jiān)控電池的充電和放電狀態(tài),還可以在電池充滿或空時(shí)收到警報(bào)電子郵件。在這里,我們將使用NodeMCU 12E將電池狀態(tài)數(shù)據(jù)發(fā)送到ThingSpeak云,并使用IFTTT發(fā)送關(guān)于電池狀態(tài)的電子郵件警報(bào)。
組件要求:
?NodeMCU (ESP-12E)
?鋰聚合物電池
?LiPo充電器(TP4056)
?電阻
?任何直流負(fù)載,如直流電機(jī)
?跳線
計(jì)算電池電壓
NodeMCU模擬引腳只能承受3.3v,所以我們必須安排在NodeMCU模擬引腳的范圍內(nèi)轉(zhuǎn)換高輸入電壓,然后編寫代碼來計(jì)算被測(cè)量的實(shí)際電壓。
現(xiàn)在,轉(zhuǎn)換電壓的裝置是分壓器電路。分壓器在NodeMCU模擬輸入的3.3v范圍內(nèi)降低被測(cè)電壓。我們必須找出電路所需的電阻器的值。最大輸入電壓取決于電阻器的值。因此,我選擇R1=44k和R2=10k(這些是打印值,但實(shí)際值可能不同,因此首先使用萬用表測(cè)量實(shí)際值,然后使用這些值進(jìn)行進(jìn)一步計(jì)算)。在我的例子中,實(shí)際值是R1=47k和R2=9.5k
因此,利用分壓器公式,可以計(jì)算輸入電壓為:
考慮Vout是3.3v
把電阻和Vout值后,最大Vin將計(jì)算19v左右。但在實(shí)踐中,最好提供一個(gè)小于最大值的電壓,這樣你就可以安全地使用15v電池電壓。
線路圖
電池監(jiān)測(cè)系統(tǒng)電路圖如下圖所示。分壓器電路的輸出給NodeMCU的A0引腳。TP4056充電模塊用于給LiPo電池充電,直流電機(jī)用于放電,直流電機(jī)連接到TP4056的輸出端。
配置ThingSpeak來繪制充電和放電電壓
ThingSpeak為物聯(lián)網(wǎng)項(xiàng)目提供了一個(gè)非常好的工具。通過使用ThingSpeak網(wǎng)站,我們可以使用ThingSpeak提供的渠道和網(wǎng)頁在互聯(lián)網(wǎng)上監(jiān)控我們的數(shù)據(jù)和控制我們的系統(tǒng)。ThingSpeak從傳感器“收集”數(shù)據(jù),“分析和可視化”數(shù)據(jù),并通過觸發(fā)反應(yīng)來“行動(dòng)”。
在這里,我們簡(jiǎn)要地解釋一下如何在物聯(lián)網(wǎng)電池監(jiān)測(cè)項(xiàng)目中使用ThingSpeak。你可以在這里查看各種基于ThingSpeak的物聯(lián)網(wǎng)項(xiàng)目,了解更多關(guān)于它的信息。
我們將使用ThingSpeak來監(jiān)測(cè)電池的充放電電壓。我們還將使用IFTTT平臺(tái)與ThingSpeak連接,為電池滿或空發(fā)送電子郵件/消息提醒。
步驟1:-首先,用戶需要在ThingSpeak.com上創(chuàng)建一個(gè)帳戶,然后登錄并點(diǎn)擊開始。
第二步:-現(xiàn)在轉(zhuǎn)到“通道”菜單,單擊同一頁面上的“新建通道”選項(xiàng)進(jìn)行進(jìn)一步處理。您將看到一個(gè)用于創(chuàng)建通道的表單,根據(jù)您的選擇填寫Name和Description。然后在字段1和字段2標(biāo)簽中填寫“充電電壓”和“放電電壓”,勾選字段的復(fù)選框。單擊頁面底部的Save channel?,F(xiàn)在您的新頻道已經(jīng)創(chuàng)建完成。
第三步:-點(diǎn)擊API密鑰菜單,復(fù)制寫API密鑰。該鍵將在代碼中用于在ThingSpeak上發(fā)送數(shù)據(jù)。
第4步:現(xiàn)在,我們將使用服務(wù)器的ThingHTTP應(yīng)用程序來觸發(fā)IFTTT小程序,以便在電池滿或空時(shí)發(fā)送郵件。你可以在ThingHTTP中指定動(dòng)作,你想用其他ThingSpeak應(yīng)用(比如React)觸發(fā)這些動(dòng)作。
為了使New ThingHTTP,我們需要一個(gè)觸發(fā)的URL,我們可以從IFTTT中獲得。
配置IFTTT觸發(fā)郵件/短信電池監(jiān)測(cè)
這里我們通過webhooks將ThingSpeak與IFTTT連接起來,以便在電池滿或空時(shí)自動(dòng)發(fā)送電子郵件。要了解更多關(guān)于IFTTT如何工作的信息,這里有許多使用IFTTT的教程和實(shí)時(shí)物聯(lián)網(wǎng)項(xiàng)目。
步驟1:-登錄IFTTT,搜索Webhooks并點(diǎn)擊它。
步驟2:-單擊文檔。
步驟3:-在事件框中輸入“bat_full”并復(fù)制URL。這個(gè)URL將在ThingHTTP中使用。
現(xiàn)在讓Applet將ThingHTTP鏈接到Gmail以發(fā)送電子郵件。之后,我們將跳轉(zhuǎn)到完成我們的ThingHTTP。
第四步:-點(diǎn)擊“我的蘋果”選項(xiàng)中的“新建蘋果”。
第五步:-點(diǎn)擊“+this”,搜索Webhooks并點(diǎn)擊它。選擇觸發(fā)器作為“接收web請(qǐng)求”。
現(xiàn)在讓我們讓Applet將ThingHTTP鏈接到谷歌表單并發(fā)送電子郵件/短信。之后,我們將跳轉(zhuǎn)到完成我們的ThingHTTP。
第六步:-點(diǎn)擊“+this”,搜索Webhooks并點(diǎn)擊它。選擇觸發(fā)器作為“接收web請(qǐng)求”。
步驟7:-鍵入事件名稱,與您在webhooks URL中的事件框中寫入的名稱相同。單擊Create Trigger。
第八步:-點(diǎn)擊“+that”,搜索Gmail,點(diǎn)擊它?,F(xiàn)在,點(diǎn)擊發(fā)送電子郵件。
當(dāng)有關(guān)于電池的更新時(shí),鍵入您希望接收電子郵件的電子郵件地址。
鍵入您希望在電子郵件中發(fā)送的正文內(nèi)容,然后單擊create action?;仡櫜⑼瓿伤?。
類似地,制作一個(gè)applet來獲取關(guān)于電池耗盡警報(bào)的郵件。
我們已經(jīng)制作了applet來執(zhí)行這些任務(wù)?,F(xiàn)在,回到ThingSpeak->Apps->ThingHTTP。
ThingHTTP連接ThingSpeak與IFTTT的電子郵件提醒
步驟1:-點(diǎn)擊New ThingHTTP。輸入任意名稱并粘貼從webhooks文檔中復(fù)制的URL。填寫如下所示的剩余信息。
以同樣的方式,我們必須為“bat_empty”創(chuàng)建ThingHTTP。遵循相同的步驟。
在URL中,用bat_empty代替bat_full。Body保持為空,所有其他信息與之前的ThingHTTP相同。保存它。
現(xiàn)在,我們必須讓React來觸發(fā)URL。
React與ThingHTTP應(yīng)用一起工作,當(dāng)通道數(shù)據(jù)滿足特定條件時(shí)執(zhí)行操作。
要制作React,請(qǐng)點(diǎn)擊Apps -> React。點(diǎn)擊New React。
步驟2:-給你的React起一個(gè)名字。條件類型為“數(shù)字”和“測(cè)試頻率”,與“數(shù)據(jù)插入”相同。
選擇要觸發(fā)URL的條件。從If channel下拉菜單中選擇您的頻道。選擇字段1即charing_voltage,設(shè)條件大于等于4.1。如圖所示
從Action下拉菜單中選擇ThingHTTP,然后選擇bat_full。
選擇“每次條件滿足時(shí)運(yùn)行操作”并單擊Save React。
類似地,對(duì)bat_empty進(jìn)行make react。
我們已經(jīng)完成了所有基于網(wǎng)絡(luò)的工作?,F(xiàn)在,我們將看到NodeMCU的代碼。
代碼的解釋:
在本教程結(jié)束時(shí)給出了基于物聯(lián)網(wǎng)的電池監(jiān)控系統(tǒng)的完整代碼和工作視頻,在這里我們?cè)敿?xì)解釋了代碼。
首先包括所有必需的庫。此外,初始化您的Wi-Fi網(wǎng)絡(luò)的SSID和密碼,并寫入我們從ThingSpeak平臺(tái)復(fù)制的API密鑰。
現(xiàn)在聲明并初始化電阻器值和其他一些變量和常量。
在void setup()函數(shù)中,初始化串行通信并檢查Wi-Fi連接。
在void loop()函數(shù)中,我們將從模擬引腳獲取讀數(shù),并將該值轉(zhuǎn)換為實(shí)際電壓值,如下所示。
現(xiàn)在,我們將使用一個(gè)標(biāo)志變量來跟蹤電池的狀態(tài),無論電池是滿的還是空的,然后相應(yīng)地將電壓數(shù)據(jù)發(fā)送到ThingSpeak上的相應(yīng)圖形。最初,我們將旗子設(shè)為1,表示電池正在充電。
用于發(fā)送電壓數(shù)據(jù)以檢查標(biāo)志并將數(shù)據(jù)上傳到相應(yīng)的圖形中。
讀數(shù)將每10秒更新一次。為此,可以使用延遲或定時(shí)器功能。這里我用的是延遲函數(shù)。
現(xiàn)在,編碼部分已經(jīng)完成。教程的末尾給出了完整的代碼。將此代碼上傳到NodeMCU,并確保正確輸入憑據(jù)。
您可以查看串行監(jiān)視器和ThingSpeak上的讀數(shù),如下所示。
ThingSpeak上的充放電曲線如圖所示。左圖為鋰電池充電曲線,右圖為鋰電池放電曲線。
現(xiàn)在,無論電池是滿的還是空的,用戶都會(huì)收到一封電子郵件,通知電池是滿的還是空的。
這就是使用ThingSpeak云和NodeMCU Wi-Fi模塊從世界任何地方監(jiān)控電池電壓狀態(tài)的方法。
本文編譯自iotdesignpro