Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Wi-Fi biblioteca
Importante
Questa libreria è ospitata nel Amazon-FreeRTOS repository che è obsoleto. Ti consigliamo di iniziare da qui quando crei un nuovo progetto. Se hai già un progetto FreerTOS esistente basato sul repository ora obsoleto, Amazon-FreeRTOS consulta il. Amazon-FreeRTOS Guida alla migrazione del repository Github
Panoramica di
La libreria Wi-FiFreerTOS riassume le implementazioni Wi-Fi specifiche delle porte in un'API comune che semplifica lo sviluppo e il porting delle applicazioni per tutte le schede con funzionalità. FreeRTOS-qualified Wi-Fi Utilizzando queste API comuni, le applicazioni possono comunicare con il loro stack wireless di livello inferiore attraverso un'interfaccia comune.
Dipendenze e requisiti
La libreria Wi-Fi FreerTOS richiede il core FreeRTOS+TCP.
Funzionalità
La libreria include le seguenti funzionalità: Wi-Fi
-
Support per l'autenticazione WEP, WPA, WPA2 e WPA3
-
Scansione del punto di accesso
-
Risparmio energetico
-
Profiling di rete
Per ulteriori informazioni sulle funzionalità della libreria, vedi sotto. Wi-Fi
Wi-Fi modalità
Wi-Fi i dispositivi possono essere in una delle tre modalità: Station, Access Point o P2P. È possibile ottenere la modalità corrente di un Wi-Fi dispositivo chiamando. WIFI_GetMode È possibile impostare la modalità Wi-Fi di un dispositivo chiamando WIFI_SetMode. Cambiando le modalità chiamando WIFI_SetMode, si disconnette il dispositivo, se connesso a una rete.
- Modalità Station
-
Imposta il dispositivo in modalità Station per collegare la scheda a un punto di accesso esistente.
- Modalità Access Point (AP)
-
Imposta il dispositivo in modalità AP per renderlo un punto di accesso a cui altri dispositivi possano connettersi. Quando il tuo dispositivo è in modalità AP, puoi connettere un altro dispositivo al tuo dispositivo FreerTOS e configurare le nuove credenziali. Wi-Fi Per configurare la modalità del punto di accesso, chiamare
WIFI_ConfigureAP. Per inserire il dispositivo in modalità AP, chiamaWIFI_StartAP. Per disattivare la modalità AP, chiamaWIFI_StopAP.Nota
Le librerie FreerTOS non Wi-Fi forniscono il provisioning in modalità AP. È necessario fornire le funzionalità aggiuntive, incluse le funzionalità del server DHCP e HTTP, per ottenere il supporto completo della modalità AP.
- Modalità P2P
-
Imposta il dispositivo in modalità P2P per consentire a più dispositivi di connettersi l'un l'altro direttamente, senza un punto di accesso.
Sicurezza
L' Wi-Fi API supporta i tipi di sicurezza WEP, WPA, WPA2 e WPA3. Se un dispositivo è in modalità Station, è necessario specificare il tipo di sicurezza di rete quando si chiama la funzione WIFI_ConnectAP. Se è in modalità AP, un dispositivo può essere configurato per l'utilizzo di qualsiasi tipo di sicurezza supportato:
-
eWiFiSecurityOpen -
eWiFiSecurityWEP -
eWiFiSecurityWPA -
eWiFiSecurityWPA2 -
eWiFiSecurityWPA3
Scansione e connessione
Per eseguire la scansione di punti di accesso nelle vicinanze, imposta il dispositivo in modalità Station e chiama la funzione WIFI_Scan. Se la scansione trova la rete a cui intendi connetterti, puoi effettuare la connessione chiamando WIFI_ConnectAP e fornendo le credenziali di rete. È possibile disconnettere un Wi-Fi dispositivo dalla rete chiamando. WIFI_Disconnect Per ulteriori informazioni sulla scansione e la connessione, consulta Esempio di utilizzo e Guida di riferimento alle API.
Risparmio energetico
Wi-Fi Dispositivi diversi hanno requisiti di alimentazione diversi, a seconda dell'applicazione e delle fonti di alimentazione disponibili. Un dispositivo può essere sempre acceso per ridurre la latenza oppure può essere collegato in modo intermittente e passare a una modalità a basso consumo quando Wi-Fi non è necessario. L'API dell'interfaccia supporta vari metodi di gestione dell'alimentazione, ad esempio sempre acceso, modalità a basso consumo e modalità normale. È possibile impostare la modalità di alimentazione per un dispositivo utilizzando la funzione WIFI_SetPMMode. È possibile conoscere la modalità di alimentazione attuale di un dispositivo chiamando la funzione WIFI_GetPMMode.
Profili di rete
La Wi-Fi libreria consente di salvare i profili di rete nella memoria non volatile dei dispositivi. Ciò consente di salvare le impostazioni di rete in modo che possano essere recuperate quando un dispositivo si riconnette a una Wi-Fi rete, eliminando la necessità di effettuare nuovamente il provisioning dei dispositivi dopo che sono stati collegati a una rete. WIFI_NetworkAddaggiunge un profilo di rete. WIFI_NetworkGetrecupera un profilo di rete. WIFI_NetworkDelelimina un profilo di rete. Il numero di profili che è possibile salvare dipende dalla piattaforma.
Configurazione
Per utilizzare la Wi-Fi libreria, è necessario definire diversi identificatori in un file di configurazione. Per ulteriori informazioni su questi identificatori, consulta la Guida di riferimento alle API.
Nota
La libreria non include il file di configurazione necessario. Devi crearne uno. Quando crei il tuo file di configurazione, assicurati di includere qualsiasi identificatore di configurazione specificatamente richiesto dalla scheda.
Inizializzazione
Prima di utilizzare la Wi-Fi libreria, è necessario inizializzare alcuni componenti specifici della scheda, oltre ai componenti FreerTOS. Utilizzando il file vendors/ come modello per l'inizializzazione, procedi come segue:vendor/boards/board/aws_demos/application_code/main.c
-
Rimuovi la logica di Wi-Fi connessione di esempio
main.cse l'applicazione gestisce le connessioni. Wi-Fi Sostituisci la seguente chiamata di funzioneDEMO_RUNNER_RunDemos():if( SYSTEM_Init() == pdPASS ) { ... DEMO_RUNNER_RunDemos(); ... }Con una chiamata alla tua applicazione:
if( SYSTEM_Init() == pdPASS ) { ... // This function should create any tasks // that your application requires to run. YOUR_APP_FUNCTION(); ... } -
Chiama
WIFI_On()per inizializzare e accendere il Wi-Fi chip.Nota
Alcune schede potrebbero richiedere un'inizializzazione hardware aggiuntiva.
-
Passa una
WIFINetworkParams_tstruttura configurataWIFI_ConnectAP()per connettere la scheda a una Wi-Fi rete disponibile. Per ulteriori informazioni sulla strutturaWIFINetworkParams_t, consulta Esempio di utilizzo e Guida di riferimento alle API.
Guida di riferimento alle API
Per un riferimento completo all'API, consulta Wi-Fi API Reference.
Esempio di utilizzo
Connessione a un punto di accesso noto
#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 }
Scansione di punti di accesso nelle vicinanze
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); }
Portabilità
L'implementazione iot_wifi.c deve introdurre le funzioni definite in iot_wifi.h. Come minimo, l'implementazione deve restituire eWiFiNotSupported per qualsiasi funzione non essenziale o non supportata.
Per ulteriori informazioni sul porting della Wi-Fi libreria, consulta Porting the Wi-Fi Library nella FreerTOS Porting Guide.