Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию. Читать далее.

Если вы запускали свой 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 потеряет соединение. Единственное решение - сделать полный сброс, отключив питание.

instagram viewer

Если ваш проект требует регистрации данных в течение нескольких часов, вы не хотите постоянно отслеживать простои.

Обработка ошибок является ключом к тому, чтобы ваша программа могла выжить при плохом соединении.

Поможет ли улучшение уровня сигнала 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.