Skocz do zawartości

Kurs STM32L4 – #16 – zdalne sterowanie IR, NEC (liczniki)


Pomocna odpowiedź

Kurs STM32L4 – #16 – zdalne sterowanie IR, NEC (liczniki)

Jeszcze długo w wielu zastosowaniach nic nie zastąpi pilota IR, który po prostu zawsze działa. Dlatego tym razem wykorzystamy niezastąpione liczniki, aby dekodować transmisję NEC. Nie pójdziemy na łatwiznę, więc bibliotekę do tej komunikacji stworzymy samodzielnie (od zera).

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link to post
Share on other sites

Przypominamy: w komentarzach do kursów rozmawiamy wyłącznie na tematy związane z konkretnym kursem. Mile widziane są również informacje od osób, które korzystały wcześniej z naszych poradników. Wszystko po to, aby kursanci, którzy mają zamiar korzystać z tego kursu nie musieli "przedzierać" się przez dziesiątki postów na inne tematy. Tematy na pytanie, które nie są związane z kursem można zadawać na naszym forum o mikrokontrolerach.

Link to post
Share on other sites

Czy faktycznie nic nie zastąpi pilota IR? Czas pokaże, ale na pewno jeszcze długo będą one spotykane w wielu zastosowaniach, więc warto wiedzieć jak na STM32L4 dekodować sygnały, które wysyłane są w podczerwieni. Dlatego w tej części kursu opisaliśmy jak w prosty sposób odbierać sygnały z pilotów pracujących w standardzie NEC - oczywiście wszystko sprzętowo (na liczniku). Mam nadzieję, że będzie przydatne 😉

Link to post
Share on other sites

Za nami kolejna część poświęcona modułom licznikowym, mam nadzieję, że udało nam się pokazać ogromne możliwości jakie te peryferia oferują. Ostatnie dwie części się do pewnego stopnia uzupełniają, w poprzedniej zobaczyliśmy jak można wykorzystać timery do wysyłania danych (do diod WS2812B), a teraz poznaliśmy sposób na odbieranie danych przesłanych z pilota podczerwieni. Możliwości układów licznikowych oczywiście się na tym nie kończą i można za ich pomocą zrealizować komunikację przez właściwie dowolny interfejs cyfrowy.

W naszym kursie zajmujemy się tylko odbieraniem danych przesyłanych za pomocą podczerwieni, ale warto chociaż wspomnieć o możliwości nadawania sygnału - moglibyśmy sami sterować innymi urządzeniami, jak chociażby telewizorem. Protokół komunikacji już znamy, widzieliśmy jak wysyłać dane do WS2812B, więc napisanie programu nie powinno stanowić problemu.

Pozostaje jeszcze kwestia generacji częstotliwości nośnej - jak pamiętamy, dioda w pilocie nie świeci ciągle, ale podczas nadawania miga z częstotliwością 38kHz. Warto więc wspomnieć, że nasz mikrokontroler posiada timery wyposażone w specjalny tryb działania, przeznaczony do generowania sygnału IR. Dokładniej rzecz biorąc, do takiej transmisji wykorzystywane są dwa timery: TIM17 i TIM16

irtim.thumb.png.dfa8a822f718b8405fa4745ead712905.png

Pierwszy, czyli TIM17 generuje częstotliwość nośną, w naszym przypadku 38kHz. Drugi timer, TIM16 odpowiada za modulację, czyli sterowanie przesyłanymi danymi.

  • Lubię! 2
Link to post
Share on other sites
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Ze względu na kilka prywatnych tematów musiałem na trochę odłożyć eksperymentowanie, ale cały czas śledzę nowe odcinki kursu. Strasznie kusicie, bo każdy kolejny odcinek wydaje się ciekawszy. Nie ma innej opcji, w weekend wyciągam znów zestaw i wracam do nadrabiania zaległości. Kiedyś korzystałem z pilota na podczerwień w połączeniu z Arduino, ale miałem wtedy dużo problemów, bo ciężko było rozbudować program w taki sposób, aby transmisja nadal działała. Wygląda na to, że po prostu korzystałem ze słabej metody (no, ale miałem wtedy też troszkę mniejsze doświadczenie). Z chęcią poczytam jak to powinno być zrobione porządnie. Dzięki Elvis!

  • Lubię! 2
Link to post
Share on other sites

Cześć, napotkałem pewien problem w trakcie przerabiania kursu, otóż dane odczytywane z odbiornika nie pokrywają mi się z oczekiwanymi długościami impulsów. Próbowałem podłączyć elementy z dokumentacji zamieszczinej przez was jednak nie przyniosło to oczekiwanego rezultatu ;(
Czy macie może dla mnie jakąś poradę w tym względzie?

Screenshot 2021-07-11 152424.jpg

Link to post
Share on other sites

@Pennsatucky witam na forum 🙂 Nie masz zarejestrowanego zestawu do tego kursu, ale zakładam, że korzystasz z właściwych elementów. W takiej sytuacji proponowałbym sprawdzić (zgodnie z sugestią z kursu), czy poprawnie skonfigurowałeś zegary. Czy układ jest na pewno taktowany z 80 MHz, a licznik ma ustawione poprawny preskaler?

Link to post
Share on other sites

Jak zwykle, kolejny ciekawy odcinek.

Elvis napisał:

Cytat

Pozostaje jeszcze kwestia generacji częstotliwości nośnej ... dioda w pilocie ... miga z częstotliwością 38kHz ... nasz mikrokontroler posiada timery wyposażone w specjalny tryb ... wykorzystywane są TIM17 i TIM16

Bardzo cenna wskazówka, ale zastanawiam się nad trochę innym zagadnieniem.

Załóżmy, że potrzebuję tor podczerwieni typu nadajnik 38kHz i odbiornik. Żadna modulacja nie jest mi potrzebna. Po prostu jeżeli nadajnik widzi odbiornik to na jego wyjściu jest zero logiczne. Jeżeli jakiś przedmiot zasłania odbiornik to na jego wyjściu jest jedynka logiczna. Do takiego nadawania mogę ustawić sprzętowy TIM w trybie PWM z odpowiednią częstotliwością. Wszystko wtedy powinno śmigać. Na podstawie poprzednich części kursu powinienem sobie poradzić.

Zależy mi na odbiorniku takim jak w kursie ponieważ takie urządzenie jest dosyć odporne na różne zakłócenia.

Ale teraz ten problem niestety jest bardziej złożony, otóż co zrobić jeżeli potrzebuję potrójny tor podczerwieni, tzn. niezależne 3 nadajniki i 3 odbiorniki umieszczone obok siebie. Taką po prostu potrójną kurtynę podczerwieni. Ze względu na oszczędność energii na raz może świecić tylko jeden tor, później drugi i na końcu trzeci.

Screenshot_6.thumb.jpg.c23360d506edbefb52ecc609d70bbdc2.jpg

Oczywiście mogę zrobić generowanie sprzętowe nośnej na trzech TIM, ale czy nie da się jakoś prościej? Np. na jednym?

Link to post
Share on other sites

Witam, wszystko fajnie ale jak można by stworzyć na MCU "uczenie się" pilota? Załóżmy zrobiliśmy jakiś sterownik, zamknęliśmy szczelnie i wszystko fajnie działa, i pach jest wymagane kupno nowego pilota z jakiegoś powodu, np zgubienie zniszczenie zepsucie się poprzedniego a jak już wspomnieliscie nie każdy pilot będzie miał takie samy kody klawiszy, wiem że są piloty uniwersalne które się koduje ale jak to rozwiązać na MCU, by MCU się uczył pilota?

Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.