====== Использование UNO в качестве конвертера для плат линейки Mini ======

++++ Описание проблемы|

Использование таких плат как Smart Mini, Pro Mini или Arduino Mini очень удобно для проектов, которые требуют экономии места. Эти платы очень малы по габаритам и могут поместиться даже в самые маленькие корпуса. Однако, в целях уменьшения размеров и снижения стоимости таких контроллеров, на них отсутствует встроенный преобразователь, поэтому напрямую контроллер к компьютеру подключить не получится.

Для программирования подобных контроллеров используются USB-TTL конвертеры, которые берут на себя функции коммуникации между компьютером и контроллером платы. Однако, множество из них имеют свои недостатки. Например, на них отсутствует (или неправильно спаян) вывод, отвечающий за сброс контроллера перед загрузкой скетча. В связи с этим, для программирования контроллеров мини, вам потребуется физически нажимать на кнопку сброса, и определять время её нажатия. Это зачастую приводит к проблемам при загрузке скетчей на плату.

Ниже мы рассмотрим способ загрузки скетчей через плату Smart Uno с помощью SPI-интерфейса. Этот способ более удобен (нам не придётся физически зажимать кнопку сброса на контроллере) и более предсказуем.

<WRAP center round important 80%>
Внимание! Все дальнейшие действия выполняйте внимательно и строго следуйте инструкциям. Вы соглашаетесь с тем, что все действия совершаемые по прошивке загрузчиков и записи скетчей выполняются вами на свой страх и риск. Администрация магазина снимает с себя любую ответственность за выполняемые вами действия. Если вы не уверены в своих силах и действиях, обратитесь к компетентным специалистам!
</WRAP>

++++

===== Загрузка скетчей на контроллеры Mini =====

==== Шаг 0. Предварительно ====
Подразумевается что:
  * у вас установлена среда разработки Arduino IDE
  * у вас есть кабель для соединения контроллера Smart Uno с компьютером
  * у контроллера Mini припаяны выводы
  * у вас прошит загрузчик на контроллере Mini (если нет, [[main:info:mini_firmware|сначала сделайте это]])

<WRAP center round tip 80%>
Если до этого, вы уже прошивали загрузчик на плату Mini, то вы можете сразу же перейти к шагу №6 и пропустить шаги №№ 1 - 5.
</WRAP>


==== Шаг 1. Соберите необходимые компоненты ====
^ Что нужно                                                                     ^ Количество  ^
| [[https://smartelements.ru/collection/kontrollery/product/kontroller-smart-uno|Контроллер Smart Uno]]  | 1           |
| [[https://smartelements.ru/collection/kontrollery/product/arduino-mini|Контроллер линейки Mini]]          | 1           |
| [[https://smartelements.ru/collection/provoda-i-kabeli/product/nabor-provodov-20-sht-20sm-papa-mama|Провода папа - мама]]                                              | 6           |

//**Примечание:** Часто контроллеры Mini продаются без припаянных выводов. В таком случае вам нужно их предварительно припаять, или воспользоваться иными соединительными проводами или элементами. //

==== Шаг 2. Сделаем UNO конвертер ====
На этом шаге мы сделаем из нашего контроллера Smart Uno - конвертер, который сможет прошивать такие платы как Mini.

Подключите контроллер Smart Uno к компьютеру, выберите в среде разработки нужный COM-порт (Меню Инструменты - Порт).
{{:главная:инфо:выберите_порт.jpg?nolink|}}

Выберите скетч, который сделает из контроллера конвертер (Меню Файл - Примеры - 11. Arduino as ISP - ArduinoISP)
{{:главная:инфо:скетч_ардуино_исп.jpg?nolink|}}

Загрузите скетч на контроллер (с помощью горячих клавиш CTRL+U или меню Скетч - Загрузка).
{{:главная:инфо:загрузка_скетча_исп.jpg?nolink|}}

==== Шаг 3. Подключите Mini к UNO (который теперь у нас выполняет функцию конвертера) ====
Соедините проводами выводы контроллера Smart Uno и контроллера Mini по схеме

^ Smart Uno  ^ Mini (Pro Mini)  ^
| 5V         | VCC              |
| GND        | GND              |
| 10         | RST              |
| 11         | 11               |
| 12         | 12               |
| 13         | 13               |

//**Примечание:** Если вы используете версию Mini на 3.3 В, тогда вывод VCC контроллера Mini соедините с выводом 3.3V контроллера Smart Uno//

==== Шаг 4. Выберите в IDE плату Mini и её параметры ====
В среде разработки Arduino IDE выберите плату Mini (меню Инструменты - Плата): 
{{:главная:инфо:выбор_мини.jpg?nolink|}}

и её параметры 3.3V или 5V, 8 или 16 Мгц (меню Инструменты - Процессор):
{{:главная:инфо:выбор_параметров_мини.jpg?nolink|}}

==== Шаг 5. Укажите среде разработки тип загрузчика ====
Далее в среде разработки следует указать тип загрузчика (меню Инструменты - Программатор - Arduino as ISP):
{{:главная:инфо:ардуино_как_исп.jpg?nolink|}}

==== Шаг 6. Выберите скетч для загрузки ====
Выберите скетч, который планируете загрузить на контроллер Mini. Самый простой вариант - это взять скетч из примеров, меню Файл - Примеры - 01 Basics - Blink
{{ :главная:инфо:выбор_блинк.jpg?nolink |}}

И немного изменим этот скетч, чтобы было нагляднее увидеть, что всё получилось. Перейдите в скетче к блоку **loop()** и увеличите время задержки на одну секунду, следующим образом:

Найдите строки:
<file Arduino>
delay(1000);                       // wait for a second
</file>  

И измените в них значение 1000 на значение 2000:
<file Arduino>
delay(2000);                       // wait for a second
</file> 

{{ :главная:инфо:делэй_2000.jpg?nolink |}}

==== Шаг 7. Загрузите скетч на контроллер ====
В отличии от обычной загрузки скетча на контроллер, нам понадобится пункт меню **Скетч - Загрузить через программатор** или воспользоваться комбинацией клавиш **Ctrl + Shift + U**:

{{ :главная:инфо:загрузить_через_программатор.jpg?nolink |}}

Дождитесь окончания компиляции и загрузки.

==== Результат ====
В результате вы получите плату Mini с записанным на неё скетчем. Посмотрите внимательно, встроенный светодиод мигает с частотой в 2 секунды.