Год назад я писал о бейдже в форме матрешки , который можно было получить на конференции ZeroNights 2016. В этом, или точнее, уже прошлом, 2017 году, на ZeroNights у организаторов одного из железных стендов также можно было получить плату-бейдж. На сей раз плата называлась Кракен и имела форму осьминога (или ананаса, смотря какой стороной повернуть :D). Кракен представляет собой отладочную плату на базе STM32F405RGT6. Насколько я смог выяснить, плату разработали Арсений Жгилев и Антон Канышев.
Первая проблема, возникшая у меня при пайке Кракена, заключалась в том, что обозначения компонентов в BOM и на шелкографии расходились. Ниже приведен скорректированный список необходимых компонентов с информацией о том, куда их нужно впаивать, и где можно купить:
- Микроконтроллер STM32F405RGT6 — 1 шт (DA1);
- Кварцевый резонатор SMD 16 МГц — 1 шт (Z1);
- LDO регулятор напряжения LD3985M33R — 1 шт (DA2);
- ИС управления питанием и зарядом Li-Ion BQ2057CSN — 1 шт (DA3);
- FDN306P P-channel MOSFET — 1 шт (VT1);
- Диод Шоттки B240A — 2 шт (VD1, VD2);
- Светодиод 0603 — 11 шт (H1 — H11);
- Резистор 220 Ом 0603 — 9 шт (R1-R8, R12);
- Резистор 10K 0603 — 4 шт (R9, R10, R18, R19);
- Резистор 620 Ом 0603 — 2 шт (R11, R16);
- Резистор 0.2 Ом 1206 — 1 шт (R13);
- Резистор 1 кОм 0603 — 3 шт (R14, R15, R17);
- Конденсатор 0.1 uF 0603 — 11 шт (C1-C6, C14, C15, C17, C20, C21);
- Конденсатор 4.7 uF 0805 — 2 шт (C7, C23);
- Конденсатор 0.01 uF 0603 — 2 шт (C8, C18);
- Конденсатор 22 pF 0603 — 2 шт (C9, C10);
- Конденсатор 1 uF 0603 — 3 шт (C11, C16, C19);
- Конденсатор 2.2 uF 0805 — 3 шт (C12, C13, C22);
- SMD-кнопка 7914J-1-000E или похожая — 1 шт (Q1);
- MiniUSB разъем USB/M-1J — 1 шт (X2);
- OLED-модуль 0.96″ с SPI-интерфейсом от Waveshare — 1 шт (DA4);
Отмечу, что мелкие SMD резисторы и конденсаторы легко теряются, поэтому лучше взять их с небольшим запасом. OLED-дисплей в силу понятных причин является опциональным. Также понадобится некоторое количество гнезд и штырьков с шагом 2.54 мм, но я думаю, что они у вас и так есть. Наконец, к списку стоит добавить разъем IDC-10 . Далее станет понятно, зачем.
Fun fact! Внимательные читатели к этому моменту уже догадались, что плата умеет работать от Li-Ion аккумулятора, а также заряжать этот аккумулятор от USB. А вы прошли проверку на внимательность?
В собранном виде бейдж выглядит приблизительно так:
Здесь в него залита простенькая прошивка, которая по очереди зажигает все светодиоды на щупальцах, а затем также по очереди гасит их:
/* do nothing, yet */
}
void loop ( ) {
static const int pins [ ] = {
GPIO_PIN_4 , GPIO_PIN_5 , GPIO_PIN_6 , GPIO_PIN_7 ,
GPIO_PIN_8 , GPIO_PIN_9 , GPIO_PIN_11 , GPIO_PIN_10
} ;
for ( int i = 0 ; i < sizeof ( pins ) / sizeof ( pins [ 0 ] ) ; i ++ ) {
HAL_GPIO_TogglePin ( GPIOC , pins [ i ] ) ;
HAL_Delay ( 250 ) ;
}
}
Программирование платы осуществляется по аналогии с тем, как это делалось в заметке Готовим «взрослую» среду разработки под STM32 в Linux . Заметьте, что в приведенном коде пины используются не по порядку. Это не опечатка, а такая особенность разводки платы.
К слову об особенностях разводки. Вам, конечно же, бросился в глаза тоненький желтый проводочек, идущий через весь бейдж сквозь пару капель термоклея к куску макетки с проводами и разъемом IDC-10. Дело в том, что на плате оказался неправильно разведен SWD . Штырек на плате, который по задумке должен быть SWIO, идет к пину 55 микроконтроллера, а не пину 46, на котором на самом деле живет SWIO. Поэтому, если просто спаять плату как она есть, программатор не увидит микроконтроллер и будет ругаться очень странными ошибками.
Стоит ли говорить, что, поскольку я являюсь полным новичком в мире STM32, выяснить этот момент заняло у меня какое-то время . В итоге проблему я решил макеткой, разъемом IDC-10 и тонкими проводами , как изображено на приведенном фото. Разъем IDC-10 был выбран по той причине, что он же используется в программаторе STLink v2. Таким образом, я могу подключать программатор к плате просто с помощью соответствующего шлейфа, не вспоминая постоянно, какой провод откуда и куда нужно подключать. Удобно.
Исходники к этой заметке, а также схему платы, вы найдете в этом репозитории на GitHub . За кадром осталась работа с OLED-экранчиком, но об этом уж как-нибудь в другой раз. Несмотря на упомянутые дефекты платы, было весело. Пожалуй, даже веселее, чем было бы без них. Именно благодаря Кракену у меня возник интерес к микроконтроллерам STM32. А вы думали, откуда?
Так что, спасибо создателям платы, организаторам стенда, а также организаторам конференции ZeroNights за то, что делаете нашу гиковскую жизнь интересной и наполненной фаном!
А есть ли у вас такой бейдж? Если да, то успели ли вы его спаять, или только собираетесь это сделать? Если нет, то хотели бы получить такой на следующей конференции?
Дополнение: Микроконтроллеры STM32: работа с OLED-экранчиками на базе SSD1306 по I2C и SPI .