- Arduino案例實戰(卷Ⅳ)
- 李永華
- 978字
- 2019-12-06 14:24:49
4.5 故障及問題分析
問題1:起初試圖通過觀察音樂播放軟件中的頻率波動圖,得到歌曲敲擊時間間隔,但這種方法設置的敲擊頻率并不準確。
解決方案:先用這個設備打拍子從串口輸出時間作為測試,再對同段音樂多次嘗試取平均值,得到完整時間間隔,如表4-5所示。
表4-5 振動間隔統計表

問題2:振動傳感器非常靈敏,從串口觀察,對其敲擊一下,輸出不只一個時間間隔,難于設置敲擊次數固定的節奏對比程序。
解決方案:拆開一個振動傳感器SW-18010P,發現其原理很簡單,就是塑料管中有一個軟彈簧圍繞著中心的金屬桿,平時兩者不接觸,而當受到一定外界振動時就會令彈簧搖晃碰到金屬桿,輸出一個接通信號。多次嘗試后發現,給time_ms設定較大輸出閾值后可有效改善振動傳感器輸出數據不穩定的情況,如表4-6所示。
表4-6 錯誤間隔統計截圖——敲擊次數與輸出間隔不一致

問題3:缺少與最新版Arduino IDE使用的12864庫,代碼編譯錯誤。
解決方案:最初計劃卸掉重裝IDE,后來在網上查到了資料教程,修改現有12864庫文件后便可成功編譯。
問題4:12864顯示容易亂碼。
解決方案:根據網上的教程,出現亂碼一般是因為液晶屏反應速度慢,需要在代碼方面添加延時。在敲門過程中,由于振動傳感器的干擾,也會出現字符亂碼,但此時的亂碼對開門正常功能及信息提示基本沒有影響。
問題5:對ESP8266模塊進行透傳設置時,發送指令,接收端未響應。
解決方案:檢查接線沒有問題,經分析,可能是USB-TTL型號與ESP8266不對應,之后,換用(USB-TTL)PL2303模塊測試后,發現接收端,顯示正常。
問題6:編譯ESP8266模塊代碼時出錯,找不到代碼中的AJSON頭文件。
解決方案:首先檢查Arduino的庫中是否引入了AJSON庫,若沒有,則需將AJSON庫文件加入Arduino的libraries文件夾中,之后重新編譯代碼,則顯示成功。
問題7:用LED燈進行ESP8266 WiFi模塊檢測時,代碼一直顯示不成功。
解決方案:檢查代碼和電路接線無誤后,不成功,最后查詢ESP8266的相關資料發現,在上傳代碼時,應斷開Arduino開發板TX、RX連接線,否則代碼無法上傳成功;代碼上傳完成,斷電連接上TX、RX連接線,再通電啟動。
問題8:貝殼物聯網的設備狀態一直不穩定,不在線的狀態完全無規律。
解決方案:若模塊測試成功,則當WiFi模塊通電后設備應自動顯示在線狀態;當它不在線時,利用網絡調試助手中的TCP端口進行直接連接,這樣可以強行使設備在線,但設備的狀態也難以控制;經過多次刷新,發現WiFi模塊與物聯網的連接反應比較遲緩,給WiFi模塊通電后,多刷新幾次設備便顯示在線,可以對繼電器進行控制。