Оглавление:
- Шаг 1: Оборудование
- Шаг 2: Программное обеспечение
- Шаг 3: О программном обеспечении
- Шаг 4: «Предстоящий проект»
- Шаг 5: Далее: аналоговый вход датчика температуры ESP32 NTP с поправкой Стейнхарта-Харта
Видео: Емкостный сенсорный ввод ESP32 с использованием металлических заглушек для кнопок: 5 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
Когда я завершал разработку проектных решений для предстоящего проекта на основе ESP32 WiFi Kit 32, требующего ввода трех кнопок, одна заметная проблема заключалась в том, что WiFi Kit 32 не имел одной механической кнопки, а только трех механических кнопок для ввода. Однако Wi-Fi Kit 32 действительно имеет множество емкостных сенсорных входов, поэтому я потратил некоторое время на сборку оборудования, написание программного обеспечения и тестирование конструкции ввода с тремя кнопками с использованием функции емкостного сенсорного ввода ESP32 и трех металлических заглушек 3/8 дюйма для кнопки.
Любой, кто экспериментировал с емкостными сенсорными входами ESP32, обнаружил, что сенсорные входы, безусловно, достаточно шумные, чтобы требовать фильтрации для надежного обнаружения входа. Чтобы свести к минимуму общее количество деталей для предстоящего проекта, я определил, что простой цифровой фильтр, управляемый прерываниями (больше похожий на «противодействие», чем на фильтр, но я отвлекся), в отличие от добавления внешнего аппаратного фильтра, может уменьшить шум на входе.. И после тестирования стало очевидно, что емкостные входы ESP32, три металлических заглушки 3/8 дюйма и некоторое программное обеспечение для цифровой «фильтрации» действительно обеспечат надежный трехкнопочный вход для данной конструкции.
Поэтому, если вы заинтересованы в тестировании емкостного входа с цифровой фильтрацией на ESP32, я включил исходный код «Buttons.ino» в формат среды Arduino вместе с инструкциями по сборке и программированию, а также краткое описание исходного кода для я обнаружил, что это очень надежный трехкнопочный ввод.
И, как обычно, я, вероятно, забыл один или два файла или неизвестно что еще, поэтому, если у вас есть какие-либо вопросы, не стесняйтесь спрашивать, поскольку я делаю много ошибок.
И последнее замечание: я не получаю никакой компенсации ни в какой форме, включая, помимо прочего, бесплатные образцы, за любой из компонентов, используемых в этом дизайне.
Шаг 1: Оборудование
В конструкции используется следующее оборудование:
- Один, комплект Wi-Fi 32.
- Три металлических заглушки 3/8 дюйма.
- Три 4-дюймовых отрезка провода 28awg.
Для сборки фурнитуры я выполнил следующие действия:
- Зачистил и залудил концы каждого провода длиной 4 дюйма, как показано.
- Припаял первый провод к контакту 13 ESP32 (вход TOUCH4 или «T4»).
- Припаял второй провод к контакту 12 ESP32 (вход TOUCH5 или «T5»).
- Третий провод припаял к контакту 14 ESP32 (вход TOUCH6 или "T6").
- Припаял по одной из трех металлических заглушек 3/8 дюйма к свободным концам трех отрезков проводов.
Шаг 2: Программное обеспечение
Файл «Buttons.ino» - это файл среды Arduino, содержащий программное обеспечение для проектирования. В дополнение к этому файлу вам понадобится графическая библиотека «U8g2lib» для OLED-дисплея WiFi Kit32 (дополнительную информацию об этой библиотеке см. На
С графической библиотекой U8g2lib, установленной в вашем каталоге Arduino, и "Buttons.ino", загруженным в среду Arduino, скомпилируйте и загрузите программное обеспечение в ESP32.
После загрузки и запуска в верхней строке дисплея должно быть написано «Кнопки», а во второй строке дисплея должно быть написано «1 2 3» в качестве индикаторов кнопок. Под каждым из 1, 2, 3 индикаторов кнопок находятся неотфильтрованные значения считывания касанием, а под каждым из них - индикаторы нажатия кнопок («1» - нажатие, «0» - не нажатие). Как видно на видео (и это подтверждено длительными испытаниями), программный фильтр обеспечивает надежное обнаружение нажатия кнопки без ложного срабатывания.
Шаг 3: О программном обеспечении
Программное обеспечение содержит три основных раздела кода; для Arduino требуются разделы «setup ()» и «loop ()», а также раздел «Прерывания». Раздел setup () содержит код, необходимый для инициализации OLED и служб прерывания. Функции настройки OLED описаны по ссылке выше. Функции настройки службы прерывания следующие:
- «timerLoopSemaphore = xSemaphoreCreateBinary ()» создает семафор для «InterruptService ()» (подпрограммы обслуживания прерывания), чтобы сообщить loop (), когда пришло время выполнить проход цикла.
- «timerInterruptService = timerBegin (0, 80, true)» создает таймер с использованием аппаратного таймера 0 с предварительным масштабированием 80.
- «timerAttachInterrupt (timerInterruptService, & InterruptService, true)» присоединяет InterruptService () к таймеру.
- «timerAlarmWrite (timerInterruptService, 1000, true)» устанавливает частоту обслуживания прерывания в 1000 Гц.
- «timerAlarmEnable (timerInterruptService)» запускает аварийный сигнал таймера и, таким образом, прерывает обслуживание.
После завершения настройки вводится loop (), который сразу останавливается на строке:
если (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), это означает, что на этом этапе loop () будет ждать, пока не прибудет семафор из InterruptService (). Когда прибывает семафор, выполняется код loop (), обновляя OLED-дисплей данными кнопки, а затем возвращаясь наверх, чтобы снова ожидать следующего семафора. Если InterruptService () работает на частоте 1000 Гц, а значение LOOP_DELAY равно 30, loop () выполняется каждые 30 мсек или с частотой обновления дисплея 33,333 Гц. Хотя это более высокая частота обновления дисплея, чем требуется для большинства приложений ESP32, я использовал этот параметр, чтобы проиллюстрировать отзывчивость фильтра. Я проверил и определил, что время, необходимое для выполнения одного прохода loop (), составляет 20 мс.
InterruptService () вызывается таймером, созданным в setup (), с частотой 1000 Гц. При вызове обновляет два счетчика обратного отсчета, nLoopDelay и nButtonDelay. Когда nLoopDelay обратный отсчет до нуля, он отправляет семафор, разрешающий loop () выполнить один проход, а затем сбрасывает nLoopDelay. Когда nButtonDelay обратный отсчет до нуля, он тоже сбрасывается, после чего выполняется кнопка «фильтры».
Каждый фильтр кнопки имеет уникальный счетчик фильтра (например, nButton1Count, nButton2Count и nButton3Count). Пока значение сенсорного ввода, назначенное кнопке, больше или равно заданному пороговому значению (BUTTON_THRESHHOLD), счетчик фильтра, назначенный кнопке и кнопке, остается нулевым. Если значение сенсорного ввода, назначенное кнопке, меньше заданного порога, счетчик фильтра, назначенный кнопке, увеличивается на единицу каждые 20 мсек. Когда счетчик фильтра превышает значение фильтра кнопки (BUTTON_FILTER), кнопка считается "нажатой". Результатом этого метода является создание фильтра, требующего 80 мс (20 мс nButtonDelay * 4 мс nButtonCountN, где N - номер кнопки) значений непрерывного сенсорного ввода ниже определенного порогового значения, чтобы считать кнопку фактически нажатой. Время менее 80 мс считается "ошибкой" и отклоняется фильтром.
Учитывая это краткое описание, если у вас есть какие-либо вопросы, задавайте их, и я постараюсь ответить на них.
Надеюсь, вам понравилось!
Шаг 4: «Предстоящий проект»
Предстоящий проект «Intelligrill® Pro» - это монитор для коптильни с двойным датчиком температуры, включающий:
- Расчеты датчика температуры Steinhart-Hart (в отличие от «справочных» таблиц) для повышения точности.
- Прогнозируемое время до завершения на зонде 1 с учетом повышенной точности, полученной на основе расчетов Стейнхарта-Харта.
- Второй датчик, датчик 2, для контроля температуры курильщика (от 32 до 399 градусов).
- Емкостные сенсорные элементы управления вводом (как в этой инструкции).
- Удаленный мониторинг на основе WIFI (с фиксированным IP-адресом, позволяет отслеживать прогресс курильщика из любого места, где есть подключение к Интернету).
- Расширенный температурный диапазон (снова от 32 до 399 градусов).
- Звуковые сигналы завершения как внутри передатчика Intelligrill®, так и на большинстве устройств мониторинга с поддержкой Wi-Fi.
- Отображение температуры в градусах F или C.
- Формат времени в формате ЧЧ: ММ: СС или ЧЧ: ММ.
- Отображение заряда батареи в вольтах или в процентах заряда.
- Скоро появится выход PID для курильщиков со шнеком.
«Intelligrill® Pro» тестируется, чтобы стать наиболее точным, функциональным и надежным Intelligrill® на основе HTML, который я разработал.
Он все еще находится на стадии тестирования, но с едой, которую он помогает готовить во время тестирования, я поправился более чем на несколько фунтов.
Опять же, надеюсь, вам понравится!
Шаг 5: Далее: аналоговый вход датчика температуры ESP32 NTP с поправкой Стейнхарта-Харта
Будьте готовы стереть пыль со своих учебников по алгебре ради этого.
Рекомендуемые:
Емкостный стилус для одноразовой ручки: 6 шагов (с изображениями)
Емкостный стилус для одноразовой ручки: у меня есть дюжина рулонов Uni-ball Micro Roller Ball. Хочу добавить в колпачок на одном из них емкостный стилус. Затем колпачок и стилус можно перемещать от одного пера к другому, когда в каждом из них заканчиваются чернила. Я благодарен Джейсону Поэлу Смиту за его
ДОБАВИТЬ емкостный сенсорный переключатель в свои проекты: 7 шагов
ДОБАВИТЬ емкостной сенсорный переключатель в свои проекты: как добавить емкостной сенсорный переключатель в свои проекты дома Привет, друзья, электронные поделки, в этом уроке я покажу вам, как можно дешево добавить емкостной сенсорный переключатель в свои электронные проекты и реализовать свой проект своими руками профессиональный вид
СЕНСОРНЫЙ ПЕРЕКЛЮЧАТЕЛЬ - Как сделать сенсорный переключатель, используя транзистор и макетную плату: 4 шага
СЕНСОРНЫЙ ПЕРЕКЛЮЧАТЕЛЬ | Как сделать сенсорный переключатель, используя транзистор и макетную плату. Сенсорный переключатель - это очень простой проект, основанный на применении транзисторов. В этом проекте используется транзистор BC547, который действует как сенсорный переключатель. ОБЯЗАТЕЛЬНО ПРОСМОТРИТЕ ВИДЕО, КОТОРОЕ ДАЕТ ВАМ ПОЛНУЮ ПОДРОБНУЮ ИНФОРМАЦИЮ О ПРОЕКТЕ
Используйте 1 аналоговый вход для 6 кнопок для Arduino: 6 шагов
Используйте 1 аналоговый вход для 6 кнопок для Arduino: я часто задавался вопросом, как я могу получить больше цифровых входов для моей Arduino. Недавно мне пришло в голову, что я смогу использовать один из аналоговых входов для ввода нескольких цифровых входов. Я сделал быстрый поиск и нашел, где люди были ab
Пользовательский Arduino для сохранения кнопок CAN на рулевом колесе с новой автомобильной стереосистемой: 9 шагов (с изображениями)
Пользовательский Arduino для сохранения кнопок на рулевом колесе CAN с новой автомобильной стереосистемой: я решил заменить оригинальную автомобильную стереосистему в моем Volvo V70 -02 на новую стереосистему, чтобы я мог наслаждаться такими вещами, как mp3, bluetooth и громкая связь. В моей машине есть элементы управления стереосистемой на рулевом колесе, которые я хотел бы по-прежнему использовать