Raspberry Pi Pico W 存在連接問題:以下是解決方法
如果您運行 Raspberry Pi Pico W 很長時間,您很可能最終會注意到您的程序不再運行。
程序長時間失敗的原因之一與 Wi-Fi 可靠性有關。如果您的 Wi-Fi 變得不穩定,Pico W 的第一直覺就是崩潰。
讓我們看看如何在 MicroPython 中使 Pico W 更具彈性。
是什麼導致了 Pico W 的 Wi-Fi 可靠性?
您的 Wi-Fi 每天斷開連接多次。在您的手機或 PC 上很難察覺到這一點,因為操作系統和軟件已經解決了 Wi-Fi 網絡的這個有保證的缺點。
使用 Pico W 時,如果 Pico W 失去連接,連接和獲取數據的簡單腳本就會崩潰。唯一的解決辦法是通過拔電硬復位。
如果您的項目需要一次記錄數小時的數據,您不希望必須不斷地監視中斷。
錯誤處理是確保您的程序能夠在不良連接中存活下來的關鍵。
提高 Wi-Fi 信號強度會有幫助嗎?
您可能正在考慮是否應該使用網狀網絡來增加信號強度。是的,它會有所幫助,但不會達到可以避免連接中斷情況的程度。
在一個實驗中,我們將一個 Pico W 放在房子二樓的某個位置,另一個 Pico W 放在 Wi-Fi 路由器旁邊。結果的不同之處在於二樓的設備比靠近路由器的 Pico W 更早斷開連接。正如數據收集中的差距所反映的那樣,後者最終也出現了連接斷開的情況。
不幸的是,雖然提高信號強度可以減少問題,但並不能解決問題。因此,讓我們看一些編寫更具彈性代碼的方法。
連接和斷開軟件方法
如果您的項目只需要單向通信,那麼這種方法非常適合。一些例子是溫度記錄器,它需要長時間運行,但偶爾只記錄一次數據。
這解決了當您的 Pico W 認為它已連接時發生崩潰的問題,但當它嘗試將數據發送到端點時,它意識到它處於離線狀態,然後繼續崩潰。
此方法的關鍵涉及程序在無限循環中運行的過程。在這個循環中有一個函數將在經過特定時間後運行。此功能會將 Pico W 連接到 Wi-Fi,完成其工作(例如,將數據發送到服務器),然後斷開連接。
軟件硬重置
使用 MicroPython 的硬重置代碼可以幫助您確保即使您不進行干預,您的 Pico W 也會運行。如果您需要幫助,請參閱我們的 MicroPython 介紹,然後運行此命令:
import machine
machine.reset()
假設您在午夜睡覺時失去聯繫。如果您沒有軟件硬重置,則必須在早上手動重置程序。這可能會導致八小時的數據記錄丟失。
如果您有軟件硬重置,您已將其放入錯誤處理代碼塊中,Pico W 將自行重置。
這樣做的缺點是,在硬重置後,您的程序狀態將會丟失,如果您的程序崩潰,則不會觸發軟件硬重置。
使用 Pico W 的內置看門狗定時器
硬件看門狗定時器基本上是一種可以在 Pico W 出現故障時重置它的設備。看門狗定時器是倒數定時器。如果他們在倒計時歸零之前收到信號,則倒計時將重置。然而,如果倒計時歸零,那麼它會重置 Pico W。
在 MicroPython 中,基本代碼如下:
from machine import WDT
wdt = WDT(timeout=1000) #timeout is in ms
wdt.feed() #resets countdown
您可以訪問MicroPython 的 WDT 文檔以了解更多信息,也可以訪問Pico 的官方 SDK 文檔以獲取 C++ 指導。
讓您的 Pico W 連接防彈
為了讓您的 Pico W 有機會在 Wi-Fi 連接上無限期運行,您需要做很多事情。
首先,確保 Wi-Fi 連接信號足夠強。雖然代碼可以緩解 Wi-Fi 的一些挑戰,但取決於所使用的方法,它有時會導致程序狀態丟失或數據點丟失。
其次,該程序需要有一些方法來從斷開的 Wi-Fi 連接中恢復,以便您可以繼續獲得服務。
通過這些步驟,您可以確信 Pico W 的連接更可靠。
發佈留言