Оглавление:

Швейцарский нож AVR: 14 шагов (с изображениями)
Швейцарский нож AVR: 14 шагов (с изображениями)

Видео: Швейцарский нож AVR: 14 шагов (с изображениями)

Видео: Швейцарский нож AVR: 14 шагов (с изображениями)
Видео: Клим Жуков - Оружие и броня 14 век часть 2 2024, Июль
Anonim
Швейцарский нож AVR
Швейцарский нож AVR
Швейцарский нож AVR
Швейцарский нож AVR
Швейцарский нож AVR
Швейцарский нож AVR
Швейцарский нож AVR
Швейцарский нож AVR

Swiss AVR Knife объединяет несколько программных проектов AVR в единую удобную баночку Altoids Gum Tin. Благодаря гибкости, предоставляемой программированием микроконтроллера, он также обеспечивает отправную точку для любого количества проектов, основанных на светодиодах и выводе звука. SAK может содержать столько программ, сколько позволяет 8 КБ памяти, и поддерживает восемь состояний для каждой программы. Синяя кнопка заставляет SAK циклически перебирать программы и состояния - быстрое нажатие заставляет его оставаться в программе, но переходить к следующему состоянию (независимо от того, какое оно определено), а долгое нажатие вызывает переход к следующей программе. Текущая программа и состояния всех программ сохраняются в EEPROM между использованиями.

В настоящее время в САК реализуются следующие проекты. Они вместе со всем остальным кодом и константами (есть полная таблица шрифтов) занимают около 4 КБ доступного пространства. Намного больше места! MiniMenorah - Мозговая машина злых безумных ученых - Митч Альтман MiniPOV - Adafruit IndustriesNoise Toy - Громкие объекты Светодиодные ходовые огни Светодиодные свечи Светодиодный фонарик Этот проект не мог бы существовать без значительной щедрости всех, кто так или иначе внес свой вклад. В дополнение к вышеупомянутому, я хотел бы поблагодарить разработчиков используемых программных инструментов (см. Другие шаги) и всех, кто создал полезный веб-сайт, который способствовал моему пониманию этих тем. Я могу взять прямую заслугу за очень небольшую часть кода, использованного в этом проекте. Если вы чувствуете, что код ваш, вполне может быть. Дайте мне знать, и я с радостью отдаю вам должное. В любом случае спасибо за ваш вклад:-)

Шаг 1: Детали

Детали можно приобрести у любого из множества поставщиков электроники. Как указано, из-за нехватки места требуется большинство компонентов. Все едва влезает; убедитесь, что запасные части не занимают дополнительного места. Не заменяйте ATtiny84, если вы не уверены, что контакты соответствуют друг другу. Ссылки, следующие за деталями, относятся к DigiKey и всей электронике. Электронные компоненты 1 x U1 - ATtiny84 - ATTINY84-20PU-ND1 x Ux - 14-контактный разъем IC DIP - A32879-ND9 x LED - выбор цвета 9 x резисторы - согласованы с вашими светодиодами 2 x R1, R2 - 100 Ом 1 / 4Вт 1% металлическая пленка - 100XBK-ND2 x C7, C8 - 47 мкФ - P5151-ND Прочее Держатель батареи 1-AA 6-дюймовые провода (1) 2461K-ND Разъем для телефона, стерео 3,5 мм (1) MJW-22 Тумблер SPDT 1/4 вкл. (1) MTS-4 Кнопочный переключатель (1) 450-1654-NDMinty Boost SAK питается от одной батареи AA с усилением чип Maxim MAX756 (важнейший компонент MintyBoost!). Компоненты ниже необходимы для этой части схемы. 1 x U1 - MAX756CPA DC / DC 3.3 / 5V DIP - MAX756CPA + -ND1 x Ux - гнездо IC 8-контактный DIP - A32878-ND2 x C7, C8 - 0,1 мкФ - 399-4151-ND2 x C3, C5 - 100 мкФ - P5152-ND1 x L1 - 22 мкФ радиальный - M9985-ND1 x D1 - 1N5818 Шоттки 1A 30 В - 1N5818-E3 / 1GI- ND

Шаг 2: микроконтроллер ATtiny84

Микроконтроллер ATtiny84
Микроконтроллер ATtiny84

Во многих проектах используется либо 20-контактный микроконтроллер ATtiny2313, либо 8-контактный микроконтроллер ATtiny85. Я обнаружил, что ATtiny2313 слишком большой (для корпуса), а ATtiny85 слишком маленький (недостаточно памяти, недостаточно выходных контактов). ATtiny84 как раз подходит:-) ATtiny84 имеет 8 КБ программируемой флэш-памяти (достаточно для хранения множества небольших программ), 512 КБ EEPROM (для сохранения состояния между использованиями), до 12 выходных контактов (для 9 светодиодов, 2 канала аудиовыхода и кнопочного переключателя) и многие другие полезности, которые не используются в этом проекте. Если вы планируете добавлять программы, получите копию таблицы данных ATtiny84. В Интернете есть множество инструкций по программированию микроконтроллеров этого семейства. Полезный обзор микроконтроллеров см. В разделе «Как выбрать микроконтроллер». Примечание. В описанном здесь проекте на самом деле не полностью включена MiniMenorah. Для MM требуется девять выходных контактов, для Brain Machine - два и кнопка для изменения состояния один, всего двенадцать. Хотя ATtiny84 может быть сконфигурирован так, чтобы иметь двенадцать выходных контактов, это происходит за счет вывода RESET. Отключение вывода RESET и включение его ввода-вывода делает ATtiny84 неспособным программировать с помощью программатора USBtinyISP (который этого не сделал:-) и требует программирования высокого напряжения. Все готово для включения MM, но требуется другой программатор, а у меня его нет.

Шаг 3. Инструменты программирования AVR

Инструменты программирования AVR
Инструменты программирования AVR
Инструменты программирования AVR
Инструменты программирования AVR

Для программирования микроконтроллеров AVR необходимо довольно много компонентов, как аппаратных, так и программных. Ниже приведены инструменты, которые я использую. Многие, многие другие существуют в том же ценовом диапазоне - от бесплатного до дешевого. Найдите набор, который вам подходит, и придерживайтесь его. А еще лучше найти друга, который разработал систему, и использовать его / ее инструменты. Нет ничего особенно сложного, если все пойдет так, как рекламируется, но заставить все инструменты работать вместе может быть настоящей проблемой. Программирование cradle Я основал свою на среде программирования Ghetto. Длинные штыри держателя микросхемы с проволочной оберткой доходят до макетной платы и создают удобную экспериментальную установку. Единственная проблема, с которой я столкнулся, заключается в том, что компоненты программирующих штырей не могут быть заземлены во время программирования. Я использовал два подхода к решению этой проблемы. Первый - иметь два держателя чипа, один для программирования, а другой для работы (см. 8-контактный держатель). Это не идеально, потому что делает большую часть макета непригодной для использования, и довольно утомительно перемещать микросхему. Второй - установить небольшой переключатель, чтобы отсоединить контакт заземления от земли макетной платы во время программирования. Это работает лучше и оставляет больше места на макетной плате для компонентов. ПрограмматорUSBtinyISP kit от Adafruit Industries. С небольшой модификацией (удалите 10-контактный кабель и согните светодиоды) программатор помещается в Altoids Gum Tin. Шестиконтактный кабель можно даже свернуть в жестяную банку для хранения. SoftwareWinAVR - это набор инструментов разработки программного обеспечения с открытым исходным кодом для программирования микроконтроллеров AVR на машинах Windows. Он хорошо работает с программатором USBtinyISP (см. Руководство по AVR). Недавно я переключился с использования приложения Programmer's Notepad, которое поставляется вместе с WinAVR, на использование Eclipse с подключаемым модулем AVR Eclipse. Eclipse может использовать avrdude, поэтому вам все равно придется установить WinAVR. В Eclipse улучшено управление проектами, есть полезные руководства, и он бесплатен. Его установка, работа с руководством и программирование чипа заняли всего несколько минут. Позвоните другу В Интернете есть множество ресурсов. Ищите их, просите помощи. Люди могут быть знающими и полезными. Это приятно:-) Они тоже могут пренебрежительно относиться к этому. Это не хорошо:-(

Шаг 4: Программирование микроконтроллера

Программирование микроконтроллера
Программирование микроконтроллера

Код C Не критикуйте то, чего я не понимаю. Я не программист, C - не мой родной язык, и я держусь за тонкий поток Java и много ищу в Интернете при работе на C. Хотя большая часть кода пришла из других проектов (см. Титры), Пришлось внести некоторые дополнения и модификации. Исходный код для Swiss AVR Knife прилагается ниже как в виде исходного файла на c, так и в виде шестнадцатеричного файла. Я был бы признателен, если бы услышал, где можно улучшить код. Я планирую внести в код несколько изменений. Скоро появятся обновления. А пока код работает так, как рекламируется. Предохранители Предохранители микроконтроллера сбивают с толку. Я отключил несколько микроконтроллеров, случайно настроив их на поиск внешнего генератора, и отключив контакт RESET. Их можно восстановить, но до тех пор это просто мертвые ошибки. Будьте осторожны, если решите заменить предохранители. Чтобы рассчитать правильные значения предохранителей, используйте онлайн-калькулятор предохранителей. Выберите целевую часть (ATtiny84) и соответствующие настройки - внутренний RC-генератор, работающий на частоте 8 МГц (значение по умолчанию), НЕ делите тактовую частоту на 8 внутренне, разрешите загрузку последовательной программы и отключите обнаружение потери напряжения. Результат должен быть следующим. -U lfuse: w: 0xe2: m -U hfuse: w: 0xdf: m -U efuse: w: 0xff: m (низкий 0xE2 высокий 0xDF ext 0xFF). Сжечь предохранители нужно только один раз (если вы не планируете их менять). Eclipse упрощает это, как, я уверен, делает другие IDE. Вопросы, на которые я хотел бы получить ответы Любые идеи по оптимизации кода Почему мигающие индикаторы в звуковой и световой машине вызывают колебания тона при включении в банке, но не на макете? Почему Eclipse не нравятся функции lightOn и lightOff, хотя кажется, что они работают?

Шаг 5: макетирование проекта

Макет проекта
Макет проекта
Макет проекта
Макет проекта

Поскольку большая часть работы в этом проекте выполняется микроконтроллером, внешних частей очень мало. После проверки того, что ваш программатор и цепочка инструментов в порядке, было бы неплохо смонтировать схему и убедиться, что все работает так, как рекламируется. Рисунки ниже представляют собой испорченные версии фактического макета, который я установил. Я использовал светодиоды в модельном банке и вытащил подставку и чип, чтобы использовать их на нескольких фотографиях. Общая проводка в основном соединяет активные контакты с несколькими частями, а затем с землей. Примечание Порядок контактов и светодиодов на макетной плате и печатной плате не совпадает (хотя я полагаю, вы могли бы сделать их одинаковыми). В коде вы увидите фрагменты кода, которые необходимо либо включить, либо закомментировать, в зависимости от того, является ли целью макет или печатная плата.

Шаг 6: Подготовка жевательной резинки Altoids

Картинки по дороге расправьте дно. Нижняя часть олова загибается вверх и внутрь. Ее необходимо приплюснуть, чтобы батарея и печатная плата поместились и сидели ровно. Стараясь не деформировать банку, вытолкните дно так, чтобы оно стало практически плоским. В банке нужно сделать три набора отверстий. Я использую металлический пробойник, чтобы отметить места отверстий, и битумы (для дерева), чтобы просверлить отверстия. Биты с острием штифта имеют центральную точку и две режущие кромки. Они не будут кататься на коньках, а края медленно прорезают металл. Насадки Brad point можно приобрести в Lee Valley (среди прочего). Первая представляет собой набор из девяти 5-миллиметровых отверстий в верхней части банки для светодиодов. Доступны метрические наконечники с острием, которые делают чистые и аккуратные отверстия для светодиодов. Создайте бумажный шаблон с отмеченными отверстиями и перенесите отметки на верхнюю часть банки. Во избежание проталкивания верха банки, поддерживайте внутреннюю часть крышки на небольшом деревянном бруске при пробивании и сверлении крышки. Вставив бумагу и дерево на место, я выдавил на олове ямки с помощью дырокола. При сверлении сначала двигайтесь медленно. Режущие кромки штифтов должны составлять ровный круг. Сверление сверлом чего-либо, кроме перпендикулярного к поверхности, может привести к тому, что сверло схватится и разорвет металл. 5-миллиметровый наконечник штифта дает хорошее чистое отверстие, но я обнаружил, что мне пришлось немного его расширить. Я сделал это, просверлив изнутри обычной коронкой 13/64 дюйма. Второй набор состоит из двух отверстий 1/4 дюйма на правой стороне банки для переключателя и аудиоразъема. Из-за сильной кривизны на конце банки эти отверстия должны быть достаточно близко. Убедитесь, что они расположены так, чтобы компоненты поместились в жестяной банке. Отцентрируйте их вертикально на той части стороны, которая видна при закрытой крышке. Сделайте отметки пробойником и просверлите очень осторожно. Предостережение о том, что биты захватывают олово, сильнее относится к большим битам. Последнее отверстие предназначено для кнопочного переключателя. Расположите отверстие в правом нижнем углу так, чтобы кнопка не мешала другим компонентам в жестяной банке.

Шаг 7: проектирование и изготовление печатной платы

Проектирование и изготовление печатной платы
Проектирование и изготовление печатной платы
Проектирование и изготовление печатной платы
Проектирование и изготовление печатной платы
Проектирование и изготовление печатной платы
Проектирование и изготовление печатной платы

В Интернете есть множество ресурсов, описывающих процесс создания печатных плат. Ни один из методов не является надежным или простым, но важно освоить хотя бы один. Я использую бесплатную версию EAGLE Layout Editor от CadSoft для создания схемы и компоновки печатной платы. Мой подход к производству печатной платы описан в инструкции по изготовлению и подготовке печатной платы Altoids Tin Speaker. После переноса, травления и сверления платы вы готовы спаять все вместе. Обратите внимание, что мой последний опыт переноса изображений на Платы следующие. Хорошо вымойте доску с помощью средства для мытья посуды и потрите зеленой щеткой. Аккуратно отшлифуйте все заусенцы с краев доски, чтобы переводная бумага и утюг хорошо соприкасались с доской. Разогрейте утюг. Положите лист бумаги на доску и нагрейте доску утюгом. После того, как доска сильно нагреется, аккуратно поместите на доску подготовленную копировальную бумагу. Он сразу прилипнет (потому что доска горячая), поэтому убедитесь, что она правильно расположена. Затем гладьте прямо по блестящей обратной стороне копировальной бумаги. Это никогда не доставляло мне проблем, но вы используете свое собственное железо. Сначала проверьте. Дайте доске остыть, а затем промойте ее под холодной водой. Трансферная бумага должна оторваться и оставить все изображение. Используйте 8-кратный просмотрщик слайдов / негативов, чтобы просмотреть перевод и заполнить недостающие фрагменты. Удачи.

Шаг 8: Припаивание деталей к печатной плате

Припаивание деталей к печатной плате
Припаивание деталей к печатной плате
Припаивание деталей к печатной плате
Припаивание деталей к печатной плате
Припаивание деталей к печатной плате
Припаивание деталей к печатной плате

В Интернете есть множество ресурсов, описывающих процесс пайки электронных компонентов на печатные платы. См., Например, руководство по пайке на сайте ladyada.net. Порядок, в котором вы устанавливаете компоненты, на самом деле не имеет значения, хотя я обнаружил, что проще всего работать от наименьшего к наибольшему. Провода светодиодов / мигалок достаточно длинные, чтобы вы могли придать им форму, напоминающую менору, в жестяной банке. Осторожно установите светодиоды и согните провода так, чтобы верх каждого светодиода располагался так, чтобы он выходил через соответствующее отверстие. Это может быть сложно, но когда все наконец сработает, это будет выглядеть действительно хорошо. Если оставить провода слишком длинными, светодиоды могут быть зажаты и смещены крышкой банки. Примечание. Крайний правый светодиод не находится в той же ориентации, что и остальные восемь. Убедитесь, что вы проверяете полярность светодиодов относительно схемы платы при их установке. Этот светодиод прикреплен к контакту RESET, поэтому вы можете не устанавливать его. Примечание. Провода к аудиоразъему и резисторы имеют общее отверстие. Для удобства поместите резисторы вертикально так, чтобы корпус резистора не заходил над отверстием с аудиопроводом. Либо подготовьте и установите аудиоразъем на этом этапе, либо подождите, пока он не будет готов к впаиванию резисторов. Демонтаж резисторов в дальнейшем не представляет никакого интереса.

Шаг 9: мигалки

Мигалки
Мигалки

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

Шаг 10: Подготовка держателя батареи

Подготовка держателя батареи
Подготовка держателя батареи

Проденьте маленькие кусочки термоусадочной трубки по обоим выводам держателя батареи. Осторожно вставьте их в отверстия держателя и усадите на место. Они обеспечивают некоторую степень защиты проводов. (Эта инструкция дублируется на странице «Подготовка тумблера».) Отрежьте черный провод нужной длины и припаяйте к соответствующему отверстию на печатной плате. Красный провод припаян непосредственно к тумблеру; см. инструкции на этой странице, чтобы узнать, как действовать. В прошлых проектах я вырезал фиксирующие выступы на держателе батареи. Сделав это на прототипе, я теперь жалею об этом. Батарея не хочет оставаться на месте плотно. Оставьте вкладки для запуска и снимайте их только в том случае, если у вас возникли проблемы с извлечением аккумулятора. Несмотря на это, на картинке показан держатель батареи с отрезанными выступами. Это потому, что я взял его из другого проекта.

Шаг 11: Подготовка тумблера

Подготовка тумблера
Подготовка тумблера

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

Шаг 12: Подготовка аудиоразъема

Подготовка аудиоразъема
Подготовка аудиоразъема
Подготовка аудиоразъема
Подготовка аудиоразъема
Подготовка аудиоразъема
Подготовка аудиоразъема

Все провода к аудиоразъему довольно короткие. Нанесите немного припоя на контакты разъема и провод, а затем припаяйте их на место. Наденьте термоусадочные трубки на стыки, чтобы защитить и укрепить их. Провод заземления можно впаять прямо в его отверстие. На концах сигнальных проводов есть отверстие с одним концом резистора. Подготовьте провод и резистор, скрутив концы вместе и нанеся немного припоя. Отверстие, в которое они входят, должно быть просверлено до 3/64 дюйма для размещения двух проводов. Припаяйте на место.

Шаг 13: Подготовка кнопочного переключателя

Подготовка кнопочного переключателя
Подготовка кнопочного переключателя
Подготовка кнопочного переключателя
Подготовка кнопочного переключателя
Подготовка кнопочного переключателя
Подготовка кнопочного переключателя

Подготовьте короткий кусок твердой проволоки, придав ему U-образную форму, чтобы он плотно прилегал к нижней части переключателя. Нанесите каплю припоя на обе стороны отверстия - оставьте место для переключателя - и установите переключатель на место. Расплавьте припой и вставьте провод на место. Подождите, пока припой затвердеет, и повторите с другой стороны. Это должно установить и зафиксировать переключатель на месте. Подготовьте два куска многожильного провода, отрезав нужную длину и обнажив оба конца. Убедитесь, что провода достаточно длинные, чтобы крышка банки могла полностью открыться. Припаяйте два соответствующих контакта на переключателе, а затем наденьте термоусадочные трубки на стыки, чтобы защитить и укрепить их. Припаяйте другие концы к соответствующим отверстиям на плате. Осторожно проденьте провода между светодиодами и убедитесь, что они не попадают на батареи. Я раздвинул два контакта на переключателе так, чтобы крайний правый светодиод проскользнул между ними. Контакты на переключателе ОЧЕНЬ хрупкие (два других отломаны). Обратите внимание, что контакт PA7 PCINT7 6 настроен на отслеживание изменения состояния. Нажатие кнопочного переключателя переводит контакт в высокий уровень, и выполняется СИГНАЛ (PCINT0_vect). В зависимости от продолжительности нажатия кнопки либо ничего не происходит (грубое противодействие), состояние продвигается (короткое нажатие), либо программа продвигается (длительное нажатие).

Шаг 14: закрытие крышки

Закрытие крышки
Закрытие крышки

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

Рекомендуемые: