Arduino как usb ttl

Обновлено: 01.07.2024

Здравствуйте.На плате ардуино мега2560 сгорел загрузчик(плата не определяется компьютером,ранее утановленный скетч выполняется).Приобрел Usb-ttl на микросхеме PL2303.

Как его подключить к ардуино,чтобы загружать скетчи в ардуину?

Подключал tx(2303)-rx(0,меги),rx(2303)-tx(1,меги),+5 к +5,землю к земле,+3 неподключал. На плате ардуино камень загрузчика снят,обвязка осталась.

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

-загрузчик-это программа в загрузочном секторе МК;соответственно,сгореть она не может.

-на плате установлен МК(МикроКонтроллер),а никак не загрузчик(см.выше)

-проверьте все драйвера COM-портов.Переустановите драйвер.

-с помощью преходника на PL нельзя прошить загрузчик,если он действительно слетел.

-попробуйте поставить МК обратно и прошить с PL, не забудьте сбросить плату после нажатия кнопки "Загрузить".

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

По всем признакам сгорел МК (atmega 16u2),до отказа грелся, при подключении к usb.От нее образал дорожку +5в,дабы вовсе отключить МК.Загруженный ранее,до отказа, скетч выполнялся при этом.Собственно полагаю что мк(атмега2560) жива,так как код выполнялся.

PL подключал к ардуине Tx->Rx(0 разъем), Rx->Tx(1 разъем),+5 -> +5, Gnd ->Gnd. + 3.3 не подкдючал.При этом на ардуине гарят ON и на 13 ноге светодиоды.Скетч загружаю начинает моргать светик на ПЛ,Выводит ошибку об тайм-ауте.Драйвера на ПЛ стоят.

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

У меня в связи с этой темой тоже два вопроса есть. Чтобы не создавать отдельную тему, спрошу здесь.

1. Есть ардуино нано. В неё не заливается никакой скетч. Видимо, загрузчик поврежден или еще что-то. Такая бракованная пришла. Можно ли как-то обновить загрузчик, или загрузить в неё скетч каким-то иным способом (например через вот такой USB-UART переходник)?

2. Планирую в дальнейшем использовать ардуины без ножек (Arduino Pro и варианты Nano, например) для уменьшения массо-габаритных показателей. Для заливки скетча, слышал, подойдет другая Ардуино. Она обязательно должна быть на чипсете FT232RL? Просто слышал, что на других чипсетах Ардуины не могут выступать в качестве загрузчика. Или проще взять тот же USB-UART переходник? Или тут уже нужен программатор?

Вот. Вопросов, конечно получилось больше. :) но прошу дать более развернутые ответы. Больше обращаться с такими вопросвами не к кому. ;)


Загрузчик (bootloader)

Загрузчик живёт в самом конце Flash памяти МК и позволяет записывать прошивку, отправляемую через UART. Загрузчик стартует при подаче питания на МК, ждёт некоторое время (вдруг кто-то начнёт слать код прошивки по UART), затем передаёт управление основной программе. И так происходит каждый каждый раз при старте МК.

  • Загрузчик позволяет прошивать МК через UART;
  • Загрузчик замедляет запуск МК, т.к. при каждом запуске ждёт некоторое время для потенциальной загрузки прошивки;
  • Загрузчик занимает место во Flash памяти. Стандартный старый для Arduino NANO занимает около 2 кБ, что весьма существенно!
  • Именно загрузчик мигает светодиодом на 13 пине при включении, как индикация работы.

Программатор

Помимо записи прошивки во flash память, программатор позволяет:

  • Считывать содержимое Flash памяти (скачать прошивку на компьютер)
  • Полностью очищать чип от всех данных и настроек
  • Записывать и читать загрузчик
  • Считывать/записывать EEPROM память
  • Читать и настраивать фьюзы (fuses, fuse-bits) и лок биты.

USB-TTL (UART)

USB-TTL Arduino
DTR DTR
RX TX
TX RX
GND GND
VCC/5V/3.3V VCC

Фьюзы (Pro)

Фьюзы (фьюз-биты) являются низкоуровневыми настройками микроконтроллера, которые хранятся в специальном месте в памяти и могут быть изменены только при помощи ISP программатора. Это такие настройки как выбор источника тактирования, размер области памяти под загрузчик, настройка отсечки по напряжению и прочее. Фьюз-биты собраны по 8 штук в байты (т.н. байты конфигурации), как типичный регистр микроконтроллера AVR. Таких байтов может быть несколько, они называются low fuses, high fuses, extended fuses. Для конфигурации байтов рекомендуется использовать калькулятор фьюзов (например, вот такой), в котором просто ставятся галочки на нужных битах, и на выходе получается готовый байт в hex виде. Рассмотрим на примере ATmega328p:


Лок-биты (Pro)

Лок-биты (lock-bits) позволяют управлять доступом к памяти микроконтроллера, что обычно используется для защиты устройства от копирования. Лок-биты собраны опять же в конфигурационный лок-байт, который содержит: BOOTLOCK01, BOOTLOCK02, BOOTLOCK11, BOOTLOCK12, LOCKBIT1, LOCKBIT2 (для ATmega328). Калькулятор лок-битов можно использовать этот. BOOTLOCK биты позволяют запретить самому МК запись (самопрограммирование) во flash память (область программы и область загрузчика)


А вот локбиты LOCKBIT позволяют запретить запись и чтение flash и EEPROM памяти извне, при помощи программатора, т.е. полностью защитить прошивку от скачивания и копирования:


Таким образом включив LOCKBIT1 (лок-байт будет 0x3E) мы запретим внешнюю запись во Flash и EEPROM память, т.е. при помощи ISP программатора, а включив LOCKBIT1 и LOCKBIT2 (лок-байт: 0x3C) полностью заблокируем заодно и чтение данных из памяти микроконтроллера. Повторюсь, всё описанное выше относится к ATmega328p, для других моделей МК читайте в соответствующих даташитах.

ISP программатор

USBasp


Решение проблем

Решение большинства проблем с загрузкой через программатор (независимо от того, что написано в логе ошибки):

  • Вытащить и обратно вставить usbasp в usb порт
  • Вставить в другой usb порт
  • Переустановить драйвер на usbasp
  • Проверить качество соединения USBasp с МК
  • Перепаять переходник и отмыть флюс

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

Основные ошибки в логе Arduino IDE

Arduino as ISP

Почти любая другая плата Arduino может стать ISP программатором, для этого нужно просто загрузить в неё скетч ArduinoISP:

  • Открыть скетч Файл > Примеры > 11. ArduinoISP > ArduinoISP
  • Всё! Ваша Arduino теперь стала ISP программатором
  • Подключаем к ней другую Arduino или голый чип по схеме ниже
  • Выбираем Arduino as ISP в Инструменты > Программатор
  • И можем писать загрузчики, фьюзы или загружать прошивку напрямую во Flash


    Либо поставить поставить конденсатор ёмкостью


Решение проблем

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

  • Arduino ISP: нужно изменить частоту загрузки прошивки в скетче Arduino ISP и снова прошить его в ардуино-программатор (см. строку в скетче 45 и ниже);

Работа в Arduino IDE

Прошивка загрузчика

Как убрать загрузчик?

Загрузка скетча

В Arduino IDE можно зашить скетч через программатор, для этого надо нажать Скетч > Загрузить через программатор. Это очень удобно в том случае, когда МК используется без загрузчика, или просто голый МК.

Фьюзы

Конфигуратор платы в Arduino IDE устроен следующим образом: каждой плате в Инструменты > Плата соответствует свой набор настроек, включая фьюзы, которые прошиваются вместе с загрузчиком . Некоторые из них:

  • Загрузчик (путь к файлу)
  • Скорость загрузки (через загрузчик)
  • Объем доступной flash и sram памяти
  • Весь набор фьюзов и лок-биты

Файл конфигурации называется boards.txt и найти его можно в папке с ядром Arduino: C:\Program Files (x86)\Arduino\hardware\arduino\avr\boards.txt. Документацию на boards.txt можно почитать здесь. При желании можно вывести нужные фьюзы через калькулятор (читайте выше), изменить их в boards.txt (главное не запутаться, для какой выбранной конфигурации платы делается изменение) и прошить в МК, нажав Инструменты > Записать загрузчик.


Такая работа с фьюзами максимально неудобна, но есть и другие варианты:

  • Ядро GyverCore для atmega328, в нем мы сделали кучу готовых настроек фьюзов прямо в настройках платы, читайте в уроке про GyverCore. Несколько загрузчиков, включая вариант без загрузчика, выбор источника тактирования и другие настройки в один клик мышкой.
  • Программа AVRdudeprog, про нее поговорим ниже

Avrdudeprog

  • Чтение/запись/очистка flash памяти
  • Чтение/запись/очистка eeprom памяти
  • Полная очистка чипа
  • Калькулятор фьюзов и локбитов (чтение/запись)


Более подробный обзор на avrdudeprog можно посмотреть здесь . Давайте посмотрим на калькулятор фьюзов. Выбираем свой микроконтроллер и программатор (можно добавить другие модели микроконтроллеров и программаторов, читай тут). Переходим во вкладку Fuses, нажимаем прочитать. При успешном чтении увидим текущий набор настроек своего чипа. Можно их поменять и загрузить. Важно! Галку инверсные биты не трогаем! Лок-биты и отключение RST заблокирует микроконтроллер, не трогайте их, если такой цели нет! Можно загружать прошивку или загрузчик из .hex файла, указав путь к ней на первой вкладке в окне Flash. Очень удобная утилита для низкоуровневой работы с МК.

Видео

Если вы сделали свою плату или используете плату Arduino Pro Mini и просто пытаетесь прошить её через через через переходник USB-UART (др. н. USB-COM, USB-TTL):


То сразу нужно понимать, что недостаточно просто подключить выводы RX, TX, GND, необходимо задействовать еще один вывод DTR (подключать через конденсатор 100 нФ к RST (вывод сброса МК)), который есть не на всех преобразователях


Вот примеры широко распространённых USB-TTL преобразователей:


Как видно, только на одном из них выведен вывод DTR (Data Terminal Ready).


Но если очень нужно прям и сейчас, то можно аккуратненько припаяться к соответствующему выводу микросхемы (очень аккуратно, ибо дорожки легко отрываются):


С CH340 будет намного проще припаиваться


После этого все должно работать.


Записав сигналы с помощью логического анализатора на RX, TX, DTR видно, что во время загрузки прошивки этот вывод подтягивает сброс к минусу.


Купить на Aliexpress

Ардуина прошивается только один раз

Важно! Если ардуина прошивается только один раз, а потом нет, то проверьте наличие конденсатора между выводом сброса (RESET) и минусом питания (GND) − его нужно убрать !

Ардуина вообще не прошивается

Ну, а если вообще не шьеться через UART, то потребуется я программатор для восстановления загрузчика (Tools -> Burn Bootloader), например USBASP (сразу совет: если программатор выеживается, то обновите его прошивку до последней с помощью ардуины или другого программатора) или другая ардуина для использования её в ISP программатора.


Кстати, если не видели, то вышла Бета-версия Arduino IDE 2.0, подробнее здесь


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

Что для этого нужно?

Arduino Pro Mini очень компактный, а компактность требует жертв и жертва это - USB интерфейс который полностью выкосили в данном контроллере т.е. подключить Pro Mini к компьютеру напрямую у вас не получится и как следствие для этого понадобится либо специальный переходник USB в TTL или другой контроллер Arduino.

Далее мы разберем три способа как прошить Pro Mini и для всех трех способов нам что-то понадобиться:

  • Первый способ. Прошиваем через адаптер USB в TTL – нужен сам адаптер в количестве одной штуки.
  • Второй способ. Прошиваем через Arduino UNO – нужна Arduino UNO, но не простая, а в классическом исполнении, это та Arduino, в которой процессор выполнен в DIP корпусе и вставлен в черный разъем.
  • Третий способ. Прошиваем через SPI интерфейс – нужна любая Arduino: UNO, Nano, Mega, Leonardo – не важно, главное чтобы был USB разъем для подключения к ПК.

Первый способ. Прошиваем через адаптер USB в TTL

Первым и самым простым способом загрузить свой скетч в Arduino Pro Mini - это приобрести специальный адаптер USB в TTL или как его называют UART переходник. Как правило, этот переходник это и есть та часть, которую вырезали из Arduino Nano, превратив ее в Arduino Pro Mini. Стоимость подобных переходников копеечная, а выбор и того больше. Китайцы наштопали их столько, что глаза разбегаться какой из них выбрать. При этом цена сего девайса не более одного вечно зеленого. После того как вы соедините Pro Mini и UART переходник проводами или шлейфом, остаётся только воткнуть его (переходник) в ПК, установить драйвер (не для всех переходников они требуются) и на этом собственно все. Ваш ПК определит переходник как очередной COM-порт, который появляется при подключении любой Arduino к ПК. Выбираете его, плату, с которой будете работать (Arduino Pro Mini) и спокойно загружаете свой скетч.

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

Подключение переходник вы можете посмотреть по таблице ниже:

Arduino UNO

USB в TTL (UART)
Arduino Pro Mini
RX
RX
TX
TX
GND
GND
5V
VCC
RST или DTR или GRN
RST или DTR

Второй способ. Прошиваем через Arduino UNO

Для этого способа нам понадобиться классическая Arduino UNO. Классическая эта та, в которой корпус микросхемы выполнен в DIP корпусе и вставлен в специальный разъем. Вот эту микросхему нам надо аккуратно поддеть отверткой. Тут важно не сломать процессор, поддевайте аккуратно, не погнув ноги.

Arduino UNO

Arduino UNO. Процессор выполнен в DIP корпусе.

Arduino UNO

Аккуратно поддеваем и вытаскиваем процессор отверткой.

После того как мы вытащили процессор из Arduino UNO мы по сути получили тот самый переходник USB в TTL, осталось только соединить проводами наш новый переходник и Arduino Pro Mini по следующей схеме:

Arduino UNO

Arduino UNO (без процессора)
Arduino Pro Mini
RX
RX
TX
TX
GND
GND
5V
VCC
RST
RST

После того как вы соединили две Arduino воедино, можно приступать к прошивке Arduino Pro Mini. Подключаем Arduino UNO по USB к ПК. Выбираем в настройках Arduino IDE COM-порт, указываем, что мы теперь работаем не с Arduino UNO, а с Arduino Pro Mini и все, заливаем наши скетчи. Способ довольно интересный, если вы не боитесь испортить Arduino и рядом не оказалось переходника USB в TTL.

Третий способ. Прошиваем через SPI интерфейс


Третьим и самым неудобным способом загрузить свой скетч в Arduino Pro Mini это прошить его при помощи ICSP интерфейса. Данный интерфейс присутствует на большинстве плат Arduino. Основные контакты данного интерфейса выведены на порты с 10 по 13, а так же выведены отдельно в виде шести контактной колодки с подписью ICSP. Располагается колодка, как правило, в центральной правой части Arduino.

Прошивка Arduino Pro Mini в этом случае делиться на два этапа:

  1. Прошивка платы Arduino как ISP программатора.
  2. Настройка Arduino IDE и загрузка скетча в Arduino Pro Mini.

Первым делом мы должны подготовить наш будущий программатор. Возьмем для примера всю туже Arduino UNO. Далее пошагово:

  1. Запускаем Arduino IDE.
  2. Файл - Примеры - 11.ArduinoISP - ArduinoISP.
  3. Инструменты - Плата - Arduino UNO.
  4. Инструменты - Порт - Выбираем COM-порт.
  5. Компилируем и заливаешь в Arduino UNO.

Далее нам необходимо соединить две Arduino проводами по следующей схеме:

Arduino UNO (ISP)
Arduino Pro Mini
5V
VCC
GND
GND
10
RST
11 (MOSI)
11 (MOSI)
12 (MISO)
12 (MISO)
13 (SCK)
13 (SCK)

Теперь опять открываем Arduino IDE. Открываем в ней скетч который вы хотите залить в Pro Mini и выполняете следующие действия:

2. Инструменты - Плата - Arduino Pro Or Pro Mini
3. Инструменты - Процессор - ATmega168 (5V, 16 MHz)
4. Инструменты - Порт - Выбираете порт
5. Инструменты - Программатор - Arduino as ISP
6. Скетч - Загрузить через программатор

Добавляем китайский Pro Mini в Arduino IDE

Как я уже говорил в данной статье, Китайские клоны порой оснащают процессорами которыми не оснащали официальные версии Arduino Pro Mini и как следствие при прошивке их вы можете увидеть следующую или подобную ошибку.

Исправляется это легко:

  • Для начала необходимо открыть папку в которой расположена Arduino IDE.
  • Затем переходим в следующую папку "Папка с Arduino IDE\hardware\arduino\avr\".
  • Ищем там файл "boards.txt" и открываем его в текстовом редакторе.
  • Ищем в файле следующую строку "pro.menu.cpu.16MHzatmega168.build.mcu=atmega168".
  • И заменяем ее на "pro.menu.cpu.16MHzatmega168.build.mcu=atmega168p".
  • Перезапускаем Arduino IDE и на этом все.
  • Если у вас к примеру 328 процессор то делаем все так же, только ищем строку с цифрами 328.

Заключение

В данной статье я привел аж три варианта загрузки скетчей в Arduino Pro Mini. Лично я использую второй. Мне он больше нравиться.

Что будете использовать вы - выбирать вам. Оставьте в комментарии какой вариант вы предпочитаете.

Читайте также: