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