Программирование Arduino Pro-mini

prominiСреди многочисленного семейства клонов Arduino дешевизной выделяется маленькая плата Arduino Pro Mini. Цена примерно в полтора-два раза ниже «собратьев». Кроме кварца есть кое-какая индикация, стабилизатор напряжения, кнопка сброса!!! Для пробы, я заказал наборчик, состоящий из платы контроллера и моста USB-UART bridge для программирования ардуины. В Aliexpress название такого набора звучит примерно так: CP2102 Module + Pro Mini Module Atmega328 5V 16MHZ For Arduino.

Получив посылку, изучение наборчика я начал с CP2102 Module, т.к. тут и паять ничего не нужно — воткнул в USB порт и «любуйся» результатом. Мост «в миг» обнаруживается системой и устанавливается (с помощью соответствующего драйвера) как Silicon Labs CP210x USB to UART Bridge (COM9) (ну, номер порта — кому как повезет…) Позднее этот модуль у меня прописался и на других машинах: и на Windows XP, и на Windows 7 Starter (!). Поиграв с модулем (игрушки как-нибудь опишу в другом разделе…), решил я заняться делом и посмотреть — как себя ведет с этим модулем Pro mini.
Подключил по вполне логичной, на мой взгляд, схеме:
CP2102 USB to UART
GND
+5V
Tx
Rx
RST
Arduino Pro mini
GND
VCC
Rx
Tx
GRN

Запускаем Arduino 1.0.5,  выбираем Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328, выставляем наш СОМ порт, загружаем пробный скетч, жмем «Загрузить…» и … получаем сообщение
avrdude: stk500_getsync(): not in sync: resp=0x00
… не беда, было бы странно — получить положительный результат с первого раза. Проверяем подключение, наличие контакта там где он должен быть и отсутствие такового там, где его не надо…
Жмем кнопку и… снова тот же результат.

Идем нынешним путем «ленивого радиоинженера»: лезем в интернет и… обнаруживаем: такая проблема встречается у многих. Предлагается масса путей ее решения, но единого внятного метода — нет! Придется идти своим путем. Пробуем:
Изменяем скорость обмена в файле «C:\Program Files\Arduino\hardware\arduino\boards.txt» (раздел «Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328», параметр «pro5v328.upload.speed=57600» (из ряда 9600, 14400, 19200, 28800, 38400, 57600, 115200) — ну как же без этого…
Смена сигналов Rx — Tx — меняем провода местами — ведь восточные друзья «могли напутать»
Нажимаем кнопку Reset в разные моменты, а так же пробуем подключить пятый провод между GRN и RST (вроде бы сброс должен автоматом проходить)
Подключаем Pro mini к UNO без ATMega328 — пытаемся заменить мост USB — UART на тот, что стоит на Arduino UNO
Того, что нам надо — нормальная работа Bootloader в Pro mini при заливке скетча — не получаем. Упорно выдается все тоже сообщение, а светодиод на Pro mini «ехидно подмигивает одиночными вспышками». Но, нет худа без добра, получаем некий полезный результат…

Программирование Pro mini через UNO при изъятой «меге» из платы UNO

Контакты Arduino UNO R3
GND
5V
TX (1)
RX (0)
RESET
Контакты Arduino Pro mini
GND
VCC
TX
RX
RST

При таком соединении плат (микросхему контроллера, конечно, из платы UNO надо убрать), в Arduino 1.0.5 выбираем Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328, порт СОМ8 (тот что в диспетчере соответствует Arduino), скорость (см boards.txt) оставляем «изначальную» 57600 — программирование скетча проходит без проблем!  Убеждаемся, что скорость в Pro mini «прошита» 57600, а не как везде написано 19200 или 9600!  Уже хорошо — найден хоть какой-то метод заливки скетча!

Программирование Arduino Pro mini через ISP (внутрисхемное программирование)

Разъема ISP на плате Pro mini нет, но необходимые контакты присутствуют на одной стороне платы. Соединяем следующим образом:

Arduino Pro mini
GND
11
VCC
RST
13
12
ATtiny 13
4
5
8
1
7
6
ATtiny 2313
10
17
20
1
19
18
ISP
GND
MOSI
VCC
RES
SCK
MISO

Подключал через панельку ATtiny самодельного программатора, поэтому привожу номера выводов этих микросхем. Запустил Algorithm Builder (имеющийся программатор ISP работает через эту среду) — считал Fuse, всю прошивку контроллера ATMega 328 (см файл mini-pro-328.hex): видно что bootloader в памяти присутствует (см старшие 2К байта).
В принципе, тоже положительный результат — неудобно (много проводов), но программировать в среде Algorithm Builder — так же можно…

Программирование Pro mini «как положено» через USB to UART Bridge

В конце концов, после долгого перебора вариантов, нашел рабочий…

CP2102 USB to UART
GND
+5V
Tx
Rx
Arduino Pro mini
GND
VCC
Tx
Rx

Отличие от первого варианта в соединении Rx, Tx!  Наши друзья побоялись, что «народ не поймет» соединения Rx — Tx и обозвали выводы UART «обратным способом». Второе: вывод сброса платы перед загрузкой не работает, т.е. линия RST моста не отрабатывается программой… Придется сбрасывать плату перед загрузкой «вручную». Третье — скорость 57600.

Итак, как надо программировать плату Arduino Pro mini:

  • Подключаем как выше сказано
  • Запускаем Arduino 1.0.5
  • Выбираем плату Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
  • Выбираем СОМ порт подключенного моста
  • Загружаем (создаем) нужный скетч
  • Заливаем его в плату кнопкой «Загрузить»

8906308_origВся «тонкость» процесса программирования в моменте нажатия/отпускания кнопки Reset. Отпускаем ее примерно на 90% индикатора загрузки Arduino 1.0.5, в момент появления надписи «Загрузка…» Если раньше — заливка не получится, если после появления уже с пол секунды пройдет — тоже… Примерный момент на скриншоте слева.

Программирование Arduino Pro-mini: 1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".