цифровая электроника
вычислительная техника
встраиваемые системы

 

ESP32 и линии емкостного датчика

Автор: Mike(admin) от 24-06-2019, 04:35

Работаем с линиями емкостного датчика ESP32 в Arduino IDE


ESP32 имеет 10 емкостных сенсорных линий GPIO. Эти GPIO могут чувствовать изменения во всем, что содержит электрический заряд, например, в коже человека. Таким образом, они могут обнаружить изменения, возникающие при прикосновении пальцем к линии.


ESP32 и линии емкостного датчика

Эти контакты могут быть легко встроены в емкостные панели и заменять механические кнопки. Кроме того, сенсорные контакты могут также использоваться в качестве источника пробуждения, когда ESP32 находится в глубоком сне.


Взгляните на распиновку платы с ESP32, чтобы найти 10 различных сенсорных датчиков – сенсорные контакты выделены розовым цветом.


ESP32 и линии емкостного датчика

Вы можете видеть, что сенсорный датчик 0 соответствует GPIO 4, сенсорный датчик 2 - GPIO 2 и так далее. Считать данные сенсорного датчика просто. В Arduino IDE вы используете функцию touchRead(), которая принимает в качестве аргумента GPIO, который вы хотите прочитать. Мы запрограммируем ESP32 с помощью Arduino IDE, поэтому перед продолжением убедитесь, что у вас установлено дополнение ESP32.


Давайте посмотрим, как эта функция работает, используя пример из библиотеки. В Arduino IDE выберите «Файл» - «Примеры» - «ESP32» - «Touch» и откройте скетч TouchRead.



void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("ESP32 Touch Test");
}

void loop() {
  Serial.println(touchRead(4));  // получить значение контакта Touch 0 = GPIO 4
  delay(1000);
}

В этом примере считывается сенсорный вывод 0 и отображаются результаты в последовательном мониторе. Контакт T0 соответствует GPIO 4, как мы уже видели в распиновке. Используйте функцию touchRead() и передайте в качестве аргумента номер вывода, данные с которого вы хотите прочитать. В этом случае используется T0, который является емкостным датчиком 0 на GPIO 4. Вы можете передать номер датчика (T0) или номер GPIO (4).


Теперь загрузите код на свою плату ESP32. Убедитесь, что вы выбрали правильную плату и COM-порт. Подключите перемычку к GPIO4. Дотроньтесь до металлической части этой перемычки, чтобы датчик чувствовал прикосновение. В окне IDE Arduino перейдите в Инструменты (Tools) и откройте последовательный монитор (Serial Monitor) со скоростью 115200 бод. Вы увидите новые значения, которые отображаются каждую секунду.


ESP32 и линии емкостного датчика

Вы также можете использовать последовательный плоттер (SerialPlotter), чтобы лучше видеть значения.


ESP32 и линии емкостного датчика

Вы можете использовать эту функцию для управления выходами. В этом примере мы создадим простую светодиодную схему с сенсорным управлением. Когда вы касаетесь пальцем GPIO, загорается светодиод. Возьмите кусок алюминиевой фольги, обрежьте маленький квадрат и оберните его вокруг провода, как показано на следующем изображении.


ESP32 и линии емкостного датчика

После запуска предыдущего кода вернитесь к последовательному монитору. Теперь коснитесь алюминиевой фольги, и вы увидите, что значения снова меняются.


ESP32 и линии емкостного датчика

В нашем случае, когда мы не касаемся вывода, нормальное значение выше 70. А когда мы прикасаемся к алюминиевой фольге, результат падает до некоторого значения ниже 10. Таким образом, мы можем установить пороговое значение, и когда показание становится ниже этого значения, загорается светодиод. Хорошим пороговым значением в этом случае является, например, 20. Добавьте светодиод в вашу схему, следуя следующей схеме подключения. В этом случае мы подключаем светодиод к GPIO16.


ESP32 и линии емкостного датчика

Скопируйте следующий код в Arduino IDE.



// установить номера контактов
const int touchPin = 4; 
const int ledPin = 16;

// замените вашим пороговым значением
const int threshold = 20;
// переменная для хранения значения сенсорной линии
int touchValue;

void setup(){
  Serial.begin(115200);
  delay(1000);
  // инициализировать светодиодный вывод в качестве выхода
  pinMode (ledPin, OUTPUT);
}

void loop(){
  // прочитать состояние значения кнопки:
  touchValue = touchRead(touchPin);
  Serial.print(touchValue);
  // проверим, находится ли touchValue ниже порога
  // если это так, установим ledPin в HIGH
  if(touchValue < threshold){
    // включить светодиод
    digitalWrite(ledPin, HIGH);
    Serial.println(" - LED on");
  }
  else{
    // выключить светодиод
    digitalWrite(ledPin, LOW);
    Serial.println(" - LED off");
  }
  delay(500);
}

Этот код считывает значение касания с определенного нами контакта, и в результате загорается светодиод, когда выходное значение становится ниже порогового значения. Это означает, что когда вы помещаете палец на алюминиевую пластину, загорается светодиод. Загрузите скетч на свой ESP32. Коснитесь алюминиевой фольги и увидите, что светодиод горит благодаря такому самодельному датчику касания.


ESP32 и линии емкостного датчика



© digitrode.ru


Теги: ESP32, датчик касания



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий