首页 > 其他分享 >[ESP] ESP32开机自动配网运行iperf

[ESP] ESP32开机自动配网运行iperf

时间:2023-07-30 11:12:30浏览次数:42  
标签:wifi esp ESP32 ESP repl 配网 iperf config

  • esp-idf版本
    • tag-V4.4.2
  • 示例路径
    • examples/wifi/iperf

iperf_example_main.c(修改后的版本)

/* Wi-Fi iperf Example

   This example code is in the Public Domain (or CC0 licensed, at your option.)

   Unless required by applicable law or agreed to in writing, this
   software is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
   CONDITIONS OF ANY KIND, either express or implied.
*/

#include <iperf.h>
#include <errno.h>
#include <string.h>
#include <sys/unistd.h>
#include "esp_wifi.h"
#include "esp_log.h"
#include "esp_err.h"
#include "nvs_flash.h"
#include "esp_console.h"
#include "cmd_decl.h"

void app_main(void) {
    esp_err_t ret = nvs_flash_init();
    if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
        ESP_ERROR_CHECK(nvs_flash_erase());
        ret = nvs_flash_init();
    }
    ESP_ERROR_CHECK(ret);

    initialise_wifi();

    esp_console_repl_t *repl = NULL;
    esp_console_repl_config_t repl_config = ESP_CONSOLE_REPL_CONFIG_DEFAULT();
    repl_config.prompt = "iperf>";

    // init console REPL environment
#if CONFIG_ESP_CONSOLE_UART
    esp_console_dev_uart_config_t uart_config = ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT();
    ESP_ERROR_CHECK(esp_console_new_repl_uart(&uart_config, &repl_config, &repl));
#elif CONFIG_ESP_CONSOLE_USB_CDC
    esp_console_dev_usb_cdc_config_t cdc_config = ESP_CONSOLE_DEV_CDC_CONFIG_DEFAULT();
    ESP_ERROR_CHECK(esp_console_new_repl_usb_cdc(&cdc_config, &repl_config, &repl));
#elif CONFIG_ESP_CONSOLE_USB_SERIAL_JTAG
    esp_console_dev_usb_serial_jtag_config_t usbjtag_config = ESP_CONSOLE_DEV_USB_SERIAL_JTAG_CONFIG_DEFAULT();
    ESP_ERROR_CHECK(esp_console_new_repl_usb_serial_jtag(&usbjtag_config, &repl_config, &repl));
#endif

    /* Register commands */
    register_system();
    register_wifi();

    printf("\n ==================================================\n");
    printf(" |       Steps to test WiFi throughput            |\n");
    printf(" |                                                |\n");
    printf(" |  1. Print 'help' to gain overview of commands  |\n");
    printf(" |  2. Configure device to station or soft-AP     |\n");
    printf(" |  3. Setup WiFi connection                      |\n");
    printf(" |  4. Run iperf to test UDP/TCP RX/TX throughput |\n");
    printf(" |                                                |\n");
    printf(" =================================================\n\n");

    /*
     * .sta.ssid    : wifi ssid name
     * .sta.password: wifi password
     */
    wifi_config_t wifi_config = {.sta.ssid = "sharkrobot",
            .sta.password = "xxxxxxx"};

    esp_wifi_set_mode(WIFI_MODE_STA);
    esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config);
    esp_wifi_connect();

    ESP_LOGI(__func__ ,"Start wifi connect");
    // start console REPL
    ESP_ERROR_CHECK(esp_console_start_repl(repl));
    ESP_LOGI(__func__ ,"esp_console_start_repl");
    sleep(10);
    ESP_LOGI(__func__ ,"Start iperf_start 1");

    iperf_cfg_t iperf = {.type = IPERF_IP_TYPE_IPV4};
    iperf.flag |= IPERF_FLAG_SERVER;
//    iperf.source_ip4 = wifi_get_local_ip();
    iperf.flag |= IPERF_FLAG_SERVER;
    iperf.len_send_buf = 0;
    iperf.sport = IPERF_DEFAULT_PORT;
    iperf.dport = IPERF_DEFAULT_PORT;
    iperf.interval = 1;
    iperf.time = IPERF_DEFAULT_TIME;
    iperf.bw_lim = IPERF_DEFAULT_NO_BW_LIMIT;

    iperf_start(&iperf);
    ESP_LOGI(__func__ ,"Start iperf_start 2");

}

测试效果

  • 以下ESP32作为iperf的服务端,笔记本作为客户端。

1. 示例esp32开机自动连接的wifi ssid是sharkrobot所以笔记本也需要连接到相同的wifi ssid。

2. ESP32上电,等待5秒。

3. 终端显示连接到sharkrobot,同时复制ESP32的IP地址。

4. 终端显示iperf启动成功。

5. 在笔记本上启动iperf和ESP32上的ESP32通信。

  1. ESP32终端显示。
  2. 笔记本终端显示。

标签:wifi,esp,ESP32,ESP,repl,配网,iperf,config
From: https://www.cnblogs.com/jiangyibo/p/17591139.html

相关文章

  • ESP32连接云服务器【WebSocket】
    ESP32连接云服务器【ESP32+宝塔面板】......
  • WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块-A2-蓝牙和CAN总线透传通信(经典蓝牙主机)
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>          实现的......
  • 某制造企业基于 KubeSphere 的云原生实践
    背景介绍随着业务升级改造与软件产品专案的增多,常规的物理机和虚拟机方式逐渐暴露出一些问题:大量服务部署在虚拟机上,资源预估和硬件浪费较大;大量服务部署在虚拟机上,部署时间和难度较大,自动化程度较低;开发人员和运维人员,由于开发和部署服务环境不同,服务不稳定经常报错,产生的隔阂问题......
  • .net core 调用打印机打印pdf文件 FreeSpire.PDF
    首先,参考了https://stackoverflow.com/questions/63941980/is-it-possible-to-print-documents-from-a-net-core-3-1-windows-service中的说明,声明:我用的是core3.1测试的先下载了FreeSpire.PDF的NuGet包,可以看出来简介上是支持print的: 然后我的测试直接在controller中:1[......
  • 强制删除namespace
    之前部署过一套监控因为是本地测试环境,资源不太够,想着进行删除命名空间monitoring[root@k8s-master01]#kubectldeletensmonitoringnamespace"monitoring"deleted^C[root@k8s-master01]#kubectldeletensmonitoringnamespace"monitoring"deleted^C[root@k8s-......
  • 小程序蓝牙配网--安卓与IOS的区别
    1.getWifiList接口:IOS无法获取WiFi列表,只有安卓能够获取。IOS可以通过getConnectedWifi接口获取当前已连接的WIFI名,可以适当给予用户引导2.配网过程:安卓可以事先写死serviceId(0000FFFF-0000-1000-8000-00805F9B34FB)与characteristicId(0000FF02-0000-1000-8000-00805F9B34FB),以......
  • Espressif乐鑫AT固件库使用全梳理
    写在前面:当你遇到一件麻烦事的时候,你要做的就是乖乖听它的话,别再自找麻烦。 1.参考资料ESP-IDF手册ESP-AT手册esp-dev-kits开发板手册b站乐鑫官方教学视频和乐鑫官方论坛,资料少、讲解不详细、不全面注:上面的手册记得选择型号,这里是以window和esp32-c6-devkit......
  • ESP8266 获取新大陆温湿度光照模块值
    光照是ADC输出的,温湿度走的是I2C。光照直接采样用公式转换即可。光照接线图如下:参考代码(基于Arduino):voidsetup(){Serial.begin(9600);}floatVref=3.3;//参考电压floatR=100.0;//分压电阻阻值floatvalue=0;voidloop(){intsensorValue......
  • redis del namespace
    RedisDel命令解析与示例简介在Redis中,DEL命令被用来删除一个或多个键。这个命令可以用于删除任何类型的键,包括字符串、列表、哈希表、集合和有序集合。在删除键时,与被删除键关联的数据也会被同时删除。本文将介绍DEL命令的用法、参数、返回值以及示例代码。DEL命令的用......
  • ESP32连接MQ Sensor实现气味反应
    ESP32连接MQSensor实现气味反应ESP32+MQTT+MySQL实现发布订阅【气味数据收集】......