我目前正在使用ESP32监视wifi数据包(使用混杂模式)的项目。 目前,我正在将arduino用于ESP32(但如有必要,可以更改为esp-idf),并且能够正确执行监视。
监视时,我消耗的电流约为100 / 102mA。 (核心频率为80MHz)。 我希望将功耗降低一点。 我该怎么办?
这是我的代码的简化版本:
void wifi_promiscuous(void* buff, wifi_promiscuous_pkt_type_t type) {
// store the packet in memory
}
void setup() {
esp_bt_controller_disable();
nvs_flash_init();
tcpip_adapter_init();
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL)); // event_handler does nothing
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM));
ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_NULL));
ESP_ERROR_CHECK(esp_wifi_start());
esp_wifi_set_max_tx_power(-4); // reduce tx power, as we only receive
esp_wifi_set_channel(ch, WIFI_SECOND_CHAN_NONE);
esp_wifi_set_promiscuous_rx_cb(&wifi_promiscuous);
esp_wifi_set_promiscuous(true);
vTaskDelay(1000L * (MEASUREMENT_DURATION) / portTICK_PERIOD_MS);
// Do something with the measurement, then get turned off externally.
}