Самостоятельная перепрошивка Arduino Pro Mini

26 сентября 2012 г.

Восстанавливаем bootloader у Arduino pro mini

Не стоит выкидывать Arduino, сейчас мы разберемся, как это поправить.

Подключаем внешний программатор

Сердце Arduino pro mini — это Atmega328, и, естественно этот микроконтроллер поддерживает ICSP — внутрисхемное программирование по SPI-интерфейсу. Мы можем взять любой программатор для AVR, например, дешевый USBasp, и залить bootloader в память с его помощью.

Подключим линии VCC, GND, SCK, RST, MISO и MOSI нашего программатора к Arduino, как показано на рисунке:

Получается вот такое чудо техники:

Шаманим в Arduino IDE

А шаманить, если честно, особо не придется, потому что разработчики позаботились о пользователях, которые ломают себе загрузчики, и вынесли кнопку на очень видное место.

Для начала правильно выберем борду из списка:

Теперь выберем программатор:

И нажмем волшебную кнопку Burn Bootloader:

Появится сообщение “Burning bootloader to I/O board (this may take a minute. )” , а потом “Done burning bootloader” .

Если этого не произошло, проверьте, правильно ли вы подсоединили программатор к Arduino mini и определился ли он операционной системой.

Загрузить прошивку на этот микроконтроллер можно несколькими способами:

  • Через другую плату ардуино, у которой есть встроенный USB-UART
  • С помощью специального программатора
  • Используя USBasp-программатор

Последние два способа очень похожи. Они отличаются лишь типом программатора. Поэтому в этой статье мы рассмотрим только прошивку с помощью другой Arduino и с помощью специального программатора.

2Установка драйвера для программатора

Подключим программатор к USB-порту компьютера. Скорее всего, через какое-то небольшое время операционная система сообщит, что ей не удалось найти драйвер для данного устройства.

Сообщение об отсутствии драйвера для USBasp программатора

В этом случае скачаем драйвер для программатора с официального сайта. Распакуем архив и установим драйвер стандартным способом. В диспетчере устройств должен появиться программатор USBasp. Теперь программатор готов к работе. Отключаем его от компьютера.

Установка драйвера для USBasp программатора

Если вы испытываете трудности с установкой драйвера для USBasp программатора, то вам поможет статья «Как установить драйвер для программатора USBasp в Windows 8 и Windows 10».

Прошивка arduino pro mini

Прошивка arduino pro mini

Миниатюрные размеры платы не позволяют прошить ее без внешней помощи. Есть несколько способов заливки скетча в микроконтроллер:

  • Через адаптер USB в TTL;
  • Через Ардуино Уно;
  • Через SPI интерфейс с помощью любой платы ардуино с разъемом для подключения к компьютеру. 

Самым простым методом является первый.

Прошивка через адаптер USB в TTL

В продаже можно найти специальный адаптер – UART переходник. Видов таких переходников много, стоимость каждого изделия невысокая. Советуется приобретать переходники с контактами RST или DTR, они упрощают процесс прошивки. 

Для прошивки нужно подключить адаптер в Ардуино: нужно соединить земли с одного и другого устройства, Vcc – на +5В или +3,3 В (в зависимости от модели), RX – TX, TX – RX. Затем конструкцию нужно подключить к компьютеру, установить драйвер и начать прошивку. Компьютер определит, к какому порту подключена плата. Драйвер можно скачать с официального сайта. Скачанный архив нужно распаковать и установить.

Затем нужно запустить среду разработки Adruino IDE, выбрать нужную плату и номер порта и загрузить микропрограмму. Это делается следующим образом:

  • Нажать «Загрузить»;
  • Затем начнется компиляция  – появится надпись «Компиляция скетча»;

После появление надписи «Загружаем» нужно нажать на плате кнопку Reset (в переходниках с RST или DTR нажимать кнопку не нужно). 

Важно! Нажатие на Reset должно быть кратковременным. 

Скетч будет загружен в микроконтроллер. Об успешном окончании процедуры можно понять по мигающему светодиоду. 

Прошивка через Ардуино Уно

Для прошивки потребуется классическая плата Ардуино Уно в DIP корпусе. На ней должен быть специальный разъем, из которого нужно вытащить аккуратно микроконтроллер

Важно делать все действия внимательно, чтобы не погнуть ножки процессора

Проводами нужно подключить arduino pro mini к разъему. Как подключить контакты – RX-RX, TX-TX, GND-GND, 5V-VCC, RST-RST. 

После подключения можно начать стандартную загрузку скетча через Arduino IDE.

Прошивка через SPI интерфейс

Этот способ является самым неудобным и трудоемким. Прошивание платы производится в 2 этапа:

Прошивка микроконтроллера Ардуино Уно как ISP программатора; 

Настройка среды разработки и загрузка кода в Arduino Pro Mini.  

Алгоритм проведения первого этапа:

  • Запуск среды разработки Arduino IDE;
  • Открытие «Файл» – «Примеры» – «11. ArduinoISP» – «ArduinoISP»;
  • Далее «Инструменты» – «Плата» – «Ардуино уно»;
  • «Инструменты» – «Порт», и выбирается нужный номер COM порта;
  • Далее нужно произвести компиляцию и загрузить код в Ардуино Уно.

Затем обе платы нужно соединить проводниками по приведенной схеме: 5V – VCC, GND – GND, MOSI (11) – MOSI (11), MISO (12) – MISO (12), SCK (13) – SCK (13).

Теперь нужно настроить Arduino IDE для Arduino Pro Mini. Это делается следующим образом:

«Инструменты» – «Плата» – выбор нужной платы Arduino Pro Mini; 

  • В том же меню выбирается «Процессор» – выбор соответствующего процессора с нужной тактовой частотой;
  • Затем нужно установить порт, к которому подключена плата;
  • «Инструменты» – «Программатор» – Arduino as ISP;
  • Затем нужно загрузить скетч через программатор.

Важно отметить, что загрузка кода должна происходить через специальное меню «загрузить через программатор». Здесь можно запутаться, потому такой способ и неудобен

Загрузка обычным способом приведет  тому, что код зальется в Ардуино Уно. 

После проведенной загрузки перепрошить микроконтроллер через переходник больше не получится. Придется заливать новый bootloader через «записать загрузчик». 

Если при каком-либо виде загрузки прошивки возникают проблемы, нужно проверить подключение платы. 

Прошивка Arduino Pro Mini через Nano

Не так давно столкнулся с необходимостью использования Arduino Pro Mini в своем проекте и сразу же встал вопрос как заливать в нее скетч. Конечно продаются различные переходники UART при помощи которых этот вопрос снимается быстро, но в тот момент такого переходника не оказалось под рукой.

Почитав на сайте http://arduino.cc и посабирав информацию на разлинчых форумах, узнал о возможности прошивать Pro Mini при помощи других плат Arduino.

Итак, рассмотрим в чем заключается метод Arduino as ISP и что необходимо для этого на примере Arduino Nano.

Для возможности использования платы в родном Arduino IDE имеется пример скетча для перевода платы в программатор, этот пример уже самодостаточен для прошивки Pro Mini, найти его можно выбрав в меню Файл.

Далее в меню «Инструменты» выставляем нашу плату «программатор» и тип ее микроконтроллера.

Затем прошиваем Nano скетчем ArduinoISP, обратив внимание на скорость порта в функции setup, данная скорость будет использоваться непосредственно при прошивке Pro Mini в стандартном скетче ее значение равно 19200

После того, как Nano будет подготовленна можем собирать breadboard, для прошивки Pro Mini по схеме указанной здесь http://arduino.cc/en/Tutorial/ArduinoISP.

То есть следующим образом:

У меня получилось примерно так:

После того как все собрано и проверено можно подключить Nano к компьютеру, поморгав 7 раз обе платы готовы к работе.

Далее для прошивки нам необходимо убедиться, что при выставлении прошиваемой платы и программатора у нас используются одинаковые скорости порта, взяв за стандарт скорость из скетча. Для типа платы нужно найти файл boards.txt его путь относительно установленной программы IDE такой: Arduino/hardware/arduino/boards.txt. В нем нам нужно найти раздел параметров для платы Pro Mini выглядит она примерно так:

pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328

У меня прошиваемая мини на 5 вольт с микроконтроллером ATmega328, если же у вас иная версия плата то вам нужно найти соответствующий вашей платы раздел.

Здесь необходимо убедиться что скорость выставлена верная:

Затем зайдем в файл programmers.txt, его путь Arduino/hardware/arduino/programmers.txt и убедимся в верности параметров:

arduinoisp.name=Arduino as ISP arduinoisp.communication=serial arduinoisp.protocol=stk500v1 arduinoisp.speed=19200

После того как убедились, что все параметры верны можно запускать IDE, если она была запущена то перезапустить. Это необходимо для того чтобы вступили силу новые параметры.

После запуска IDE нам нужно выставить в меню «Инструменты» нашу прошиваемую плату и тип программатора «Arduino as ISP»:

Теперь у нас все готово для прошивки. Выбираем нужный скетч, для пробы можно выбрать любой из примеров

А теперь особое внимание уделю как прошивать, обычная кнопка для прошивки нам не подойдет так как она предназначена для прошивки стандартным программатором т.е. в Arduino Nano и при ее нажатии мы просто прошьем Nano, что нам обсолютно не нужно

Верный путь прошить Pro Mini лежит в меню «Файл» и называется он «Загрузить с помощью программатора», у меня стоит версия IDE 1.5.6-r2 там этот пункт называется «Вгрузить через программатор», по всей видимости трудности перевода в этом релизе, в версии 1.0.5-r2 все в порядке.

С первого раза может не получиться прошить, да и в дальнейшем возможно будет вылетать ошибка такого вида:

Однако не стоит беспокоится, если все собрано верно и спаяно надежно то, достаточно нажать «Reset» на Pro Mini, подождать пару секунд и плата успешно прошъется.

Подключение платы Arduino Pro Mini

Для соединения с компьютером используется специальный кабель FTDI FT232RL (или CH340G), содержащий преобразователь интерфейса USB–USART. Микроконтроллер содержит интерфейс USART, его сигналы RX и ТХ выведены на торцевую часть платы. Специальный кабель подключается к этим входам Arduino Pro Mini, а также к контактам VCC и GND. При этом питание 5 В поступает в модуль от персонально компьютера. Существуют соединители, имеющие также очень важный контакт DTR. Сигнал на этом контакте автоматически формирует сигнал сброса перед обновлением программы в МК. Без сброса в нужный момент в начале записи программы невозможно записать новую программу. Следует учитывать порядок подключения контактов. Правильно соединение USART выполняется по схеме:

/*
DTR <——————> DTR
TXD <——————> RXD
RXD <——————> TXD
VCC <——————> VCC
GND НЕ ПОДКЛЮЧЁН CTS
GND <——————> GND
*/

1
2
3
4
5
6
7
8

/*
DTR <——————> DTR
TXD <——————> RXD
RXD <——————> TXD
VCC <——————> VCC
GND     НЕ ПОДКЛЮЧЁН     CTS
GND <——————> GND
*/

Прошивка arduino pro mini

Миниатюрные размеры платы не позволяют прошить ее без внешней помощи. Есть несколько способов заливки скетча в микроконтроллер:

  • Через адаптер USB в TTL;
  • Через Ардуино Уно;
  • Через SPI интерфейс с помощью любой платы ардуино с разъемом для подключения к компьютеру.

Самым простым методом является первый.

Прошивка через адаптер USB в TTL

В продаже можно найти специальный адаптер – UART переходник. Видов таких переходников много, стоимость каждого изделия невысокая. Советуется приобретать переходники с контактами RST или DTR, они упрощают процесс прошивки.

Для прошивки нужно подключить адаптер в Ардуино: нужно соединить земли с одного и другого устройства, Vcc – на +5В или +3,3 В (в зависимости от модели), RX – TX, TX – RX. Затем конструкцию нужно подключить к компьютеру, установить драйвер и начать прошивку. Компьютер определит, к какому порту подключена плата. Драйвер можно скачать с официального сайта. Скачанный архив нужно распаковать и установить.

Затем нужно запустить среду разработки Adruino >

  • Нажать «Загрузить»;
  • Затем начнется компиляция – появится надпись «Компиляция скетча»;

После появление надписи «Загружаем» нужно нажать на плате кнопку Reset (в переходниках с RST или DTR нажимать кнопку не нужно).

Важно! Нажатие на Reset должно быть кратковременным. Скетч будет загружен в микроконтроллер

Об успешном окончании процедуры можно понять по мигающему светодиоду

Скетч будет загружен в микроконтроллер. Об успешном окончании процедуры можно понять по мигающему светодиоду.

Прошивка через Ардуино Уно

Для прошивки потребуется классическая плата Ардуино Уно в DIP корпусе. На ней должен быть специальный разъем, из которого нужно вытащить аккуратно микроконтроллер

Важно делать все действия внимательно, чтобы не погнуть ножки процессора

Проводами нужно подключить arduino pro mini к разъему. Как подключить контакты – RX-RX, TX-TX, GND-GND, 5V-VCC, RST-RST.

После подключения можно начать стандартную загрузку скетча через Arduino >

Прошивка через SPI интерфейс

Этот способ является самым неудобным и трудоемким. Прошивание платы производится в 2 этапа:

Прошивка микроконтроллера Ардуино Уно как ISP программатора;

Настройка среды разработки и загрузка кода в Arduino Pro Mini.

Алгоритм проведения первого этапа:

  • Запуск среды разработки Arduino >
  • Открытие «Файл» – «Примеры» – «11. ArduinoISP» – «ArduinoISP»;
  • Далее «Инструменты» – «Плата» – «Ардуино уно»;
  • «Инструменты» – «Порт», и выбирается нужный номер COM порта;
  • Далее нужно произвести компиляцию и загрузить код в Ардуино Уно.

Затем обе платы нужно соединить проводниками по приведенной схеме: 5V – VCC, GND – GND, MOSI (11) – MOSI (11), MISO (12) – MISO (12), SCK (13) – SCK (13).

Теперь нужно настроить Arduino >

«Инструменты» – «Плата» – выбор нужной платы Arduino Pro Mini;

  • В том же меню выбирается «Процессор» – выбор соответствующего процессора с нужной тактовой частотой;
  • Затем нужно установить порт, к которому подключена плата;
  • «Инструменты» – «Программатор» – Arduino as ISP;
  • Затем нужно загрузить скетч через программатор.

Важно отметить, что загрузка кода должна происходить через специальное меню «загрузить через программатор». Здесь можно запутаться, потому такой способ и неудобен

Загрузка обычным способом приведет тому, что код зальется в Ардуино Уно.

После проведенной загрузки перепрошить микроконтроллер через переходник больше не получится. Придется заливать новый bootloader через «записать загрузчик».

Если при каком-либо виде загрузки прошивки возникают проблемы, нужно проверить подключение платы.

Настраиваем Arduino IDE

Запустить Arduino IDE, выбрать плату (Инструменты\плата\»ваша плата»). См. первый скриншот.

Выбрать порт: инструменты\порт\«COM отличный от COM1, например COM3, COM5…»
См. второй скриншот.Какой именно порт вы могли видеть при первом подключении Ардуино к компьютеру.
Примечание: если у вас только СОМ1 – значит либо не встали драйвера, либо сдохла плата.

Как пример – библиотека для дисплея на чипе TM1637, смотрите скриншот

В папке libraries должна появиться папка TM1637, в которой есть папка examples, и два файла с расширениями.h и.cpp . Эти два файла должны быть в каждой библиотеке.

Второй способ. Папка с библиотекой кладётся в папку со скетчем. Тогда скетч, использующий библиотеку, сможет ей пользоваться. Но для остальных скетчей эта библиотека будет недоступна!

Основные ошибки при прошивке Arduino (FAQ)

Ошибка компиляции

Возникает на этапе сборки и компиляции прошивки, ошибки компиляции вызваны проблемами в коде прошивки
, то есть проблема сугубо софтварная. Слева от кнопки «загрузить» есть кнопка с галочкой – проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру
.

В некоторых случаях ошибка возникает при наличии кириллицы
(русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием
.

В чёрном окошке в самом низу Arduino IDE можно прочитать полный текст
ошибки.

В скачанных с интернета готовых скетчах часто возникает ошибка с описанием «название файла» no such file or directory
. Это означает, что в скетче используется библиотека «название файла», и нужно положить её в Program Files/Arduino/libraries
. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки можно поискать в гугле по «название файла».

При использовании каких-то особых методов и функций ошибкой может стать неправильно выбранная плата в «Инструменты/плата
«.

Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк.

Ошибка загрузки

Возникает на этапе, когда прошивка скомпилирована, в ней критических ошибок, и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за софта.

USB кабель, которым подключается Arduino, должен быть Data кабелем
. Существуют кабели, предназначенные только для зарядки
, у них внутри 2 провода. Data кабель
имеет 4 провода, два из которых нужны для передачи данных.

Причиной ошибки загрузки являются неустановленные/криво установленные драйвера CH340
, если у вас китайская NANO.

Также будет ошибка, если не выбран COM порт
, к которому подключена Arduino. Если кроме COM1 других портов нет – читай два пункта над этим, либо попробуй другой USB порт
, или вообще другой компьютер
.

Большинство проблем при загрузке, вызванных «зависанием» ардуины или загрузчика, лечатся полным отключением ардуины от питания
. Потом вставляется USB и прошиваем.

Если в описании ошибки встречается слово averdude
или bootloader is not responding
– с вероятностью 95% сдох загрузчик, например при случайном коротком замыкании провода на плату. Оставшиеся 5% – загрузчик «слетел», и его можно прошить заново программатором или другой Ардуиной. Подробнее об этом можно почитать в гугле по «как перепрошить загрузчик на Ардуино
«.

Arduino Pro Mini 5 В

Эта версия снабжена микроконтроллером ATmega328. В отличии от своего младшего собрата, он имеет вдвое большие объемы энергонезависимой и flash памяти. И может похвастаться тактовой частотой в 16 МГц. Узнать о способах прошивки этого микроконтроллера вы можете в моей статье:

Характеристики

  • Микроконтроллер: ATmega168 или ATmega328
  • Предельное напряжение питания: 3,3-12 В и 5-12 В
  • Цифровых вводов/выводов: 14
  • ШИМ: 6 цифровых пинов могут быть использованы как выводы ШИМ
  • Аналоговые выводы: 8
  • Максимальная сила тока: 40 mAh с одного вывода и 400 mAh со всех выводов.
  • Flash память: 16 кб
  • SRAM: 1 кб
  • EEPROM: 512 байт
  • Тактовая частота: 8 МГц и 16 МГц

Подключение питания к Arduino Pro Mini

Этот микроконтроллер можно питать тремя способами:

  • Переходником FTDI, подключенному к 6 соответствующим пинам.
  • Подавая стабилизированное напряжение на вывод Vcc. 3,3 В или 5 В в зависимости от версии
  • Подавая напряжение на вывод RAW. 3,3-12 В или 5-12 В в зависимости от версии

Как уже было написано выше, плата имеет 14 цифровых пинов. На плате они помечены порядковым номером. Они могут быть как входом так и выходом. Рабочее напряжение этих пинов составляет 3,3 В или 5 В.

Аналоговые пины на плате помечены ведущей «A». Эти пины являются входами и не имеют подтягивающих резисторов. Они измеряют поступающее на них напряжение и возвращают значение от 0 до 1024 при использовании функции analogRead(). Эти пины измеряют напряжение с точностью до 0,005 В.

Широтно-импульсная модуляция (ШИМ) Arduino Pro Mini

ШИМ выходы у этой платы никак не помечены. Нужно просто запомнить номера цифровых выводов, которые подключены к широтно-импульсному генератору. У Arduino Pro Mini есть 6 выводов ШИМ, это пины 3, 5, 6, 9, 10 и 11.
Для использования ШИМ у Arduino есть специальная функция .

Другие пины:

  • 0(Rx) и 1(Tx) используются для передачи данных по последовательному интерфейсу.
  • Выводы 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) рассчитаны для связи по интерфейсу SPI.
  • Так же на выводе D13 имеется встроенный в плату светодиод.
  • А4 (SDA) и А5 (SCL) могут использоваться для связи с другими устройствами по шине I2C. Подробнее про этот интерфейс вы можете почитать на википедии . В среде разработке Arduino IDE есть встроенная библиотека «wire.h» для более легкой работы с I2C.

Заключение

В этой статье мы рассмотрели различные аспекты загрузки скетчей в Arduino Uno и Nano. Прошивка плат на базе микроконтроллеров ATmega328 и ATmega256, как правило, не сложна и может выполняться одним нажатием кнопки в Arduino IDE. За эту простоту мы должны благодарить встроенную программу-загрузчик, выполняющую за нас все основные действия на низком уровне.

Еще одним вариантом перепрошивки контроллера является использование другой платы адуино или специальных программаторов, использующих микросхемы CP2102 CH340, FTDI и другие. Этот метод требует дополнительных усилий и затрат, но позволяет гибко изменять параметры прошивки. Какой из двух вариантов выбрать – решать вам. Для новичков, безусловно, первым шагом станет использование Arduino IDE, благо, ее создатели сделали все, чтобы упростить этот процесс.

И поговорим о том, как мы будем записывать прошивку в Arduino.

Нас, прежде всего, интересуют три платы Arduino:
Arduino Uno
– как самый распространенный вариант
Arduino Nano
– компактный вариант, удобный для применения в небольших конструкциях
Arduino Pro Mini
– дешевый компактный вариант без встроенного USB-UART преобразователя (для работы с ним понадобится внешний USB-UART преобразователь), но удобный в случае применения сети устройств.

Во всех вышеописанных платах используется микроконтроллер ATmega328 (в более старых версиях ATmega168).

ArduinoUploader.zip — Программа для записи Hex-файла в Arduino

Как и предыдущая, программка имеет простой интерфейс.
Процесс прошивки тот же:
– подключаем Arduino в USB-порт (отдельного питания не нужно)
– выбираем Hex файл
– выбираем тип Вашего Arduino
– выбираем COM порт
– жмем Upload

Программа при записи открывает дополнительные окна и визуально отображает свои действия, что позволяет следить за процессом записи.

Автоматизация ARP Uploader.ARP Uploader как и XLoader работает через AVR Dude, но, в отличие от XLoader, показывает командную строку. Это дает возможность использовать AVR Dude напрямую в Make или Bat файле.

Дополнительные материалы.Драйвера Arduino.

Считаю не лишним напомнить, что для связи Arduino с компьютером в последнем должны присутствовать драйвера. Оставляю здесь архив с драйверами для Arduino (включая и старые драйвера в Old_Arduino_Drivers.zip и драйвера для FTDI-чипа в папке «FTDI USB Drivers»

Arduino_drivers.zip — Драйвера для Arduino

Стали появляться недорогие китайские Ардуины с драйвером CH340GDriver CH340G.zip — Драйвер для преобразователя USB-UART

Загрузчики Arduino

Если Вы решите собрать свою плату Arduino (а сложного там ничего нет, фактически, это голый ATmega328 или ATmega168), Вам понадобится загрузчик Bootloader который должен содержать МК для работы со средой (или программками для заливки Hex-файлов). Конечно, Вам для записи Hex-файлов в чистый МК понадобится программатор и придется выставить фьюзы.

ATmegaBOOT_168_atmega328.hex — Bootloader для ATmega328
Для правильной работы нужно установить фьюзы следующим образом Low: FF High: DA Ext: 05

Здесь можно скачать прошивку для ЧПУ на Ардуино. Все прошивки написаны в IDE Arduino.

Поделитесь в социальных сетях:FacebookXВКонтакте
Напишите комментарий