Найти в Дзене
Arduino хобби

Шьем на дому. Мои флешбеки про флешинг AVR-микрух.

Сегодня в очередной раз побояню. Не из природной вредности, а скорее наоборот: с целью собрать в кучу некоторое количество освоенной полезной инфы, специфических траблов и путей их решения. Чтобы осталось что-то вроде памятки, к которой можно вернуться через пару лет и рефрешнуть кеш ОЗУ в натруженном мозге, и не бегать по тем же самым граблям, сетуя на прогрессирующий старческий склероз.

Тем более, что в свете событий последних лет и взлетевших цен на платы Ардуино, актуальность сей инфы (прошивка голых бюджетный камней) не только не угасает, а скорее даже наоборот.

Началось все с того, что пару лет назад приобрел на пробу горсть мелкосхем серии ATtiny 2313. Во-первых, было интересно с ними поиграться, а во-вторых, на некоторые проекты ставить полноценную Ардуинку было слишком жирно. Да и места внутри поделки не всегда есть под ту же Нано. А тут за 3 копейки доступно 20 ног и 2Кб памяти. Можно резвиться вволю.

Но по законам диалектики, ясен пень, есть и недостаток: в USB порт микросхема никаким боком не влезает, проверено. То есть, чтобы залить туда свой супер-мега-скетч с мигающим светодиодом, нужен программатор.

Покупать его отдельно было лениво, поэтому, разумеется, я пошел давно протоптанным путем: в качестве прошивальщика заюзал обычную плату Arduino Nano. Добавить шесть токопроводящих ниток, макетку, светодиод с резюком (необязательно) и все готово, можно шить!

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

Скетч, поясняющий плате Ардуино, что она теперь программатор встроен прямо в ArduinoIDE и лежит в примерах (называется ArduinoISP). Схемы подключения тоже лежат на каждом углу.

Собственно, ровно тем же макаром прошиваются не только вышеупомянутые тиньки, а вообще любые другие AVR камни в DIP корпусе.

А если обзавестись спец-прищепками, то и для SOIC, SOP и др. типа исполнения тоже.

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

Теперь о печальном:

- Свободная Ардуинка есть не всегда.

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

- Перемычки не всегда обеспечивают нормальный контакт. У меня, например, те же Тиньки на макетке шились только со второй попытки. Говорят, что лечится конденсатором, но это опять же лишние сопли при таком варианте подключения. А ATMega 8L у меня вообще прошить не получалось. Все время вылетали ошибки. Я поначалу даже думал, что подсунули дохлые.

- Категорически неудобно, когда заливаемый скетч еще не готов на 100% и требуются регулярные перепрошивки после исправлений или подбора параметров. А еще в этом случае приходится или собирать схему вокруг «программаторного» обвеса или постоянно шморгать микросхему из одной макетки в другую. Некузяво.

На вот такие извращения приходится идти. Чтобы и рыбку и вот это вот.
На вот такие извращения приходится идти. Чтобы и рыбку и вот это вот.

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

В инете я уже видел несколько вариантов исполнения задуманного. (Не один такой я умный).

Больше всего мне понравился шилд для UNO с панельками для разных корпусов, индикацией диодами прочим. Одно НО: лишней уны у меня нету, а стоит она раза в два дороже готового программатора.

Поэтому, я решил сварганить свою собственную плату для вышивания, с «блек Джеком» и прочим этим всем. В качестве основы, взял макетку под пайку формата 40х60мм. Прикинул расположение панелек для самых ходовых микросхем с 28, 20 и 8 пинами. Так же, добавил туда ISP разъем и светодиод с резюком, чтобы сразу можно было проверить работоспособность микрухи залив в нее Blink. Диод я повесил на 8-ой пин (PB0 и PD6 для Атмег 8/168/328 и Аттини 2313/4313 соответственно), просто потому, что они были ближе и удобнее всего для пайки. Но в последствии, выяснилось, что в том же Optiboot прописан пин PB5 для базовых атмег, и используется для индикации ресета. Но перепаивать мне уже было влом.

Некоторые могут спросить: а где в твоей схеме кварц? На что я ловко отмажусь наличием природной лени и тягой к минимализму. Кварц, как известно, есть и внутри. А от того факта, что камни не смогут с ним работать на максимальной частоте, у меня терморегуляция не нарушится. Майнить на них я не планирую.

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

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

От панельки для Аттини 13 и прочих мелких восьминогов я место на плате зарезервировал, но решил от распайки пока отказаться. С ними не все так просто и однозначно.
Кстати, панельки на 28 дырок у меня под рукой не оказалось, поэтому пришлось спаять последовательно две: на 20 и на 8.

Пины питания на ISP гребенке пометил цветными маркерами, дабы не перепутать при втыкании разъема. Шнурки, идущие от Ардуино, смотал изолентой вместе в как бы единый цельный разъем. Цвета проводов в нем подобрал так, чтобы 5В и земля оказались красным и почти черным (логично!) и было понятно из далека, какой стороной его совать и не корячится каждый раз перепроверяя коммутацию по схеме.

Эстетика, разумеется, требовала переткнуть шнурки в нормальный двухрядный 6-ти пиновый штеккер, и чтобы в идеале, с ключом. Но на «складе» подобного не оказалось. А с учетом того, что вот-вот должен был материализоваться на почте ISP программатор, решено было ограничиться менее перфекционистким вариантом.

Самопальный шестипиновый разъем. Извините, что изолента не синяя.
Самопальный шестипиновый разъем. Извините, что изолента не синяя.

Далее, после первых прошивок пришла гениальная и не менее своевременная мысль: надо было параллельно панелькам распаять и гребенки, чтобы иметь возможность сразу навесить обвязку на пины. Тем более, что и места на макетке осталось валом.

А еще неплохо бы вкорячить туда за одно и разъем под UART, дабы иметь возможность дебажить не отходя от кассы. Но, во-первых, перепаивать все дитоли, чтобы расчистить место, мне уже было сильно лень, а во вторых, покумеков, я решил, что котлеты отдельно, мухи отдельно. Для дебага и прототипирования лучше будет сделать отдельную платку, пока ограничившись обычными контактными макетками. А для прошивки использовать ту, что получилось.

А с обратной стороны "медали" получилось вот так.
А с обратной стороны "медали" получилось вот так.

Чтобы обезопасить припаянную моими очумевшими ручками трахомудию проводов от нехороших последствий возможного отпадания и замыкания, распечатал аккуратный маленький корпус. А это сразу +50 к красоте и +5 к устойчивости конструкции.

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

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

От така красота. Аж самому приятно.
От така красота. Аж самому приятно.

Осталось описать возникшие приколы по заливке скетчей через Serial, но поскольку текста получилось и так многовато, оставлю этот «сериал» на вторую серию.

Схема в сборе.
Схема в сборе.

З.Ы. а подписываться Пушкин будет?