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

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

Вы можете видеть, что сенсорный датчик 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 бод. Вы увидите новые значения, которые отображаются каждую секунду.

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

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

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

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

Скопируйте следующий код в 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. Коснитесь алюминиевой фольги и увидите, что светодиод горит благодаря такому самодельному датчику касания.

© digitrode.ru