在 esp32 上更改当前使用的 Wifi 频道?

问题描述 投票:0回答:0

如何更改我的wifi连接当前使用的wifi频道? 我正在使用 ARDUINO-IDE 编程。

如您在输出清单中所见,更改命令后频道没有变化...


#include <WiFi.h>
#include <esp_wifi.h>

  uint8_t             original_channel;
  wifi_second_chan_t  original_secondary_channel;
  uint8_t             channel_new;
  wifi_second_chan_t  secondary_channel_new;
  uint8_t             channel_after_change;
  wifi_second_chan_t  secondary_channel_after_change;

void setup() {
  Serial.begin(115200);
  delay(500);
  //
  Serial.println("This test-sketch changes the channel of the current Wifi-Connection to a new one");
  Serial.println("         and changes it back to the former one");
  //
  WiFi.mode(WIFI_STA);
  WiFi.begin("Mama will ins Netz", "!Johann15012019");
  Serial.print("Connecting to WiFi ..");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print('.');
    delay(1000);
  }
  Serial.println(WiFi.localIP());

  // get the currently used wifi channel
  esp_wifi_get_channel(&original_channel, &original_secondary_channel);
  Serial.println("--------------------------------");
  Serial.println("original_channel: " + String(original_channel));
  Serial.println("original_secondary_channel: " + String(original_secondary_channel));
  Serial.println("--------------------------------");

  // set the wifi connection to a new channel (best channels are 1, 6, 11)
  switch (original_channel) {
    case (1):
      channel_new = 11;
      break;
    case (6):
      channel_new = 11;
      break;
    case (11):
      channel_new = 6;
      break;
    default:
      channel_new = 11;
      break;
  }

  Serial.println("--------------------------------");
  Serial.println("channel_new: " + String(channel_new));
  Serial.println("secondary_channel_new: " + String(secondary_channel_new));
  Serial.println("--------------------------------");
  // change the channel
  esp_wifi_set_channel(channel_new, WIFI_SECOND_CHAN_NONE);
  
  // check the change of channel
  esp_wifi_get_channel(&channel_after_change, &secondary_channel_after_change);
  Serial.println("--------------------------------");
  Serial.println("after channel change...");
  Serial.println("channel_after_change: " + String(channel_after_change));
  Serial.println("secondary_channel_after_change: " + String(secondary_channel_after_change));
  Serial.println("--------------------------------");
  
  //
  Serial.println("++++++++++++++++++++++++++++++++");
  Serial.println("here I want to do some tests like using ESP-now on a predefined channel");
  Serial.println("++++++++++++++++++++++++++++++++");
  //
  
  // set the wifi connection back to the former channel
  esp_wifi_set_channel(original_channel, WIFI_SECOND_CHAN_NONE);
  // check the reset of channel
  Serial.println("--------------------------------");
  Serial.println("after changing back to former channel...");
  Serial.println("original_channel: " + String(original_channel));
  Serial.println("original_secondary_channel: " + String(original_secondary_channel));
  Serial.println("--------------------------------");
}


void loop() {
  // put your main code here, to run repeatedly:
}


/*
Serial-OUTPUT:

This test-sketch changes the channel of the current Wifi-Connection to a new one
         and changes it back to the former one
Connecting to WiFi ....192.168.2.196
--------------------------------
original_channel: 6
original_secondary_channel: 0
--------------------------------
--------------------------------
channel_new: 11
secondary_channel_new: 0
--------------------------------
--------------------------------
after channel change...
channel_after_change: 6
secondary_channel_after_change: 0
--------------------------------
++++++++++++++++++++++++++++++++
here I want to do some tests like using ESP-now on a predefined channel
++++++++++++++++++++++++++++++++
--------------------------------
after changing back to former channel...
original_channel: 6
original_secondary_channel: 0
--------------------------------
*/


也许有人有一个如何将当前 WiFi 频道更改为新频道的示例?

arduino wifi esp32
© www.soinside.com 2019 - 2024. All rights reserved.