Uproszczone wykrywanie ruchu dzięki płytce ATtiny1627 Curiosity Nano

Przez: Jacob Beningo

Przekazane przez: Północnoamerykańscy redaktorzy DigiKey

Potrzeba wykrywania ruchu w wielu zastosowaniach przemysłowych, komercyjnych, domowych i systemach wbudowanych jest wciąż coraz większa. Problem polega na tym, że wykrywanie ruchu może wymagać drogich czujników cyfrowych, z którymi trudno jest się komunikować. Ponadto i tak konieczne jest opracowanie algorytmów do wykrywania ruchu po odebraniu danych, co jest niemałym przedsięwzięciem.

Do wykrywania ruchu można wykorzystać kilka rozwiązań, ale czujniki podczerwieni są najbardziej popularne. Deweloperzy mogą wybrać rozwiązanie aktywne, które jest powszechne w wielu autonomicznych czujnikach cyfrowych, ale droższe i trudniejsze we wdrożeniu. Alternatywą jest wykorzystanie pasywnych czujników podczerwieni (PIR), które są tańsze i prostsze w użyciu. Czujniki PIR stanowią interfejs analogowy, z którym może współpracować większość mikrokontrolerów.

W niniejszym artykule omówiono podstawy wykrywania ruchu, a następnie pokazano, jak deweloperzy mogą rozpocząć pracę z wykrywaniem ruchu przy użyciu pasywnego czujnika podczerwieni (PIR) podłączonego do układu DM080104 ATtiny 1627 Curiosity Nano firmy Microchip. Następnie zaprezentowano alternatywę dla opracowywania skomplikowanego algorytmu wykrywania ruchu wykorzystującą techniki uczenia maszynowego (ML). Przedstawiono także wskazówki i porady dotyczące rozpoczęcia pracy.

Podstawy wykrywania ruchu

Istnieje wiele technologii wykrywania ruchu, ale podczerwień jest wśród nich najpopularniejsza. Czujniki podczerwieni mogą być aktywne lub bierne. Aktywne czujniki składają się z nadajnika LED podczerwieni (IR LED) i odbiornika z fotodiodą. Czujniki aktywne wykrywają odbicia podczerwieni od obiektów, a następnie wykorzystują odebrane promieniowanie podczerwone do wykrycia, czy obiekt się poruszył. W zależności od zastosowania czujnik aktywny może zawierać kilka fotodiod pozwalających mu „widzieć” kierunek ruchu. Na przykład cztery fotodiody wykrywające opóźnienia lub przyspieszenia sygnałów podczerwieni mogą służyć do wykrywania kierunku ruchu, np. w lewo, prawo, do przodu, do tyłu, w górę, i w dół.

Bierne czujniki podczerwieni nie mogą emitować sygnału podczerwieni - jedynie go odbierają. Pasywny czujnik podczerwieni (PIR) wykorzystuje podczerwień emitowaną przez obiekt zainteresowania w celu wykrywania jego obecności i wszelkich powiązanych ruchów. Na przykład domowe systemy bezpieczeństwa często są wyposażone w czujniki ruchu odbierające promieniowanie podczerwone w celu wykrycia obecności i ruchu człowieka lub zwierzęcia w polu widzenia. Ilustracja 1 przedstawia, co analogowy pasywny czujnik podczerwieni (PIR) może wykryć w różnych warunkach, takich jak brak podczerwieni, obecność podczerwieni, stabilizacja i wyjście (odcięcie) podczerwieni.

Wygląd czujników PIR wykorzystujących podczerwień wysyłaną przez osoby lub obiektyIlustracja 1: pasywne czujniki podczerwieni (PIR) wykorzystują podczerwień emitowaną przed osoby lub obiekty w celu wykrycia obecności lub ruchu. Przedstawione zostały różne etapy detekcji: brak podczerwieni, obecność podczerwieni, stabilność i wyjście (odcięcie). (Źródło ilustracji: Microchip Technology)

Wybierając typ czujnika podczerwieni odpowiedni do danego zastosowania, deweloperzy muszą starannie rozważyć rozwiązania kompromisowe, mając na uwadze następujące parametry:

  • Koszt czujnika
  • Obudowa
  • Interfejs mikrokontrolera
  • Algorytm wykrywania i moc obliczeniowa
  • Zasięg czujnika i zużycie energii

Przyjrzyjmy się przykładowemu systemowi wykrywania ruchu PIR wykorzystującego mikrokontroler ATtiny1627.

Wprowadzenie do mikrokontrolera ATtiny1627 Curiosity Nano

Ciekawym rozwiązaniem wykorzystującym mikrokontroler do detekcji ruchu jest urządzenie ATTiny1627 firmy Microchip Technology. Ten 8-bitowy mikrokontroler ma wbudowany 12-bitowy przetwornik analogowo-cyfrowy (ADC) z funkcją nadpróbkowania do 17 bitów. Zawiera on również wzmacniacz z programowanym wzmocnieniem (PGA), który może regulować czułość. Połączenie tych dwóch funkcji może dać w efekcie niedrogi system wykrywania ruchu, odpowiedni do wielu zastosowań.

Najlepszym niedrogim rozwiązaniem na początek jest użycie płytki rozwojowej DM080104 ATTiny1627 Curiosity Nano (ilustracja 2). Płytka rozwojowa zawiera działający z częstotliwością do 20MHz mikrokontroler AVR MCU z pamięcią flash o pojemności 16kB, pamięcią SRAM o pojemności 2kB i pamięcią EEPROM o pojemności 256B. Płytka zawiera programator, diodę LED i przełącznik użytkownika. Być może najbardziej intrygujące jest to, że płytka została zaprojektowana z myślą o łatwym jej podłączaniu za pośrednictwem listew w celu szybkiego prototypowania lub bezpośredniego przylutowania do płytki prototypowej lub produkcyjnej.

Wygląd płytki ATtiny1627 Curiosity Nano firmy MicrochipIlustracja 2: płytka ATtiny1627 Curiosity Nano ma wbudowany 8-bitowy programowalny mikrokontroler AVR MCU pracujący z częstotliwością do 20MHz, zawierający 16kB pamięci flash, 2kB pamięci SRAM i 256B pamięci EEPROM. Płytkę rozwojową można łatwo przylutować lub podłączyć do większej płytki bazowej, co ułatwia tworzenie systemów prototypowania i produkcyjnych. (Źródło ilustracji: Microchip)

Płytka posiada również kilka dodatkowych funkcji, które mogą być pomocne dla deweloperów. Po pierwsze posiada dwa kanały analizatora logicznego, DGI oraz GPIO. Kanały te mogą być używane do debugowania mikrokontrolera i zarządzania nim. Po drugie, do debugowania lub rejestrowania komunikatów deweloperzy mogą wykorzystać wbudowany wirtualny port COM (CDC). Na koniec, do zapisu i wdrażania oprogramowania można użyć kilku narzędzi. Deweloperzy mogą na przykład użyć oprogramowania Microchip Studio 7.0, kompilatora GCC lub środowiska MPLAB X, które wykorzystuje kompilator GCC albo XC8.

Istnieje także kilkanaście repozytoriów kodów opracowywanych przez firmę Microchip, zawierających różne przykłady dla ATtiny1627. Te repozytoria zawierają przykłady kodów do wykrywania ruchu PIR, pomiaru temperatury, konwersji sygnałów analogowych i nie tylko.

Budowanie stanowiska testowego wykrywania ruchu

Uruchomienie stanowiska testowego wykrywania ruchu jest proste i niezbyt kosztowne. Elementy niezbędne do zbudowania stanowiska testowego to m.in.:

Przyjrzeliśmy się już płytce ATTINY1627 Curiosity Nano. Adapter Nano Curiosity stanowi płytkę nośną dla płytki ATtiny1627 Curiosity Nano, która może być używana do szybkiego prototypowania (ilustracja 3). Dodatkowo, dostępne są trzy gniazda rozszerzeń dla płytek Click MIKROE wraz z łatwo dostępnymi listwami do odbierania sygnałów lub dodawania wyposażenia niestandardowego.

Wygląd adaptera Nano Microchip CuriosityIlustracja 3: adapter Curiosity Nano posiada trzy gniazda rozszerzeń dla płytek Click MIKROE, a także gniazda umożliwiające dostęp do sygnałów i dodanie wyposażenia niestandardowego. (Źródło ilustracji: Microchip)

Wreszcie, czujnik PIR MIKROE-3339, pokazany na ilustracji 4, stanowi pasywny czujnik podczerwieni PL-N823-01 firmy KEMET w prostej, rozszerzalnej formie, którą można bezpośrednio podłączyć do adaptera Curiosity Nano. Ważne jest, aby pamiętać, że czujnik MIKROE-3339 wymaga pewnych modyfikacji w przypadku użycia z przykładowymi układami firmy Microchip do wykrywania ruchu. Modyfikacje te można znaleźć na stronie 10 uwag dotyczących zastosowań urządzenia AN3641 firmy Microchip, „Wykrywanie ruchu niedrogimi czujnikami PIR małej mocy z wykorzystaniem grupy produktów tinyAVR® 2”.

Wygląd płytki Click MIKROE-3339 firmy MikroElektronikaIlustracja 4: płytka Click MIKROE-3339 zawiera czujnik PIR KEMET PL-N823-01 w łatwej do prototypowania formie. (Źródło ilustracji: MikroElektronika)

Oprogramowanie do wykrywania ruchu czujnikami PIR

Istnieje kilka opcji, których deweloperzy mogą użyć do tworzenia rozwiązań programowych do wykrywania ruchu. Pierwszym rozwiązaniem jest użycie przykładowych materiałów przewidzianych przez firmę Microchip w dokumencie AN3641. W serwisie Github można na przykład znaleźć repozytorium kodów do oprogramowania wykrywania ruchu.

Aplikacja działa w kilku fazach. Najpierw aplikacja inicjuje i rozgrzewa czujnik PIR. W drugiej fazie do okresowego próbkowania czujnika PIR używana jest procedura obsługi przerwania przetwornika analogowo-cyfrowego (ADC). W trzeciej fazie dane z przetwornika ADC są uśredniane. Na koniec algorytm wykrywania sygnalizuje, czy wykryto ruch. W przypadku wykrycia aktywności dioda LED na płytce będzie migać, a przez port szeregowy zostanie wysłany sygnał wykrycia. Kompletny schemat programu można zobaczyć na ilustracji 5.

Wygląd schematu oprogramowania dla aplikacji wykrywania ruchu firmy Microchip (kliknij, aby powiększyć)Ilustracja 5: diagram przedstawia schemat oprogramowania aplikacji wykrywania ruchu firmy Microchip. (Źródło ilustracji: Microchip)

Drugą opcją wykrywania ruchu jest wykorzystanie inicjalizacji i procedury przerwań przetwornika analogowo-cyfrowego z przykładów firmy Microchip, ale zamiast używać ich algorytmu wykrywania, należy użyć uczenia maszynowego (ML). Do trenowania sieci neuronowej można wykorzystywać gromadzone dane z czujnika PIR. Model uczenia maszynowego można następnie przekształcić w mikrokontroler z biblioteką TensorFlow Lite for Microcontrollers, stosując system stałopozycyjny z 8-bitową wagą.

Co ciekawe uczenie maszynowe w ten sposób eliminuje potrzebę projektowania przez deweloperów algorytmów do konkretnych potrzeb. Zamiast tego można po prostu pobierać próbki z czujnika w oczekiwanych warunkach i ich w adekwatnych zastosowaniach. Uczenie maszynowe pozwala również deweloperom na szybkie skalowanie i dostosowywanie modeli w miarę dostępności nowych danych.

Wskazówki i porady dotyczące wykrywania ruchu z wykorzystaniem mikrokontrolera ATtiny1627

Deweloperzy, którzy chcą rozpocząć prace nad wykrywaniem ruchu, mają do dyspozycji wiele opcji. Kilka wskazówek i porad do zapamiętania dla deweloperów, które mogą uprościć i przyspieszyć rozwój:

  • Stwórz niedrogą platformę do prototypowania przy użyciu gotowych części.
  • Wykorzystaj przykładowy kod wykrywania ruchu od firmy Microchip, który można znaleźć w serwisie GitHub.
  • Zaprojektuj sprzęt do prototypowania z wykorzystaniem płytki ATtiny1627 Curiosity Nano i bezpośrednio przylutuj płytkę do sprzętu, aby uprościć tworzenie wstępnych prototypów.
  • Aby uzyskać mniejszy, bardziej wydajny i zoptymalizowany kod, użyj kompilatora XC8 firmy Microchip.
  • Przed uruchomieniem aplikacji wykrywania ruchu zapoznaj się z artykułem AN3641 firmy Microchip pt. „Detekcja ruchu niedrogimi czujnikami PIR małej mocy z wykorzystaniem grupy produktów tinyAVR® 2”.
  • Poważnie rozważ użycie uczenia maszynowego dla algorytmu wykrywania ruchu.

Deweloperzy, którzy zastosują się do powyższych wskazówek i porad, przekonają się, że mogą zaoszczędzić sporo czasu i frustracji podczas prototypowania.

Podsumowanie

Wykrywanie ruchu staje się powszechną funkcją w wielu zastosowaniach, zwłaszcza tam, gdzie korzystniejsze są rozwiązania bezdotykowe. Deweloperzy mogą zminimalizować koszty wykazów materiałów (BOM) i uprościć projekty, wykorzystując czujniki PIR oraz niedrogie mikrokontrolery MCU. Mikrokontroler ATtiny1627 stanowi doskonały punkt wyjścia, a firma Microchip oferuje szeroki zakres narzędzi i uwag dotyczących zastosowań, które pomogą deweloperom rozpocząć pracę. Ponadto, aby zminimalizować złożoność procesu opracowywania algorytmu wykrywania ruchu, można użyć uczenia maszynowego.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Informacje o autorze

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo is an embedded software consultant. He has published more than 200 articles on embedded software development techniques, is a sought-after speaker and technical trainer, and holds three degrees, including a Masters of Engineering from the University of Michigan.

Informacje o wydawcy

Północnoamerykańscy redaktorzy DigiKey