Сайт Алексея Пахомова
  pakhom
  • Главная
  • Работа
  • Путешествия
    • Россия
    • Украина
    • Белоруссия
    • Турция
    • Египет
    • Греция
    • Владимир
  • Увлечения
    • Электроника
    • Опубликовано в ...
    • Arduino
    • ESP8266
    • Английский
    • Программирование
  • Деревня
    • Дом
    • Вокруг дома
    • Досуг
    • Природа
    • Ракеты >
      • blackP
  • Автомобиль
  • Общение
    • Диалог
    • Обратная связь

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

Picture
 Для создания "радиолюбительских микроконтроллерных поделок" я иногда использую сравнительно недорогие модули Evolution Light SEM0010M из магазина Ekits.ru. Модуль не представляет собой чего-то выдающегося: на небольшой макетной плате распаяна Atmel-овская Mega (существуют разные варианты), к ней приделан кварцевый резонатор и ... все! больше ничего нет! если не считать разъема для внутрисхемного программирования ISP. В общем-то, очень удобно - не надо паять мелкий многовыводный корпус, заботиться о подключении программатора, искать плату для распайки периферии... И среда программирования Algorithm Builder очень удобна для создания не слишком увесистых программ. 

Picture
Все хорошо, но "жаба душила": жаль 250 рублей за "это чудо". Раз связавшись с Aliexpress, решил посмотреть - а нет ли чего подобного у более технологично развитых юго-восточных соседей? И нашел - среди многочисленного семейства клонов Arduino дешевизной выделяется маленькая плата Arduino Pro Mini. Цена примерно в полтора-два раза дешевле, однокристалка - существенно мощнее. Кроме кварца есть кое-какая индикация, стабилизатор напряжения, кнопка сброса!!! И, главное, поддержка сообществом Arduino! Без минусов, конечно, не обойтись - нет места для установки периферии и, что не слишком существенно, очень долгая доставка - до двух месяцев...
В-общем, для пробы, за те же 250 рублей я заказал наборчик (на фото слева), состоящий из платы контроллера и моста USB-UART bridge для программирования ардуины. В вышеозначенном магазине такой набор звучит примерно так: CP2102 Module + Pro Mini Module Atmega328 5V 16MHZ For Arduino. Параметры набора продавец описывает следующим образом:

CP2102 Module  Description:

Name: CP2102, USB to TTL Module
Baud Rate Range: 300-1Mbps
Control chip: CP2102
Working voltage: 4V-5.25V
Support: Windows 98SE, 2000, XP, Vista, Window7, Mac OS 9, Mac OS X & Linux 2.40
Output voltage: Dual voltage output ( 3.3V and 5V )
Output indicator: Power indicator, TXD indicator
Output current: 100mA (with current limiting protection )
6 Pins for: RST TXD RXD GND 5V 3.3V
Pro Mini description: 

1.14 Digital input / output ports RX, TX D13, D2 ~~ of, 
2 or 8 analog input port A0 to A7 
3. The TTL level serial transceiver port RX / TX 
4.6 PWM ports, D3,, D5 , D6, D9, D10, D11 . Using Atmel Atmega328P-AU microcontroller supports serial download 
7. Support for external 5V ~ 12V DC power supply 
8. Support 9V battery-powered the 
9 clock frequency 16MHz 
10. Dimensions: 33.3 * 18.0 (mm)

Получив посылку, изучение наборчика я начал с 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.
 
Picture
 Итак, как надо программировать плату Arduino Pro mini:
  • Подключаем как выше сказано
  • Запускаем Arduino 1.0.5
  • Выбираем плату Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
  • Выбираем СОМ порт подключенного моста
  • Загружаем (создаем) нужный скетч
  • Заливаем его в плату кнопкой "Загрузить"
Вся "тонкость" процесса программирования в моменте нажатия/отпускания кнопки Reset. Отпускаем ее примерно на 90% индикатора загрузки Arduino 1.0.5, в момент появления надписи "Загрузка..." Если раньше - заливка не получится, если после появления уже с пол секунды пройдет - тоже... Примерный момент на скриншоте слева.

Picture
 Фото "установки". Провода на плате Pro mini - побочный результат поиска истины...

опубликовано 11.02.2014
При поддержке Создайте свой уникальный сайт с настраиваемыми шаблонами.