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á.
Wi-Fi biblioteca
Importante
Essa biblioteca está hospedada no Amazon-FreeRTOS repositório que está obsoleto. Recomendamos começar aqui ao criar um novo projeto. Se você já tem um projeto FreeRTOS existente com base no repositório agora Amazon-FreeRTOS obsoleto, consulte o. Amazon-FreeRTOS Guia de migração do repositório Github
Visão geral do
A biblioteca Wi-FiFreeRTOS abstrai implementações Wi-Fi específicas de portas em uma API comum que simplifica o desenvolvimento e a portabilidade de aplicativos para todas as placas com recursos. FreeRTOS-qualified Wi-Fi Usando essa API comum, as aplicações podem se comunicar com a pilha sem fio de nível inferior por meio de uma interface comum.
Dependências e requisitos
A biblioteca FreeRTOS requer o Wi-Fi núcleo FreeRTOS+TCP.
Recursos
A Wi-Fi biblioteca inclui os seguintes recursos:
-
Suporte para autenticação WEP, WPA, WPA2 e WPA3
-
Verificação do ponto de acesso
-
Gerenciamento de energia
-
Criação de perfis na rede
Para obter mais informações sobre os recursos da Wi-Fi biblioteca, veja abaixo.
Wi-Fi modos
Wi-Fi os dispositivos podem estar em um dos três modos: estação, ponto de acesso ou P2P. Você pode obter o modo atual de um Wi-Fi dispositivo ligandoWIFI_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 dispositivo FreeRTOS e configurar as novas credenciais. 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
As bibliotecas do FreeRTOS não Wi-Fi fornecem provisionamento no modo AP. Você deve fornecer a funcionalidade adicional, incluindo recursos de servidor DHCP e HTTP, para obter suporte total do 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
A Wi-Fi API oferece suporte aos tipos de segurança WEP, WPA, WPA2 e WPA3. 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 Wi-Fi dispositivo da rede WIFI_Disconnect ligando. Para obter mais informações sobre a verificação e a conexão, consulte Exemplo de uso e Referência de API.
Gerenciamento de energia
Wi-Fi Dispositivos diferentes têm requisitos de energia diferentes, dependendo da aplicação e das fontes de energia disponíveis. Um dispositivo pode estar sempre ligado para reduzir a latência ou pode ser conectado intermitentemente e alternar para o modo de baixo consumo quando Wi-Fi não for necessário. A API de interface é compatível com 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 Wi-Fi biblioteca permite que você salve perfis de rede na memória não volátil de seus dispositivos. Isso permite que você salve as configurações de rede para que elas possam ser recuperadas quando um dispositivo se reconectar a uma Wi-Fi rede, eliminando a necessidade de provisionar dispositivos novamente após eles terem sido conectados a uma rede. WIFI_NetworkAddadiciona um perfil de rede. WIFI_NetworkGetrecupera um perfil de rede. WIFI_NetworkDelexclui um perfil de rede. O número de perfis que você pode salvar depende da plataforma.
Configuração
Para usar a Wi-Fi biblioteca, você precisa definir vários identificadores em um arquivo de configuração. Para obter informações sobre esses identificadores, consulte a Referência de 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 Wi-Fi biblioteca, você precisa inicializar alguns componentes específicos da placa, além dos componentes do FreeRTOS. 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 Wi-Fi conexão
main.cse seu aplicativo manipula Wi-Fi conexões. 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(); ... } -
Ligue
WIFI_On()para inicializar e ligar seu Wi-Fi chip.nota
Algumas placas podem exigir a inicialização de hardware adicional.
-
Passe uma
WIFINetworkParams_testrutura configuradaWIFI_ConnectAP()para conectar sua placa a uma Wi-Fi rede disponível. Para obter mais informações sobre a estruturaWIFINetworkParams_t, consulte Exemplo de uso e Referência de API.
Referência de API
Para obter uma referência completa da API, consulte Referência Wi-Fi da API.
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 }
Busca de APs próximos
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 a portabilidade da Wi-Fi biblioteca, consulte Portando a Wi-Fi biblioteca no Guia de portabilidade do FreeRTOS.