Если вы запускали свой Raspberry Pi Pico W в течение очень долгого времени, есть вероятность, что вы в конечном итоге заметите, что ваша программа больше не работает.
Одна из причин, по которой программы выходят из строя в течение длительного периода времени, связана с надежностью Wi-Fi. Если ваш Wi-Fi становится ненадежным, первое, что почувствует Pico W, — сбой.
Давайте посмотрим, как мы можем сделать Pico W более отказоустойчивым в MicroPython.
Что влияет на надежность Wi-Fi на Pico W?
Ваш Wi-Fi отключается много раз в день. Это трудно заметить на вашем телефоне или ПК, потому что операционные системы и программное обеспечение учитывают этот гарантированный недостаток сетей 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 будет работать, даже если вы не будете вмешиваться. Смотрите наши введение в микропитон если вам нужна помощь, запустите эту команду:
Импортировать машина
машина.перезагрузить()
Допустим, вы теряете связь в полночь, пока спите. Если бы у вас не было аппаратного сброса программного обеспечения, вам пришлось бы вручную сбросить программу утром. Это может привести к восьми часам потери регистрации данных.
Если у вас есть программный аппаратный сброс, который вы поместили в блок кода обработки ошибок, Pico W перезагрузится сам.
Недостатком этого является то, что при полной перезагрузке состояние вашей программы будет потеряно, и если ваша программа выйдет из строя, аппаратная перезагрузка программного обеспечения не сработает.
Используйте встроенный сторожевой таймер Pico W
Аппаратный сторожевой таймер — это, по сути, устройство, которое сбрасывает ваш Pico W в случае его неисправности. Сторожевые таймеры — это таймеры обратного отсчета. Если они получают сигнал до того, как обратный отсчет достигнет нуля, то обратный отсчет сбрасывается. Однако, если обратный отсчет достигает нуля, Pico W сбрасывается.
В MicroPython базовый код выглядит так:
от машина Импортировать ВДТ
wdt = WDT (время ожидания =1000) #время ожидания в мс
wdt.кормить() #сбрасываетобратный отсчет
Вы можете посетить Документация MicroPython WDT узнать больше, а также Официальные документы SDK Pico для руководства по C++.
Сделайте соединение вашего Pico W взрывобезопасным
Чтобы дать вашему Pico W наилучшие шансы бесконечно работать при подключении к Wi-Fi, вам нужно будет сделать несколько вещей.
Во-первых, убедитесь, что соединение Wi-Fi достаточно сильное. Хотя код может смягчить некоторые проблемы с Wi-Fi, в зависимости от используемого метода иногда это может привести к потере состояния программы или потере точек данных.
Во-вторых, у программы должен быть какой-то метод восстановления после разорванных соединений Wi-Fi, чтобы вы могли продолжить обслуживание.
Выполнив эти шаги, вы можете быть уверены в более надежном подключении вашего Pico W.