Zanim zaczniemy interfejs ESP32 z czujnikiem PIR, musimy wiedzieć, jak działają przerwania i jak je czytać i obsługiwać w ESP32. Omówmy szczegółowo działanie PIR z ESP32.
Oto treść tego artykułu:
1: Co to są przerwania
1.1: przerwa szpilki w ESP32
2: wywołanie przerwania w ESP32 - Micropython
3: Czujnik PIR interfejsów z ESP32 - Micropython
3.1: Czujnik ruchu PIR (HC-SR501)
3.2: Pinout HC-SR501
3.3: Kod
3.4: Wyjście
1: Co to są przerwania
Większość wydarzeń, które mają miejsce w programowaniu ESP32, działa sekwencyjnie, co oznacza wiersz po wykonywaniu linii kodu. Aby obsłużyć i kontrolować zdarzenia, które nie muszą działać podczas sekwencyjnego wykonywania kodu Przerwania są używane.
Na przykład, jeśli chcemy wykonać określone zadanie, gdy wystąpi jakieś specjalne zdarzenie, lub sygnał spustowy jest podawany cyfrowym pinom mikrokontrolera, używamy przerwania.
Z przerwy nie musimy ciągle sprawdzać cyfrowego stanu pinu wejściowego ESP32. Gdy wystąpi przerwanie, procesor zatrzymuje program główny, a nowa funkcja nazywana jest ISR (Rutyna usługi przerwania). Ten ISR Funkcja obsługuje przerwanie spowodowane po tym powrocie do programu głównego i rozpoczęcie wykonywania. Jednym z przykładów ISR jest czujnik ruchu PIR, który generuje przerwanie po wykryciu ruchu.
1.1: przerwa szpilki w ESP32
Zewnętrzne lub sprzętowe przerwanie może być spowodowane dowolnym modułem sprzętowym, taki jak czujnik dotykowy lub przycisk. Przerwanie dotykowe zdarzają się, gdy wykryto dotyk w pinach ESP32 lub przerywanie GPIO można również użyć po naciśnięciu klawisza lub przycisku.
W tym artykule spowodujemy przerwanie, gdy ruch zostanie wykryty za pomocą czujnika PIR z ESP32.
Prawie wszystkie szpilki GPIO oprócz 6 zintegrowanych pinów SPI, które zwykle pojawiają się w 36 Wersji płyty ESP32 nie można użyć do celów wywoływania przerwań. Aby otrzymać zewnętrzne przerwanie, następujące piny, których można użyć w ESP32:
2: Wywołanie przerwania w ESP32 za pomocą Micropython
Aby zaprogramować płytę ESP32 z czujnikiem PIR za pomocą kodu mikropython. Musimy zdefiniować funkcję przerwania. Poniżej znajdują się proste kroki, które pomagają zdefiniować przerwanie dla płyty ESP32.
Krok 1: Zainicjuj funkcję obsługi przerwań: Funkcja obsługi przerwania powinna być zdefiniowana w łatwy sposób, aby mogła szybko wykonywać i wrócić do programu głównego jak najszybciej. Można to zrobić, definiując zmienną globalną, aby można było uzyskać do niej dostęp w dowolnym miejscu w kodzie.
Tutaj w przypadku czujnika PIR będziemy używać pinu GPIO jako światowy zmienny. Funkcja przerwania weźmie pin jako argument i opisuje pin GPIO, który powoduje wystąpienie funkcji przerwania.
def uchwyt_interrupt (pin):Krok 2: Skonfiguruj szpilkę GPIO dla przerwania: Aby uzyskać wartość PIN GPIO, musimy utworzyć obiekt, który zabierze z niego wejście za pomocą Szpilka.W jako drugi argument w naszej klasie PIN. Możemy to zmienić nazwę z dowolnym innym.
pin = pin (13, pin.W)Krok 3: Dołącz przerwanie do pinu GPIO dla czujnika PIR za pomocą metody IRQ ():
Korzystając z poniższego polecenia, możemy ustawić przerwanie na pin, który zdefiniowaliśmy wcześniej.
pir.IRQ (Trigger = pin.IRQ_RISING, HANDLER = HANDE_INTERRUT)IRQ () Metoda jest stosowana do przymocowania przerwania do szpilki. IRQ () akceptuje dwa różne argumenty:
spust: Ten argument wyjaśnia tryb spustu. Poniżej znajdują się trzy tryby:
treser: Ta funkcja zostanie wywołana po uruchomieniu przerwania.
3: Interfejsowanie czujnika PIR z ESP32
Jak teraz omówiliśmy pojęcia przerwania za pomocą ESP32 za pomocą Micropython teraz będziemy interfejować czujnik PIR z ESP32. Tutaj będziemy używać Szpilka.Irq_rising tryb w kodzie mikropython dla czujnika PIR, ponieważ chcemy wyzwolić diodę LED za każdym razem, gdy czujnik PIR wykrywa pewien ruch. Ta dioda LED pozostanie na określonym czasie, a potem się wyłączy.
Wymagane będą następujące komponenty:
Schematyczny dla czujnika PIR z ESP32:
Konfiguracja PIN ESP32 z czujnikiem PIR to:
3.1: Czujnik ruchu PIR (HC-SR501)
Pir jest akronimem dla Pasywne czujniki podczerwieni. Dwa stosowane razem dwa czujniki piroelektryczne, które wykrywają ilość ciepła wokół otoczenia. Oba te czujniki pyroelektryczne leżą jeden po drugim, a gdy obiekt wchodzi w ich zakres, zmiana energii cieplnej lub różnica sygnału między obiema czujnikami powoduje niskie wyjście czujnika PIR. Gdy PIR Out Pin zniknie, możemy ustawić konkretną instrukcję do wykonania (mrugnięcie LED).
Poniżej znajduje się charakterystyka czujnika PIR:
3.2: Pinout HC-SR501
PIR HC-SR501 jest wyposażony w trzy piny. Dwa z nich to piny zasilania dla VCC i GND, a jeden jest pinem wyjściowym dla sygnału spustu.
Poniżej znajduje się opis pinów czujników PIR:
Szpilka | Nazwa | Opis |
1 | VCC | Pin wejściowy dla czujnika Podłącz do pin ESP32 VIN |
2 | NA ZEWNĄTRZ | Wyjście czujnika |
3 | GND | GND czujnika |
3.3: Kod
Teraz program ESP32 Napisz dany kod w edytorze Thonny IDE lub dowolnym innym Micropython IDE i prześlij go do ESP32.
Z PIN importu maszynyNajpierw importowaliśmy szpilka klasa z modułu maszyny i spać metoda dodania opóźnienia. Następnie utworzona jest zmienna pod nazwą ruch. Ta zmienna wykryje, czy ruch zostanie wykryty, czy nie.
Następnie utworzyliśmy funkcję uchwyt_intrup. Za każdym razem, gdy czujnik PIR wykryje ruch, funkcja ta będzie aktywowana. Bierze pin jako parametr wejściowy i wskazuje pin, który powoduje, że przerwanie się wydarzy.
W prostych słowach za każdym razem, gdy PIR wykrywa ruch, uchwyt_intrup Ustaw zmienną ruchu na true i przechowuje pin, co powoduje, że przerwanie się wydarzy. Jedna rzecz do zapamiętania zawsze ogłasza ruch zmienna jako globalna, ponieważ jest potrzebna w całym kodzie.
Poruszając się do przodu, utworzyliśmy dwa obiekty pin, jeden do przechowywania szpilek LED, a drugi przyjmie wyjście czujnika PIR w GPIO Pin 13. Dalej zadeklarowaliśmy szpilkę spustu w ROSNĄCY tryb.
w pętla Część kodu, sprawdzi wartość zmiennej ruchu, gdy stanie się prawdziwa dioda LED włączy podłączone przy pin 4 ESP32. Jeśli zatrzymany ruch LED wyłączy się po 5 sekund.
3.4: Wyjście
W sekcji wyjściowej możemy zobaczyć, że obiekt jest poza zasięgiem czujnika PIR, więc PROWADZONY jest zmieniony WYŁĄCZONY.
Teraz ruch wykryty przez LED czujnika pir NA Do 5 Sec Następnie, jeśli nie zostanie wykryty ruch, pozostanie WYŁĄCZONY Do otrzymania następnego spustu.
Następujące wyjście jest pokazane przez Shell/Terminal w Thonny Ide.
Wniosek
Czujnik PIR z ESP32 może pomóc w wykryciu ruchu różnych rzeczy. Korzystając z funkcji przerwania w mikropythonie z ESP32, możemy uruchomić odpowiedź na określonym styku GPIO. Po wykryciu zmiany funkcja przerwania zostanie uruchomiona, a dioda LED włączy.