0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取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驱动的细节。

配置方法

进行下面配置后开机,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

运行log, 最后几句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来实现。例如,如果没有配置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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PC
    PC
    +关注

    关注

    9

    文章

    2180

    浏览量

    160028
  • IP
    IP
    +关注

    关注

    5

    文章

    1897

    浏览量

    157168
  • 电脑
    +关注

    关注

    16

    文章

    1829

    浏览量

    72411
  • 代码
    +关注

    关注

    30

    文章

    4986

    浏览量

    74644

原文标题:Zephyr ESP32 wifi使用简述

文章出处:【微信号:ZephyrProject,微信公众号:ZephyrProject】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    乐鑫科技新品ESP32-H4亮点速递!

    近期,乐鑫科技新品发布节奏持续加快。作为乐鑫科技一级代理商,启明云端为您带来最新芯片产品ESP32-H4的详细解读。ESP32-H4隶属于乐鑫科技ESP32-H系列,在低功耗物联网应用领域展现出显著
    的头像 发表于 04-16 18:05 743次阅读
    乐鑫科技新品<b class='flag-5'>ESP32</b>-H4亮点速递!

    基于ESP32-S3的休闲智能手表开源项目介绍

    这是一款基于ESP32-S3的休闲智能手表,配备1.7英寸显示屏、WiFi、蓝牙、振动马达、加速度计和陀螺仪,并支持多种表带。
    的头像 发表于 04-08 09:52 755次阅读
    基于<b class='flag-5'>ESP32</b>-S3的休闲智能手表开源项目介绍

    ESP32Cx-TINY系列立创开源啦!

    28×69mm,一个U盘的面积,覆盖ESP32-C2/C3/C5/C61四款芯片,全系列MIT协议开源。启明TINY工作室带来了C系列乐鑫口袋开发板家族。我们为什么做TINY系列我们的初衷其实很简单
    的头像 发表于 03-30 18:15 756次阅读
    <b class='flag-5'>ESP32</b>Cx-TINY系列立创开源啦!

    ESP32/ESP8266开发板单向多对一ESP-NOW无线通信

    本实验通过ESP-NOW无线通信协议实现多个ESP32/ESP 8266开发板向ESP32开发板发送数据。例如可以应用于从多个远程传感器上收集数据。
    的头像 发表于 03-30 10:14 335次阅读
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266开发板单向多对一<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32开发板单向点对点ESP-NOW无线通信

    本例程通过两个ESP32开发板实现单向点对点ESP-NOW无线通信,一个ESP32开发板作为Sender发送方,另一个开发板作为Receiver接收方接收发送方的数据。
    的头像 发表于 03-19 09:21 431次阅读
    <b class='flag-5'>ESP32</b>开发板单向点对点<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32/ESP8266开发板单向一对多ESP-NOW无线通信

    通过ESP-NOW无线通信协议实现ESP32开发板向多个ESP32/ESP 8266开发板发送数据。
    的头像 发表于 03-13 09:23 436次阅读
    <b class='flag-5'>ESP32</b>/<b class='flag-5'>ESP</b>8266开发板单向一对多<b class='flag-5'>ESP</b>-NOW无线通信

    ESP32 Wi-Fi 控制 LED 灯的原理

    在智能家居、物联网设备中,用手机通过Wi-Fi控制灯光、风扇或插座,已经非常普遍。而在嵌入式开发中,ESP32是最常用的Wi-Fi模块之一。本文将带你系统理解:ESP32是如何通过Wi-Fi实现远程
    的头像 发表于 01-09 19:04 754次阅读
    <b class='flag-5'>ESP32</b> Wi-Fi 控制 LED 灯的原理

    ESP32蓝牙驱动MAX98357对音频音乐播放

    本文介绍了MAX98357音频模块的基本特性,并利用ESP32的蓝牙功能程序驱动此模块,最后用手机蓝牙连接ESP32播放手机音乐
    的头像 发表于 12-19 19:55 3580次阅读
    <b class='flag-5'>ESP32</b>蓝牙驱动MAX98357对音频音乐播放

    VSCode + ESP-IDF环境下给ESP32-S3项目添加头文件

    VSCode + ESP-IDF环境下给ESP32-S3项目添加头文件
    的头像 发表于 11-28 07:27 3593次阅读

    #ESP32S3野牛小智

    ESP32
    丙丁先生
    发布于 :2025年11月25日 08:34:06

    ESP32­WROOM­32 技术规格书

    电子发烧友网站提供《ESP32­WROOM­32 技术规格书.pdf》资料免费下载
    发表于 11-11 17:27 0次下载

    ESP8266和ESP32开发板常见的2种下载方式

    ESP32ESP8266是性价比很高而且使用较为广泛的的Wi-Fi模块,在物联网(IoT)领域的DIY项目中可以首先考虑这2款产品。 两款芯片都属于32位处理器。ESP32是低功耗双核80MHz
    的头像 发表于 11-10 20:30 1638次阅读
    <b class='flag-5'>ESP</b>8266和<b class='flag-5'>ESP32</b>开发板常见的2种下载方式

    乐鑫ESP32-C6和ESP32-C61究竟该如何选择?一文读懂本质区别

    乐鑫科技推出的ESP32-C6和ESP32-C61均支持Wi-Fi6,但定位不同。ESP32-C6是多协议枢纽,集成Wi-Fi6、蓝牙5、Zigbee和Thread,适合智能家居网关和Matter
    的头像 发表于 10-28 14:17 3100次阅读
    乐鑫<b class='flag-5'>ESP32</b>-C6和<b class='flag-5'>ESP32</b>-C61究竟该如何选择?一文读懂本质区别

    ESP32-运行网页服务器(Web Server)-实用篇

    在前一篇文章《ESP32-运行网页服务器(WebServer)-入门篇》,我们介绍了ESP32运行网页服务器(WebServer)的原理,然后我们基于ESP32实现了一个demo代码;看到很多同学都留言发表了自己的看法,有很多同
    的头像 发表于 07-28 18:05 4289次阅读
    <b class='flag-5'>ESP32</b>-运行网页服务器(Web Server)-实用篇

    ESP32开发板元件资料

    ESP32开发板元件
    发表于 07-21 14:47 17次下载