Создайте собственную прошивку для сабля, микроконтроллер и тестирование

Создайте собственную прошивку для сабля, микроконтроллер и тестирование
Создайте собственную прошивку для сабля, микроконтроллер и тестирование
Anonim

Создайте свой собственный светодиодный сабвуфер, микроконтроллер и тестирование

В части 3 мы скомпилируем прошивку и построим контроллер в центре Sabre, затем выполните начальное тестирование и диагностику.

Моя цель в этой серии - научить вас, как построить самый яркий светодиодный световой меч на сегодняшний день. Прежде чем продолжить, ознакомьтесь с первыми статьями в этой серии:

  • Часть 1: Введение, компоненты и безопасность
  • Часть 2: Питание и аудио

В этой статье мы рассмотрим прошивку и как установить микроконтроллер. Затем мы проведем тестирование стендов.

Image
Image

Контроллер Sabre

Светодиод WS2812b является цифровым устройством. Применять мощность на Neopixel-полосу недостаточно - она останется темной, если не будет задано последовательное соединение. Поэтому нам понадобится микроконтроллер. И как только это предполагается, мы можем заполнить все функции программного обеспечения, которые мы можем поместить, потому что программное обеспечение ничего не весит и по сути бесплатное.

Я очень люблю SparkFun's «Pro Micro», который является сокращенным Arduino Leonardo. Это также холодные ботинки быстрее, чем ожидания в течение нескольких секунд для IDE.

MPU-6050 - это известный трехходовой акселерометр и гироскоп, который говорит I 2 C. Это очень часто встречается на досках из многих источников. Если мы хотим, чтобы сабля ответила, когда она движется, нам нужен такой датчик.

Предлагаемый поворотный «цифровой громкость» кодер / переключатель можно извлечь из плат, которые являются общими в наборах Arduino. Я получаю свои мешки по полдоллара каждый.

Image
Image
«Кристалл - это сердце клинка». В этом случае он работает на частоте 16 МГц и имеет чип компаньона
Image
Image

Подготовьте прошивку

Во-первых, нам нужно загрузить нашу прошивку Arduino на «голую доску», прежде чем мы начнем сборку. Надеюсь, вы знакомы с Arduinos и уже создали IDE. Вам понадобится библиотека FastLED. Возможно, у вас это уже есть. Если вы этого не сделаете, используйте ссылку, нажмите «Клонировать или загрузить» и сохраните как.zip-файл.

В IDE Arduino выберите меню «Sketch» >> «Включить библиотеку» >> «Добавить библиотеку zip …» и передайте файл, который вы только что загрузили. Это та же процедура, что и для установки любой библиотеки, размещенной в Github.

FastLED является де-факто стандартом для работы со светодиодными массивами WS28xx и имеет больше возможностей, чем у меня есть для описания.

Загрузите прошивку LEDSaber:

Прошивка СИД-сабля

Обновление: прошивка была обновлена 4 мая 2017 года. Последнюю версию с исправлениями ошибок и новыми функциями можно найти здесь

Раскройте файл.zip и откройте эскиз LEDSaber.ino с помощью Arduino IDE.

В верхней части эскиза находятся наиболее важные параметры. Если вы строите все, как описано, вам не нужно ничего менять и хорошо идти.

Наиболее распространенным модом, вероятно, будет количество светодиодов в вашей полосе ножа и контакт для подключения:


// define our LED blade properties #define BLADE_LEDS_COUNT 72 #define BLADE_LEDS_PIN A2

Помните, что мы управляем 144 светодиодами в качестве зеркальной полосы 72. Если у вас меньше светодиодов, вы можете оставить BLADE_LEDS_COUNT как есть, но при использовании более высокого, чем необходимо, значения будут переваривать память и время обработки, поэтому не переходите за борт, Если у вас более 72 светодиодов, поток данных остановится до конца лезвия.


// default colour customization #define BLADE_SATURATION 255 #define BLADE_HUE 144 // see properties.h for the presets list

Они задают цвет загрузочного лезвия. Я выбрал Jedi blue по умолчанию. Этот цвет определяется «оттенком» (где он находится на радуге) и «насыщенностью» (более высокая насыщенность означает более насыщенный, чистый цвет, а более низкое насыщение означает более тусклый или бледный цвет).

Здесь представлена версия HSV Rainbow от FastLED.

Файл "properties.h" имеет больший набор цветов / аудио параметров для восьми предустановок. Как только вы немного поработаете с саблей, вы можете настроить их.


// voltage shutdown properties #define VOLTAGE_SHUTDOWN (3.5f * 3.0f) // minimum voltage required #define VOLTAGE_SENSOR_RATIO (2.10f / 12.60f) // ratio between sensor voltage and real battery voltage (1:6 by default) #define VOLTAGE_SENSOR_PIN A3 // pin used by voltage sensor

Наиболее важными являются настройки выключения минимального напряжения. Если ваш делитель напряжения не 6: 1 или вы используете другую батарею, вам необходимо будет настроить VOLTAGE_SENSOR_RATIO и / или VOLTAGE_SHUTDOWN на основе измерений напряжения аккумулятора и датчика, а также характеристик батареи.

Это хорошая идея, чтобы эмпирически точно настроить порог VOLTAGE_SHUTDOWN перед сборкой. Вы можете сделать это, включив саблю и оставив ее, когда вы контролируете напряжение батареи с помощью мультиметра. Если выключение минимального напряжения срабатывает слишком рано, опустите порог. Если это слишком поздно (т. Е. Вы удаляете 10, 5 В без выключения), увеличьте порог.

Обратите внимание, что мы используем порог минимального напряжения 3, 5 В на ячейку LiPo. В некоторых ситуациях разряда это число можно считать довольно низким. Однако имейте в виду, что напряжение аккумулятора измеряется под нагрузкой. Напряжения ячейки будут возвращаться на 0, 1 В или больше, как только мы прекратим нашу текущую ничью.

Загрузите прошивку

Убедитесь, что Pro Micro не собирается касаться металла. Подключите Pro Micro к USB-порту вашего компьютера. Должны звучать обычные звуковые сигналы.

Image
Image

В среде разработки Arduino используйте меню «Инструменты» >> «Порт» и выберите устройство, которое вы только что подключили.

Используйте «Инструменты» >> «Совет» и выберите «Ардуино Леонардо», чтобы рассказать IDE, что это за доска.

Image
Image

Нажмите кнопку «Проверить» и убедитесь, что все компилируется. (Я действительно хочу, чтобы авторы библиотек не #pragma. Это неопрятно.)

Вы должны увидеть следующий результат:

Image
Image

Нажмите стрелку «Загрузить». Код будет скомпилирован снова и должен быть отправлен на устройство в шквал мигающих огней.

Вот и все.

Добавить поворотный переключатель

Затем мы устанавливаем поворотный переключатель непосредственно на Pro Micro. Он имеет три контакта с одной стороны для поворотного датчика и два вывода на другом для коммутатора. Делая это, мы избегаем необходимости в пяти проводах перемычек, что, в свою очередь, выполняет три вещи: мы устраняем десять пунктов вероятного сбоя, позволяем надежно закрепить контроллер на корпусе, и мы экономим место и вес и время. Коммутатор очень компактен для функциональности, которую он предоставляет.

Сторона с тремя штифтами идет в отверстия 16, 14 и 15. Два контакта (с промежутком между ними) идут в 6 и 8.

Image
Image
У некоторых поворотных переключателей есть вкладки, которые будут мешать. Отодвиньте их плоскогубцами, пока они не упадут
Image
Image
Переключатель должен находиться вне доски, не замыкая компоненты с металлическим основанием

Хорошо заметьте: Оставьте последние дыры ПУСТОЙ. Вывод 10 - это звук выхода.

Если вам нужно обрезать вал переключателя, сделайте это, прежде чем присоединять его к Pro Micro! Зажмите конец вала в тисках и обрезайте Dremel или ножовкой. Не помещайте основной корпус переключателя в тиски - вал будет вращаться бесполезно, и переключатель вряд ли сможет выдержать силы резания.

При резке металла, пожалуйста, делайте это далеко, далеко от электроники, мойте руки и переодевайтесь перед возвращением. Шутки в сторону. Одна бродячая металлическая подача в неправильном месте разрушит проект наихудшими способами, а иногда и месяцами позже.

Установите выключатель на стороне компонента Pro Micro, уложив Arduino на плоскую, твердую, жаростойкую поверхность (при необходимости вы можете использовать лист бумаги под компонентами для дополнительной защиты). Затем установите контакты переключателя в отверстия так, чтобы все было хорошо и ровно. (Не раздавливайте / не зажимайте кристалл Pro Micro или другие детали!) Теперь вы можете припаять с верхней стороны.

Для тех, кто не хочет беспокоиться о коммутаторе, я укажу, что это не является строго важной частью системы лезвий. Однако, если вы решите отказаться от него, вы потеряете много функциональности - все возможности изменять настройки на лету во время использования и самый простой способ воспламенения и тушения светодиодного лезвия. Но это не единственный способ зажечь лезвие; функция качания до воспламенения позволяет вам осветить ее, и выключение бездействия (или главный выключатель питания) может отключить его.

Фактически, вы можете иметь рукоятку без каких-либо внешних элементов управления, пока вы можете безопасно и легко отключать аккумулятор.

Добавление MPU-6050 IMU

MPU-6050 поставляется на досках разных форм. Мы заботимся только о четырех контактах для GND, VCC, SDA и SCL.

Поскольку линии данных / часы Arduino I 2 C находятся рядом друг с другом на контактах 2 и 3 (и они также обычно находятся вместе на IMU), я рекомендую непосредственно монтировать IMU на «обратной стороне» Pro Micro, используя два стандартные 0, 1-дюймовые штырьки для штырей, причем изоляция удобно функционирует как проставка.

Image
Image

Если контакты SDA / SCL выглядят неправильно, просто переверните IMU.

Если вам повезет, возможно, контакты GND или VCC также будут хорошо выстроены. Мой не сделал, поэтому я провел соответствующие провода (прежде, чем я припаял контакты) в промежутке между ними. Это создает очень аккуратный пакет.

Мой поворотный переключатель энкодера и плата разлома IMU были слишком большими, чтобы соответствовать одной и той же стороне Pro Micro (примерно на миллиметр!), Но у вас может быть больше возможностей для размещения. Я не был полностью доволен тем, как разоблачил ИДУ, откидываясь назад со стороны компонента, так что позже я накрыл его силиконовым сливом для защиты и поместил часть в промежуток, чтобы предотвратить изгиб.

Image
Image
Два контакта соединяют шину I 2 C и физически монтируют плату. Проводят провода питания между ними
Image
Image

Добавить сервоусилители

Мы используем серво-штекер, чтобы получить питание от силового преобразователя и гнезда для подключения данных к лезвию.

Чувствительность напряжения от преобразователя переходит на контакт A3 на Pro Micro, и провод, идущий к гнезду, подключается к контакту A2. (При необходимости они могут изменяться в прошивке).

В некотором смысле, модуль управления действует как другой блок «преобразователь», принимая вольт и превращая их в данные. Или, может быть, очень сложный световой выключатель.

Image
Image
Image
Image
Чувствительность напряжения соответствует A3, ближайшему аналоговому входу к контактам GND / RAW. Управляющие данные выводятся на соседний А2 и поступают на светодиодную ленту

Безопасное перепрограммирование Arduino

Возможно, вы захотите изменить прошивку после завершения сабля. Прислушайтесь к этому предупреждению.

НИКОГДА не подключайте аккумулятор LiPo при подключении USB-порта; делая это, вы, по сути, замыкаете выходы от двух отдельных источников питания, и это плохая идея, если вы не хотите, чтобы 20 ампер возвращался по USB-кабелю к тому, что находится на другом конце. Возможно, ваш любимый компьютер. Может быть, ваш компьютер хорошо подготовлен и выдержит это, но так же вероятно, что будет дым и грусть.

Помните: не допускайте короткого замыкания двух независимых рельсов питания. В этом проекте это означает, что не замыкайте 5V преобразователя постоянного тока на 5V USB. Никогда не пересекайте потоки!

Image
Image
Изображение предоставлено AllPosters. И Ghostbusters

… на самом деле, Pro Micro (настоящая подлинная версия) имеет защитный диод и полифьюз, которые должны сделать это абсолютно безопасным. В противном случае я бы разработал его по-другому. (Никогда не строите механизм саморазрушения!) Но есть варианты и подделки, которые могут легко опустить эти части - и в любом случае вы действительно хотите играть в азартные игры на компьютере на чьей-то предполагаемой схеме защиты? Лучше избегать этой ситуации.

Я знаю, что заманчиво оставить все, что нужно для легкой отладки, но не надо. Только не надо. Попытайтесь создать свою рукоятку, чтобы физически отключить / удалить смехотворно мощную батарею, чтобы добраться до разъема USB.

Если вы планируете делать много программных разработок (как и я), я рекомендую построить «нож для ножей» с менее чем 40 светодиодами для тестирования. При макс. 2 амперах, который едва сработает с «зарядного» USB-порта, и вы можете написать весь плохой код, который вы хотите. Обратите внимание, что нет НИКАКИХ способов, ваш компьютер может обеспечить достаточный ток для работы полной 1-метровой полосы, а полифьюза на Pro Micro должен срабатывать и прерывать ток, если вы попытаетесь.

Image
Image
40-светодиодный «Light Knife», который я использовал для разработки, может быть в достаточной степени питаться от высокоскоростного «зарядного» USB-порта

Подключите аудио модуль

Image
Image
Image
Image
Завершено аудио-модуль из части 2

Нам нужно хорошее напряжение 5 В для аудио усилителя (до 2 Вт!), Поэтому подключите его провода питания к GND и RAW на Pro Micro. Вы можете сделать это, сдвинув провода от жгута проводов и проводов от аудиомодуля в отверстия GND и RAW (затем припаяйте, как обычно). Нанесите на них горячий клей или силикон для снятия напряжения и защиты. Будьте осторожны; это самый близкий к тому, что рельсы с 20 амперами касаются.

Не подключайте аудиоусилитель к выходу VCC Pro Micro, который будет украсть из регулируемого «цифрового» источника питания. VCC должен включать только Pro Micro и MPU-6050.

Я решил подключить аудио / динамический модуль непосредственно к Pro Micro, потому что у меня не хватило места, но не стесняйтесь добавлять сюда еще один разъем сервопривода (или мини-JST-разъемы, если у вас есть).

Image
Image
Аудио модуль подключен к контроллеру

Исходные тестовые тесты

Как только контрольные и аудиомодули собраны, подключите их к небольшому USB-источнику питания / банку (а не к основному преобразователю питания или компьютеру, если что-то пойдет не так), и вы должны услышать ужасный звуковой сигнал. Это аварийный сигнал минимального напряжения; в этом случае это просто напоминает вам, что LiPo не подключен.

Если это работает, вы можете выполнить первоначальный тест с преобразователем питания и батареей. Отключите USB-порт, подключите четыре модуля, которые мы завершили, в правильной цепи (контроллер, силовой преобразователь, жгут и аккумулятор), следите за шортами и выполняйте свой первый тест «зажигания».

Включите питание. Должен быть «щелчок» от динамика, но сигнал тревоги минимального напряжения, например, с USB. Если звучит сигнал будильника (хотя определенно есть полная батарея), вам может потребоваться настроить настройки прошивки.

Поверните ручку управления по часовой стрелке, чтобы зажечь лезвие или «поднять» контроллер (я обычно поднимаю один угол и снова бросаю его), чтобы дать ему достаточно поворота, чтобы активировать «качание, чтобы зажечь».

Должно возникнуть внезапный, громкий, полу-неприятный разрывный шум от динамика, который оседает на знакомый гул. Вы можете (аккуратно) переместить модуль контроллера вокруг, чтобы услышать, как гул изменяется тонко. Это докажет, что ИДУ работает.

Если саба постоянно выключается примерно через 90 секунд, и звук не реагирует на движение, вероятно, IMU не общается с Arduino. Убедитесь, что он имеет питание, а линии I 2 C - это правильный путь.

Для тестирования звука оставьте громкоговоритель лицевой стороной вниз в концевой крышке ПВХ (или на конце срезанного сегмента трубки), чтобы вы знали, как это будет звучать, когда внутри рукоятки. Динамики работают лучше всего, когда есть «перегородка» между передней и задней сторонами; в противном случае волны звукового давления просто прижимаются к краю конуса динамика и сокращаются.

Отрегулируйте громкость на модуле громкоговорителей, чтобы звук гула и воспламенения были наиболее громкими, но не искаженными.

Image
Image
Пять из шести модулей подключены и готовы к стендовому тестированию. Игорь, выбросьте ключ

Если на этом этапе у вас есть стойкая статичность, высокий шум или другие звуковые проблемы (в основном, если вы слышите что-либо, исходящее от динамика, когда лезвие не активно), вам может потребоваться добавить 330 мкФ или 470 мкФ электролитического конденсатора через источник питания аудио усилителя. Это может иметь место, особенно если вы выбрали SBEC, кроме YEP-20.

Светодиоды WS2812b внутренне используют широтно-импульсную модуляцию, а сто вместе могут делать хоральный «пение» звука, который попадает в аудиосигнал через линии электропитания. Если вы вдруг услышите такой шум, как только мы добавим лезвие, вам обязательно понадобятся дополнительные сглаживающие конденсаторы.

В следующий раз…

В части 4 мы подключим лезвие, выполним полную проверку всех компонентов вместе и соберите рукоятку.

Вы разочарованы, что ваш любимый микроконтроллер / IMU или комбинация не были использованы? Предложите, какие другие платформы вы хотели бы видеть в будущем в приведенных ниже комментариях.