Среди многочисленного семейства клонов Arduino дешевизной выделяется маленькая плата Arduino Pro Mini. Цена примерно в полтора-два раза ниже «собратьев». Кроме кварца есть кое-какая индикация, стабилизатор напряжения, кнопка сброса!!! Для пробы, я заказал наборчик, состоящий из платы контроллера и моста USB-UART bridge для программирования ардуины. В Aliexpress название такого набора звучит примерно так: CP2102 Module + Pro Mini Module Atmega328 5V 16MHZ For Arduino.
Подключил по вполне логичной, на мой взгляд, схеме:
|
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
- Выбираем СОМ порт подключенного моста
- Загружаем (создаем) нужный скетч
- Заливаем его в плату кнопкой «Загрузить»
Вся «тонкость» процесса программирования в моменте нажатия/отпускания кнопки Reset. Отпускаем ее примерно на 90% индикатора загрузки Arduino 1.0.5, в момент появления надписи «Загрузка…» Если раньше — заливка не получится, если после появления уже с пол секунды пройдет — тоже… Примерный момент на скриншоте слева.
Спасибо за публикацию, очень правильно все написано!