Делаем Arduino c USB своими руками.

В рамках проекта "Светодиодная подсветка потолка", на Ebay были закуплены чипы WS2801, и RGB светодиоды.
В процессе ремонта сам собой возник вопрос, а чем ?, всем этим добром управлять.
"Покуривши" интернет решил было купить Arduino-Leonardo, но поизучав схемотехнику (благо проект Arduino открытый), решил
собрать сам, выбор пал на Arduino-micro с контроллером Atmega32u4, с аппаратной поддержкой USB 2.0
В итоге на свет появилась вот такая платка, о сборке которой, и о граблях при её программировании, я и расскажу в этой статье.

Основа как я уже говорил Arduino-micro, пришлось изменить схему питания, и часть USB, под имеющиеся у меня детали
на фото ниже схема оригинальной Arduino-micro, и моя "твикнутая".
В схеме питания всего навсего, применены другие (доступные) транзисторы, часть USB переработана более кардинально, её я срисовал с какого то мультимедийного плеера, детали сдул оттуда же, думаю на схеме всё понятно, вопросов быть недолжно.


Печатная плата нарисована в Sprint-layout 6.0,
Слои М1, К1 печатаем зеркально, К1 маркировочный.
Слои М2, К2 печатаем обычно.



Печатаем, утюжим, травим, сверлим переходы сверлом 0,4мм, лудим.
Печатаем зеркально, маркировочный слой с надписями, и после отмывки платы переносим его на лицевую сторону, и только после этого пропаиваем переходные отверстия.
Затем опять моем спиртом (тонер устойчив к спирту,не смоется), и поэтапно запаиваем компоненты, сначала питание, и весь обвес контроллера, опять моем плату, и начинаем настраивать, подключаем питание VIN проверяем наличие 5V и 3,3v.
Затем, прозвонив на наличие К.З втыкаем USB, и опять смотрим наличие 5V и 3,3v.
Если всё хорошо, можно запаять контроллер, последний раз помыть плату, просушить, и переходить к программированию.



Скачиваем с сайта Arduino архив Arduino 1.5.2, там находится всё, что нам нужно для программирования и среда разработки.
Бутлоадер я зашивал через интерфейс ICSP, два дня я парился со свежескаченным CodeVisionAVR_2.05.3 с таблеткой (версии ниже неподдерживают Atmega32u4), и программатором AVR_910, пока до меня не дошло что CodeVisionAVR криво сломан, никак он не хотел программировать флеш, (хотя фьюзы, и лок биты читает и шьёт корректно).
В итоге был скачен и установлен Bascom AVR, по работе с ним можно почитать тут программатор STK_200/300, остался у меня после сборки AVR_910.
Итак, распаковываем куда нибудь архив Arduino 1.5.2, идём по пути, \\arduino-1.5.2-windows\arduino-1.5.2\hardware\arduino\avr\bootloaders\caterina\Caterina-Micro.hex это наша прошивка, bootloader.
По пути, \\arduino-1.5.2-windows\arduino-1.5.2\hardware\arduino\avr\boards.txt в этом текстовом файле прописана конфигурация fuse и lock бит, вот кусок текста для Arduino-micro.

######

micro.name=Arduino Micro
micro.upload.tool=avrdude
micro.upload.protocol=avr109
micro.upload.maximum_size=28672
micro.upload.speed=57600
micro.upload.disable_flushing=true
micro.upload.use_1200bps_touch=true
micro.upload.wait_for_upload_port=true

micro.bootloader.tool=avrdude
micro.bootloader.low_fuses=0xff
micro.bootloader.high_fuses=0xd8
micro.bootloader.extended_fuses=0xcb
micro.bootloader.file=caterina/Caterina-Micro.hex
micro.bootloader.unlock_bits=0x3F
micro.bootloader.lock_bits=0x2F

micro.build.mcu=atmega32u4
micro.build.f_cpu=16000000L
micro.build.vid=0x2341
micro.build.pid=0x8037
micro.build.core=arduino
micro.build.variant=micro
micro.build.extra_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid}

#######
Теперь у нас есть вся информация для прошивки, но сначала давайте считаем заводские фьюзы, мало ли что, и сотрём чип, запускаем CodeVisionAVR, пробуем считать фьюзы, должно получиться так .
Можно конечно всё сделать из под BASCOM-AVR, но там какая то запутанная система фьюзов, нехотелось вникать.


Запускаем BASCOM-AVR, настраиваем железную часть STK_200/300 как написано в описании, загружаем прошивку Caterina-Micro.hex и прошиваем, Program - Flash.
Находим в интернете AVR fuses calculator забиваем в него значения из файла board.txt.
low_fuses=0xff
high_fuses=0xd8
extended_fuses=0xcb
Запускаем CodeVisionAVR, выставляем фьюзы которые нам выдал калькулятор, тыкаем Program - Fuse bit

 

Отключаем программатор, и втыкаем USB, компьютер должен найти новое устройство arduino-micro, откроется мастер оборудования.
Указываем ему путь к папке \\arduino-1.5.2-windows\arduino-1.5.2\drivers.
После установки в диспетчере должна появиться наша arduino.