Spisu treści:

Pojemnościowe wejście dotykowe ESP32 za pomocą „metalowych zatyczek otworów” dla przycisków: 5 kroków (ze zdjęciami)
Pojemnościowe wejście dotykowe ESP32 za pomocą „metalowych zatyczek otworów” dla przycisków: 5 kroków (ze zdjęciami)

Wideo: Pojemnościowe wejście dotykowe ESP32 za pomocą „metalowych zatyczek otworów” dla przycisków: 5 kroków (ze zdjęciami)

Wideo: Pojemnościowe wejście dotykowe ESP32 za pomocą „metalowych zatyczek otworów” dla przycisków: 5 kroków (ze zdjęciami)
Wideo: Mikrofon do podcastów i konferencji Saramonic SR MV2000 2024, Lipiec
Anonim
Image
Image
Sprzęt komputerowy
Sprzęt komputerowy

Gdy finalizowałem decyzje projektowe dla nadchodzącego projektu opartego na ESP32 WiFi Kit 32 wymagającego wprowadzania trzech przycisków, jednym zauważalnym problemem było to, że WiFi Kit 32 nie posiada jednego mechanicznego przycisku, ale tylko trzy mechaniczne przyciski do wprowadzania danych. Jednak zestaw WiFi 32 ma wiele pojemnościowych wejść dotykowych, więc poświęciłem trochę czasu na montowanie sprzętu, pisanie oprogramowania i testowanie projektu z trzema przyciskami, wykorzystując funkcję pojemnościowego wejścia dotykowego ESP32 i trzy metalowe zaślepki otworów 3/8 dla guziki.

Jak odkrył każdy, kto eksperymentował z pojemnościowymi wejściami dotykowymi ESP32, wejścia dotykowe są z pewnością na tyle hałaśliwe, że wymagają filtrowania w celu niezawodnego wykrywania danych wejściowych. Aby zminimalizować całkowitą liczbę części w nadchodzącym projekcie, ustaliłem, że prosty filtr cyfrowy sterowany przerwaniami (bardziej „debounce” niż filtr, ale dygresja), w przeciwieństwie do dodawania zewnętrznego sprzętu filtrującego, może wyciszyć zaszumione wejścia. A po testach stało się jasne, że wejścia pojemnościowe ESP32, trzy metalowe zaślepki otworów 3/8” i jakieś cyfrowe oprogramowanie „filtrujące” rzeczywiście zapewnią niezawodne wejście z trzema przyciskami dla tego projektu.

Jeśli więc jesteś zainteresowany testowaniem wejścia pojemnościowego z filtrowaniem cyfrowym na ESP32, zamieściłem kod źródłowy "Buttons.ino" w formacie środowiska Arduino wraz z instrukcjami montażu i programowania oraz krótkim opisem kodu źródłowego, dla odkryłem, że jest to wysoce niezawodne wejście z trzema przyciskami.

I jak zwykle zapomniałem plik lub dwa lub kto wie co jeszcze, więc jeśli masz jakieś pytania, nie wahaj się zapytać, ponieważ popełniam wiele błędów.

I ostatnia uwaga, nie otrzymuję rekompensaty w żadnej formie, w tym między innymi bezpłatnych próbek, za którykolwiek z komponentów użytych w tym projekcie

Krok 1: Sprzęt

Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy
Sprzęt komputerowy

W projekcie wykorzystano następujący sprzęt:

  • Jeden zestaw WiFi 32.
  • Trzy metalowe zaślepki do otworów 3/8".
  • Trzy, 4 "odcinki drutu 28 awg.

Aby zmontować sprzęt, wykonałem następujące kroki:

  • Zdjąć i ocynować końce każdego drutu o długości 4 cali, jak pokazano.
  • Przylutowałem pierwszy przewód do pinu 13 ESP32 (wejście TOUCH4 lub "T4").
  • Drugi przewód przylutowałem do pinu 12 ESP32 (wejście TOUCH5 lub „T5”).
  • Przylutowałem trzeci przewód do pinu 14 ESP32 (wejście TOUCH6 lub "T6").
  • Przylutowano po jednej z trzech metalowych zaślepek otworów 3/8" do wolnych końców trzech długości drutu.

Krok 2: Oprogramowanie

Oprogramowanie
Oprogramowanie

Plik „Buttons.ino” to plik środowiska Arduino zawierający oprogramowanie do projektowania. Oprócz tego pliku będziesz potrzebować biblioteki graficznej „U8g2lib” dla wyświetlacza OLED WiFi Kit32 (więcej informacji na temat tej biblioteki znajdziesz na

Po zainstalowaniu biblioteki graficznej U8g2lib w katalogu Arduino i załadowaniu "Buttons.ino" do środowiska Arduino, skompiluj i pobierz oprogramowanie do ESP32.

Po pobraniu i uruchomieniu w górnym wierszu wyświetlacza powinien pojawić się napis „Przyciski”, a w drugim wierszu wyświetlacza „1 2 3” jako wskaźniki przycisków. Poniżej każdego ze wskaźników przycisków 1, 2, 3 znajdują się niefiltrowane wartości odczytu dotykowego, a poniżej każdego z nich znajdują się wskaźniki naciśnięcia przycisku („1” dla wciśniętego, „0” dla nienaciśniętego). Jak widać na filmie (co zostało potwierdzone w testach długoterminowych), filtr oprogramowania zapewnia niezawodne wykrywanie wejścia przycisku bez fałszywego wyzwalania.

Krok 3: Informacje o oprogramowaniu

Oprogramowanie zawiera trzy główne sekcje kodu; Arduino wymagało sekcji "setup()" i "loop()" oraz sekcji "Przerwania". Sekcja setup() zawiera kod niezbędny do zainicjowania usług OLED i przerwań. Funkcje konfiguracji OLED są opisane w powyższym łączu. Funkcje konfiguracji usługi przerwań są następujące:

  • "timerLoopSemaphore = xSemaphoreCreateBinary()" tworzy semafor dla "InterruptService()" (procedura obsługi przerwań), aby poinformować loop(), kiedy nadejdzie czas wykonania przejścia pętli.
  • „timerInterruptService = timerBegin(0, 80, true)” tworzy licznik czasu przy użyciu licznika sprzętowego 0 z preskalowaniem 80.
  • "timerAttachInterrupt(timerInterruptService, & InterruptService, true)" dołącza InterruptService() do timera.
  • „timerAlarmWrite(timerInterruptService, 1000, true)” ustawia częstotliwość obsługi przerwań na 1000 Hz.
  • "timerAlarmEnable(timerInterruptService)" uruchamia alarm timera, a tym samym przerywa usługę.

Po zakończeniu konfiguracji wprowadza się loop() i natychmiast zatrzymuje się na linii:

if(xSemaphoreTake(timerLoopSemaphore, portMAX_DELAY) == pdTRUE), co oznacza, że loop() będzie czekać w tym momencie, aż nadejdzie semafor z InterruptService(). Po nadejściu semafora wykonywany jest kod loop(), aktualizując wyświetlacz OLED danymi przycisku, a następnie powracając na górę, aby ponownie oczekiwać na następny semafor. Przy InterruptService() działającym z częstotliwością 1000 Hz i wartością LOOP_DELAY równą 30, loop() jest wykonywane co 30 ms lub z częstotliwością aktualizacji wyświetlacza 33,333 Hz. Chociaż jest to wyższa częstotliwość odświeżania wyświetlacza niż wymagana dla większości aplikacji ESP32, użyłem tego ustawienia, aby zilustrować reakcję filtra. Przetestowałem i określiłem czas wymagany do wykonania pojedynczego przejścia loop() na 20 ms.

InterruptService() jest wywoływana przez zegar utworzony w setup() z częstotliwością 1000 Hz. Po wywołaniu aktualizuje dwa liczniki, nLoopDelay i nButtonDelay. Gdy nLoopDelay jest odliczane w dół do zera, wysyła semafor pozwalający loop() na wykonanie pojedynczego przejścia, a następnie resetuje nLoopDelay. Gdy nButtonDelay jest odliczany do zera, to również jest resetowany, a następnie uruchamiany jest przycisk "filtry".

Każdy filtr przycisku ma unikalny licznik filtra (np. nButton1Count, nButton2Count i nButton3Count). Dopóki wartość wejścia dotykowego przypisana do przycisku jest większa lub równa zdefiniowanej wartości progowej (BUTTON_THRESHHOLD), licznik filtra przypisany do przycisku i przycisku pozostaje zero. Jeżeli wartość wejścia dotykowego przypisana do przycisku jest mniejsza niż zdefiniowany próg, licznik filtra przypisany do przycisku jest zwiększany o jeden co 20ms. Gdy licznik filtra przekroczy wartość filtra przycisku (BUTTON_FILTER), przycisk jest uważany za „naciśnięty”. Efektem tej metody jest utworzenie filtru wymagającego 80ms (20ms nButtonDelay * 4ms nButtonCountN, gdzie N jest numerem przycisku) ciągłych wartości wejściowych dotyku poniżej zdefiniowanego progu, aby uwzględnić faktycznie naciśnięty przycisk. Za każdym razem, gdy mniej niż 80 ms jest uważane za „usterkę” i jest odrzucane przez filtr.

Biorąc pod uwagę ten krótki opis, jeśli masz jakiekolwiek pytania, możesz je zadać, a ja dołożę wszelkich starań, aby na nie odpowiedzieć.

Mam nadzieję, że Ci się podobało!

Krok 4: „Nadchodzący projekt”

ten
ten

Nadchodzący projekt, „Intelligrill® Pro”, to monitor wędzarniczy z podwójną sondą temperatury, wyposażony w:

  • Obliczenia sond temperatury Steinhart-Hart (w przeciwieństwie do tabel „przeglądowych”) dla zwiększenia dokładności.
  • Przewidywany czas do zakończenia sondy 1 uwzględniający zwiększoną dokładność uzyskaną z obliczeń Steinharta-Harta.
  • Druga sonda, sonda 2, do monitorowania temperatury wędzarni (ograniczona do 32 do 399 stopni).
  • Pojemnościowe sterowanie dotykowe (jak w tej instrukcji).
  • Zdalny monitoring oparty na sieci WIFI (ze stałym adresem IP, umożliwia monitorowanie postępów palacza z dowolnego miejsca, w którym jest dostępne połączenie internetowe).
  • Rozszerzony zakres temperatur (ponownie od 32 do 399 stopni).
  • Dźwiękowe alarmy zakończenia zarówno w nadajniku Intelligrill®, jak i na większości urządzeń monitorujących obsługujących Wi-Fi.
  • Wyświetlanie temperatury w stopniach F lub C.
  • Format czasu to GG:MM:SS lub GG:MM.
  • Wyświetlacz baterii w woltach lub % naładowania.
  • A już wkrótce wyjście PID dla palaczy opartych na ślimaku.

„Intelligrill® Pro” jest testowany, aby stać się najbardziej dokładnym, bogatym w funkcje i niezawodnym Intelligrill® opartym na HTML, jaki zaprojektowałem.

Wciąż jest w fazie testów, ale dzięki posiłkom, które pomaga przygotować podczas testów, przytyłem więcej niż kilka kilogramów.

Ponownie, mam nadzieję, że Ci się spodoba!

Krok 5: Dalej: Wejście analogowe sondy temperatury ESP32 NTP z korekcją Steinharta-Harta

Przygotuj się na odkurzenie swoich podręczników do algebry.

Zalecana: