As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Biblioteca de Wi-Fi
Importante
Essa biblioteca está hospedada no RTOS repositório Amazon-Free, que está obsoleto. Recomendamos começar aqui ao criar um novo projeto. Se você já tem um RTOS projeto gratuito existente com base no repositório Amazon-FreeRTOS, agora obsoleto, consulte o. Guia de migração do RTOS repositório Github gratuito da Amazon
Visão geral
A biblioteca RTOS Wi-Fi gratuita resume as implementações de Wi-Fi específicas de portas em uma linguagem comum API que simplifica o desenvolvimento e a portabilidade de aplicativos para todas as placas qualificadas gratuitamente com recursos RTOS de Wi-Fi. Usando esse comumAPI, os aplicativos podem se comunicar com sua pilha sem fio de nível inferior por meio de uma interface comum.
Dependências e requisitos
A biblioteca RTOS Wi-Fi gratuita requer o TCP núcleo Free RTOS +
Recursos
A biblioteca Wi-Fi inclui os seguintes recursos:
-
Support forWEP,WPA,WPA2, and WPA3 authentication
-
Verificação do ponto de acesso
-
Gerenciamento de energia
-
Criação de perfis na rede
Para obter mais informações sobre os recursos da biblioteca Wi-Fi, veja abaixo.
Modos Wi-Fi
Os dispositivos Wi-Fi podem estar em um dos três modos: Estação, Ponto de acesso ou P2P. Você pode obter o modo atual de um dispositivo Wi-Fi chamando WIFI_GetMode
. Defina o modo wi-fi de um dispositivo chamando WIFI_SetMode
. Alternar modos chamando WIFI_SetMode
desconecta o dispositivo, se já estiver conectado a uma rede.
- Modo Estação
-
Defina o dispositivo para o modo Estação a fim de conectar a placa a um ponto de acesso existente.
- Modo Ponto de acesso (AP)
-
Defina o dispositivo para o modo AP para tornar o dispositivo um ponto de acesso para outros dispositivos se conectarem. Quando seu dispositivo está no modo AP, você pode conectar outro dispositivo ao seu RTOS dispositivo gratuito e configurar as novas credenciais de Wi-Fi. Para configurar o modo de AP, chame
WIFI_ConfigureAP
. Para colocar o dispositivo no modo AP, chameWIFI_StartAP
. Para desativar o modo AP, chameWIFI_StopAP
.nota
RTOSBibliotecas gratuitas não fornecem provisionamento Wi-Fi no modo AP. Você deve fornecer a funcionalidade adicional, incluindo DHCP os recursos HTTP do servidor, para obter suporte total ao modo AP.
- Modo P2P
-
Defina o dispositivo para o modo P2P a fim de permitir que vários dispositivos se conectem uns aos outros diretamente, sem um ponto de acesso.
Segurança
O Wi-Fi API suportaWEP,WPA,WPA2, e tipos WPA3 de segurança. Quando um dispositivo está no modo Estação, é necessário especificar o tipo de segurança de rede ao chamar a função WIFI_ConnectAP
. Quando um dispositivo está no modo AP, ele pode ser configurado para usar qualquer um dos tipos de segurança compatíveis:
-
eWiFiSecurityOpen
-
eWiFiSecurityWEP
-
eWiFiSecurityWPA
-
eWiFiSecurityWPA2
-
eWiFiSecurityWPA3
Verificação e conexão
Para procurar pontos de acesso próximos, defina o dispositivo para o modo Estação e chame a função WIFI_Scan
. Se você encontrar uma rede desejada durante a verificação, poderá se conectar à rede chamando WIFI_ConnectAP
e fornecendo as credenciais da rede. Você pode desconectar um dispositivo Wi-Fi da rede chamando WIFI_Disconnect
. Para obter mais informações sobre a verificação e a conexão, consulte Exemplo de uso e Referência do API.
Gerenciamento de energia
Diferentes dispositivos Wi-Fi possuem diferentes requisitos de energia, dependendo da aplicação e das fontes de energia disponíveis. Um dispositivo pode ficar sempre ligado para reduzir a latência ou pode ficar intermitentemente conectado e alternar para um modo de baixo consumo quando o Wi-Fi não for necessário. A interface API suporta vários modos de gerenciamento de energia, como sempre ligado, baixo consumo de energia e modo normal. Você define o modo de energia para um dispositivo usando a função WIFI_SetPMMode
. Você pode obter o modo de energia atual de um dispositivo chamando a função WIFI_GetPMMode
.
Perfis de rede
A biblioteca Wi-Fi permite salvar perfis de rede na memória não volátil dos dispositivos. Isso permite que você salve as configurações de rede para que elas possam ser recuperadas quando um dispositivo se reconectar a uma rede Wi-Fi, eliminando a necessidade de provisionar os dispositivos novamente depois de terem sido conectados a uma rede. WIFI_NetworkAdd
adiciona um perfil de rede. WIFI_NetworkGet
recupera um perfil de rede. WIFI_NetworkDel
exclui um perfil de rede. O número de perfis que você pode salvar depende da plataforma.
Configuração
Para usar a biblioteca Wi-Fi, é necessário definir vários identificadores em um arquivo de configuração. Para obter informações sobre esses identificadores, consulte a Referência do API.
nota
A biblioteca não inclui o arquivo de configuração necessário. Você deve criar um. Ao criar o arquivo de configuração, lembre-se de incluir os identificadores de configuração específicos exigidos pela placa.
Inicialização
Antes de usar a biblioteca Wi-Fi, você precisa inicializar alguns componentes específicos da placa, além dos componentes gratuitos. RTOS Ao usar o arquivo vendors/
como um modelo para a inicialização, faça o seguinte:vendor
/boards/board
/aws_demos/application_code/main.c
-
Remova o exemplo de lógica de conexão Wi-Fi em
main.c
caso a aplicação manuseie conexões Wi-Fi. Substitua a seguinte chamada da funçãoDEMO_RUNNER_RunDemos()
:if( SYSTEM_Init() == pdPASS ) { ... DEMO_RUNNER_RunDemos(); ... }
Por uma chamada a sua própria aplicação:
if( SYSTEM_Init() == pdPASS ) { ... // This function should create any tasks // that your application requires to run. YOUR_APP_FUNCTION(); ... }
-
Chame
WIFI_On()
para inicializar e ativar o chip Wi-Fi.nota
Algumas placas podem exigir a inicialização de hardware adicional.
-
Passe uma estrutura
WIFINetworkParams_t
configurada paraWIFI_ConnectAP()
a fim de conectar sua placa a uma rede Wi-Fi disponível. Para obter mais informações sobre a estruturaWIFINetworkParams_t
, consulte Exemplo de uso e Referência do API.
Referência do API
Para obter uma API referência completa, consulte APIReferência de Wi-Fi.
Exemplo de uso
Conexão a um AP conhecido
#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 }
Escaneando por áreas próximas APs
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); }
Portabilidade
A implementação de iot_wifi.c
precisa implementar as funções definidas em iot_wifi.h
. No mínimo, a implementação precisa retornar eWiFiNotSupported
para qualquer função não essencial ou incompatível.
Para obter mais informações sobre como portar a biblioteca Wi-Fi, consulte Portando a biblioteca Wi-Fi no Free RTOS Porting Guide.