[DIY] 利用Arduino做電腦平台的偵測當機用看門狗WatchDog

編輯中

利用Arduino做電腦平台的偵測當機用看門狗WatchDog
利用電腦能正常使用下,由Anduino送出訊號,由電腦回應來判斷是否已經當機。
若有回應,計數器就重置消除時間重新計算。
若沒有回應,觸發PIN腳,讓主機板的RESET腳可以短路觸發重開機。

專案作者網頁:
https://shortn0tes.blogspot.com/2018/02/dead-easy-to-make-diy-hadware-watchdog.html
https://github.com/panovvv/hardware-watchdog-arduino
檔案要抓下來。

*********** 電腦端建立溝通訊號執行軟體的部分:
JAVA Development Kit (JDK)官方編譯套件:
https://www.azofreeware.com/2013/11/java-development-kit-jdk-7-update-45.html
WINDOWS系統的電腦要安裝JDK套件以執行JAVA的檔案。

JAVA檔案打包成.jar:
https://ethan-imagination.blogspot.com/2018/11/javase-gettingstarted-010.html
由於一直弄不起來CMD指令來封裝.JAR檔案,所以改下載編譯軟體。
安裝Eclipse IDE for Java Developers編譯軟體:
https://www.eclipse.org/downloads/packages/release/kepler/sr1/eclipse-ide-java-developers
其他參考文件:
Eclipse IDE 下載、設定與使用教學-Java 篇 https://www.kjnotes.com/devtools/80

開啟軟體後,選擇File >Import > Git > Project From Git > Next > Clone URI > Next >
貼上作者頁面的.GIT網址:https://github.com/panovvv/hardware-watchdog-arduino.git之後,按NEXT。
下一個畫面預設master擷取資料,按NEXT。
下一個畫面Destination,預設的存儲資料夾(有時候已經重複專案或同檔名的資料夾衝突會不給繼續,改一個亦可),按NEXT。
下一個畫面Wizard for project import,選擇Import as general project,選擇剛下載的專案檔案資料夾,按NEXT。
下一個畫面Project name,看是要預設的還是更改成喜歡的,按Finish。

接著,Package Explorer就會多匯入這個作者的專案檔案。
打開樹狀分支,選擇watch_java這個主枝幹,按滑鼠右鍵,選擇選單上的Export。
下一個畫面,選擇Java > Runnable JAR file > Next
下一個畫面,選擇想要存檔的地方、以及.jar檔名。選擇Package required libraries into generated JAR。按FINISH。
就會建立一個可以獨立執行java的.JAR檔案。

可以開啟一個CMD視窗,執行這個檔案確定能否使用。
或者建立一個批次檔案.BAT、.CMD來讓可以開機呼叫就常態運作(java -jar XXX.jar)。

作者原始的.JAR編譯方式:
安裝APACHE出的Maven,https://maven.apache.org/,解壓縮到想儲放的位置,定義系統變數路徑,亦可使用。
參考安裝說明:https://pclevinblog.pixnet.net/blog/post/314562700-%5Bmaven%5D-maven-%E4%B8%8B%E8%BC%89%E5%8F%8A%E5%AE%89%E8%A3%9D%E6%95%99%E5%AD%B8
確定有安裝完成,在CMD下執行mvn -version有出現版本號,就是OK。
然後執行一次mvn help:system,如果搜尋跑完沒有跳失敗的訊息,應該就可以編譯此專案作者的檔案。
CMD指令,切換移動到下載後的解壓縮位置(有pom.xml和SRC\的根目錄下),如:C:\git\hardware-watchdog-arduino\。
然後下編譯指令,mvn clean compile assembly:single,理論上沒意外就會完成編譯,完成的檔案會放在新增的target資料匣裡面。
那個編譯出來的.jar檔案(成功產生的檔案大概有253kb),執行java -jar hardware-watchdog.jar指令,確認是否有成功呼叫Arduino。

另外,可以利用Dev-C++工具軟體,建立成一個執行檔案.EXE,讓他變成程式呼叫。
應用參考說明:
https://ethan-imagination.blogspot.com/2018/11/javase-gettingstarted-010.html

新增的應用程式就可以放捷徑在Win10啟動時自動執行:
https://support.microsoft.com/zh-tw/windows/%E6%96%B0%E5%A2%9E%E7%9A%84%E6%87%89%E7%94%A8%E7%A8%8B%E5%BC%8F%E4%BB%A5%E5%9C%A8-windows-10-%E5%95%9F%E5%8B%95%E6%99%82%E8%87%AA%E5%8B%95%E5%9F%B7%E8%A1%8C-150da165-dcd9-7230-517b-cf3c295d89dd
1.選取 [開始] 按鈕,並捲動以尋找您要在開機時執行的應用程式。
2.在應用程式上按右鍵、選取 [更多],然後選取 [開啟檔案位置]。這樣會開啟儲存應用程式捷徑的位置。如果沒有 [開啟檔案位置] 的選項,即表示該應用程式不會在開機時執行。
3.檔案位置開啟後,按 Windows 鍵 + R,輸入 shell:startup,然後選取 [確定]。這會開啟 [啟動] 資料夾。
4.將檔案位置中的應用程式捷徑複製並貼到 [啟動] 資料夾。

另外,JAVA的環境變數有時候會無法正常執行。
方案一
可以嘗試臨時解法,在建立的批次檔,第一行加入適合的環境變數,例如:set PATH=”C:\Program Files\Java\jre1.8.0_291\bin”,目錄定義要看實際JDK安裝的位置在哪裡。
方案二
WIN10參考設定變數方法:https://ethan-imagination.blogspot.com/2018/10/javase-gettingstarted-001.html
方案三
安裝oracle的Java SE Development Kit:https://www.oracle.com/java/technologies/javase-jdk16-downloads.html。他會在安裝後,系統變數新增兩行編譯程式呼叫路徑。
若以上方案和方法有定義成功的話,下java -version或javac -version都要能看到程式的版本號,這樣才表示路徑有設定成功。

*********** Arduino UNO端建立溝通訊號執行軟體的部分:
作者的程式寫法是使用PIN2腳位來觸發,#define RESET_PIN 2。
觸發後啟用,若判斷超時10秒未回應就觸發RESET重開機按鍵,#define PING_TIMEOUT 10000。
腳位參考:https://www.electroschematics.com/arduino-uno-pinout/

所以我們借用PIN2和GND拉出兩條線來使用RELAY通電觸發,由RELAY的激磁,把NC接點導通不會觸發RESET鍵。

(待續…)

實際測試,模擬當機狀態是否重開。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

請輸入下列驗證碼計算後阿拉伯數字 (Translate it, if not Taiwanese to post reply) *