قم بتشغيل خادم الويب LWIP على 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 نشطًا ، يبدأ برنامج العرض التجريبي خادمًا ويب يسمح لك بتشغيل LED على متن Pico W على تشغيله أو إيقاف تشغيله. يوضح البرنامج صفحة تستخدم SSI و CGI لتبديل LED والصفحة الثانية التي تستخدم 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= message. أدخل عنوان IP هذا في متصفحك لعرض الصفحة الرئيسية لخادم الويب.عندما تقوم بتبديل المفتاح ، سيكون هناك تأخير إدراكي لأن الصفحة بأكملها تعيد تحميل لكل طلب CGI.
بصرف النظر عن التبعيات على Pico C/C ++ SDK ، تستخدم فئة PICO_W_Connection_Manager الكود الخارجي التالي:
parson JSON لإجراء تسلسل وإلغاء الإعدادات لتنسيق JSONLittleFs لتخزين إعدادات Wi-Fi بتنسيق JSON إلى كمية صغيرة محجوزة من برنامج PICO Board Program.LwIP للحصول على مكدس TCP/IP.يستخدم البرنامج التجريبي الرمز الخارجي التالي:
EmbeddedCli لتنفيذ CLI الرئيسيgetsn() لإدخال المستخدم للأرقام والسلاسل استجابة للمطالبات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 وتصحيحه لكل مناقشة في العدد رقم 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 بعد فقدان الارتباط