Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Wi-Fi perpustakaan
penting
Pustaka ini di-host di Amazon-FreeRTOS repositori yang tidak digunakan lagi. Kami menyarankan Anda mulai di sini ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang ada berdasarkan repositori yang sekarang tidak digunakan lagi, Amazon-FreeRTOS lihat. Amazon-FreeRTOS Panduan Migrasi Repositori Github
Ikhtisar
Pustaka Wi-FiFreeRTOS mengabstraksi implementasi Wi-Fi khusus port ke dalam API umum yang menyederhanakan pengembangan aplikasi dan porting untuk semua papan dengan kemampuan. FreeRTOS-qualified Wi-Fi Dengan menggunakan API umum ini, aplikasi dapat berkomunikasi dengan tumpukan nirkabel tingkat rendah mereka melalui antarmuka umum.
Ketergantungan dan persyaratan
Pustaka FreeRTOS membutuhkan Wi-Fi inti FreerTos+TCP.
Fitur
Wi-Fi Perpustakaan mencakup fitur-fitur berikut:
-
Support untuk otentikasi WEP, WPA, WPA2, dan WPA3
-
Pemindaian Titik Akses
-
Manajemen daya
-
Profil jaringan
Untuk informasi lebih lanjut tentang fitur Wi-Fi perpustakaan, lihat di bawah.
Wi-Fi modus
Wi-Fi perangkat dapat berada dalam salah satu dari tiga mode: Station, Access Point, atau P2P. Anda bisa mendapatkan mode Wi-Fi perangkat saat ini dengan meneleponWIFI_GetMode. Anda dapat mengatur mode wi-fi perangkat dengan meneleponWIFI_SetMode. Beralih mode dengan memanggil WIFI_SetMode memutus perangkat, jika sudah terhubung ke jaringan.
- Mode stasiun
-
Setel perangkat Anda ke mode Stasiun untuk menghubungkan papan ke titik akses yang ada.
- Mode Titik Akses (AP)
-
Setel perangkat Anda ke mode AP untuk menjadikan perangkat sebagai titik akses bagi perangkat lain untuk terhubung. Saat perangkat Anda dalam mode AP, Anda dapat menghubungkan perangkat lain ke perangkat FreeRTOS Anda dan mengonfigurasi kredensi baru. Wi-Fi Untuk mengkonfigurasi mode AP, panggil
WIFI_ConfigureAP. Untuk menempatkan perangkat Anda ke mode AP, hubungiWIFI_StartAP. Untuk mematikan mode AP, hubungiWIFI_StopAP.catatan
Pustaka FreeRTOS tidak Wi-Fi menyediakan penyediaan dalam mode AP. Anda harus menyediakan fungsionalitas tambahan, termasuk kemampuan server DHCP dan HTTP, untuk mencapai dukungan penuh mode AP.
- Modus P2P
-
Atur perangkat Anda ke mode P2P untuk memungkinkan beberapa perangkat terhubung satu sama lain secara langsung, tanpa titik akses.
Keamanan
Wi-Fi API mendukung jenis keamanan WEP, WPA, WPA2, dan WPA3. Saat perangkat dalam mode Stasiun, Anda harus menentukan jenis keamanan jaringan saat memanggil WIFI_ConnectAP fungsi. Saat perangkat dalam mode AP, perangkat dapat dikonfigurasi untuk menggunakan salah satu jenis keamanan yang didukung:
-
eWiFiSecurityOpen -
eWiFiSecurityWEP -
eWiFiSecurityWPA -
eWiFiSecurityWPA2 -
eWiFiSecurityWPA3
Memindai dan menghubungkan
Untuk memindai titik akses terdekat, atur perangkat Anda ke mode Stasiun, dan panggil WIFI_Scan fungsinya. Jika Anda menemukan jaringan yang diinginkan dalam pemindaian, Anda dapat terhubung ke jaringan dengan menelepon WIFI_ConnectAP dan memberikan kredenal jaringan. Anda dapat memutuskan sambungan Wi-Fi perangkat dari jaringan dengan meneleponWIFI_Disconnect. Untuk informasi selengkapnya tentang pemindaian dan penghubung, lihat Contoh penggunaan danReferensi API.
Manajemen daya
Wi-Fi Perangkat yang berbeda memiliki kebutuhan daya yang berbeda, tergantung pada aplikasi dan sumber daya yang tersedia. Perangkat mungkin selalu dinyalakan untuk mengurangi latensi atau mungkin terhubung sebentar-sebentar dan beralih ke mode daya rendah saat Wi-Fi tidak diperlukan. API antarmuka mendukung berbagai mode manajemen daya seperti selalu aktif, daya rendah, dan mode normal. Anda mengatur mode daya untuk perangkat menggunakan WIFI_SetPMMode fungsi tersebut. Anda bisa mendapatkan mode daya perangkat saat ini dengan memanggil WIFI_GetPMMode fungsi tersebut.
Profil jaringan
Wi-Fi Pustaka memungkinkan Anda untuk menyimpan profil jaringan dalam memori non-volatile perangkat Anda. Hal ini memungkinkan Anda untuk menyimpan pengaturan jaringan sehingga mereka dapat diambil ketika perangkat terhubung kembali ke Wi-Fi jaringan, menghapus kebutuhan untuk menyediakan perangkat lagi setelah mereka telah terhubung ke jaringan. WIFI_NetworkAddmenambahkan profil jaringan. WIFI_NetworkGetmengambil profil jaringan. WIFI_NetworkDelmenghapus profil jaringan. Jumlah profil yang dapat Anda simpan tergantung pada platform.
Konfigurasi
Untuk menggunakan Wi-Fi pustaka, Anda perlu menentukan beberapa pengidentifikasi dalam file konfigurasi. Untuk informasi tentang pengidentifikasi ini, lihat. Referensi API
catatan
Pustaka tidak menyertakan file konfigurasi yang diperlukan. Anda harus membuat satu. Saat membuat file konfigurasi Anda, pastikan untuk menyertakan pengidentifikasi konfigurasi khusus papan apa pun yang dibutuhkan papan Anda.
Inisialisasi
Sebelum Anda menggunakan Wi-Fi perpustakaan, Anda perlu menginisialisasi beberapa komponen khusus papan, selain komponen FreeRTOS. Menggunakan vendors/ file sebagai template untuk inisialisasi, lakukan hal berikut:vendor/boards/board/aws_demos/application_code/main.c
-
Hapus logika Wi-Fi sambungan sampel
main.cjika aplikasi Anda menangani Wi-Fi koneksi. Ganti panggilanDEMO_RUNNER_RunDemos()fungsi berikut:if( SYSTEM_Init() == pdPASS ) { ... DEMO_RUNNER_RunDemos(); ... }Dengan panggilan ke aplikasi Anda sendiri:
if( SYSTEM_Init() == pdPASS ) { ... // This function should create any tasks // that your application requires to run. YOUR_APP_FUNCTION(); ... } -
Panggilan
WIFI_On()untuk menginisialisasi dan menyalakan Wi-Fi chip Anda.catatan
Beberapa papan mungkin memerlukan inisialisasi perangkat keras tambahan.
-
Lewati
WIFINetworkParams_tstruktur yang dikonfigurasiWIFI_ConnectAP()untuk menghubungkan papan Anda ke Wi-Fi jaringan yang tersedia. Untuk informasi lebih lanjut tentangWIFINetworkParams_tstruktur, lihat Contoh penggunaan danReferensi API.
Referensi API
Untuk referensi API selengkapnya, lihat Referensi Wi-Fi API.
Contoh penggunaan
Menghubungkan ke AP yang dikenal
#define clientcredentialWIFI_SSID "MyNetwork" #define clientcredentialWIFI_PASSWORD "hunter2" WIFINetworkParams_t xNetworkParams; WIFIReturnCode_t xWifiStatus; xWifiStatus = WIFI_On(); // Turn on Wi-Fi module // Check that Wi-Fi initialization was successful if( xWifiStatus == eWiFiSuccess ) { configPRINT( ( "WiFi library initialized.\n") ); } else { configPRINT( ( "WiFi library failed to initialize.\n" ) ); // Handle module init failure } /* Setup parameters. */ xNetworkParams.pcSSID = clientcredentialWIFI_SSID; xNetworkParams.ucSSIDLength = sizeof( clientcredentialWIFI_SSID ); xNetworkParams.pcPassword = clientcredentialWIFI_PASSWORD; xNetworkParams.ucPasswordLength = sizeof( clientcredentialWIFI_PASSWORD ); xNetworkParams.xSecurity = eWiFiSecurityWPA2; // Connect! xWifiStatus = WIFI_ConnectAP( &( xNetworkParams ) ); if( xWifiStatus == eWiFiSuccess ) { configPRINT( ( "WiFi Connected to AP.\n" ) ); // IP Stack will receive a network-up event on success } else { configPRINT( ( "WiFi failed to connect to AP.\n" ) ); // Handle connection failure }
Memindai AP terdekat
WIFINetworkParams_t xNetworkParams; WIFIReturnCode_t xWifiStatus; configPRINT( ("Turning on wifi...\n") ); xWifiStatus = WIFI_On(); configPRINT( ("Checking status...\n") ); if( xWifiStatus == eWiFiSuccess ) { configPRINT( ("WiFi module initialized.\n") ); } else { configPRINTF( ("WiFi module failed to initialize.\n" ) ); // Handle module init failure } WIFI_SetMode(eWiFiModeStation); /* Some boards might require additional initialization steps to use the Wi-Fi library. */ while (1) { configPRINT( ("Starting scan\n") ); const uint8_t ucNumNetworks = 12; //Get 12 scan results WIFIScanResult_t xScanResults[ ucNumNetworks ]; xWifiStatus = WIFI_Scan( xScanResults, ucNumNetworks ); // Initiate scan configPRINT( ("Scan started\n") ); // For each scan result, print out the SSID and RSSI if ( xWifiStatus == eWiFiSuccess ) { configPRINT( ("Scan success\n") ); for ( uint8_t i=0; i<ucNumNetworks; i++ ) { configPRINTF( ("%s : %d \n", xScanResults[i].cSSID, xScanResults[i].cRSSI) ); } } else { configPRINTF( ("Scan failed, status code: %d\n", (int)xWifiStatus) ); } vTaskDelay(200); }
Porting
iot_wifi.cImplementasi perlu mengimplementasikan fungsi yang didefinisikan dalamiot_wifi.h. Paling tidak, implementasi perlu kembali eWiFiNotSupported untuk fungsi yang tidak penting atau tidak didukung.
Untuk informasi selengkapnya tentang porting Wi-Fi perpustakaan, lihat Porting Wi-Fi Perpustakaan di Panduan Porting FreerTOS.