На сайте Arduino в общем-то даже есть инструкция.
Вот, например, видео в котором показан примерный процесс
Очевидное преимущество – это то, что вы можете уменьшить размеры вашего проекта. Собрав и протестировав прототип на полноформатной платформе, его затем можно перенести на уменьшенную версию и использовать в более миниатюрных корпусах и/или платформах.
Разумеется, в зависимости от реализации, можно отбросить те или иные части Arduino для уменьшения проекта.
Меня это момент заинтересовал и я решил попробовать сделать себе Arduino на макетке. Всё, как и на видео выше, очень просто, с той лишь разницей, что я купил микросхему ATmega328p-pu без bootloader-а.
Одна микросхема ATmega328p-pu, один кристалл на 16 Mhz, два конденсатора на 22 пикофарад и резистор – вот и весь Arduino Uno. Да у него нет USB и ещё много чего вроде самовостанавливающегося предохранителя, но для конечного проекта этого как правило и не важно.
Чтобы собрать такой Arduino нужно вставить 16 МГц кристалл между 9 и 10 ножками. Два конденсатора идут между землёй – ножка 8 и ножками кристалла, например один конденсатор между 8й и 10й, а второй между 8й и 9й.
Сначала нужно залить скетч ArduinoISP в тот Arduino, который будет выступать в качестве программатора.
Затем поменять настройки и выбрать плату в которую будут заливаться скетчи, а в качестве программатора выбрать Arduino as ISP. Залить bootloader используя Arduino Uno, соединив контакты следующим образом (для Arduino Uno/Nano)
D10 -> Reset (Первая нога) D11 (MOSI) -> MOSI (17я нога) D12 (MISO) -> MISO (18я нога) D13 (SCK) -> SCK (19я нога)
и добавив конденсатор на Arduino Uno, который используется в качестве программатора, между Reset-ом и землёй.
Теперь можно заливать Sketch-и в Arduino у которых поломан или отсутствует USB.
Вот, например, мой проект по мониторингу качества воздуха работает на самодельной Arduino Uno собранной на макетной плате:
Но что если хочется ещё меньше? Первое, что попалось мне в интернете это ATTiny45/85:
Собственно работает неплохо. Например я собрал простенькую схему для управления светодиодами на основе ws2812b:
Так любимая мной шина i2c тоже работает но с некоторыми переделками.
Схема подключения для программирования с использованием Arduino Uno в качестве программатора аналогична подключению к Arduino Nano, достаточно посмотреть распиновку для ATTiny в Googl-е:
Другая альтернатива – это Arduino Nano или ATmega328p-au, которая немного больше ATtiny, но полнофункиональна как ATmega328p-pu на Arduino Uno.
Мне понравился вариант SEM0010, который идёт сразу с большой макетной областью:
Минусом является то, что отсутствует USB для заливки скетчей, однако тут тоже можно использовать другой Arduino в качестве программатора. К тому же тут есть ICSP разъём, что позволяет подключить её без пайки. Вот например простейший пример Blink, залитый через ICSP:
Собственно ICSP это те же самые MOSI/MISO/SCK, так что по прежнему используются pin-ы с 10 по 13й на Arduino, которая выступает в качестве программатора. Кстати если вы откроете стандартный sketch ArduinoISP вы даже найдёте там описание того, как использовать Arduino в качестве программатора.
Ещё один вариант миниатюризации – это Искра Мини от Амперки.
Это та же ATMega328p-au, так что с ней можно работать так же как и с Arduino Nano.
Но что если хочется больше мощности при компактных размерах? Для этого можно воспользоваться реализацией на основе процессоров от ARM, но это уже в следующий раз.
Если вам интересно, есть что добавить или покритиковать – не стесняйтесь оставлять комментарии.