我是一个大白菜 发表于 2022-3-19 12:51:54

esp32使用esp-idf4.3 有线网络 设置静态ip

本帖最后由 我是一个大白菜 于 2022-3-19 13:39 编辑

最近有个项目需要用到有线网络和485,于是想到论坛大神做了一个板子,我参考他的帖子,自己做了一个。
硬件调通后,iperf测速大概92Mbits/s,基本满足需求,内存大,udp通信够用了。

我使用的是esp-idf 4.3 配合vscode开发,安装的是esp-idf离线版,需要运气有时候安装一次就好,我换个电脑,一样的软件包安装会失败,多试几次了。

在vscode里,按f1,顶部会弹出一个对话框,选择 ESP-IDF: Show Example Projects ,在弹出的页面里,选择 ethernet->basic ,打开介绍界面,在顶部有个蓝色提示文字 Create project using example basic点击它,选择一个自己知道的文件夹,相当于复制一份这个工程。接下去都在自己的这个文件夹里修改了。

网上查找了很多资料,自己试验了他们的方法,没有成功,最后自己发现是有个结构体名称自己疏忽了,修改一下就好了。整个工程主要就一个c文件,只要配置好了开发环境,编译一下就可以验证了。

修改的关键是:
1. 先关闭工程自带的dhcpc ;
2. 设置静态ip,需要调用esp32自带的函数 esp_ip4addr_aton来做字符串ip和uint32_t的转换;
3. 配置上面两步,要在函数 esp_eth_start(eth_handle) 之前。

    ESP_LOGI(TAG, "dhcpc_stop 1");
      ESP_ERROR_CHECK(esp_netif_dhcpc_stop(eth_netif));
    ESP_LOGI(TAG, "dhcpc_stop 2");

    esp_netif_ip_info_t info_t;
    memset(&info_t, 0, sizeof(esp_netif_ip_info_t));
    info_t.ip.addr = esp_ip4addr_aton((const char *)"192.168.1.50");
    info_t.netmask.addr = esp_ip4addr_aton((const char *)"255.255.255.0");
    info_t.gw.addr = esp_ip4addr_aton((const char *)"192.168.1.1");
    ESP_LOGI(TAG, "static ip 1");
    ESP_ERROR_CHECK( esp_netif_set_ip_info(eth_netif, &info_t));
    ESP_LOGI(TAG, "static ip 2");
   
    /* start Ethernet driver state machine */
    ESP_ERROR_CHECK(esp_eth_start(eth_handle));


大神的链接
https://www.amobbs.com/forum.php?mod=viewthread&tid=5730257&highlight=ESP32
找到的修改方法链接
https://espressif-docs.readthedocs-hosted.com/projects/espressif-esp-faq/zh_CN/latest/software-framework/ethernet.html

duxingkei 发表于 2022-3-19 16:28:47

666,好多人玩esp32,我也在玩

我是一个大白菜 发表于 2022-3-19 17:42:06

duxingkei 发表于 2022-3-19 16:28
666,好多人玩esp32,我也在玩
(引用自2楼)

恩,现在stm这么贵,esp32这个时候就体现出非常高的性价比了,内存大,flash是4M的,支持wifi和有线网络,除了开发不习惯,gpio少,没啥缺点了{:smile:}

youkebing 发表于 2022-3-20 00:37:21

也正打算用这个做个板子,我打算用micropython来写,到时候有问题在请教你啊

wxws 发表于 2022-3-20 02:25:52

用arduino写,我是另加了个用ble来做网络配置

youkebing 发表于 2022-3-20 08:40:26

wxws 发表于 2022-3-20 02:25
用arduino写,我是另加了个用ble来做网络配置
(引用自5楼)

这个模块好像自带蓝牙吧?

akey3000 发表于 2022-3-20 08:46:58

youkebing 发表于 2022-3-20 08:40
这个模块好像自带蓝牙吧?
(引用自6楼)

自带蓝牙,可能不能同时使用

我是一个大白菜 发表于 2022-3-20 09:19:17

youkebing 发表于 2022-3-20 00:37
也正打算用这个做个板子,我打算用micropython来写,到时候有问题在请教你啊 ...
(引用自4楼)

我也是刚开始用,相互学习

xmlbb 发表于 2022-3-20 10:13:33

只用以太网吗,有没有和wifi一起用

我是一个大白菜 发表于 2022-3-20 14:37:09

xmlbb 发表于 2022-3-20 10:13
只用以太网吗,有没有和wifi一起用
(引用自9楼)

我列举的获取官方例子里,好像有网络转wifi的工程,可以看看参考一下

wxws 发表于 2022-3-20 18:27:12

akey3000 发表于 2022-3-20 08:46
自带蓝牙,可能不能同时使用
(引用自7楼)

蓝牙+wifi   同时使用 正常
蓝牙+以太网同时使用正常

wifi+以太网没搞过。等于是个网关了。不过应该是可行的。

我这应用是2选1,wifi或以太网。
页: [1]
查看完整版本: esp32使用esp-idf4.3 有线网络 设置静态ip