Запустите LWIP Webserver на Pico W, используя класс C ++ PICO_W_CONNECTION_MANAGER и интерфейс командной строки, чтобы управлять подключением к AP.
Программа CLI позволяет сканировать SSID, обрабатывать подключение и отключение, чтение RSSI и хранить информацию SSID в программе Pico W Flash с использованием файловой системы LittleFS.
Исходный код разработан таким образом, чтобы вы могли использовать класс Pico_w_connection_manager с вашим пользовательским интерфейсом. В качестве руководства используйте класс Pico_w_connection_manager_cli . Код предполагает «супер-петли» и не использует RTOS.
Как только подключение к AP активно, демонстрационная программа запускает веб-сервер, который позволяет вам включить или выключить встроенный светодиод Pico W. Программа демонстрирует страницу, которая использует SSI и CGI для переключения светодиода и второй страницы, которая использует Ajax, чтобы сделать то же самое.

Демо -программа использует консоль последовательного порта для принятия пользовательского ввода и вывода печати. Введите help в командной строке для списка команд. Все команды для управления соединением Wi-Fi имеют форму wifi- . Другие команды предназначены для управления файловой системой Flash LittleFS.
Демо -программа использует консоль серийного порта UART. Вам нужно будет изменить CMakeLists.txt , если вы хотите использовать порт Microusb от Pico-W в качестве консоли последовательного порта. Смотрите комментарии в CMakeLists.txt .
pico-w-wifi-setup demo
Cli is running.
Type "help" for a list of commands
Use backspace and tab to remove chars and autocomplete
Use up and down arrows to recall previous commands
> new country code XX=Worldwide
new country code XX=Worldwide
Version: 7.95.49 (2271bb6 CY) CRC: b7a28ef3 Date: Mon 2021-11-29 22:50:27 PST U0
cyw43 loaded ok, mac 28:cd:c1:06:3d:29
API: 12.2
Data: RaspberryPi.PicoW
Compiler: 1.29.4
ClmImport: 1.47.1
Customization: v5 22/06/24
Creation: 2022-06-24 06:55:08
No SSID specified
failed to connect to
wifi-scan-connect и следуйте подключениям к подключению. Если у вашего AP есть скрытый SSID, используйте команду wifi-connect для подключения.Link Up IP address= сообщение. Введите этот IP -адрес в вашем браузере, чтобы отобразить домашнюю страницу WebServer.Когда вы переключите переключатель, будет проницательная задержка, потому что вся страница перезагружается для каждого запроса CGI.
Помимо зависимостей от Pico C/C ++ SDK, класс PICO_W_CONNECTION_MANAGER использует следующий внешний код:
parson Json для сериализации и детериализации настроек в формат JSONLittleFs для хранения настройки Wi-Fi в формате JSON для небольшого зарезервированного количества программы PICO.LwIP для стека TCP/IP.Демо -программа использует следующий внешний код:
EmbeddedCli для основной реализации CLIgetsn() для ввода пользовательских чисел и строк в ответ на подсказкиperl , чтобы преобразовать файл index.html в файл my_fsdata.c .Смотрите исходный код для более подробной информации.
Убедитесь, что вы установили pico-sdk и что он работает. Выполнить следующие команды. Приведенные ниже команды предполагают, что pico-sdk хранится в ${PICO_SDK_PATH} и вы хотите, чтобы каталог pico-w-connection-manager-demo на том же уровне каталога, что и pico-sdk .
export PICO_BOARD=pico_w
cd ${PICO_SDK_PATH}/..
git clone https://github.com/rppicomidi/pico-w-connection-manager-demo.git
cd pico-w-connection-manager-demo
git submodule update --recursive --init
mkdir build
cd build
cmake ..
make
Загрузите встроенное изображение в свой Pico-W. Если вы столкнетесь с проблемами во время тестирования, примените какие -либо исправления, описанные в разделе «Известные проблемы», и восстановить.
Для всех известных вопросов проверьте дату. К тому времени, когда вы создаете это, они могут быть исправлены.
Если вы называете initialize() после вызова deinitialize() то программное обеспечение будет повесить трубку. Это проблема pico-sdk . Чтобы обойти эту проблему, используйте филиал и патч development pico-sdk в соответствии с обсуждением в выпуске SDK #980:
cd ${PICO_SDK_PATH}
git fetch origin
git checkout -b develop origin/develop
git submodule update lib/cyw43-driver/
Отредактируйте файл 'pico-sdk/src/rp2_common/pico_cyw43_arch/cyw43_arch_threadsafe_background.c`. Замените код вблизи строки 194
#if CYW43_LWIP
lwip_init();
#endif
с
#if CYW43_LWIP
static bool done_lwip_init;
if (!done_lwip_init) {
lwip_init();
done_lwip_init = true;
}
#endif
Веб -страницы, которые обслуживает веб -сервер, хранятся в каталоге fsdata/fs . Если вы измените какую-либо веб-страницу или файл CSS, вам нужно будет повторно запустить cmake , чтобы генерировать файл fsData/fsdata.c, который кодирует страницы для приложения LWIP HTTPD и запустить make clean перед make . Система сборки должна делать это автоматически, но это не так, потому что я не разработал, как правильно исправить зависимости.
Демонстрация Prgram предназначена для использования функций класса pico-w-connection-manager , который называется «класс» ниже.
Команды: wifi-country и wifi-initialize .
Команды: wifi-deinitialize
Команды wifi-scan-connect
Команды: wifi-connect
Команды: wifi-autoconnect
ПРИМЕЧАНИЕ. Демонстрационная программа запускает эквивалент этой команды автоматически при запуске.
Команды: wifi-disconnect
Команды: нет; Pico-W сделает это автоматически. Чтобы отменить это поведение, вы должны явно запустить wifi-deinitialize или wifi-disconnect после потери ссылки