0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺談Zephyr ESP32 wifi如何使用

ZephyrProject ? 來源:ZephyrProject ? 作者:ZephyrProject ? 2021-06-01 10:17 ? 次閱讀

在Zephyr ESP32 wifi驅動簡析一文中簡要分析了esp32 wifi如何集成進Zephyr,本文接著說明要如何使用esp32 wifi。

從前文可知由于esp32 wifi的驅動和ethernt L2對接,因此在zephyr下只要通過簡單的配置就可以在應用層使用socket通過wifi進行網絡通信,而不需要去關心esp32 wifi驅動的細節(jié)。

配置方法

進行下面配置后開機,esp32就會自動取連接配置好的WIFI,并拿到IP地址,之后應用通過socket編程即可

1

2

# 配置啟動WIFI,使用ESP32 WIFI,必須

CONFIG_WIFI=y

CONFIG_WIFI_ESP32=y

# 配置使用網絡和L2 Ethernet, 必須

CONFIG_NETWORKING=y

CONFIG_NET_L2_ETHERNET=y

# IPV4/IPV6任選, 必須

CONFIG_NET_IPV6=n

CONFIG_NET_IPV4=y

# DHCP開啟,可選

CONFIG_NET_DHCPV4=y

# 開啟DHCP后要使用NET_MGMT通知DHCP完成

CONFIG_NET_MGMT=y

CONFIG_NET_MGMT_EVENT=y

# hal esp的wpa_supplicant依賴mbedtls,必須

CONFIG_MBEDTLS=y

CONFIG_MBEDTLS_ENTROPY_ENABLED=y

CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED=y

CONFIG_MBEDTLS_ECP_ALL_ENABLED=y

# 配置連接WIFI的SSID和密碼,必須

CONFIG_ESP32_WIFI_SSID=“myssid”

CONFIG_ESP32_WIFI_PASSWORD=“mypassword”

# 配置自動啟動WIFI連接,非必須,如果不配置需要另外添加代碼使用esp hal API進行連接

CONFIG_ESP32_WIFI_STA_AUTO=y

示例測試

使用samples etsocketsdumb_http_server 示例來演示esp32 作為server,電腦可以通過wifi訪問該server.

電腦IP 192.168.101.108

Zephyr server IP 192.168.101.105

修改配置

1

2

3

4

5

6

# Network driver config

CONFIG_TEST_RANDOM_GENERATOR=y

# Network address config

CONFIG_NET_CONFIG_SETTINGS=y

CONFIG_WIFI=y

CONFIG_WIFI_ESP32=y

CONFIG_HEAP_MEM_POOL_SIZE=98304

CONFIG_NETWORKING=y

CONFIG_NET_L2_ETHERNET=y

CONFIG_NET_IPV6=n

CONFIG_NET_IPV4=y

CONFIG_NET_DHCPV4=y

CONFIG_NET_TCP=y

CONFIG_NET_SOCKETS=y

CONFIG_NET_SOCKETS_POSIX_NAMES=y

CONFIG_NET_MGMT=y

CONFIG_NET_MGMT_EVENT=y

CONFIG_NET_LOG=y

CONFIG_NET_SHELL=y

CONFIG_MBEDTLS=y

CONFIG_MBEDTLS_ENTROPY_ENABLED=y

CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED=y

CONFIG_MBEDTLS_ECP_ALL_ENABLED=y

CONFIG_ESP32_WIFI_SSID=“AP8”

CONFIG_ESP32_WIFI_PASSWORD=“2885887452”

CONFIG_ESP32_WIFI_STA_AUTO=y

# Networking tweaks

# Required to handle large number of consecutive connections,

# e.g. when testing with ApacheBench.

CONFIG_NET_TCP_TIME_WAIT_DELAY=0

# Network debug config

CONFIG_NET_LOG=y

#CONFIG_NET_SHELL=y

編譯代碼并下載

1

2

west build -p -b esp32 zephyrproject/zephyr/samples/net/sockets/dumb_http_server

west flash --esp-device /dev/ttyS11

運行l(wèi)og, 最后幾句Connection,就是PC瀏覽器在訪問server

1

2

3

4

5

uart:~$ I (828) wifi:wifi driver task: 3ffb2280, prio:2, stack:3584, core=0

I (829) wifi:wifi firmware version: 1865b55

I (829) wifi:wifi certification version: v7.0

I (831) wifi:config NVS flash: disabled

I (835) wifi:config nano formating: disabled

I (839) wifi:Init data frame dynamic rx buffer num: 32

I (843) wifi:Init management frame dynamic rx buffer num: 32

I (849) wifi:Init management short buffer num: 32

I (853) wifi:Init dynamic tx buffer num: 32

I (857) wifi:Init static rx buffer size: 1600

I (861) wifi:Init static rx buffer num: 10

I (865) wifi:Init dynamic rx buffer num: 32

phy_version: 4500, 0cd6843, Sep 17 2020, 1507, 0, 2

I (1001) wifi:mode : softAP (c457f8:dd)

I (1002) wifi:Total power save buffer number: 16

I (1002) wifi:Init max length of beacon: 752/752

I (1007) wifi:Init max length of beacon: 752/752

I (1012) wifi:mode : sta (c457f8:dc

*** Booting Zephyr OS build v2.6.0-rc1-300-g6ce0f2ee6606 ***

Single-threaded dumb HTTP server waits for a connection on port 8080.。。

I (1137) wifi《1,0》, old:《1,1》, ap:《255,255》, sta:《1,0》, prof:1

I (1785) wifi init -》 auth (b0)

I (1831) wifi auth -》 assoc (0)

I (1835) wifi assoc -》 run (10)

[0001.020,000] 《inf》 net_config: Initializing network

[0001.020,000] 《inf》 net_config: Waiting interface 1 (0x3ffb01f8) to be up.。。

I (2044) wifi:connected with AP8, aid = 1, channel 1, BW20, bssid = c0dd89:7f

I (2044) wifi WPA2-PSK, phy: bgn, rssi: -53

I (2047) wifi:pm start, type: 1

[0001.023,000] 《inf》 esp_event: WIFI_EVENT_STA_START

[0001.023,000] 《inf》 net_config: Interface 1 (0x3ffb01f8) coming up

[0001.023,000] 《inf》 net_config: Running dhcpv4 client.。。

uart:~$ I (2120) wifi:AP‘s beacon interval = 102400 us, DTIM period = 1

[0002.051,000] 《inf》 esp_event: WIFI_EVENT_STA_CONNECTED

[0006.220,000] 《inf》 net_dhcpv4: Received: 192.168.101.105

[0006.220,000] 《inf》 net_config: IPv4 address: 192.168.101.105

[0006.220,000] 《inf》 net_config: Lease time: 7200 seconds

[0006.220,000] 《inf》 net_config: Subnet: 255.255.255.0

[0006.220,000] 《inf》 net_config: Router: 192.168.101.1

uart:~$ Connection #0 from 192.168.101.108

Connection from 192.168.101.108 closed

Connection #1 from 192.168.101.108

Connection from 192.168.101.108 closed

電腦瀏覽器訪問http://192.168.101.105:8080/結果

Net Shell測試ping電腦結果:

1

2

3

4

5

uart:~$ net ping 192.168.101.108

PING 192.168.101.108

28 bytes from 192.168.101.108 to 192.168.101.105: icmp_seq=0 ttl=128 time=153 ms

28 bytes from 192.168.101.108 to 192.168.101.105: icmp_seq=1 ttl=128 time=30 ms

28 bytes from 192.168.101.108 to 192.168.101.105: icmp_seq=2 ttl=128 time=7 ms

其它

再次說明由于Zephyr沒有對esp32的scan/connect/disconnect進行集成封裝,如果應用中要做wifi管理,需要應用程序直接調用esp hal API來實現(xiàn)。例如,如果沒有配置CONFIG_ESP32_WIFI_STA_AUTO=y, 就需要在應用代碼中加入下面流程,才能完成wifi連接

1

if (!IS_ENABLED(CONFIG_ESP32_WIFI_STA_AUTO)) {

wifi_config_t wifi_config = {

.sta = {

.ssid = CONFIG_ESP32_WIFI_SSID,

.password = CONFIG_ESP32_WIFI_PASSWORD,

},

};

esp_err_t ret = esp_wifi_set_mode(WIFI_MODE_STA);

ret |= esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config);

ret |= esp_wifi_connect();

if (ret != ESP_OK) {

LOG_ERR(“connection failed”);

}

}

如果應用要用socket編程,需要添加下面配置項

1

2

CONFIG_NET_SOCKETS=y

CONFIG_NET_SOCKETS_POSIX_NAMES=y

參考

https://docs.zephyrproject.org/latest/samples/boards/esp32/wifi_station/README.html

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • PC
    PC
    +關注

    關注

    9

    文章

    2082

    瀏覽量

    154218
  • IP
    IP
    +關注

    關注

    5

    文章

    1708

    瀏覽量

    149554
  • 電腦
    +關注

    關注

    15

    文章

    1706

    瀏覽量

    68844
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68616

原文標題:Zephyr ESP32 wifi使用簡述

文章出處:【微信號:ZephyrProject,微信公眾號:ZephyrProject】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    esp32esp8266代碼共用嗎

    本文將介紹ESP32ESP8266兩款流行的微控制器在代碼共用性方面的可能性與差異性。 一、引言 隨著物聯(lián)網技術的飛速發(fā)展,越來越多的智能設備開始進入我們的生活。其中,ESP32ESP
    的頭像 發(fā)表于 08-19 18:23 ?1153次閱讀

    esp8266和esp32區(qū)別是什么

    以下是關于ESP8266和ESP32的主要區(qū)別: 處理器和架構 : ESP8266 :使用一個Tensilica L106 80MHz的處理器,屬于Xtensa架構。 ESP32 :使
    的頭像 發(fā)表于 08-19 18:16 ?5410次閱讀

    esp32用什么軟件編程

    ESP32是一款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍牙雙模微控制器,廣泛應用于物聯(lián)網、智能家居、智能穿戴等領域。要對ESP32進行編程,需要選擇合適的編程軟件和開發(fā)環(huán)境
    的頭像 發(fā)表于 08-19 17:24 ?3529次閱讀

    ESP32-WROOM-32E、ESP32-WROOM-32D、ESP32-WROOM-32U 有什么區(qū)別?ESP32-WROOM-32 后綴字母代表的意思是?

    相信很多人心里都有這樣的疑問,今天就教大家怎么區(qū)分它們。 32D和32U是同一個芯片ESP32-D0WD的模組,主要區(qū)別的天線模式,分別是板載和IPEX外接天線。 32E是用的升級版的芯片
    的頭像 發(fā)表于 07-17 10:09 ?9758次閱讀
    <b class='flag-5'>ESP32</b>-WROOM-32E、<b class='flag-5'>ESP32</b>-WROOM-32D、<b class='flag-5'>ESP32</b>-WROOM-32U  有什么區(qū)別?<b class='flag-5'>ESP32</b>-WROOM-32 后綴字母代表的意思是?

    ESP32能取代STM32嗎?哪個更好?

    不能!首先二者不存在哪個更好的問題,因為這兩個芯片使用場景各不相同,在嵌入式系統(tǒng)領域,ESP32和STM32都是常見的單片機系列,它們各自具有一定的優(yōu)勢和適用場景。本文主要探討ESP32是否能夠取代
    的頭像 發(fā)表于 07-06 08:04 ?1.2w次閱讀
    <b class='flag-5'>ESP32</b>能取代STM32嗎?哪個更好?

    請問ESP32的網口與WIFI能否共存?

    請問ESP32 的網口與WIFI能否共存, 1臺電腦用網口TCP-client與ESP32的TCP-server連接; 另一臺電腦用WIFI的TCP-client與
    發(fā)表于 06-25 06:49

    如何使用espidf將esp32做成WiFi中繼?

    如何使用espidf將esp32做成WiFi中繼,讓esp32通過WiFi連接互聯(lián)網,同時作為AP,能讓連接到esp32AP的設備能夠直接訪
    發(fā)表于 06-25 06:43

    ESP32-WROVER-B 16M固件里的WiFi參數(shù)怎么設置才算最優(yōu)?

    有哪位大佬知道WiFi參數(shù)怎么設置才算最優(yōu)? 比如以下這些 CONFIG_ESP32_WIFI
    發(fā)表于 06-24 06:02

    樂鑫esp32系列在睡眠模式下保持藍牙連接的功耗測試

    本教程適用于ESP32-S3、ESP32-C3、ESP32-C6睡眠模式介紹ESP32系列常見的休眠方式有三種,分別為Modem-sleep、Light-sleep和Deep-slee
    的頭像 發(fā)表于 06-21 08:04 ?2801次閱讀
    樂鑫<b class='flag-5'>esp32</b>系列在睡眠模式下保持藍牙連接的功耗測試

    esp32 WIFi升級時受BLE_Mesh影響嚴重怎么解決?

    我這邊項目使用ESP32 工作在WIFI和BLE mesh 狀態(tài),當使用 wifi升級ESP32時,發(fā)現(xiàn)受MESH影響很大,如果邊上的MESH信號很多,
    發(fā)表于 06-14 06:11

    如何在zephyr上使能esp32-c3內置的USB串口?

    如題,請問如何在zephyr上使能esp32-c3內置的 USB 串口。
    發(fā)表于 06-12 08:11

    基于ESP32開發(fā)的工業(yè)級2.4GHz WiFi藍牙模塊方案

    ? ? ? ?ESP32集成了2.4 GHz WiFi和藍牙雙模的單芯片方案,它采用臺積電(TSMC)超低功耗的40納米工藝,具有超高的射頻性能、穩(wěn)定性、通用性和可靠性,以及超低的功耗,滿足
    的頭像 發(fā)表于 05-31 17:06 ?883次閱讀

    ESP32系列ESP32-D0WD雙模 超低功耗集成BLE4.2+2.4G WIFI SoC芯片

    ESP32系列ESP32-D0WD雙模 超低功耗集成BLE4.2+2.4G WIFI SoC芯片
    的頭像 發(fā)表于 05-29 11:52 ?1475次閱讀
    <b class='flag-5'>ESP32</b>系列<b class='flag-5'>ESP32</b>-D0WD雙模 超低功耗集成BLE4.2+2.4G <b class='flag-5'>WIFI</b> SoC芯片

    學習單片機ESP32與STM32,該如何選擇?

    從行業(yè)應用來說,STM32更加廣泛,不管是工業(yè)控制,汽車電子,還是消費電子。 如果項目需要用到WiFi+藍牙功能,那用ESP32會很合適。
    發(fā)表于 03-08 15:28 ?1215次閱讀
    學習單片機<b class='flag-5'>ESP32</b>與STM32,該如何選擇?

    esp32外置flash的大小

    ESP32是一款功能強大的微控制器,廣泛應用于物聯(lián)網和嵌入式設備領域。雖然ESP32內置了一定的閃存空間,但有時候我們可能需要更大的儲存空間來存儲更多的數(shù)據(jù)或者程序。因此,一些廠商推出了外置
    的頭像 發(fā)表于 01-09 11:24 ?4143次閱讀