Оглавление:
Видео: DIY Givi V56 Комплект освещения верхней коробки мотоцикла со встроенными сигналами: 4 шага (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
Как мотоциклист, я слишком хорошо знаком с тем, что со мной обращаются так, будто я невидим на дороге. Одна вещь, которую я всегда добавляю к своим велосипедам, - это приставка, которая обычно имеет встроенный свет. Недавно я перешел на новый велосипед и купил коробку Givi V56 Monokey, так как в ней было много места для предметов. В этом ящике есть место для заводского светильника, состоящего из двух полос светодиодов с каждой стороны. Проблема в том, что этот комплект стоит около 70 долларов и включает только тормоза. Существует комплект послепродажного обслуживания, который, вероятно, выполняет аналогичные функции и может быть немного проще в установке, но ваша цена достигает 150 долларов. Будучи находчивым человеком и ищущим повод опробовать адресные светодиодные ленты, я решил создать интегрированную систему, в которой были бы не только стоп-сигналы, но и ходовые огни (включаемые при движении), поворотники и аварийные огни. Просто ради этого я даже добавил последовательность запуска…. потому что я мог. Обратите внимание, что это потребовало много работы, хотя мне нужно было многое выяснить. Несмотря на проделанную работу, я вполне доволен тем, как это получилось. Надеюсь, это окажется полезным для кого-то другого.
Основная операция по работе этой системы заключается в том, что модуль Arduino ищет сигналы на контактах: стоп-сигнал, световой сигнал левого поворота и световой сигнал правого поворота. Чтобы считывать сигнал 12 В с мотоцикла, я использовал оптоизоляторы, чтобы преобразовать сигнал 12 В в сигнал 5 В, который может прочитать Arduino. Затем код ожидает одного из этих сигналов, а затем выводит команды на светодиодную ленту, используя библиотеку FastLED. Это основы, теперь мы переходим к деталям.
Запасы
Это те вещи, которые я использовал, потому что по большей части они у меня уже лежали. Очевидно, их можно при необходимости обменять:
- Arduino - я использовал nano из соображений размера, но вы можете использовать все, что захотите, если у вас есть пять контактов.
- Регулятор 5 В - я использовал L7805CV, который был способен на 1,5 ампер. В этом проекте для светодиодов будет использоваться 0,72 ампера плюс мощность для нано, так что 1,5 отлично подходит для этого проекта.
- Конденсаторы - вам понадобится один 0,33 мкФ и один 0,1 мкФ для правильной работы регулятора напряжения.
- 3 оптоизолятора - для преобразования сигнала с 12В на 5В. Я использовал тип PC817X, у которого всего четыре контакта, и это все, что нам нужно.
- Резисторы - вам понадобятся два типа, по три каждого типа. Первого должно быть достаточно для уменьшения тока через оптоизолятор ИК-светодиода. Вам понадобится как минимум 600 Ом, но 700 будет лучше, чтобы справиться с изменением напряжения на мотоцикле. Другой должен быть где-то между 10 кОм и 20 кОм для быстрого сигнала на другой стороне оптоизолятора.
- Прототип платы - у меня были такие, которые были достаточно маленькими, чтобы поместиться в небольшую коробку для проекта с небольшой обрезкой.
- Коробка Project - достаточно большая, чтобы в нее поместились все компоненты, но достаточно маленькая, чтобы ее было легко разместить.
- Провод - я использовал провод Ethernet Cat 6, потому что у меня его было много. Он имеет восемь проводов с цветовой кодировкой, которые помогли со всеми различными соединениями и были достаточно большим калибром, чтобы справиться с потребляемым током.
- Заглушки - везде, где вы хотите, чтобы система легко снималась. Я использовал водонепроницаемую заглушку, чтобы можно было снять верхнюю коробку и выдержать попадание дождя или воды на нее. Еще мне понадобились заглушки меньшего размера для светодиодных лент, чтобы не сверлить большие отверстия.
- Застежки-молнии и клейкие крепления на молнии, чтобы все было на месте.
- Термоусадочная пленка для очистки соединений.
Шаг 1: построение схемы
Очевидно, что если вы следите за моей сборкой, вам не придется проходить столько тестов, сколько я провел. Первым делом я убедился, что мой код работает, и я могу правильно получать сигнал от оптоизоляторов, а также правильно управлять светодиодными лентами. Потребовалось время, чтобы понять, как лучше всего прикрепить сигнальные контакты к изоляторам, но методом проб и ошибок я нашел правильную ориентацию. Я просто использовал стандартный прототип платы, так как я только собирал ее, и выяснение схемы трассировки заняло бы больше времени, чем оно того стоило. Верхняя часть печатной платы выглядит великолепно, но нижняя выглядит немного беспорядочно, но, по крайней мере, она функциональна.
Базовая конструкция начинается с подачи питания 12 В от переключаемого источника (провод, который включен только тогда, когда мотоцикл включен). Схема подключения действительно может помочь найти этот провод. Он подается на одну сторону регулятора напряжения. Конденсатор емкостью 0,33 мкФ связывает этот вход с землей на регуляторе напряжения, который затем возвращается к земле на мотоцикле. К выходу регулятора напряжения будет подключен конденсатор емкостью 0,1 мкФ, заземленный. Эти конденсаторы помогают сглаживать напряжение от регулятора. Если вы не можете найти их на изображении печатной платы, они находятся под регулятором напряжения. Оттуда линия 5V идет к Vin на Arduino, к выводу питания, который будет питать светодиодные ленты, и к стороне источника оптоизолятора, который будет подавать на выводы Arduino, обеспечивая необходимый сигнал 5V.
Что касается оптоизоляторов, то здесь две стороны: одна с ИК-светодиодом, а другая с транзистором и ИК-детектором. Мы хотим использовать сторону ИК-светодиода для измерения сигнала 12 В. Поскольку у светодиода прямое напряжение 1,2 В, нам понадобится токоограничивающий резистор, включенный последовательно. 12 В - 1,2 В = 10,8 В и для работы светодиода при 18 мА (я всегда предпочитаю использовать менее 20 мА из соображений срока службы), вам понадобится резистор R = 10,8 В / 0,018 А = 600 Ом. Напряжение на транспортных средствах также имеет тенденцию повышаться, потенциально до 14 В, поэтому лучше запланировать это, что составляет около 710 Ом, хотя 700 было бы более чем разумным. Затем выход со стороны светодиода возвращается на землю. Для выходной стороны оптоизолятора вход будет использовать сигнал 5 В от регулятора, затем выход будет подключаться к другому резистору перед заземлением. Этот резистор просто должен быть около 10-20 кОм, по крайней мере, это то, что показано в моем листе данных. Это позволит быстро измерить сигнал, поскольку мы не имеем дело с шумной средой. Выход на вывод Arduino будет отключен между резистором и выходом оптоизолятора, так что, когда сигнал отключен, контакт низкий, а когда сигнал на контакте - высокий.
Светодиодные ленты имеют три связанных с ними провода: питание, заземление и данные. Питание должно быть 5В. В этом проекте используется всего 12 светодиодов (хотя у меня больше светодиодов на полосах, но я использую только каждый третий светодиод), и каждый из них потребляет 60 мА, когда белый свет используется на полной яркости. Это дает в сумме 720 мА. Выходная мощность регулятора напряжения у нас в пределах нормы, так что все в порядке. Просто убедитесь, что провод достаточно большого диаметра, чтобы выдерживать напряжение, я использовал провод Ethernet Cat 6 калибра 24. У меня был провод Ethernet, который имел 8 проводов с цветовой кодировкой, поэтому он хорошо сработал для этого проекта. Единственные провода, которые затем должны пройти к самому приставке, - это питание и земля (которые разделяются между полосами) и две линии данных (по одной для каждой полосы).
Остальная проводка подключается к контактам на Arduino и подает на него питание. В этом проекте использовались следующие булавки:
- Вин - подключен к 5В
- Gnd - подключен к земле
- Pin2 - подключен к линии передачи данных левой полосы
- Pin3 - подключен к линии передачи данных правой полосы
- Pin4 - подключен к тормозному сигналу от оптоизолятора
- Pin5 - подключен к левому указателю поворота от оптоизолятора
- Pin6 - подключен к правому поворотнику от оптоизолятора
Шаг 2: Подключение и установка
После того, как схема построена, пришло время подключить ее на место. Используя схему электропроводки вашего велосипеда, вам нужно будет найти следующее:
- Коммутируемый источник питания
- Земля
- Вход сигнала тормоза
- Левый сигнал поворота
- Правый сигнал поворота
Для меня была одна вилка, на которой было все это, поэтому я просто использовал ее. Со временем я мог бы найти вилку того же типа и просто сделать вставной модуль, но я этого не сделал, поэтому я просто снял изоляцию в некоторых местах и припаял к ней новый провод. Я использовал заглушки на этих стыковых соединениях, чтобы удалить остальные, если они мне когда-нибудь понадобятся в будущем. Оттуда я поместил Arduino, который теперь находится в запечатанной коробке для проекта, под сиденьем, где я его прикрепил. Затем выходной кабель проходит вдоль рамы стойки к водонепроницаемой заглушке, затем входит в коробку и проходит вдоль задней части к крышке, где он разделяется с каждой стороны. Провода проходят по внутренней стороне крышки до точки подключения светодиодов. Проволока закрепляется на месте с помощью стяжек, прикрепленных к креплениям для стяжек Outdoor с липкой основой. Вы можете найти их в разделе прокладки кабеля в магазине товаров для дома.
Я использовал две мини-вилки JST на светодиодных лентах, потому что мне нужна была достаточно маленькая вилка, чтобы пройти через отверстие минимального диаметра, и потому, что я хотел убедиться, что провода достаточно для удовлетворения текущих требований. Опять же, это могло быть излишним, и у меня не было под рукой маленьких вилок с тремя проводами. Отверстие в коробке для проводов световых полос было закрыто, чтобы вода не попадала внутрь. Что касается расположения светодиодных лент, из-за небольшого несоответствия в расстоянии (разница между отверстиями в отражателе и светодиодами составляла примерно 1-1,5 мм) я расположил их так, чтобы они разделяли разницу между светодиодами и светодиодами. отверстие как можно больше. Затем я использовал горячий клей, чтобы закрепить их на месте, и герметик, чтобы полностью запечатать область. Сами светодиодные ленты водонепроницаемы, поэтому не проблема, если они намокнут. Несмотря на то, что это кажется сложным для установки, это упрощает удаление системы в будущем или необходимость замены деталей, потому что это может произойти.
Шаг 3: Код
Мой исходный код должен быть в начале этого руководства. Я всегда много комментирую свой код, чтобы его было легче понять позже. Отказ от ответственности: я не профессиональный писатель кода. Код был написан методом, который было легче начать сначала, и были внесены некоторые улучшения, но я знаю, что его можно было бы улучшить. Я также часто использую функцию delay () для определения времени, что не так идеально. Однако сигналы, которые получает устройство, не являются быстрыми по сравнению с ними, поэтому я все же чувствовал себя оправданным, чтобы оставить их, используя что-то вроде millis (). Я также очень занятый отец и муж, поэтому тратить время на то, чтобы улучшить то, что в конечном итоге не изменит функции, не входит в число моих приоритетных задач.
Для этого проекта требуется только одна библиотека - FastLED. Здесь есть весь код для управления светодиодными лентами типа WS2811 / WS2812B. Далее я расскажу об основных функциях, которые будут использоваться.
Первое, кроме стандартных определений, - это объявление ваших двух полосок. Вы будете использовать следующий код для каждой полосы:
FastLED.addLeds (светодиоды [0], NUM_LEDS);
Эта строка кода устанавливает, что контакт 2 определяет эту полосу как полосу 0 с количеством светодиодов, определенным константой NUM_LEDS, которая в моем случае установлена на 16. Чтобы определить вторую полосу, 2 станет 3 (для вывода 3) и полоса будет помечена как полоса 1.
Следующая важная строка - определение цвета.
светодиоды [0] [1] = Color_high CRGB (r, g, b);
Эта строка кода используется по-разному (в большинстве случаев я использую константу). По сути, этот код отправляет значение каждому из каналов светодиода (красный, зеленый, синий), которое определяет каждую яркость. Значение яркости может быть определено числом от 0 до 255. Изменяя уровень яркости для каждого канала, вы можете определять разные цвета. Для этого проекта я хочу использовать белый цвет, чтобы свет был максимально ярким. Поэтому единственное, что я делаю, - это устанавливаю одинаковый уровень яркости для всех трех каналов.
Следующий набор кода используется для индивидуального включения каждого источника света. Обратите внимание, что для каждой полосы у каждого светодиода есть адрес, начинающийся с 0 для ближайшего к соединению линии передачи данных, вплоть до самого высокого номера светодиода, который у вас есть минус 1. Пример, это 16 светодиодных лент, поэтому наивысший из них 16 - 1 = 15. Причина в том, что первый светодиод имеет метку 0.
for (int i = NUM_LEDS-1; i> -1; i = i - 3) {// Это изменит свет для каждого третьего светодиода, идущего от последнего к первому. светодиоды [0] = Color_low; // Устанавливаем цвет светодиода полосы 0 на выбранный цвет. светодиоды [1] = Color_low; // Устанавливаем цвет светодиода полосы 1 на выбранный цвет. FastLED.show (); // Показываем заданные цвета. светодиоды [0] = CRGB:: Черный; // Отключаем заданный цвет при подготовке к следующему цвету. светодиоды [1] = CRGB:: Черный; задержка (150); } FastLED.show (); // Показываем заданные цвета.
Принцип работы этого кода заключается в том, что переменная (i) используется в цикле for в качестве адреса светодиода, который затем ссылается на полное количество светодиодов (NUM_LEDS). Причина этого в том, что я хочу, чтобы свет начинался в конце полосы, а не в ее начале. Настройка выводится на обе полосы (светодиоды [0] и светодиоды [1]), затем выдается команда для отображения изменения. После этого этот свет погаснет (CRGB:: Black) и загорится следующий свет. Ссылка Black - это определенный цвет в библиотеке FastLED, поэтому мне не нужно вводить 0, 0, 0 для каждого канала, хотя они будут делать то же самое. Цикл For включает 3 светодиода за раз (i = i-3), так как я использую только все остальные светодиоды. К концу этого цикла последовательность световых сигналов будет переходить от одного светодиода к другому, при этом на каждую полосу будет светиться только один световой сигнал, что-то вроде эффекта «Рыцаря всадника». Если вы хотите, чтобы каждый свет горел светом, чтобы полоса формировалась, вы просто удалите линии, отключающие светодиоды, что происходит в следующем наборе кода в программе.
for (int i = 0; i <dim; i ++) {// Быстрое затемнение света до уровня бегущего света. rt = rt + 1; gt = gt + 1; bt = bt + 1; for (int i = 9; i <NUM_LEDS; i = i +3) {// Это загорится последние три огня для габаритного огня. светодиоды [0] = CRGB (rt, gt, bt); // Устанавливаем цвет светодиода полосы 0 на выбранный цвет. светодиоды [1] = CRGB (rt, gt, bt); // Устанавливаем цвет светодиода полосы 1 на выбранный цвет. } FastLED.show (); задержка (3); }
Последний пример кода, который я использую для светодиодов, - это цикл затухания. Здесь я использую временные слоты для яркости для каждого канала (rt, gt, bt) и увеличиваю их на 1 с задержкой между каждым показом, чтобы добиться желаемого внешнего вида. Также обратите внимание, что этот код изменяет только последние три светодиода, поскольку они гаснут в ходовых огнях, поэтому я начинаю с 9, а не с 0.
Остальная часть кода светодиода представляет собой их итерации. Все остальное сосредоточено на поиске сигнала по трем разным проводам. Область кода Loop () ищет стоп-сигналы, которые он мигает один раз, прежде чем остаться включенным (при желании это можно настроить) или искать сигналы поворота. Для этого кода, поскольку я не мог предположить, что левый и правый поворотные огни будут включаться точно в одно и то же время при возникновении опасностей, у меня есть код, который сначала ищет любой из них, а затем после небольшой задержки я проверяю, горят ли оба индикатора. включены аварийные огни. Единственная сложная часть, с которой я столкнулся, - это поворотники, потому что свет погаснет на некоторое время, так как мне отличить сигнал, который все еще включен, но в период выключения, и отключенный сигнал? Что я придумал, так это реализовать цикл задержки, который должен продолжаться дольше, чем задержка между сигнальными вспышками. Если сигнал поворота по-прежнему включен, цикл сигнала будет продолжен. Если сигнал не возвращается по окончании задержки, он возвращается к началу цикла (). Чтобы отрегулировать длину задержки, измените число для постоянного запоминания lightDelay для каждой 1 в lightDelay, задержка изменяется на 100 мс.
while (digitalRead (leftTurn) == LOW) {для (int я = 0; я <lightDelay; я ++) {leftTurnCheck (); если (digitalRead (leftTurn) == ВЫСОКИЙ) {leftTurnLight (); } задержка (100); } for (int i = 0; i <NUM_LEDS; i = i +3) {// Это изменит свет для каждого третьего светодиода, идущего от последнего к первому. светодиоды [0] = CRGB (0, 0, 0); // Устанавливаем цвет светодиода полосы 0 на выбранный цвет. } for (int i = 9; i <NUM_LEDS; i = i +3) {// Это настроит ходовые огни, которые используют только последние три. светодиоды [0] = Color_low; // Устанавливаем цвет светодиода полосы 0 на выбранный цвет. } FastLED.show (); // Параметры вывода return; // Как только сигнал поворота перестанет быть включен, вернемся к циклу. }
Надеюсь, остальная часть кода не требует пояснений. Это просто повторяющийся набор проверок и действий в соответствии с сигналами.
Шаг 4: результаты
Замечательно то, что эта система заработала, когда я впервые подключил ее к байку. Честно говоря, перед этим я тщательно тестировал его на стенде, но все же ожидал, что у меня возникнут проблемы или исправления. Оказалось, что мне не нужно было вносить какие-либо изменения в код, а также в соединения. Как вы можете видеть на видео, система выполняет последовательность запуска (которая вам не обязательна), а затем по умолчанию включает ходовые огни. После этого он ищет тормоза, и в этом случае он включает все светодиоды на полную яркость и мигает ими один раз, прежде чем оставаться включенными до тех пор, пока тормоза не будут отпущены. Когда используется сигнал поворота, я сделал эффект прокрутки для стороны, на которую указывает поворот, а на другой стороне будут либо ходовые огни, либо стоп-сигнал, если он включен. Аварийные огни будут мигать одновременно с другими огнями.
Надеюсь, с этими дополнительными источниками света я буду более заметным для других людей. По крайней мере, это хорошее дополнение, которое делает мою коробку более привлекательной, чем другие, при этом обеспечивая полезность. Я надеюсь, что этот проект будет полезен и кому-то другому, даже если они не работают с освещением верхней коробки мотоцикла. Спасибо!
Рекомендуемые:
MIDI Handpan с 19 полями тона на верхней и нижней стороне : 15 шагов (с изображениями)
MIDI Handpan с 19 тоновыми полями на верхней и нижней стороне …: Введение Это учебное пособие по моему индивидуальному MIDI Handpan с 19 чувствительными к громкости тоновыми полями, возможностью Plug'n Play USB и множеством простых в использовании параметров для настройки пэдов. для ваших индивидуальных нужд. Этот мод не отмечен наградами за дизайн
Мотоциклетный задний фонарь со встроенными поворотниками и программируемыми светодиодами: 4 шага
Мотоциклетный задний фонарь со встроенными поворотниками с использованием программируемых светодиодов: Здравствуйте! Это довольно простой способ сделать настраиваемый программируемый задний фонарь RGB (со встроенными поворотниками / индикаторами) для вашего мотоцикла или, возможно, чего-либо, используя WS2812B (светодиоды с индивидуальной адресацией) и Arduinos . Есть 4 режима освещения
Космический свет со светодиодами, встроенными в смолу: 11 шагов (с изображениями)
Космический свет со светодиодами, встроенными в смолу: я хотел сделать свет из смолы, в котором использовались светодиоды, но без пайки (я знаю, что многие люди не паяют, и, вероятно, есть такие, как я, которые могут это делать, но не делают) Мне очень нравится это делать.) Он питается от пары монетных батареек, так что это просто
Запуск мотоцикла с имплантатом руки NFC: 3 шага
Начните мотоцикл с имплантатом руки NFC: почему у меня в руке даже имплант NFC-чипа? Я работаю ИТ-службой поддержки в роскошном отеле, поэтому мне нужно открывать множество дверей каждый день с помощью карты. Вот почему я решил вложить в руку чип RFID 125 кГц. К сожалению, мой выбор
Настройте задний фонарь для мотоцикла !: 3 шага
Настройте задний фонарь для мотоцикла !: Всем привет! В этой инструкции я поделюсь, как настроить свой собственный задний фонарь по дешевке от лампы до светодиода. Если вам лень читать прямо сейчас, вы можете посмотреть видео, которое я уже сделал. Хорошо, достаточно вступления, просто приступайте к шагам