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

 



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, датчик касания




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

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

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