Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
UWAGA: Moja instruktażowa „Wirtualna gra w chowanego” pokazuje, jak używać tego typu pilota z modułem RXC6, który automatycznie dekoduje wiadomość.
Jak wspomniałem w poprzednim Instructable, ostatnio zacząłem grać z żetonami ATtiny85. Pierwszym projektem, który miałem na myśli, było stworzenie pilota RF, który mógłby działać na baterii monetowej. Musiałem wybrać surowy układ, ponieważ żaden z Arduino, które posiadam, nie może zaspokoić zarówno potrzeby bardzo małej mocy, jak i stosunkowo małych rozmiarów. Zmodyfikowany LilyPad zbliżył się, ale chip jest lepszą odpowiedzią. Pomysł polegał nie tyle na zduplikowaniu istniejącego pilota, ile na zademonstrowaniu, jak można skomponować własny zestaw nadajnika i odbiornika. Oprócz tego, że jest to zabawny projekt edukacyjny, pozwala również stworzyć własną „tajną” kombinację kodów. Umieszczam „sekret” w cudzysłowie, ponieważ łatwo jest złamać te proste kody.
Krok 1: Format wiadomości RF
W tym projekcie zdecydowałem się na replikację sygnałów dla jednego z moich bezprzewodowych przełączników Etekcity RF (patrz mój Instruktaż dotyczący tych modułów). Zrobiłem to, ponieważ udało mi się sprawdzić, czy mój nadajnik współpracuje z odbiornikiem Etekcity, a odbiornik współpracuje z pilotem Etekcity. Zdarza mi się też dokładnie wiedzieć, jakie są poprawne kody i formaty dla tych urządzeń, ponieważ przechwyciłem je wcześniej. Zapoznaj się z moim „Dekoderem czujnika Arduino RF” Instruktażem szkicu przechwytywania kodu.
Kody i formaty gniazd Etekcity są bardzo typowe dla niedrogich urządzeń RF. Mam tanie urządzenia zabezpieczające, które używają bardzo podobnych formatów z kilkoma zmianami taktowania. Długość komunikatu to wygodne 24 bity z długim bitem startu i krótkim bitem stopu. Możesz łatwo zmodyfikować kod, aby dodać więcej bajtów danych i zmienić czas synchronizacji i bitów danych. Ponownie, ten szkic jest tylko początkowym szablonem.
Krok 2: Sprzęt
Nadajnik jest zasilany baterią monetową (2032), dlatego kluczowe znaczenie ma niskie zużycie energii. Większość z nich jest realizowana w oprogramowaniu, ale pomaga w tym fakt, że ATtiny85 normalnie działa na wewnętrznym zegarze 1 MHz. Zasadą jest, że niższe częstotliwości taktowania wymagają mniejszej mocy, a 1 MHz jest idealny dla logiki nadajnika.
Rzeczywisty moduł nadajnika RF, którego lubię używać, to FS1000A, który jest powszechnie dostępny. Występuje w wersjach 433 MHz i 315 MHz. Oprogramowanie nie dba o to, którego używasz, ale musisz upewnić się, że płyta odbiornika działa na tej samej częstotliwości. Większość moich projektów wykorzystuje urządzenia 433 MHz, ponieważ to jest używane przez różne niedrogie urządzenia bezprzewodowe, które zgromadziłem. Układ płytki nadajnika pokazany na zdjęciu ładnie pasuje do starej butelki pigułki. Nie jest ładny, ale wystarczająco dobry, aby sprawdzić koncepcję.
Odbiornik znajduje się na płytce stykowej bez lutowania, ponieważ jego jedynym celem jest pokazanie, jak odbierać sygnały i jak coś włączać/wyłączać na podstawie otrzymanych kodów. Wykorzystuje diodę LED do wskazywania stanu włączenia/wyłączenia, ale można ją zastąpić sterownikiem przekaźnika itp. Do odbiornika można użyć dowolnego Arduino, ponieważ nie musi on wyczerpywać się z baterii. Jeśli rozmiar jest nadal rozważany, możesz użyć innego układu ATtiny85. Kluczem jest to, że ATtiny85 musi działać w odbiorniku z częstotliwością 8 MHz. Zapoznaj się z moim wcześniejszym ATtiny85 Instructable, aby uzyskać prosty szkic, który weryfikuje, czy pomyślnie zmieniłeś zegar wewnętrzny na 8 MHz. Na końcu mojego Instruktażowego dekodowania czujnika dołączam wersję oprogramowania odbiornika Arduino Nano. Jest identyczny z wersją ATtiny85 dołączoną tutaj, z wyjątkiem kilku różnic w rejestrach chipów.
Jak szczegółowo opisałem w moich wcześniejszych instrukcjach RF, wolę używać odbiornika takiego jak zwykły RXB6. Jest to odbiornik superheterodynowy, który działa znacznie lepiej niż odbiorniki superregeneracyjne powszechnie dołączane do nadajników FS1000A.
Zarówno moduł nadajnika, jak i odbiornika działają lepiej z odpowiednimi antenami, ale często nie są one dostarczane. Możesz je kupić (uzyskać odpowiednią częstotliwość) lub zrobić własne. Przy 433 MHz odpowiednia długość wynosi około 16 cm dla anteny z prostym przewodem. Aby wykonać zwinięty, weź około 16 cm izolowanego drutu o pełnym rdzeniu i owinąć go wokół czegoś podobnego do wiertła 5/32 cala w jednej warstwie. Zdjąć izolację z krótkiego prostego odcinka na jednym końcu i podłączyć ją do płytki nadajnika/odbiornika. Odkryłem, że przewód ze złomowanego kabla Ethernet działa dobrze dla anten. Płytka nadajnika zwykle ma miejsce do przylutowania anteny, ale płytka odbiornika może mieć tylko piny (jak RXB6). Tylko upewnij się, że połączenie jest bezpieczne, jeśli go nie lutujesz.
Krok 3: Oprogramowanie
Oprogramowanie nadajnika wykorzystuje typowe techniki, aby wprowadzić chip w tryb uśpienia. W tym trybie pobiera mniej niż 0,2ua prądu. Wejścia przełącznika (D1-D4) mają włączone wewnętrzne rezystory podciągające, ale nie pobierają one prądu, dopóki przełącznik nie zostanie naciśnięty. Wejścia są skonfigurowane do przerwania przy zmianie (IOC). Po naciśnięciu przełącznika generowane jest przerwanie i zmusza układ do przebudzenia. Obsługa przerwań wykonuje około 48 ms opóźnienia, aby umożliwić odbicie przełącznika. Następnie wykonywane jest sprawdzenie, aby określić, który przełącznik został naciśnięty i wywoływana jest odpowiednia procedura. Przesłana wiadomość jest powtarzana kilka razy (wybrałem 5 razy). Jest to typowe dla komercyjnych nadajników, ponieważ jest tak duży ruch RF na 433 MHz i 315 MHz. Powtarzające się komunikaty pomagają upewnić się, że co najmniej jeden dociera do odbiorcy.
Czasy synchronizacji i bitów są zdefiniowane z przodu oprogramowania nadajnika, ale bajty danych są osadzone w każdej z czterech procedur przycisków. Są oczywiste i łatwe do zmiany, a dodawanie bajtów w celu wydłużenia wiadomości jest również łatwe. Wszystkie te same definicje są zawarte w oprogramowaniu odbiornika, podobnie jak definicje bajtów danych. Jeśli dodasz bajty danych do wiadomości, będziesz musiał zmienić definicję „Msg_Length” i dodać bajty do zmiennej „RF_Message”. Będziesz także musiał dodać kod do sprawdzenia „RF_Message” w „pętli”, aby zweryfikować prawidłowy odbiór dodatkowych bajtów i zdefiniować te bajty.