Spisu treści:
- Krok 1: Sprzęt
- Krok 2: Oprogramowanie
- Krok 3: Informacje o oprogramowaniu
- Krok 4: „Nadchodzący projekt”
- Krok 5: Dalej: Wejście analogowe sondy temperatury ESP32 NTP z korekcją Steinharta-Harta
Wideo: Pojemnościowe wejście dotykowe ESP32 za pomocą „metalowych zatyczek otworów” dla przycisków: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:30
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
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
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”
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:
Buty dotykowe dla niedowidzących: 12 kroków
Buty dotykowe dla niedowidzących: Na całym świecie żyje ponad 37 milionów osób niedowidzących. Większość z tych osób używa laski, kija lub zależy od innej osoby, aby dojeżdżać. To nie tylko zmniejsza ich samodzielność, ale także w niektórych przypadkach szkodzi im
Sterowanie jasnością Sterowanie diodami LED w oparciu o PWM za pomocą przycisków, Raspberry Pi i Scratch: 8 kroków (ze zdjęciami)
Kontrola jasności Sterowanie diodami LED w oparciu o PWM za pomocą przycisków, Raspberry Pi i Scratch: Próbowałem znaleźć sposób, aby wyjaśnić moim uczniom, jak działa PWM, więc wyznaczyłem sobie zadanie kontrolowania jasności diody LED za pomocą 2 przycisków - jeden przycisk zwiększający jasność diody LED a drugi ją przyciemniający. Aby zaprogramować
Użyj 1 wejścia analogowego dla 6 przycisków dla Arduino: 6 kroków
Użyj 1 wejścia analogowego dla 6 przycisków dla Arduino: Często zastanawiałem się, jak mogę uzyskać więcej wejść cyfrowych dla mojego Arduino. Niedawno przyszło mi do głowy, że powinienem móc użyć jednego z wejść analogowych do wprowadzenia wielu wejść cyfrowych. Zrobiłem szybkie wyszukiwanie i znalazłem, gdzie ludzie byli a
Wejście Aux DIY dla radioodtwarzacza samochodowego: 5 kroków (ze zdjęciami)
Wejście Aux DIY dla radioodtwarzacza samochodowego: jeśli chcesz odtwarzać swój telefon lub ipod (czy nadal je robią) i inne odtwarzacze audio, a twoja jednostka główna to stary AF, to jest to rozwiązanie, którego szukasz
Śledzenie ruchu Tfcd 3D poprzez wykrywanie pojemnościowe i wyjście LED: 6 kroków (ze zdjęciami)
Śledzenie ruchu Tfcd 3D poprzez wykrywanie pojemnościowe i wyjście LED: W tej instrukcji wyjaśniono, w jaki sposób można śledzić ruch ręki w przestrzeni 3D przy użyciu zasady wykrywania pojemnościowego. Zmieniając odległość między naładowaną folią aluminiową a ręką, pojemność kondensatora będzie się zmieniać