기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Wi-Fi 라이브러리
중요
이 라이브러리는 더 이상 사용되지 않는 Amazon-FreeRTOS 리포지토리에서 호스팅됩니다. 새 프로젝트를 생성할 때는 여기서 시작하는 것이 좋습니다. 현재 사용되지 않는 Amazon-FreeRTOS 리포지토리를 기반으로 기존 FreeRTOS 프로젝트가 이미 있는 경우 섹션을 참조하세요Amazon-FreeRTOS Github 리포지토리 마이그레이션 가이드.
개요
무료RTOS Wi-Fi 라이브러리는 포트별 Wi-Fi 구현을 공통으로 추상화API하여 WiRTOS-Fi 기능이 있는 모든 무료 인증 보드의 애플리케이션 개발 및 이식을 간소화합니다. API애플리케이션은 이 공통 를 사용하여 공통 인터페이스를 통해 하위 수준 무선 스택과 통신할 수 있습니다.
종속성 및 요구 사항
무료RTOS Wi-Fi 라이브러리에는 Free RTOS+TCP
특성
Wi-Fi 라이브러리에는 다음 기능이 있습니다.
-
WEP, WPAWPA2, 및 WPA3 인증 지원
-
액세스 포인트 검색
-
전력 관리
-
네트워크 프로파일링
Wi-Fi 라이브러리의 기능에 대한 자세한 내용은 아래를 참조하십시오.
Wi-Fi 모드
Wi-Fi 디바이스는 스테이션, 액세스 포인트 또는 P2P 등의 세 가지 모드 중 하나일 수 있습니다. WIFI_GetMode
를 호출하여 Wi-Fi 디바이스의 현재 모드를 가져올 수 있습니다. WIFI_SetMode
를 호출하여 디바이스의 Wi-Fi 모드를 설정할 수 있습니다. WIFI_SetMode
를 호출하여 모드를 전환하면 네트워크에 이미 연결된 디바이스의 연결이 해제됩니다.
- 스테이션 모드
-
보드를 기존 액세스 포인트에 연결하려면 디바이스를 스테이션 모드로 설정합니다.
- 액세스 포인트(AP) 모드
-
디바이스를 다른 디바이스를 연결하기 위한 액세스 포인트로 만들려면 디바이스를 AP 모드로 설정합니다. 디바이스가 AP 모드인 경우 다른 디바이스를 무료RTOS 디바이스에 연결하고 새 Wi-Fi 보안 인증을 구성할 수 있습니다. AP 모드를 구성하려면
WIFI_ConfigureAP
를 호출합니다. 디바이스를 AP 모드로 전환하려면WIFI_StartAP
를 호출합니다. AP 모드를 끄려면WIFI_StopAP
를 호출합니다.참고
무료RTOS 라이브러리는 AP 모드에서 Wi-Fi 프로비저닝을 제공하지 않습니다. AP 모드를 완전히 지원하려면 DHCP 및 HTTP 서버 기능을 포함한 추가 기능을 제공해야 합니다.
- P2P 모드
-
액세스 포인트 없이 여러 디바이스가 서로 직접 연결할 수 있게 하려면 디바이스를 P2P 모드로 설정합니다.
보안
Wi-Fi는 WEP, WPAWPA2, 및 WPA3 보안 유형을 API 지원합니다. 디바이스가 스테이션 모드에 있는 경우, WIFI_ConnectAP
함수를 호출할 때 네트워크 보안 유형을 지정해야 합니다. 디바이스가 AP 모드에 있는 경우 지원되는 보안 유형을 사용하도록 디바이스를 구성할 수 있습니다.
-
eWiFiSecurityOpen
-
eWiFiSecurityWEP
-
eWiFiSecurityWPA
-
eWiFiSecurityWPA2
-
eWiFiSecurityWPA3
검색 및 연결
인근의 액세스 포인트를 검색하려면 디바이스를 스테이션 모드로 설정하고 WIFI_Scan
함수를 호출합니다. 스캔에서 원하는 네트워크를 찾은 경우 WIFI_ConnectAP
를 호출하고 네트워크 자격 증명을 제공하여 네트워크에 연결할 수 있습니다. WIFI_Disconnect
를 호출하여 네트워크에서 Wi-Fi 디바이스를 연결 해제할 수 있습니다. 검색 및 연결에 대한 자세한 내용은 사용 예 및 API 참조를 참조하십시오.
전력 관리
애플리케이션과 사용 가능한 전원에 따라 Wi-Fi 디바이스마다 전력 요구 사항이 다릅니다. 디바이스를 항상 켜서 지연 시간을 줄이거나, 디바이스를 간헐적으로 연결한 후 Wi-Fi가 필요하지 않을 때 저전력 모드로 전환할 수 있습니다. 인터페이스는 상시 켜짐, 저전력 및 일반 모드와 같은 다양한 전원 관리 모드를 API 지원합니다. WIFI_SetPMMode
함수를 사용하여 디바이스에 대한 전력 모드를 설정합니다. WIFI_GetPMMode
함수를 호출하여 디바이스의 현재 전력 모드를 가져올 수 있습니다.
네트워크 프로필
Wi-Fi 라이브러리를 사용하여 네트워크 프로필을 디바이스의 비휘발성 메모리에 저장할 수 있습니다. 따라서 디바이스가 Wi-Fi 네트워크에 다시 연결될 때 검색할 수 있도록 네트워크 설정을 저장할 수 있습니다. 그러면 네트워크에 연결된 이후에 디바이스를 다시 프로비저닝할 필요가 없습니다. WIFI_NetworkAdd
는 네트워크 프로필을 추가하고, WIFI_NetworkGet
은 네트워크 프로필을 검색하고, WIFI_NetworkDel
은 네트워크 프로필을 삭제합니다. 저장할 수 있는 프로필 수는 플랫폼에 따라 다릅니다.
구성
Wi-Fi 라이브러리를 사용하려면 구성 파일에서 여러 식별자를 정의해야 합니다. 이러한 식별자에 대한 자세한 내용은 API 참조를 참조하십시오.
참고
이 라이브러리에는 필요한 구성 파일이 포함되어 있지 않으므로 하나를 생성해야 합니다. 구성 파일을 생성할 때 보드에 필요한 보드 관련 구성 식별자를 포함시켜야 합니다.
Initialization(초기화)
Wi-Fi 라이브러리를 사용하기 전에 무료RTOS 구성 요소 외에도 일부 보드별 구성 요소를 초기화해야 합니다. vendors/
파일을 초기화를 위한 템플릿으로 사용하여 다음을 수행합니다.vendor
/boards/board
/aws_demos/application_code/main.c
-
애플리케이션이 Wi-Fi 연결을 처리하는 경우
main.c
에서 샘플 Wi-Fi 연결 로직을 제거합니다. 다음DEMO_RUNNER_RunDemos()
함수 호출을if( SYSTEM_Init() == pdPASS ) { ... DEMO_RUNNER_RunDemos(); ... }
자체 애플리케이션 호출로 바꿉니다.
if( SYSTEM_Init() == pdPASS ) { ... // This function should create any tasks // that your application requires to run. YOUR_APP_FUNCTION(); ... }
-
WIFI_On()
을 호출하여 Wi-Fi 칩을 초기화하고 전원을 켭니다.참고
일부 보드에는 추가 하드웨어 초기화가 필요할 수 있습니다.
-
구성된
WIFINetworkParams_t
구조를WIFI_ConnectAP()
로 전달하여 보드를 사용 가능한 Wi-Fi 네트워크에 연결합니다.WIFINetworkParams_t
구조에 대한 자세한 내용은 사용 예 및 API 참조를 참조하세요.
API 참조
전체 API 참조는 Wi-Fi API 참조를 참조하세요.
사용 예
알려진 AP에 연결
#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 }
근처 스캔 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); }
이식
iot_wifi.c
구현은 iot_wifi.h
에 정의된 함수를 구현해야 합니다. 적어도 이 구현은 필수적이지 않거나 지원되지 않는 함수에 대해 eWiFiNotSupported
를 반환해야 합니다.
Wi-Fi 라이브러리 이식에 대한 자세한 내용은 프리RTOS 포팅 가이드의 Wi-Fi 라이브러리 이식을 참조하세요.