Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Po co wyłączać światła za pomocą przełącznika, jeśli możesz strzelać do nich za pomocą NES Zappera! Zbudowałem już lampę laserową w starym, zepsutym NES Zapperze, kiedy ten pomysł wpadł mi do głowy. Bardziej mu się podobało, więc wymieniłem na to światło laserowe. Idealny projekt na niedzielne popołudnie!
Światła w moim gabinecie są już sterowane za pomocą zdalnych przełączników, więc jedyne, co musiałem zrobić, to dowiedzieć się, jakie kody są wysyłane i naśladować je. A potem wbuduj go w mój NES Zapper. Zobacz wideo na końcu tej instrukcji!
Krok 1: Zbierz komponenty
Będziesz potrzebować:
- NES Zapper, najlepiej uszkodzony. Możesz także użyć dowolnego innego elektronicznego pistoletu-zabawki.
- Zdalne przełączniki typu „ClickOnClickOff” pracujące z częstotliwością 433MHz.
- Nadajnik i odbiornik 433 MHz. Tylko nadajnik zostanie wbudowany w Zappera, odbiornik jest potrzebny do nauki wysyłanych kodów.
- Mikrokontroler ATtiny, zostanie on wbudowany w Zappera. Używam ATtiny85V-10PU o małej mocy. A do tego potrzebny będzie programista.
- Arduino UNO lub jakikolwiek inny, który może wyświetlać dane na monitorze szeregowym. Służy do nauki i testowania wysyłania kodów.
- Ogniwo guzikowe 3V z wypustkami lub pinami do lutowania.
- Lutownica i druty.
Krok 2: Naucz się przesyłanych kodów
Podłącz nadajnik i odbiornik do Arduino UNO. Pinout pokazano na zdjęciu, większość pinów łączy się z 5V lub GND. Nie potrzebujemy anteny, ponieważ nie używamy jej na dużym zasięgu. Nie potrzebujemy również wyjścia liniowego na odbiorniku. Wyjście danych na odbiorniku łączy się z pinem D2, a wejście danych na nadajniku łączy się z pinem D11.
Oczywiście nie jestem pierwszym, który próbuje sterować tymi przełącznikami, więc istnieje już kilka bibliotek. Wielkie podziękowania dla Randy'ego Simonsa za jego bibliotekę RemoteSwitch, która zaoszczędziła mi dużo pracy! Pobierz bibliotekę i skopiuj ją do folderu „biblioteki”, a następnie uruchom ponownie Arduino IDE. Jeśli poniższe szkice nie działają dla twojego przełącznika, możesz wypróbować jego bibliotekę NewRemoteSwitch.
Przykładowy szkic „ShowReceivedCode” będzie nasłuchiwał wysłanych komunikatów przełącznika i wyświetli je na monitorze szeregowym. Naciśnij przyciski na pilocie, a kody powinny pojawić się wraz z czasem sygnału w mikrosekundach, coś w stylu „Kod: 456789, czas trwania: 320us.” Zapisz te liczby.
Aby przetestować nadajnik, możesz skorzystać ze szkicu przykładowego „Retransmitter”. Spowoduje to ponowne wysłanie pierwszego otrzymanego kodu z 5-sekundowym opóźnieniem. Więc włącz światła, a następnie szybko je wyłącz. Po kilku sekundach włączą się ponownie!
Krok 3: Przygotuj NES Zapper
Otwórz Zappera śrubokrętem i wyjmij wszystko, czego nie potrzebujesz. Wszystko czego potrzebujemy to mechanizm spustowy z mikroprzełącznikiem. Obciążniki zostawimy również w lufie i rączce, dzięki czemu poczujemy się mniej tani.
Zmodyfikowałem już swojego Zappera, więc nie jestem pewien, czy przewody podłączone do mikroprzełącznika są wystarczająco długie w oryginale, czy też je wymieniłem. Jeśli nie są wystarczająco długie można je przedłużyć lutując do nich przewody lub przylutować nowe przewody do wypustek mikroprzełącznika.
Krok 4: Podłącz i zaprogramuj ATtiny
Na początku chciałem przełączyć ATtiny w tryb uśpienia i pozwolić mu się obudzić z przerwaniem zmiany pinów po naciśnięciu spustu. Stworzyłem już konfigurację testową, która zadziałała. Potem zdałem sobie sprawę, że wysłanie polecenia przełączenia zajmuje tylko kwadrans, więc mogę po prostu użyć spustu, aby podłączyć baterię do ATtiny i nadajnika. W ten sposób nie jest używana żadna moc, gdy nie jest używana!
Podłącz nadajnik do ATtiny, wejście danych na nadajniku łączy się z D0 (pin 5) na chipie. Podłącz ogniwo guzikowe zarówno do ATtiny, jak i do nadajnika, ale należy je przerwać za pomocą mikroprzełącznika wyzwalającego Zappera. Zobacz zdjęcie po więcej szczegółów.
Kodowanie jest bardzo proste. Wszystko, co robi, wysyła wiadomość o przełączniku, a następnie czeka, aż ATtiny zostanie wyłączony. Użyj szczegółów z przykładowego szkicu „ShowReceivedCode” jako argumentów w funkcji sendCode.
#include void setup() { RemoteTransmitter::sendCode(0, 456789, 320, 3);}void loop() { // poczekaj, aż ATtiny się wyłączy}
Argumenty w funkcji sendCode to:
- Pin wyjściowy
- Kod wiadomości
- Czas trwania okresu w mikrosekundach
- Liczba ponownych prób
Krok 5: Złóż wszystko razem
Tym razem wybrałem szybkie i brudne podejście; wszystkie (przygotowane) przewody są tego samego koloru i są przylutowane bezpośrednio do pinów ATtiny. Zwykle używam nagłówków chipów i kolorowych przewodów, ponieważ ułatwia to przeprogramowanie i rozwiązywanie problemów, ale nie powinno to stanowić problemu dla tego małego projektu. Całość przykleja się do Zappera za pomocą gorącego kleju, dobrze się trzyma i można ją zdjąć bez uszkodzenia Zappera.
Przetestuj go przed ponownym zamknięciem Zappera. Następnie pokaż wszystkim swoje umiejętności strzeleckie!
Krok 6: Wnioski i ulepszenia
Działa idealnie! Spust wystarczy nacisnąć krótko, a opóźnienie jest bardzo małe. Bateria wystarcza na lata, nawet przy codziennym użytkowaniu. Nawet gdy napięcie spadnie poniżej 3V, będzie działać, ponieważ zarówno ATtiny, jak i nadajnik mogą pracować nawet poniżej 2V.
Kilka możliwych ulepszeń:
-
Sposób na przeprogramowanie ATtiny, na przykład:
- Umieść ATtiny na nagłówku, aby można go było usunąć. Ta głowica może być umieszczona w dyszy, dzięki czemu można do niej dotrzeć bez otwierania Zappera.
- Dodaj przewody do ATtiny, które można podłączyć do programatora. Te przewody można podłączyć do główki, którą można umieścić w otworze uchwytu, w którym kiedyś znajdował się kabel.
- Dodaj światło lub laser na końcu lufy! To oczywiście znacznie szybciej rozładuje baterię.
- Dodaj efekt dźwiękowy! To również pochłonie energię, ale jest to bardzo miły dodatek!
Daj mi znać, jeśli masz inne pomysły na ulepszenie tego. Teraz po prostu potrzebuję fajnego sposobu na włączenie światła… może za pomocą zapalniczki? (czuję, że zbliża się nowy projekt)
Mam nadzieję, że spodobał Ci się mój pierwszy instruktaż, kolejne będą dostępne!