

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

# Perpustakaan Wi-Fi
<a name="freertos-wifi"></a>

**penting**  <a name="deprecation-message-library"></a>
Pustaka ini di-host di repositori Amazon-Freertos yang tidak digunakan lagi. Kami menyarankan Anda [mulai di sini](freertos-getting-started-modular.md) 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](github-repo-migration.md)

## Gambaran umum
<a name="freertos-wifi-overview"></a>

Pustaka Wi-Fi [FreeRTOS](https://docs.aws.amazon.com/freertos/latest/lib-ref/html2/wifi/index.html) 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
<a name="freertos-wifi-dependencies"></a>

[Pustaka Wi-Fi FreeRTOS membutuhkan inti Freertos\$1TCP.](https://freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/index.html)

## Fitur
<a name="freertos-wifi-features"></a>

Pustaka Wi-Fi mencakup fitur-fitur berikut:
+ Support untuk WEP, WPA WPA2, dan otentikasi WPA3 
+ Pemindaian Titik Akses
+ Manajemen daya
+ Profil jaringan

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

### Mode Wi-Fi
<a name="freertos-wifi-setup"></a>

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 menelepon`WIFI_GetMode`. Anda dapat mengatur mode wi-fi perangkat dengan menelepon`WIFI_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, panggil`WIFI_ConfigureAP`. Untuk menempatkan perangkat Anda ke mode AP, hubungi`WIFI_StartAP`. Untuk mematikan mode AP, hubungi`WIFI_StopAP`.  
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
<a name="freertos-wifi-security"></a>

Wi-Fi API mendukung WEP, WPA WPA2, dan jenis WPA3 keamanan. 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
<a name="freertos-wifi-connection"></a>

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 menelepon`WIFI_Disconnect`. Untuk informasi selengkapnya tentang pemindaian dan penghubung, lihat [Contoh penggunaan](#freertos-wifi-example) dan[Referensi API](#freertos-wifi-api).

### Manajemen daya
<a name="freertos-wifi-power-management"></a>

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
<a name="freertos-wifi-profiles"></a>

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_NetworkAdd`menambahkan profil jaringan. `WIFI_NetworkGet`mengambil profil jaringan. `WIFI_NetworkDel`menghapus profil jaringan. Jumlah profil yang dapat Anda simpan tergantung pada platform.

## Konfigurasi
<a name="freertos-wifi-config"></a>

Untuk menggunakan pustaka Wi-Fi, Anda perlu menentukan beberapa pengidentifikasi dalam file konfigurasi. Untuk informasi tentang pengidentifikasi ini, lihat. [Referensi API](#freertos-wifi-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
<a name="freertos-wifi-init"></a>

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();
       ...
           }
   ```

1. Panggilan `WIFI_On()` untuk menginisialisasi dan menyalakan chip Wi-Fi Anda.
**catatan**  
Beberapa papan mungkin memerlukan inisialisasi perangkat keras tambahan.

1. 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](#freertos-wifi-example) dan[Referensi API](#freertos-wifi-api).

## Referensi API
<a name="freertos-wifi-api"></a>

Untuk referensi API selengkapnya, lihat [Referensi API Wi-Fi](https://docs.aws.amazon.com/freertos/latest/lib-ref/html2/wifi/index.html).

## Contoh penggunaan
<a name="freertos-wifi-example"></a>

### Menghubungkan ke AP yang dikenal
<a name="w2aac31b9c13c53c21b3"></a>

```
#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 terdekat APs
<a name="w2aac31b9c13c53c21b5"></a>

```
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
<a name="freertos-wifi-porting"></a>

`iot_wifi.c`Implementasi perlu mengimplementasikan fungsi yang didefinisikan dalam`iot_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](https://docs.aws.amazon.com/freertos/latest/portingguide/afr-porting-wifi.html) Porting FreerTOS.