Perpustakaan Wi-Fi - FreeRTOS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Perpustakaan Wi-Fi

penting

Pustaka ini di-host di repositori Amazon-Freertos yang tidak digunakan lagi. Kami menyarankan Anda mulai di sini ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang sudah ada berdasarkan repositori Amazon-Freertos yang sekarang tidak digunakan lagi, lihat. Panduan Migrasi Repositori Github Amazon-freertos

Gambaran Umum

Pustaka Wi-Fi FreeRTOS mengabstraksi implementasi Wi-Fi khusus port ke dalam API umum yang menyederhanakan pengembangan aplikasi dan porting untuk semua papan berkualifikasi Freertos dengan kemampuan Wi-Fi. Dengan menggunakan API umum ini, aplikasi dapat berkomunikasi dengan tumpukan nirkabel tingkat rendah mereka melalui antarmuka umum.

Ketergantungan dan persyaratan

Pustaka Wi-Fi FreeRTOS membutuhkan inti Freertos+TCP.

Fitur

Pustaka Wi-Fi mencakup fitur-fitur berikut:

  • Support untuk otentikasi WEP, WPA, WPA2, dan WPA3

  • Pemindaian Titik Akses

  • Manajemen daya

  • Profil jaringan

Untuk informasi selengkapnya tentang fitur perpustakaan Wi-Fi, lihat di bawah.

Mode Wi-Fi

Perangkat Wi-Fi dapat berada dalam salah satu dari tiga mode: Station, Access Point, atau P2P. Anda bisa mendapatkan mode perangkat Wi-Fi 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 kredenal Wi-Fi baru. Untuk mengkonfigurasi mode AP, panggilWIFI_ConfigureAP. Untuk menempatkan perangkat Anda ke mode AP, hubungiWIFI_StartAP. Untuk mematikan mode AP, hubungiWIFI_StopAP.

catatan

Pustaka FreeRTOS tidak menyediakan penyediaan Wi-Fi 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

API Wi-Fi 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 perangkat Wi-Fi dari jaringan dengan meneleponWIFI_Disconnect. Untuk informasi selengkapnya tentang pemindaian dan penghubung, lihat Contoh penggunaan danReferensi API.

Manajemen daya

Perangkat Wi-Fi 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

Pustaka Wi-Fi memungkinkan Anda menyimpan profil jaringan di memori non-volatile perangkat Anda. Hal ini memungkinkan Anda untuk menyimpan pengaturan jaringan sehingga mereka dapat diambil ketika perangkat terhubung kembali ke jaringan Wi-Fi, 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 pustaka Wi-Fi, 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 pustaka Wi-Fi, Anda perlu menginisialisasi beberapa komponen khusus papan, selain komponen FreeRTOS. Menggunakan vendors/vendor/boards/board/aws_demos/application_code/main.c file sebagai template untuk inisialisasi, lakukan hal berikut:

  1. Hapus contoh logika koneksi Wi-Fi main.c jika aplikasi Anda menangani koneksi Wi-Fi. Ganti panggilan DEMO_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(); ... }
  2. Panggilan WIFI_On() untuk menginisialisasi dan menyalakan chip Wi-Fi Anda.

    catatan

    Beberapa papan mungkin memerlukan inisialisasi perangkat keras tambahan.

  3. Lewati WIFINetworkParams_t struktur yang dikonfigurasi WIFI_ConnectAP() untuk menghubungkan papan Anda ke jaringan Wi-Fi yang tersedia. Untuk informasi lebih lanjut tentang WIFINetworkParams_t struktur, lihat Contoh penggunaan danReferensi API.

Referensi API

Untuk referensi API selengkapnya, lihat Referensi API Wi-Fi.

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 pustaka Wi-Fi, lihat Mem-porting Perpustakaan Wi-Fi di Panduan Porting FreerTOS.