Jalankan server web LWIP pada pico w menggunakan kelas C ++ pico_w_connection_manager dan antarmuka baris perintah untuk mengelola koneksi ke AP.
Program CLI memungkinkan Anda memindai SSID, menangani koneksi dan memutuskan, membaca RSSI, dan menyimpan info SSID di Flash program PICO W menggunakan sistem file LittleFS.
Kode sumber dirancang sehingga Anda dapat menggunakan kelas Pico_w_connection_manager dengan antarmuka pengguna Anda sendiri. Gunakan kelas Pico_w_connection_manager_cli sebagai panduan. Kode ini mengasumsikan "super-loop" dan tidak menggunakan RTOS.
Setelah koneksi ke AP aktif, program demo memulai server web yang memungkinkan Anda untuk menghidupkan atau mematikan LED on-board PICO W. Program ini menunjukkan halaman yang menggunakan SSI dan CGI untuk mengubah LED dan halaman kedua yang menggunakan AJAX untuk melakukan hal yang sama.

Program demo menggunakan konsol port serial untuk menerima input pengguna dan mencetak output. Ketik help di Perintah Prompt untuk daftar perintah. Semua perintah untuk mengelola koneksi Wi-Fi adalah dari bentuk wifi- . Perintah lain adalah untuk mengelola sistem file flash LittleFS.
Program demo menggunakan konsol port serial UART. Anda perlu memodifikasi CMakeLists.txt jika Anda ingin menggunakan port microUSB PICO-W sebagai konsol port serial. Lihat komentar di 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 dan ikuti petunjuk untuk terhubung. Jika AP Anda memiliki SSID tersembunyi, gunakan perintah wifi-connect untuk terhubung.Link Up IP address= pesan. Masukkan alamat IP di browser Anda untuk menampilkan halaman beranda server web.Saat Anda beralih sakelar, akan ada penundaan yang dapat disimpulkan karena seluruh halaman memuat ulang untuk setiap permintaan CGI.
Selain ketergantungan pada PICO C/C ++ SDK, kelas PICO_W_CONNECTION_MANAGER menggunakan kode eksternal berikut:
parson JSON untuk membuat serialisasi dan deserialize pengaturan ke format JSONLittleFs untuk menyimpan pengaturan Wi-Fi dalam format JSON ke sejumlah kecil flash program papan PICO.LwIP untuk tumpukan TCP/IP.Program demo menggunakan kode eksternal berikut:
EmbeddedCli untuk implementasi CLI utamagetsn() Implementasi untuk input pengguna angka dan string sebagai respons terhadap permintaanperl secara berurutan mengonversi file index.html ke file my_fsdata.c .Lihat kode sumber untuk lebih jelasnya.
Pastikan Anda telah menginstal pico-sdk dan berfungsi. Jalankan perintah berikut. Perintah di bawah ini mengasumsikan bahwa pico-sdk disimpan dalam ${PICO_SDK_PATH} dan Anda ingin direktori pico-w-connection-manager-demo di tingkat direktori yang sama dengan 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
Muat gambar yang dibangun ke dalam pico-w Anda. Jika Anda mengalami masalah selama pengujian, terapkan tambalan yang dijelaskan di bagian Isu -isu yang Diketahui dan Bangun kembali.
Untuk semua masalah yang diketahui, periksa tanggalnya. Pada saat Anda membangun ini, mereka mungkin diperbaiki.
Jika Anda memanggil initialize() setelah Anda menelepon deinitialize() maka perangkat lunak akan menutup telepon. Ini adalah masalah pico-sdk . Untuk mengatasi masalah ini, gunakan cabang development pico-sdk dan tambalan per diskusi dalam SDK Edisi #980:
cd ${PICO_SDK_PATH}
git fetch origin
git checkout -b develop origin/develop
git submodule update lib/cyw43-driver/
Edit file 'pico-sdk/src/rp2_common/pico_cyw43_arch/cyw43_arch_threadsafe_background.c`. Ganti kode dekat baris 194
#if CYW43_LWIP
lwip_init();
#endif
dengan
#if CYW43_LWIP
static bool done_lwip_init;
if (!done_lwip_init) {
lwip_init();
done_lwip_init = true;
}
#endif
Halaman web yang disimpan server web disimpan di direktori fsdata/fs . Jika Anda mengubah halaman web atau file CSS apa pun, Anda harus menjalankan kembali cmake untuk menghasilkan file fsdata/fsdata.c yang mengkodekan halaman untuk aplikasi LWIP HTTPD dan jalankan make clean sebelum make . Sistem build harus melakukan ini secara otomatis, tetapi tidak karena saya belum mengetahui cara memperbaiki ketergantungan.
Demo Prgram dirancang untuk menggunakan fitur kelas pico-w-connection-manager , yang disebut "The Class" di bawah ini.
Perintah: wifi-country dan wifi-initialize .
Perintah: wifi-deinitialize
Perintah wifi-scan-connect
Perintah: wifi-connect
Perintah: wifi-autoconnect
Catatan: Program demo menjalankan setara dengan perintah ini secara otomatis saat startup.
Perintah: wifi-disconnect
Perintah: tidak ada; Pico-W akan melakukan ini secara otomatis. Untuk membatalkan perilaku ini, Anda harus menjalankan wifi-deinitialize atau wifi-disconnect secara jelas setelah kehilangan tautan