Пятница, 22.11.2024
Завод горного оборудования
Меню сайта
Google_Translate
Категории раздела
Мои статьи [125]
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Рейтинг@Mail.ru

Яндекс.Метрика
Главная » Статьи » Мои статьи

Как использовать PIR sensor с ESP32 S2 mini

На фото написано Mini HC-SR505, но на самом деле показан датчик AM312. Техническая характеристика AM312 (AS312):

    Датчик PIR-sensor: AS312
    Микросхема PIR controller: нет
    Угол обнаружения: 100°
    Дистанция обнаружения: от 3 до 5 метров
    Сигнал на выходе (OUT): Высокие(1) и низкие(0) уровни в 3.3V TTL логике
    Длительность сигнала при обнаружении (OUT): 2 сек
    Напряжение питания модуля: 2,7 – 12V
    Ток потребления в режиме ожидания: менее 50мкА
    Ток потребления: 0,1 мА
    Размер модуля : 25 x 13 x 13 мм
    Размер модуля без гребенки: 19 x 13 x 13 мм

Расстояние обнаружения движения указано 3-5 метров, но он надежно обнаруживает перемещение объекта в пределах всего полутора - двух метров.

Подключение PIR Sensor'а AM312 к плате ESP32 S2 mini

На плате ESP32 S2 mini распаял крайнюю 8-контактную гребенку. Датчик AM312 подключается тремя проводами: контакт VCC (на плате датчика рядом со стабилизатором с тремя выводами) подключается к шине VBUS (+5В) на плате ESP32 S2 mini, средний контакт DATA датчика подключается к контакту 16 на плате ESP32 S2 mini, крайний контакт GND датчика подключается к контакту GND на плате ESP32 S2 mini рядом с контактом VBUS. На плате ESP32 S2 mini все три провода оказываются рядом. Аналогично подключается и PIR Sensor HC-SR501.

 

Для проекта PIR Sensor использовалась среда Arduino IDE 2.2.1 в Windows 10. Также для платы ESP32 S2 mini вам надо скачать и установить в Windows драйвер CP2102. Как это сделать, описано в [5]. После установки драйвера при подключении платы к компьютеру в Диспетчере устройств должен появиться виртуальный порт COM3, COM4 или подобный.
После скачивания и установки среды Arduino IDE 2.2.1 или новее вам нужно её настроить для плат ESP32. Для этого в среде Arduino IDE идем Файл -> Параметры и в окне в строке Дополнительные ссылки для Менеджера плат вставьте ссылку https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json и нажмите Ok.

Далее идем Инструменты -> Плата -> Менеджер плат и слева в окне в строке поиска наберите ESP32 и нажмите Enter. Система найдет и предложит подходящие пункты для установки. Выберите esp32 от Espressif Systems и нажмите Установка. У меня всё это уже установлено и доступна кнопка UPDATE. Также эта настройка в Arduino IDE 2.0 описана в  [6]. 

После этого вы можете попробовать плату ESP32 S2 mini в работе, например скачать и загрузить стандартный скетч Blink (мигание встроенным светодиодом). Для скетча в Менеджере плат выберите плату LOLIN S2 Mini.

В качестве исходного для проекта PIR Sensor взял скетч из [1]. В нем демонстрируется вывод показаний температуры на веб-страницу. Для эмуляции показания температуры берется случайное число в пределах от 0 до 10000 и затем преобразуется в показание температуры в пределах от 0 до 100 °C с двумя знаками после запятой. Показания на веб-странице обновляются каждые 4 секунды. Вместо показаний температуры решил выводить на веб-страницу сообщения о срабатывании PIR Sensor'а: Person detected! (Обнаружен человек!) или None (Нет никого) при отсутствии сработки.
Проект состоит из двух файлов - самого скетча PIR_to_Web_page_2.ino и файла index.h. Файл index.h включает в себя содержимое веб-страницы, которое выводится в браузере. Файл index.h должен находиться в одной папке со скетчем. Срабатывание датчика фиксируется на 4 секунды, также на 4 секунды загорается встроенный в плату светодиод.

Наверное, код можно упростить, но я не очень хорошо разбираюсь в кодировании, поэтому в скетче и коде веб-страницы index.h сделал минимум изменений дабы ничего не сломать.
Для работы скетча необходимо подключить библиотеку ESPAsyncWebServer.h. Идем Скетч -> Подключить библиотеку -> Управление библиотеками ...

Слева вверху в строке поиска Управление библиотеками наберите ESPAsyncWebServer. Система подберет вам подходящие библиотеки. Выберите ESPAsyncWebServer от lacamera и нажмите УСТАНОВКА. Будет выдано окно с предупреждением о том, что не все зависимости установлены. Нажмите INSTALL ALL (Установить все).

  

Скетч PIR_to_Web_page_2.ino

/*
 * This ESP32 code is created by esp32io.com
 *
 * This ESP32 code is released in the public domain
 *
 * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-web-server
 */

#include <WiFi.h>
#include <ESPAsyncWebServer.h>
#include "index.h"  // Include the index.h file

String temperatureStr;

const char* ssid = "*******";          // CHANGE IT
const char* password = "***************";  // CHANGE IT

AsyncWebServer server(80);

void setup() {

  pinMode(16, INPUT_PULLUP);
  pinMode(LED_BUILTIN, OUTPUT);

  Serial.begin(115200);

  // Connect to Wi-Fi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }
  Serial.println("Connected to WiFi");

  // Print the ESP32's IP address
  Serial.print("ESP32 Web Server's IP address: ");
  Serial.println(WiFi.localIP());

  // Serve the HTML page from the file
  server.on("/", HTTP_GET, [](AsyncWebServerRequest* request) {
    Serial.println("ESP32 Web Server: New request received:");  // for debugging
    Serial.println("GET /");                                    // for debugging

    request->send(200, "text/html", webpage);
  });

  // Define a route to get the temperature data
  server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest* request) {
    Serial.println("ESP32 Web Server: New request received:");  // for debugging
    Serial.println("GET /");                                    // for debugging

    // Format the temperature with two decimal places
    //String temperatureStr = String(temperature, 2);
    digitalWrite(LED_BUILTIN, LOW);
    int temperature = digitalRead(16);

    if (temperature == 1) {
      temperatureStr = ("Person detected!");
      digitalWrite(LED_BUILTIN, HIGH);
    } else {
      temperatureStr = ("None");
    }

    Serial.println(temperatureStr);

    //String temperatureStr = String("Person detected!");
    request->send(200, "text/plain", temperatureStr);
  });

  // Start the server
  server.begin();
}

void loop() {
  // Your code here
}

index.h

/*
 * This ESP32 code is created by esp32io.com
 *
 * This ESP32 code is released in the public domain
 *
 * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-web-server
 */

#ifndef WEBPAGE_H
#define WEBPAGE_H

const char* webpage = R"=====(
/*
 * This ESP32 code is created by esp32io.com
 *
 * This ESP32 code is released in the public domain
 *
 * For more detail (instruction and wiring diagram), visit https://esp32io.com/tutorials/esp32-web-server
 */

#ifndef WEBPAGE_H
#define WEBPAGE_H

const char* webpage = R"=====(
<!DOCTYPE html>
<html>
<head>
    <title>ESP32 Temperature</title>
</head>
<body>
    <h1>ESP32 PIR Sensor</h1>
    <p>Object: <span style="color: red;"><span id="temperature">Loading...</span> </span></p>
    <script>
        function fetchTemperature() {
            fetch("/temperature")
                .then(response => response.text())
                .then(data => {
                    document.getElementById("temperature").textContent = data;
                });
        }

        fetchTemperature();
         
        setInterval(fetchTemperature, 4000); // Update temperature every 4 seconds
        
    </script>
</body>
</html>
)=====";

#endif

Скачать скетч и библиотеку

Откройте скетч PIR_to_Web_page_2.ino в Arduino IDE. Введите название своей Wi-Fi сети и пароль. Запустите компиляцию скетча (—>). Если компилятор выдает ошибку ... mbedtls_md5_starts_ret' was not declared in this scope ..., то скорее всего причина в самой библиотеке ESPAsyncWebServer. Нашел в интернете в [8] другую библиотеку ESPAsyncWebServer-master (длина zip-файла 286845 байт). Она сработала без ошибок. В Каталоге файлов это файл ESPAsyncWebServer-master(2).zip. Для установки библиотеки пройдите Скетч -> Подключить библиотеку -> Добавить ZIP библиотеку...
Если после установки этой библиотеки компилятор выдает ошибку – установлено несколько библиотек ESPAsyncWebServer, то тогда удалите прежнюю библиотеку. Можно просто в папке libraries удалить каталог ESPAsyncWebServer, но оставить новый каталог ESP_Async_WebServer.

После завершения компиляции скетч начнет загружаться на плату. Щелкните по вкладке Монитор порта, чтобы открыть окно монитора или нажмите Ctrl+Shift+M. Если вы не успели разглядеть выдаваемые сообщения, то прокрутите окно назад. При запуске скетча в окно монитора будет выдан IP адрес. Если окно пустое и ничего не выдается, то нажмите кнопку RST (RESET) на платке ESP32 S2 mini. Плата будет перезагружена и в окно начнут выдаваться сообщения. Запишите выданный IP адрес.

Теперь вам нужно на каком-либо устройстве (смартфоне, десктопе, ноутбуке или планшете) вашей локальной сети в браузере открыть веб-страницу с указанным IP адресом. На экране вы должны увидеть сообщение о срабатывании (Person detected!) или несрабатывании (None) PIR сенсора. Срабатывание фиксируется на четыре секунды и в это время горит встроенный светодиод.
Важно! Скетч будет нормально работать, если где-либо в сети открыта эта веб-страница, так как задержка set interval в 4 секунды формируется в браузере на самой веб-странице.

 

Использованные ресурсы

1. https://esp32io.com/tutorials/esp32-web-server
2. https://www.wemos.cc/en/latest/s2/s2_mini.html
3. https://www.studiopieters.nl/esp32-s2/
4. https://sdelalsamkak.ru/mini-infrakrasnyj-modul-dvizenia-am312-dla-arduino
5. https://myrobot.ru/downloads/driver-cp2102-esp32.php?ysclid=lrnfh6h0vt622147002
6. https://randomnerdtutorials.com/installing-esp32-arduino-ide-2-0/
7. https://blog.squix.org/2016/05/esp8266-peripherals-mini-pir-motion-sensor.html
8. https://github.com/blackhack/ESPAsyncWebServer

Категория: Мои статьи | Добавил: zgo (19.01.2024)
Просмотров: 197 | Теги: ESP32 S2 mini, PIR sensor, AM312, web page, ESPAsyncWebServer, HC-SR501 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Поиск
Друзья сайта
  • Создать сайт
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Все проекты компании
  • Сайт завода zgo.ucoz.ru
  • Забайкальский край
    Дарасун
    Яндекс.Погода


    Хостинг Ucoz опять навязал видеорекламу, но обещает - "мы настроили систему так, чтобы в сутки на уникального посетителя приходилось не более двух показов."
    Совет, как не смотреть видеорекламу.

    Или используйте Uran - браузер от Ucoz без рекламы Скачать

    или подключите к браузеру блокировщик рекламы, например, Adblock Plus или uBlock Origin

    Универсальный декодер кириллицы



    Защита, контроль, управление.



    DONATE (поддержи автора)
    Все статьи авторские, при использовании прошу ссылаться на сайт
    Copyright Дарасунский завод горного оборудования © 2004 - 2024
    Бесплатный конструктор сайтов - uCoz