二、alios thingsに基づくesp 32 devkitC学習ノート——クライアントとしてWIFI(AP)に接続する

2583 ワード

1、コード
wifi接続については、最初は公式ドキュメントを見て霧の中で、彼は証明書を申請しなければなりません.他のブログを見てやっと大体分かりました.
ボード接続APは実はとても簡単で、まず一連の初期化で、それからwifiモードを設定して、ボードは3種類を提供して、AP、STA、APSTA、それぞれap、取引先、ap+取引先で、ここでstaを選んでクライアント接続APをしました.
次にそのプリセットの構造体を利用してapのSSIDやパスワードなどの情報を設定し、次いで関数でespのwifiのconfigに配置し、起動し、接続すればよい.私のコードは以下の通りである.
/*
 * Copyright (C) 2015-2017 Alibaba Group Holding Limited
 */

#include 

#include 

#include "driver/gpio.h"
#include "sdkconfig.h"
#include "esp_wifi.h"
#include "esp_system.h"
#include "esp_event.h"
#include "esp_event_loop.h"
#include "nvs_flash.h"

esp_err_t event_handler(void *ctx, system_event_t *event)
{
    return ESP_OK;
}

int application_start(int argc, char *argv[])
{
    // int count = 0;
    // printf("nano entry here!\r
"); nvs_flash_init(); tcpip_adapter_init(); //ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) ); wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK( esp_wifi_init(&cfg) ); ESP_ERROR_CHECK( esp_wifi_set_storage(WIFI_STORAGE_RAM) ); ESP_ERROR_CHECK( esp_wifi_set_mode(WIFI_MODE_STA) ); wifi_config_t sta_config = { .sta = { .ssid = "MERCURY_70D438", .password = "*********", .bssid_set = false } }; ESP_ERROR_CHECK( esp_wifi_set_config(WIFI_IF_STA, &sta_config) ); ESP_ERROR_CHECK( esp_wifi_start() ); ESP_ERROR_CHECK( esp_wifi_connect() ); wifi_ap_record_t ap_info; esp_wifi_sta_get_ap_info(&ap_info); while(1) { printf("macAddress:%s SSID:%s", ap_info.bssid,ap_info.ssid); aos_msleep(3000); } }

2、いくつかの問題
  • はまず大きな問題で、私が初めてwifiに接続した後、2回目のwifi接続はずっと接続できず、SYSTEM_が繰り返し現れた.EVENT_STA_DISCONNECTED、资料を调べて、チャネル関连の问题だと言って、この文章を解决して参考にしますが、ブロガーの方法によってもっとファイルを书いた后につながってもいいですが、时々オフラインになって再び断線事件が発生して、私の设备の问题なのか分かりません
  •  
  • 次にincludeに関する質問ですが、最初は#include"esp_wifi.h"の#include"esp_event.h"の#include"tcpip_adapter.h"でファイルが見つからないという問題が発生しますが、IDEのジャンプでこのヘッダファイルに正常にジャンプできるのです.このヘッダファイルはesp_event.hの上位レベルのディレクトリの下で、コンパイルプロファイルのincludeリファレンスリストにこのディレクトリを追加しようとしましたが、エラーが発生し、includeのときに相対ディレクトリ#include".../......../tcpip_adapter.h"を直接使用して問題を解決しました.

  •  
  • もう一つはイベントループを開く関数ESP_ERROR_CHECK( esp_event_loop_init(event_handler, NULL) );ずっと間違いを報告して、これはコンパイルしてダウンロードした後に板の上で走った時に報告した間違いで、上のあの事件の処理のコールバックは何の欠点もないようで、それから私もいくつかの公式のドキュメントを調べて、何の収穫もなくて、この行を削除して、それから運行に成功して、wifi
  • にもつながっています