Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Biblioteca wifi
importante
Esta biblioteca está alojada en el RTOS repositorio Amazon Free, que está en desuso. Recomendamos empezar por aquí al crear un nuevo proyecto. Si ya tienes un RTOS proyecto gratuito basado en el RTOS repositorio de Amazon Free, ahora obsoleto, consulta la. Guía de migración al repositorio RTOS Github gratuito de Amazon
Información general
La biblioteca Free RTOS Wi-Fi resume las implementaciones de Wi-Fi específicas de un puerto en una biblioteca común API que simplifica el desarrollo y la portabilidad de aplicaciones para todas las placas compatibles con Free y con capacidades de Wi-Fi. RTOS Al utilizar esta característica comúnAPI, las aplicaciones pueden comunicarse con su pila inalámbrica de nivel inferior a través de una interfaz común.
Dependencias y requisitos
La biblioteca Free RTOS Wi-Fi requiere el TCP núcleo Free RTOS +
Características
La biblioteca Wi-Fi incluye las siguientes características:
-
Support para WEP WPAWPA2, y WPA3 autenticación
-
Búsqueda de punto de acceso
-
Administración de energía
-
Perfiles de red
Para obtener más información sobre las características de la biblioteca Wi-Fi, consulte lo siguiente:
Modos Wi-Fi
Los dispositivos Wi-Fi pueden encontrarse en uno de tres modos: Estación, Punto de acceso, o P2P. Para obtener el modo actual de un dispositivo wifi, llame a WIFI_GetMode
. Puede establecer el modo Wi-Fi del dispositivo llamando a WIFI_SetMode
. El cambio de modos llamando a WIFI_SetMode
desconecta el dispositivo, si ya está conectado a una red.
- Modo de estación
-
Establezca su dispositivo en el modo Estación para conectar la placa a un punto de acceso existente.
- Modo de punto de acceso (AP)
-
Establezca su dispositivo en modo AP para convertir al dispositivo en un punto de acceso para conectar a otros dispositivos. Cuando tu dispositivo está en modo AP, puedes conectar otro dispositivo a tu RTOS dispositivo gratuito y configurar las nuevas credenciales de Wi-Fi. Para configurar el modo AP, llame a
WIFI_ConfigureAP
. Para poner el dispositivo en modo AP, llame aWIFI_StartAP
. Para desactivar el modo AP, llame aWIFI_StopAP
.nota
RTOSLas bibliotecas gratuitas no proporcionan aprovisionamiento de Wi-Fi en modo AP. Debe proporcionar la funcionalidad adicional, incluidas DHCP las capacidades HTTP del servidor, para lograr una compatibilidad total con el modo AP.
- Modo P2P
-
Establezca su dispositivo al modo P2P para permitir que varios dispositivos se conecten entre sí directamente, sin punto de acceso.
Seguridad
El Wi-Fi API admite WEP WPAWPA2, y tipos WPA3 de seguridad. Si el dispositivo se encuentra en modo Estación, debe especificar el tipo de seguridad de la red cuando llame a la función WIFI_ConnectAP
. Si el dispositivo está en modo AP, es posible configurar el dispositivo para que utilice cualquiera de los tipos de seguridad admitidos:
-
eWiFiSecurityOpen
-
eWiFiSecurityWEP
-
eWiFiSecurityWPA
-
eWiFiSecurityWPA2
-
eWiFiSecurityWPA3
Búsqueda y conexión
Para buscar puntos de acceso cercanos, establezca su dispositivo en modo Estación y llame a la función WIFI_Scan
. Si encuentra una red deseada en la búsqueda, puede conectarse a la red llamando a WIFI_ConnectAP
y proporcionando las credenciales de red. Para desconectar el dispositivo wifi de la red, llame a WIFI_Disconnect
. Para obtener más información acerca de la búsqueda y conexión, consulte Ejemplo de uso y APIreferencia.
Administración de energía
Los distintos dispositivos wifi tienen requisitos de energía diferentes en función de la aplicación y las fuentes de energía disponibles. Un dispositivo podría estar siempre encendido para reducir la latencia o podría estar conectado de forma intermitente y cambiar a un modo de bajo consumo cuando no se necesita conexión wifi. La interfaz API admite varios modos de administración de energía, como el modo siempre encendido, bajo consumo y normal. Puede establecer el modo de energía para un dispositivo con la función WIFI_SetPMMode
. Para obtener el modo de energía actual de un dispositivo, llame a la función WIFI_GetPMMode
.
Perfiles de red
La biblioteca Wi-Fi le permite guardar perfiles de red en la memoria no volátil de los dispositivos. Esto permite guardar ajustes de la red que se pueden recuperar cuando el dispositivo se vuelve a conectar a una red wifi, eliminando la necesidad de aprovisionar dispositivos de nuevo después de que se hayan conectado a una red. WIFI_NetworkAdd
añade un perfil de red. WIFI_NetworkGet
recupera un perfil de red. WIFI_NetworkDel
elimina un perfil de red. El número de perfiles que puede guardar depende de la plataforma.
Configuración
Para utilizar la biblioteca Wi-Fi, es necesario definir varios identificadores en un archivo de configuración. Para obtener información sobre estos identificadores, consulte la APIreferencia.
nota
La biblioteca no incluye el archivo de configuración requerido. Debe crear uno. Al crear su archivo de configuración, asegúrese de incluir los identificadores de configuración específicos de placa que requiere su placa.
Inicialización
Antes de utilizar la biblioteca Wi-Fi, es necesario inicializar algunos componentes específicos de la placa, además de los componentes gratuitos. RTOS Con el archivo vendors/
como plantilla para la inicialización, haga lo siguiente:vendor
/boards/board
/aws_demos/application_code/main.c
-
Elimine el ejemplo de lógica de conexión Wi-Fi en
main.c
si la aplicación controla las conexiones Wi-Fi. Sustituya la siguiente llamada a la funciónDEMO_RUNNER_RunDemos()
:if( SYSTEM_Init() == pdPASS ) { ... DEMO_RUNNER_RunDemos(); ... }
Con una llamada a su propia aplicación:
if( SYSTEM_Init() == pdPASS ) { ... // This function should create any tasks // that your application requires to run. YOUR_APP_FUNCTION(); ... }
-
Llame a
WIFI_On()
para inicializar y activar su chip Wi-Fi.nota
Algunas placas podrían necesitar inicialización de hardware adicional.
-
Pase la estructura
WIFINetworkParams_t
configurada aWIFI_ConnectAP()
para conectar su placa a una red Wi-Fi disponible. Para obtener más información sobre la estructuraWIFINetworkParams_t
, consulte Ejemplo de uso y APIreferencia.
APIreferencia
Para obtener una API referencia completa, consulte APIReferencia de Wi-Fi.
Ejemplo de uso
Conexión a un AP conocido
#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 en busca de lugares cercanos 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); }
Portabilidad
La implementación de iot_wifi.c
debe implementar las funciones definidas en iot_wifi.h
. Como mínimo, la implementación debe devolver eWiFiNotSupported
para cualquier función no esencial o no admitida.
Para obtener más información sobre cómo portar la biblioteca Wi-Fi, consulta Cómo portar la biblioteca Wi-Fi en la Guía de RTOS portabilidad gratuita.