Интересную идею придумал и осуществил мастер с ником Lan_D. У его друга есть небольшая кофейня. В разное время суток количество посетителей разное. Чтобы вести учет клиентов в реальном времени и оперативно реагировать на их наплыв и было придумано это устройство.
Инструменты и материалы:
-Модуль MakePython ESP32;
-Плата расширения MakePython A9G GPRS;
-Кабель Micro USB;
-Карта Micro SD;
Шаг первый: как это работает
В наше время практически у каждого есть смартфон. У каждого смартфона есть уникальный MAC-адрес. Устройство позволяет захватывать сетевые пакеты и подсчитывать MAC-адреса. А подсчет количества MAC-адреса означает подсчет количества посетителей.
Шаг второй: сборка
Сборка устройства проста. Нужно просто соединить два модуля и подключить кабель.
Шаг третий: код
Дальше нужно загрузить код.
Показать / Скрыть текстvoid wifi_sniffer_init(void)
{
nvs_flash_init();
tcpip_adapter_init();
ESP_ERROR_CHECK(esp_event_loop_init(event_handler, NULL));
wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT();
ESP_ERROR_CHECK(esp_wifi_init(&cfg));
ESP_ERROR_CHECK(esp_wifi_set_country(&wifi_country)); /* set country for channel range [1, 13] */
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_promiscuous(true);
esp_wifi_set_promiscuous_rx_cb(&wifi_sniffer_packet_handler);
}
Проверка добавления MAC
Показать / Скрыть текстint check_mac_only(const uint8_t addr3[6])
{
for (char i = 0; i < mac_count; i++)
{
bool flag = true;
for (char j = 0; j < 6; j++)
{
if (mac_lib[i][j] != addr3[j])
{
flag = false;
break;
}
}
if (flag == true)
return 0;
}
for (char j = 0; j < 6; j++)
{
mac_lib[mac_count][j] = addr3[j];
}
mac_count++;
return 1;
}
Запись файлов на SD-карту
Показать / Скрыть текстvoid writeFile(fs::FS &fs, String path, String message)
{
Serial.println(«Writing file: » + path);
File file = fs.open(path, FILE_WRITE);
if (!file)
{
Serial.println(«Failed to open file for writing»);
return;
}
if (file.println(message))
{
Serial.println(«File written»);
}
else
{
Serial.println(«Write failed»);
}
file.close();
}
Шаг четвертый: обработка данных
Файл данных, полученный счетчиком, сохраняется на SD-карте, имя которой начинается с “log”. Скопируйте его на ПК.
Откройте файл Python « Project_WiFi-Statistics wifi_count.py» в режиме блокнота, измените код, указывающий путь и имя файла.
# Файл, который нужно проанализировать
trace_file_name = «./log3.txt»
Используйте cmd.exe, чтобы открыть файл Python и получить график.
Помимо сохранения данных на SD-карте, можно отправлять данные на веб-сайт с помощью ESP32, и просматривать данные удаленно через интернет.
Все готово.
Этот счетчик очень маленький и портативный, количество людей можно подсчитать в любое время и в любом месте, подключив мобильный источник питания. Радиус дальности работы счетчика велика. Его можно использовать в большом торговом центре для подсчета количества людей, чтобы можно было видеть, в какой период времени пик потока людей. Его можно использовать в общественных местах, таких как парки и скверы и т.д.
Источник (Source)
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
Источник: