構(gòu)建一個(gè)實(shí)時(shí)系統(tǒng)遙測(cè)儀表板
構(gòu)建一個(gè)實(shí)時(shí)系統(tǒng)遙測(cè)儀表板,在一個(gè)由DFRobot FireBeetle ESP32P4提供服務(wù)的黑暗單頁(yè)web UI中顯示您PC的CPU、RAM和網(wǎng)絡(luò)狀態(tài)。你的電腦通過(guò)USB串口發(fā)送換行結(jié)束的JSON;ESP32對(duì)其進(jìn)行解析,在新數(shù)據(jù)到達(dá)時(shí)閃爍板載LED(引腳3),并提供響應(yīng)式AJAX儀表板,該儀表板每5秒更新一次,并包含原始JSON控制臺(tái)。
硬件
?DFRobot FireBeetle ESP32P4板(或兼容的ESP32P4板)
?USB數(shù)據(jù)線(用于電源、編程和串行數(shù)據(jù))
?可選:小面包板/跳線,如果你想連接外部LED或按鈕(板載LED使用引腳3)
顯示/ UI
?web UI版本不需要OLED -一切都在瀏覽器中。
PC軟件
?Python 3.8 +
?Python包:pyserial, psutil(使用pip安裝pyserial psutil)
Arduino IDE
?最新的Arduino IDE或vscode與PlatformIO
?ESP32板支架安裝(pressif包)
?庫(kù):Arduino_JSON(通過(guò)Library Manager安裝)
網(wǎng)絡(luò)
?ESP32用于承載web服務(wù)器的本地Wi - Fi網(wǎng)絡(luò)憑據(jù)(SSID和密碼)
為您的項(xiàng)目制造PCB
您必須檢查PCBWAY在線訂購(gòu)pcb便宜!
你得到10個(gè)高質(zhì)量的pcb制造和運(yùn)送到你的家門(mén)口便宜。你也可以在第一次訂購(gòu)時(shí)獲得折扣。將您的Gerber文件上傳到PCBWAY,以獲得高質(zhì)量和快速周轉(zhuǎn)時(shí)間的制造。PCBWay現(xiàn)在可以提供完整的產(chǎn)品解決方案,從設(shè)計(jì)到外殼生產(chǎn)。看看他們的在線Gerber瀏覽器功能。有了獎(jiǎng)勵(lì)積分,你就可以從他們的禮品店得到免費(fèi)的東西。此外,從這里查看這個(gè)有用的博客PCBWay插件KiCad。使用此插件,您可以在KiCad中完成設(shè)計(jì)后直接訂購(gòu)pcb。
布線和硬件設(shè)置
電源和數(shù)據(jù)
使用USB連接線將FireBeetle連接到PC上。這為遙測(cè)提供電源和串行鏈路。
LED
草圖在引腳3上使用板載LED。不需要額外的接線,除非你想要一個(gè)外部LED -然后連接LED +電阻引腳3和GND。
筆記
?在運(yùn)行Python發(fā)送器之前關(guān)閉Arduino Serial Monitor(一次只有一個(gè)應(yīng)用程序可以打開(kāi)COM端口)
?確保在Arduino IDE中選擇FireBeetle作為目標(biāo)板,并選擇正確的COM端口。
Arduino草圖(帶有AJAX儀表板的web服務(wù)器)
它是做什么的
?使用您的SSID和密碼連接到Wi - Fi。
?在USB串行(9600波特)上監(jiān)聽(tīng)來(lái)自PC的換行結(jié)束的JSON。
?解析JSON并存儲(chǔ)最新的值。
?在http:///.提供一個(gè)黑暗主題的HTML儀表板
?提供/data JSON端點(diǎn),供頁(yè)面的AJAX每5秒更新一次UI。
?當(dāng)新數(shù)據(jù)到達(dá)時(shí),在引腳3上的板載LED閃爍。
粘貼并上傳這個(gè)草圖(替換YOUR_SSID和YOUR_PASSWORD):
筆記
?替換“YOUR_SSID”和“YOUR_PASSWORD”。
?在Python運(yùn)行時(shí)保持Serial Monitor關(guān)閉。
Python遙測(cè)發(fā)送器(PC端)
它是做什么的
?使用psutil收集真實(shí)的系統(tǒng)統(tǒng)計(jì)信息。
?格式化JSON對(duì)象并每5秒通過(guò)USB串行發(fā)送到ESP32。
?需要換行結(jié)束符\n,以便ESP32可以使用readStringUntil('\n')。
Python腳本(在PC上運(yùn)行,更新PORT)
運(yùn)行和驗(yàn)證(一步一步)
準(zhǔn)備硬件
?通過(guò)USB連接FireBeetle到PC。
?確認(rèn)單板驅(qū)動(dòng)已安裝,且COM口可見(jiàn)。
上傳Arduino草圖
?打開(kāi)Arduino IDE,粘貼草圖,將電路板設(shè)置為FireBeetle ESP32P4,更新WiFi憑據(jù),然后上傳。
?上傳后,簡(jiǎn)單打開(kāi)Serial Monitor查看Wi - Fi連接日志,然后關(guān)閉它。注意打印的ESP32 IP。
啟動(dòng)Python發(fā)送器
?將PORT更新為ESP32 COM端口(Windows: COMx, Linux: /dev/ttyUSB0),然后運(yùn)行Python腳本。
?確認(rèn)腳本每5秒打印“Sent:”消息。
打開(kāi)儀表板
?在同一網(wǎng)絡(luò)的瀏覽器中打開(kāi)http:///(使用串口監(jiān)視器中打印的IP地址)。
?該頁(yè)面將每5秒自動(dòng)獲取/數(shù)據(jù)并更新UI。
?原始JSON控制臺(tái)顯示最新的數(shù)據(jù)包。
驗(yàn)證LED
?每次Python腳本發(fā)送一個(gè)新的JSON數(shù)據(jù)包時(shí),引腳3上的板載LED應(yīng)該會(huì)短暫閃爍。
后續(xù)步驟和增強(qiáng)
?在web界面中添加認(rèn)證(基本令牌或密碼)。
?通過(guò)Wi - Fi發(fā)送遙測(cè)(從Python到ESP32的HTTP POST)以消除對(duì)USB的依賴(lài)。
?添加更多指標(biāo):網(wǎng)絡(luò)吞吐量,GPU統(tǒng)計(jì)(通過(guò)GPUtil),每個(gè)分區(qū)的磁盤(pán)細(xì)節(jié)。
?將日志保存在SD卡上或發(fā)送到遠(yuǎn)程服務(wù)器。
?在FireBeetle上添加手動(dòng)控制按鈕,以更改刷新率或切換面板。
?改善視覺(jué)效果:使用本地托管的圖表庫(kù)(Chart.js)來(lái)制作火花線和歷史圖。
結(jié)論:
你現(xiàn)在有了一個(gè)完整的本地遙測(cè)解決方案:你電腦里的一個(gè)Python腳本收集CPU,內(nèi)存,磁盤(pán),和網(wǎng)絡(luò)數(shù)據(jù)流作為換行符-終止JSON / USB你DFRobot FireBeetle ESP32 - P4,解析數(shù)據(jù),眨眼的機(jī)載領(lǐng)導(dǎo)新包,是一個(gè)黑暗的,單從頁(yè)面的AJAX儀表板,更新每五秒,包括現(xiàn)場(chǎng)儀表和原始JSON console-giving你真正-時(shí)間能見(jiàn)度,局部控制和隱私,和一個(gè)靈活的基礎(chǔ)添加身份驗(yàn)證、Wi - Fi遙測(cè)、日志、或警報(bào)。
本文編譯自hackster.io





