Оглавление:
2025 Автор: John Day | [email protected]. Последнее изменение: 2025-01-13 06:58
Зачем выключать свет с помощью выключателя, если вы можете стрелять в них с помощью NES Zapper! Я уже построил лазерный луч в старом сломанном NES Zapper, когда эта идея пришла мне в голову. Он понравился больше, поэтому я заменил лазер на этот. Идеальный проект для воскресного дня!
Освещение в моей учебной комнате уже управляется дистанционными переключателями, поэтому все, что мне нужно было сделать, это узнать, какие коды отправляются, и имитировать их. А потом встроить в мой NES Zapper. Смотрите видео в конце этой инструкции!
Шаг 1: Соберите компоненты
Тебе понадобится:
- NES Zapper, желательно битый. Вы также можете использовать любой другой электронный игрушечный пистолет.
- Дистанционные переключатели типа «ClickOnClickOff», работающие на частоте 433 МГц.
- Передатчик и приемник 433 МГц. В Zapper будет встроен только передатчик, приемник необходим для запоминания отправляемых кодов.
- Микроконтроллер ATtiny, он будет встроен в Zapper. Я использую маломощный ATtiny85V-10PU. И для этого вам понадобится программист.
- Arduino UNO или любой другой тип, который может отображать данные на последовательном мониторе. Это используется для обучения и тестирования отправки кодов.
- Ячейка кнопочная 3В с паяными язычками или штырями.
- Паяльник и провода.
Шаг 2: изучите переданные коды
Подключите передатчик и приемник к Arduino UNO. Распиновка показана на картинке, большинство контактов подключаются к 5V или GND. Нам не нужна антенна, поскольку мы не используем ее на больших расстояниях. Также нам не нужен линейный выход на ресивере. Выход данных на приемнике подключается к контакту D2, а вход данных на передатчике подключается к контакту D11.
Конечно, я не первый, кто пытается управлять этими переключателями, поэтому уже существует несколько библиотек. Большое спасибо Рэнди Саймонсу за его библиотеку RemoteSwitch, которая сэкономила мне много работы! Загрузите библиотеку и скопируйте ее в папку «библиотеки», затем перезапустите Arduino IDE. Если следующие рисунки не подходят для вашего коммутатора, вы можете попробовать его библиотеку NewRemoteSwitch.
Скетч примера 'ShowReceivedCode' будет прослушивать отправленные сообщения переключателя и отображать их на вашем последовательном мониторе. Нажмите кнопки на дистанционном переключателе, и должны появиться коды с временем сигнала в микросекундах, что-то вроде «Код: 456789, продолжительность периода: 320 мкс.». Запишите эти числа.
Для тестирования передатчика вы можете использовать пример скетча «Ретрансмиттер». Это повторно отправит первый полученный код с задержкой в 5 секунд. Так что включите свет, а затем быстро выключите его. Через несколько секунд они снова включатся!
Шаг 3: подготовьте NES Zapper
Откройте Zapper отверткой и удалите все ненужное. Все, что нам нужно, это спусковой механизм с микровыключателем. Также мы оставим утяжелители в стволе и рукоятке, это сделает его менее дешевым.
Я уже модифицировал свой Zapper, поэтому я не уверен, достаточно ли длинные провода, подключенные к микропереключателю, в оригинале или я их заменил. Если они недостаточно длинные, вы можете удлинить их, припаяв к ним провода или припаяв новые провода к вкладкам микропереключателя.
Шаг 4: Подключите и запрограммируйте ATtiny
Сначала я хотел перевести ATtiny в спящий режим и дать ему проснуться с прерыванием смены контакта при нажатии на спусковой крючок. Я уже создал тестовую установку, которая работала. Затем я понял, что отправка команды переключения занимает всего четверть секунды, поэтому я мог просто использовать триггер для подключения батареи к ATtiny и передатчику. Таким образом, энергия не используется вообще, когда она не используется!
Подключите передатчик к вашему ATtiny, ввод данных на передатчике подключается к D0 (контакт 5) на вашем чипе. Подключите кнопочную ячейку как к ATtiny, так и к передатчику, но отключите ее с помощью микровыключателя триггера Zapper. Смотрите картинку для более подробной информации.
Кодирование очень простое. Все, что он делает, это отправляет сообщение о переключении, а затем ждет, пока ATtiny не выключится. Используйте детали из эскиза примера 'ShowReceivedCode' в качестве аргументов в функции sendCode.
#include void setup () {RemoteTransmitter:: sendCode (0, 456789, 320, 3);} void loop () {// ждем, пока ATtiny не выключится}
Аргументы функции sendCode:
- Выходной контакт
- Код сообщения
- Продолжительность периода в микросекундах
- Количество повторных попыток
Шаг 5: соберите все вместе
На этот раз я выбрал быстрый и грязный подход; все (подготовленные) провода одного цвета и припаяны непосредственно к контактам ATtiny. Обычно я использую заголовки микросхем и цветные провода, поскольку это упрощает перепрограммирование и решение проблем, но это не должно быть проблемой для этого небольшого проекта. Все прикреплено к Zapper с помощью горячего клея, достаточно хорошо прилипает и его можно снять, не повредив Zapper.
Проверьте это, прежде чем снова закрыть Zapper. Тогда покажи всем свои навыки стрельбы!
Шаг 6: Заключение и улучшения
Работает отлично! На спусковой крючок нужно нажимать только на короткое время, и задержка очень мала. Батареи хватит на годы даже при повседневном использовании. Даже когда напряжение падает ниже 3 В, он будет работать, поскольку и ATtiny, и передатчик могут работать даже при напряжении ниже 2 В.
Некоторые возможные улучшения:
-
Способ перепрограммирования ATtiny, например:
- Поместите ATtiny в заголовок, чтобы его можно было удалить. Этот коллектор можно поместить в форсунку, чтобы добраться до него, не открывая Zapper.
- Добавьте провода к ATtiny, которые можно подключить к вашему программатору. Эти провода можно подключить к разъему, который можно вставить в отверстие ручки, где раньше был кабель.
- Добавьте свет или лазер на конце ствола! Это, конечно, быстрее разрядит аккумулятор.
- Добавьте звуковой эффект! Это также истощит энергию, но это очень приятное дополнение!
Дайте мне знать, если у вас есть другие идеи, чтобы улучшить это. Теперь мне просто нужен какой-нибудь крутой способ включить свет… может, зажигалкой? (Я чувствую, что приближается новый проект)
Надеюсь, вам понравился мой первый инструктаж, дальше будет!