На конференции ZeroNights , которая состоялась в прошлом ноябре, можно было получить особый бейдж — печатную плату в форме логотипа конференции, матрешки. Он также известен, как ZeroNights Badge или ZeroBadge. Мне лично бейдж достался за вроде как интересные вопросы на митапе r0 Crew . Как выяснилось, ZeroNights Badge представляет собой плату Arduino Leonardo, ту, что на базе микроконтроллера ATmega32U4. Такой модели Arduino у меня не было, да и поупражняться лишний раз в пайке поверхностным монтажом я был не против, поэтому я решил впаять в бейдж недостающие компоненты.
Причина, по которой я вам обо всем этом тут рассказываю, заключается в том, что информацию касательно данного бейджа мне пришлось собирать буквально по крупицам. Изначально я не имел ни малейшего представления, что это за плата и какие компоненты в ней используются. И нагуглить эту информацию не представлялось возможным. Это, бесспорно, большое упущение со стороны создателей бейджа. Хочется надеется, что сей пост немного исправит ситуацию.
Итак, рассыпуха, где ее можно приобрести, и куда ее впаивать:
- Гнездо microUSB — 1 штука (USB);
- ATmega32U4-AU — 1 штука (DD1);
- Кнопка 6х3.5, SMD — 1 штука (Reset);
- Кварц 16 МГц, SMD (HC-49SM) — 1 штука (Q1);
- Светодиод, SMD 0603 — 1 штука (LED1);
- Кер. конденсатор 1 мкФ, SMD 1206 — 3 штуки (C1, C5, C8);
- Кер. конденсатор 0.1 мкФ, SMD 1206 — 3 штуки (C2, C3, C4);
- Кер. конденсатор 10 пФ, SMD 0805 — 2 штуки (С6, C7)
- Резистор 22 Ом, SMD 1206 — 2 штуки (R1, R2);
- Резистор 1 кОм, SMD 1206 — 2 штуки (R3, R4);
- Штыри и/или гнезда с шагом 2.54 мм 1 x 40 — 1 штука (XX1, XX2);
Списком со мной поделился Олег Купреев в Telegram-чате DC7499 . Некто Dmitry Teh в этом же чате указал на то, что C8 может быть любым. Согласно даташиту [PDF] , стр 297:
The voltage reference may be externally decoupled at the AREF pin by a capacitor for better noise performance.
Получить приведенный список было, пожалуй, самым трудным. Остальное уже тривиально.
Fun fact! Суммарная стоимость компонентов из списка ниже стоимости готовой Arduino Leonardo, даже ее самого дешевого китайского клона, что мне удалось найти.
Так выглядит спаянный бейдж с залитой в него программой Blink:
Бутлоадер прошивается через Arduino IDE при помощи программатора или Arduino с залитым нее скетчем ArduinoISP, как ранее описывалось в заметке о сборке Arduino на макетной плате . Стоит отметить, что светодиод в бейдже почему-то подсоединен к PD6, который Arduino видит, как цифровой пин 12. Программу Blink нужно соответствующим образом модифицировать, так как используемый в ней по умолчанию пин LED_BUILDIN равен 13.
Многие небезосновательно ругают ZeroBadge. Мол пины стоят криво, в макетку не воткнешь. Не понятно, что мешало использовать SMD компоненты одинаковых размеров. Не ясно, зачем так много конденсаторов — по идее должно быть 2 у кварцевого резонатора и 1-2 для выравнивания напряжения. Да и резистора, кажется, должно хватить одного. Светодиод был подсоединен к цифровому пину 12 вместо 13, скорее всего, по ошибке. Я бы лично еще подписал пины так, как их видит Arduino, и пометил бы те, что имеют ШИМ. Также было бы не лишним указать номиналы всех компонентов на обратной стороне платы. Впрочем, если вы почитаете историю о том, как создавался бейдж , многое встанет на свои места.
Бейджик, безусловно, немного кривой, но зато получился довольно интересный хак-квест. Притом, я даже не заметил, как начал его проходить. И потом, если бы все было просто, я бы вам сейчас об этом не рассказывал. Так что, в плане пиара бейдж получился, возможно, даже лучше, чем ожидали его создатели.
А есть ли у вас ZeroNights Badge? Если да, то успели ли вы его спаять или собираетесь ли сделать это в будущем? Если нет, хотели бы получить такой на будущих конференциях?
Дополнение: Интересное применение микроконтроллера ATmega32U4 вы найдете в заметке Декодируем сигнал с OOK-модуляцией и паяем кликер .
Дополнение: Как я паял и программировал Кракена с ZeroNights 2017