игральный кубик arduino mega328 своими руками

Переход от прототипа Arduino к устройству на примере игрального кубика

от автора

в

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

Игральный кубик на ардуино

Да.. Такое в маленький корпус спрятать не получится. Для проектирования я обычно использую среду DipTrace – она условно бесплатна (легко найти ключ на 1000 выводов для некоммерческого использования), понятна, и содержит большую базу компонентов. Конечно, правильно было бы начинать с принципиальной схемы, а потом переходить к печатной плате, используя связи между компонентами, но в кубике всё запредельно просто, поэтому я сразу начну рисовать плату в заданном размере. Уроков по DipTrace очень много, я буду опираться на другие моменты, на сам принцип проектирования. Для начала я задам рабочие размеры поля (outline), нарисую отверстия и помещу основные компоненты – МК, транзисторную сборку ULN2803 и 8 резисторов.

Как видите, если я навожу курсор на вывод компонента – вижу его номер и описание. В данном случае AVCC. Это очень удобно, можно даже не обращаться к даташиту. Теперь вспоминаем предыдущую статью, и пытаемся помимо нашей схемы подключения индикатора, снабдить контроллер всем необходимым. Так как место на плате у нас немного, то я не стал ставить электролит по питанию (батарейка даёт достаточно стабильное напряжение). Сначала разберёмся с питанием. Внимательно смотрим все выводы VCC, GND, и объединяем их. Снизу обычный пин i/o PD5, но я провёл через него 5В для удобства, чтобы не делать перемычку, ведь он толерантен к 5В. Но вообще его подключать конечно не нужно.

Затем выводим выходы колонок, просто берём рядом стоящие пины I/O, затем в программе можно просто переназначить их как будет удобно.

Тоже самое сделаем с выводами колонок, не забыв в разрыв поставить ULN2803. Также мы пропускаем вывод reset, его использовать в стандартном исполнении нельзя. Можно конечно, использовать его на выход, если отключить соответствующий фьюз-бит, но тогда вам придётся использовать высоковольтный программатор, и usbasp уже не поможет.

Так как места на плате нет, чтобы сделать полноценный разъём SPI под USBASP, то будем использовать пятачки для программирования, куда припаяем обычные провода.

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

Осталось дело за малым – сделать плату и запаять компоненты

Корпус нарисовали в solid works 3d. Подогнали под размер индикатора, размер платы, высоту датчика Ky-020 и чтобы батарейка формата AA/2 влезла. Получилось 4х4х4см

Распечатан на 3д принтере

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

Не оказалось белой краски, но попалась золотая, которую не под что не использовал – подумал, почему нет.

Теперь нужно не забыть, что по сравнению с прототипом, у нас поменялись выводы микроконтроллера. Для этого мы ещё раз обращаемся к распиновке Arduino Uno/Nano, смотря на чём мы делали прототип

Например реальный пин PB5, в DipTrace, который мы использовали под первую колонку светодиодной матрице – будет соответствовать 13 пину ардуино, на языке wiring. Тоже самое проделываем с остальными выводами.

#define col1 13       // Колонки
#define col2 12
#define col3 11
#define col4 10
#define col5 9
#define col6 8
#define col7 7
#define col8 6

#define row1 3        // Ряды
#define row2 2
#define row3 1
#define row4 0
#define row5 A5
#define row6 A4
#define row7 A3
#define row8 A2

Ну что, осталось подключить плату к программатору и проверить уже, правильно ли мы всё сделали – прошиваем fuse на внутреннюю RC цепочку на 8 МГЦ, компилируем прошивку под эту же частоту, и программируем нашу плату. Индикатор загорелся – значит всё сделали правильно!

Для питания устройства я выбрал батарейку 1/2AA, это порезанная на пополам AA пальчиковая батарейка, её размеры позволяли вместить в этот небольшой корпус. Единственное, пока я не нашёл держатель для такой батарейки, и провода временно смотал изолентой. Устройство работает стабильно

Кому интересно повторить – принципиальная схема, 3д файл корпуса, печатная плата и код, лежит в папке на гитхаб.

схема кубика игрального на ардуино