使用C ++ PICO_W_CONNECTION_MANAGER类和命令行接口在PICO W上运行LWIP Web服务器,以管理与AP的连接。
CLI程序允许您使用LittleFS文件系统扫描SSID,处理连接和断开连接,读取RSSI和存储SSID信息。
源代码是设计的,因此您可以使用自己的用户界面使用Pico_w_connection_manager类。使用Pico_w_connection_manager_cli类作为指南。该代码假定“超环”,不使用RTO。
与AP的连接处于活动状态后,演示程序将启动一个网络服务器,该网络服务器可以打开或关闭PICO W的板载LED。该程序演示了一个使用SSI和CGI来切换LED的页面和第二页,该页面使用Ajax来执行相同的操作。

演示程序使用串行端口控制台接受用户输入和打印输出。在命令提示符下help命令列表。管理Wi-Fi连接的所有命令均为wifi-的形式。其他命令是管理LittleFS Flash文件系统。
演示程序使用UART串行端口控制台。如果您想将Pico-W的MicroSB端口用作串行端口控制台,则需要修改CMakeLists.txt 。请参阅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地址以显示Web服务器的主页。切换开关时,将会有一个可感知的延迟,因为每个CGI请求的整个页面重新加载。
除了pico c/c ++ sdk的依赖项外,pico_w_connection_manager类使用以下外部代码:
parson JSON库序列化和典型化设置为JSON格式LittleFs文件系统以JSON格式将Wi-Fi设置存储为少量预留量的PICO板程序闪存。LwIP库。演示程序使用以下外部代码:
EmbeddedCli库getsn()实现perl命令,以便将index.html文件转换为my_fsdata.c文件。有关更多详细信息,请参见源代码。
确保您已经安装了pico-sdk并起作用。执行以下命令。下面的命令假定pico-sdk存储在${PICO_SDK_PATH}中,并且您希望与pico-sdk相同的目录级别pico-w-connection-manager-demo目录。
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中。如果您在测试过程中遇到问题,请应用已知问题部分中描述的任何补丁并重建。
对于所有已知问题,请检查日期。到您建立此内容时,它们可能已固定。
如果您在调用deinitialize() initialize() (),则该软件将挂断。这是pico-sdk问题。要解决此问题,请在SDK问题#980中使用pico-sdk development分支和补丁:
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`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
Web服务器服务的网页存储在fsdata/fs目录中。如果更改任何网页或CSS文件,则需要重新运行cmake以生成FSDATA/FSDATA.C文件,该文件编码LWIP HTTPD应用程序的页面并在make前运行make clean 。构建系统应该自动执行此操作,但这并不是因为我没有弄清楚如何正确依赖依赖项。
演示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