C ++ pico_w_connection_manager 클래스 및 명령 줄 인터페이스를 사용하여 Pico W에서 LWIP 웹 서버를 실행하여 AP에 대한 연결을 관리하십시오.
CLI 프로그램을 사용하면 SSID를 스캔하고 Connect and Discronnect, RSSI를 읽고 Littlefs 파일 시스템을 사용하여 Pico W 프로그램 플래시에 SSID 정보를 저장할 수 있습니다.
소스 코드는 자신의 사용자 인터페이스와 함께 Pico_w_connection_manager 클래스를 사용할 수 있도록 설계되었습니다. Pico_w_connection_manager_cli 클래스를 가이드로 사용하십시오. 이 코드는 "슈퍼 루프"를 가정하고 RTO를 사용하지 않습니다.
AP에 대한 연결이 활성화되면 데모 프로그램은 Webserver를 시작하여 Pico W의 온보드 LED를 켜거나 끄는 것을 켜도 가능합니다. 이 프로그램은 SSI 및 CGI를 사용하여 LED를 전환하는 페이지와 AJAX를 사용하여 동일한 작업을 수행하는 페이지를 보여줍니다.

데모 프로그램은 직렬 포트 콘솔을 사용하여 사용자 입력 및 인쇄 출력을 수락합니다. 명령 프롬프트에서 help 입력하십시오. Wi-Fi 연결을 관리하기위한 모든 명령은 wifi- 형식입니다. 다른 명령은 LittleFS 플래시 파일 시스템을 관리하는 것입니다.
데모 프로그램은 UART 직렬 포트 콘솔을 사용합니다. Pico-W의 MicrouSB 포트를 직렬 포트 콘솔로 사용하려면 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 주소를 입력하여 웹 서버의 홈페이지를 표시하십시오.스위치를 전환하면 각 CGI 요청에 대한 전체 페이지가 다시로드되므로 지각 가능한 지연이 발생합니다.
PICO C/C ++ SDK의 종속성 외에도 PICO_W_CONNECTION_MANAGER 클래스는 다음 외부 코드를 사용합니다.
parson JSON 라이브러리는 JSON 형식으로 설정을 직렬화하고 실조 화하는 라이브러리LittleFs 파일 시스템은 작은 예약량의 Pico 보드 프로그램 플래시에 저장합니다.LwIP 라이브러리.데모 프로그램은 다음 외부 코드를 사용합니다.
EmbeddedCli 라이브러리getsn() 구현index.html 파일을 my_fsdata.c 파일로 변환하기 위해 perl 명령을 지원해야합니다.자세한 내용은 소스 코드를 참조하십시오.
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
내장 된 이미지를 피코 -W에로드하십시오. 테스트 중에 문제가 발생하면 알려진 문제 섹션에 설명 된 패치를 적용하고 재 구축하십시오.
알려진 모든 문제는 날짜를 확인하십시오. 당신이 이것을 만들 때까지, 그것들은 고정 될 수 있습니다.
Deinitialize initialize() deinitialize() 을 호출하면 소프트웨어가 끊어집니다. 이것은 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`를 편집하십시오. 라인 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 파일을 변경하면 LWIP HTTPD 앱의 페이지를 인코딩하고 make clean make 인코딩하는 FSDATA/FSDATA.C 파일을 생성하려면 cmake 다시 실행해야합니다. 빌드 시스템은이를 자동으로 수행해야하지만 종속성을 올바르게 얻는 방법을 해결하지 않았기 때문이 아닙니다.
Demo 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 설명해야합니다.