В этой статье я расскажу всего об одном, но зато интересном аспекте нашей подготовки к ZeroNights 2016, на которой ты наверняка присутствовал в ноябре прошлого года. Ну или не присутствовал, зато знаешь того, кто присутствовал. Так, погоди, ну хотя бы в нашем журнале ты о ней читал? 🙂 Если хотя бы на один из вопросов ты ответил «да», то ты знаешь, что одной из фишек этой конференции был наш прикольный техногенный бейджик-матрешка. И сделан он был не из бархатной бумаги и даже не из листового палладия, а из… впрочем, об этом — ниже.

По хештегу #zeronights в твиттере можно найти то, что энтузиасты уже сделали на основе этого бейджика :).
 

Зарождение силы. То есть идеи

Идея сделать «прикольный бейджик» посетила нас в один из летних деньков теперь уже безвозвратно прошедшего года. Немного пораскинув мозгами, мы уточнили: «ну, прикольный бейджик для технарей» — и сформулировали кое-какие требования. Вот они:

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

Наш личный top магазинов электронных компонентов

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

  1. Как ни странно, «Чип и Дип». Раньше это был дорогой магазин, но сейчас либо остальные подняли цены, либо ЧиД их снизил. На некоторые компоненты цены в хорошем смысле впечатляют.
  2. Микроника. Много рассыпухи, но очень плохой сайт для поиска.
  3. Терраэлектроника. Крепкий середнячок, советую заглянуть.
  4. Пятый элемент. Огромный выбор всего и вся. Является представителем Farnell (а это уже глобальный дистрибьютор в мире электронных компонентов). Есть у него и подводные камни: проблемы со штучной доставкой и большие сроки ожидания (месяц, а то и больше).

«Сердцем» бейджика должен был стать микроконтроллер, и для его более стабильной работы нужен кварц. Кварц мы взяли обычный, громоздкий, двухвыводной. Возможно, кто-то скажет, что можно было найти более компактный кварц, но за компактность пришлось бы платить дополнительно, а вопрос бюджета стоял перед нами достаточно остро. Кроме того, мы планировали сначала изготовить тестовый образец (несколько плат), спаять их, проверить, что все работает, и уже потом заказывать большую партию. Паять мелкие детали вручную гораздо сложнее, чем крупные. Скромно хвастаясь, сообщу, что среди моих коллег нашелся джедай, который смог с первого раза запаять светодиод LED 1, типоразмер 0603 (для справки: типоразмер 0603 — это 1,6 мм в длину и 0,85 мм в ширину). По этим же причинам большая часть резисторов и конденсаторов выбирались максимально крупные (в основном это типоразмер 1206). Контактные площадки XX1 и XX2 брали с шагом 2,54 мм, так как это одно из стандартных расстояний между пинами в различных гребенках. Дальше будет показана 3D-модель получившейся платы, где читатель сможет увидеть названия LED, XX1, XX2.

За основу мы выбрали Teensy 2.0.

Небольшое отступление для тех счастливчиков, кто задавал интересные вопросы на прошедшей конференции, получил просто «плату» матрешки и хочет теперь ее собрать в полноценную отладочную плату (т.е. запаять все необходимые компоненты): номиналы «рассыпухи» можно смело смотреть по схемотехнике Teensy 2.0 или написать автору статьи за BOM (Bill Of Materials). Полную же информацию о проекте ты узнаешь по ссылке, а здесь я лишь уточню, что изначально это были небольшие Development Board, основанные на микроконтроллерах фирмы Atmel. Последние версии используют уже ARM-ядро Cortex-M4F и линейку микроконтроллеров Kinetis компании NXP.


Конечно, проще всего было бы закупить необходимое количество уже готовых платок и их раздавать. Но нам хотелось сделать что-то свое, прикольное и необычное, и обязательно в форме матрешки!
 

Проектируем плату

Идея наконец стала обретать формы проекта. Первое, что необходимо было сделать, — спроектировать плату матрешки и ее изготовить. Для разработки платы мы использовали AltiumDesigner. Иногда можно встретить сокращение AD, и у некоторых разработчиков эта аббревиатура вызывает ассоциации не с ActiveDirectory, а кое с чем подземным :). Почему мы не воспользовались более простыми аналогами? Причин несколько, и среди них есть субъективные:

  • Когда-то давно у меня был опыт работы в P-CAD (достаточно неплохая IDE для проектирования плат).
  • Хотелось изучить что-то новое, а, по моему мнению, AD — один из самых профессиональных инструментов в этой области (нисколько не принижаю достоинств других CAD-систем для создания электрических схем и проектирования печатных плат, например EAGLE, EasyEDA, Sprint-Layout или то, в чем работаешь ты, уважаемый читатель).
  • AD позволяет проектировать плату, расставляя 3D-элементы. Мне как новичку это порой очень помогало избежать некоторых ляпов. 3D-модели можно рисовать в SolidWorks или другой удобной для тебя САПР, а также можно воспользоваться готовыми моделями с сайта www.3dcontentcentral.com.

WWW


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

В итоге после пары дней рисования и пыхтения получилась вот такая 3D-модель:

Крутая матрешка
Крутая матрешка
 

Подводные камни проектировщика

Как может заметить наблюдательный читатель, кнопки SW1, вернее ее 3D-модели, к сожалению, на том сайте не нашлось. Размеры матрешки получились 108 мм по высоте и 62,5 мм по ширине.

Когда я начинал рисовать схему, а точнее располагать элементы на плате, думал, что все будет просто: плата выходила «большой», а элементов и дорожек не так много. Забегая немного вперед, скажу, что я ошибался ;). Вот с какими подводными камнями я столкнулся:

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

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

Итак, схема нарисована и разведена, 3D-модель будущего бейджика есть, все нравится — пора из картинки превращать это в готовое изделие.

 

Воплощаем в железе

Поскольку опыта изготовления плат у нас не было, мы решили несколько пробных плат заказать в «Резоните» и своими силами произвести монтаж, чтобы, если все заработает и запустится, заказывать серию (для этого необходимо переслать им gerber-файлы. AD прекрасно справляется с этой задачей. На сайте «Резонита» есть даже инструкции, как получить gerber-файлы из разных САПР).

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

 

Ковыряем железо

Как я уже говорил, у нас есть джедай паяльника, который смог все аккуратно запаять. Так что была возможность проверить, все ли правильно. Подключаем к компу, открываем Arduino IDE, выбираем Teensy 2.0… Барабанная дробь… результат — нет подключения, плата не обнаружена. «Все пропало, шеф!» — такова была первая реакция. Что, как, почему?! Что не так припаяли, где ошибка в схеме, может быть, уже что-то пожгли?

Так, спокойно. Чашка кофе, глубокий вдох и неспешное размышление, прозвонка дорожек…

Мы взяли за основу схемотехнику Teensy 2.0; дорожки у нас прозваниваются как надо, значит, нет замыканий; мультиметр показывает честные 5 В питания, осциллограф рапортует о том, что кварц выдает положенные 16 МГц. Микроконтроллер мы покупали в ЧиД. И тут приходит мысль и понимание, что это не Teensy 2.0 в чистом виде со своим уже прошитым бутлоадером и возможностью программировать ее из Arduino IDE!

В итоге поиск и чтение форумов привели нас к программе FLIP, которая позволяет заливать прошивку через USB. Подключаем матрешку, открываем эту программу. Микроконтроллер видится в системе, готов к прошивке. Заливаем тестовую программу, задача которой — поморгать диодом, перезагружаемся, затаив дыхание… и ура, диод моргает! Плата сконструирована верно, спаяна правильно, и все работает, можно заказывать партию!

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

И еще совет: если тебе кажется, что ты все спроектируешь за неделю, лучше закладывать раза в два больше времени :). Не забывай про отладку и возможный поиск ошибок, а может еще и производство немного напортачить, как было в нашем случае. Тестовые образцы у нас были красивого синего цвета. А партия получилась как бы синего цвета, но с уходом в зеленый. В итоге цвет вышел какой-то бледно-сине-зеленый, и смотрелось уже не так красиво. И самое главное, начинали поджимать сроки. В итоге «Резонит» переделывал матрешки заново. Были все шансы, что не получится привезти хардварные бейджики на конференцию. Но нам повезло: за пару дней до отъезда матрешки были изготовлены и доставлены в офис.

 

Что у нас получилось и как это использовать?

Если отбросить лирику, то это полноценная отладочная плата, у которой выведены все «ноги» микроконтроллера на две контактные площадки XX1 и XX2. В качестве микроконтроллера используется ATmega32U4. Питание либо через microUSB, либо через контактные площадки Vcc и GND. Как уже было сказано, прошивку можно заливать в микроконтроллер через microUSB с помощью программы FLIP. А саму программу можно писать в Atmel Studio (бывшая AVR Studio). Распространяется она бесплатно.

Что еще можно добавить об Arduino/Teensy и получившемся бейджике? Эти проекты позволяют юным разработчикам сразу начать реализовывать какие-то свои задумки. У них в распоряжении оказывается готовая простая среда разработки (ArduinoIDE). Но за эту простоту приходится платить тем, что очень многие вещи скрываются от программиста; если использовать скетч (так называется программа для Arduino), то порой хромает быстродействие. Вот наш бейджик заставляет разработчика копнуть чуть глубже. Возможно, ему придется почитать даташит на микроконтроллер, лучше изучить язык программирования С, познакомиться с внутренним миром самого микроконтроллера и семейства целиком. Поначалу это может показаться трудным, но страдания окупятся: ты сможешь писать более гибкие программы, ты станешь на несколько ступенек выше в табели о рангах профессиональных разработчиков встроенных систем.

 

Заключение

В качестве небольшого итога этой статьи еще пара советов и размышлений о разработке.

  • Рекомендую делать различные тестовые площадки и пины на этапе производства прототипа. Это нужно для того, чтобы у тебя была возможность легко подключиться к ним осциллографом, логическим анализатором или мультиметром, чтобы посмотреть «физику» процесса и понять, где закралась ошибка. Очень облегчает жизнь :).
  • Если ты решил что-то запитывать от USB ноутбука или компьютера, не пожалей денег на такую замечательную вещь, как термопредохранитель (пример). Такие штуки должны будут защитить USB порт от выгорания, если что-то пойдет не так.
  • Если решишь использовать какой-нибудь микроконтроллер для реализации своей идеи, не пожалей денег и на опытном образце поставь хотя бы один светодиод и простую кнопку. Позволит отлаживать огромное количество алгоритмов в случае, если нет других инструментов (JTAG-отладчика или логического анализатора).

5 комментариев

Подпишитесь на ][, чтобы участвовать в обсуждении

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

Check Also

Конкурс хаков: пишем на PowerShell скрипт, который уведомляет о днях рождения пользователей Active Directory

В компаниях часто встречается задача уведомлять сотрудников о приближающихся днях рождения…