by Denon • • 13 комментариев
AliExpress, Arduino и шилды, Приборы и оборудование, Радиотовары и DIY, Хобби и увлечения
Arduino Pro Mini + CP2102 — преобразователь USB-UART
Arduino Pro Mini в комплекте с переходником USB-UART на чипе CP2102 я купил 1,5 года назад (с тех пор цены на них значительно упали) и они все это время пролежали у меня на полке. Все руки не доходили сделать что-нибудь на этом контроллере. Не последнюю роль в этом сыграло и то, что прошить скетч в Arduino Pro Mini хоть и не сложно, но немного сложнее чем в Arduino UNO, Mega или Nano.
И вот я все же решил применить этот контроллер в одном из своих проектов, все равно лежит без дела.
Arduino Pro Mini DETAILS |
|
Microcontroller |
ATmega168 или 328 |
Operating Voltage |
3.3V or 5V |
Input Voltage |
3.35 -12 V (3.3V model) or 5 — 12 V (5V model) |
Digital I/O Pins |
14 (of which 6 provide PWM output) |
Analog Input Pins |
8 |
DC Current per I/O Pin |
40 mA |
Flash Memory |
16 KB (of which 2 KB used by bootloader) |
SRAM |
1 KB |
EEPROM |
512 bytes |
Clock Speed |
8 MHz (3.3V model) or 16 MHz (5V model) |
У меня оказалась 16MHz 5-вольтовая модель на чипе ATmega 328. Как оказалось при анализе данных из интернет, есть платы контроллеров, у которых не разведен сигнал DTR. В моем случае все разведено правильно. В комплекте шел преобразователь USB-UART.
Платформа содержит 14 цифровых входов и выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов, резонатор, кнопку перезагрузки и отверстия для монтажа выводов. Блок из шести выводов может подключаться к плате-конвертеру USB-UART.
Arduino Pro Mini по своим техническим характеристикам и параметрам очень близка с Arduino Nano. По размерам они одинаковые в ширину, но в длину Arduino Pro Mini короче примерно на 1 см.
10 мм это немало. Но вот только если в плату запаять пины для подключения USB-UART, все преимущества этой платы перед Nano пропадают. На данный момент Arduino Pro Mini стоит на $0,25 дешевле чем Arduino Nano. Это несущественно. Больше преимуществ и достоинств нет, одни недостатки.
И главный недостаток — более сложная загрузка скетчей.
Прошить скетч можно несколькими способами.
Один из способов — использовать Arduino UNO в качестве USB-UART . В интернет много инструкций как это сделать, поэтому я не буду на этом останавливаться.
Второй способ — использовать сам переходник USB-UART. Он у меня есть, причем «правильный», поэтому я и решил им воспользоваться. Как работает переходник? Arduino общается с микросхемой преобразователя по обычному UART, к компьютеру же подключается по USB. Компьютер распознает подключенный переходник как как COM-порт.
Загрузить скетч в Arduino Pro Mini, как оказалось впоследствии, совсем не сложно. Нужно только соединить проводами из комплекта 5 выводов на переходнике и Arduino:
(Преобразователь) <-> (Arduino)
DTR <-> GRN
TXD <-> RXI
RXD <-> TXO
GND <-> GND
5V <-> VCC
На моей Arduino Pro Mini сигнал DRT отмаркирован как GRN. Догадаться что есть что было непросто, тем более что на одном из сайтов «добрый» советчик написал что GRN нужно соединить с GND. Что ж, Интернет — большая помойка и я не первый раз убеждаюсь что на форумах охотнее всего дают советы совсем не те, кто действительно разбирается в обсуждаемом предмете. Так вот, GRN это DTR.
Для тех кто не знает что такое DTR:
Data Terminal Ready (DTR) — управляющий сигнал в последовательном протоколе передачи данных, передаваемый от терминального оборудования (DTE) к принимающему данные оборудованию, чтобы указать, что терминал готов к связи.В Arduino сигнал DTR инициирует сигнал Reset в момент начала передачи скетча.
Можно вместо соединения DTR <-> GRN соединить DTR переходника через конденсатор 0,1мкФ с Reset Arduino Pro Mini. Так тоже работает, проверено. Именно через конденсатор. Несмотря на то, что на форумах и многих сайтах написано что нужно соединять DTR и RESET напрямую, при прямом соединении передача скетча не происходит. По крайней мере у меня при прямом соединении ничего не работало.
Теоретически, как пишут в интернет, можно записать скетч и без DTR, нажав точно в момент начала записи ресет на плате контроллера. Я попытался несколько раз поймать этот момент — у меня не получилось. Тренировать свои навыки в попытках попасть ресетом в нужное время я не стал, проще доверить подачу сигнала Reset микросхеме преобразователя CP2102.
Но не все CP2102 одинаково полезны. На eBay и AliExpress продется очень много дешевых подделок, с которыми народ мучается и которые часто приходится дорабатывать, чтобы они могли записать скетч в Arduino Pro Mini. В этих переходниках не разведен сигнал DTR c 28 вывода микросхемы CP2102. В некоторых перепутана маркировка Rx и Tx. Поэтому в сети на форумах так много инструкций, противоречащих друг другу и иногда просто вводящих читателей в заблуждение. Я потратил около двух часов на чтение этих бредней (не хотелось изобретать велосипед, думал сэкономить время) и попытки записать скетч в контроллер по этим инструкциям. В итоге все инструкции оказались нерабочими для моего переходника CP2102. Он у меня оказался «правильным», в котором нанесена правильная маркировка и правильно разведены все сигналы.
Достаточно было только подключить все провода и все заработало.
Поэтому, если вы столкнетесь с необходимостью записи скетча в Arduino Pro Mini через USB-UART первым делом проверьте, разведен ли сигнал DTR на плате Arduino Pro Mini. Я читал что есть такие платы, на которых он не разведен. В таком случае можно воспользоваться вариантом подключения сигнала DTR с платы переходника USB-UART к пину RESET Arduino Pro Mini через конденсатор 0,1-0,15мкФ.
Вторым делом, проверьте подключен ли на плате переходника USB-UART сигнал DTR на какой-либо пин. Пин может быть, и даже быть подписан как DTR, но не быть подключен к 28 выводу микросхемы CP2102. Если 28 вывод этой микросхемы никуда не подключена, нужно обеспечить ее подключение к пину DTR. Если же 28 вывод подключен куда-то в схему, эту дорожку нужно перерезать и завести напрямую на пин DTR.
Правильность маркировки Rx и Tx на поддельной плате CP2102 можно определить опытным путем, тут всего 2 варианта.
Я так же читал в интернет инструкцию, что через USB-UART переходник CP2102 записывать скетч нужно в режиме «Загрузить через программатор», якобы только так все работает. Я не знаю, намеренно ли автор этого опуса вводит читателей в заблуждение, или у него был не USB-UART переходник CP2102 а что-то другое, но этот совет НЕПРАВИЛЬНЫЙ!
Через USB-UART переходник CP2102 компьютер видит Arduino Pro Mini как будто он подключен к COM-порту, то есть точно так же как другие Arduino, у которых переходник USB-UART на борту.
Поэтому скетчи в Arduino Pro Mini заливаются точно так же, как в другие модели Arduino. Нужно только в среде программирования Arduino выбрать модель Pro Mini, затем в появившемся дополнительном пункте выбрать один из 4 возможных видов процессора (ATmega168 или 328, 3,3 или 5V) и виртуальный COM-порт, который появился после установки драйверов переходника USB-UART. Дальше можно пользоваться кнопкой загрузить или Ctrl-U. Если все правильно подключено, не имеет значения тип и модель переходника, скетчи заливаются по UART. Просто выбираем COM-порт которым определился переходник.
После 2 часов чтения форумов и сайтов с «руководствами» и «советами», котрые на 99% оказались неверными, по крайней мере они не подошли для конкретно моих моделей Arduino Pro Mini и USB-UART переходника CP2102, мне удалось все правильно подключить и залить в контроллер слегка модифицированный скетч мигания светодиодом. Я заставил его моргать SOS азбукой Морзе.
Вот скетч, вдруг кому будет интересно:
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.
pinMode(13, OUTPUT);
}// the loop function runs over and over again forever
void loop() {
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300);
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(300); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(300); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(300); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait
digitalWrite(13, LOW); // turn the LED off by making the voltage LOW
delay(300); // wait
delay(1500); // wait 1,5 sec.
}
Выводы:
Если бы я не пытался сэкономит время на «изобретении велосипеда» и не потратил время на чтение бесполезных (даже скорее вредных) советов и руководств на форумах и сайтах, подключение и прошивка Arduino Pro Mini заняла бы не 2 часа, а максимум минут 5-10.
Свой комплект из Arduino Pro Mini и USB-UART переходника CP2102, по сегодняшним меркам я купил дороговато. Правда меня утешает то, что переходник правильный и на нем разведены все сигналы.
Аrduino Nano идентичная по параметрам и возможностям Arduino Pro Mini, стоит совсем чуть-чуть дороже (максимум на 25-50 центов), в размерах проигрывает 1 см (а с распаянными пинами у Arduino Pro Mini и вообще не проигрывает), но гораздо удобнее в использовании за счет встроенного USB-UART и распространенного разъема MicroUSB.
Arduino Pro Mini не самая востребованная плата, наберите в поиске на eBay «Arduino Nano» и отсортируйте по цене по возрастанию и вы увидите как ушлые китайцы совсем дешево сбывают в этом разделе много Arduino Pro Mini, выдаваемых за Nano? в надежде что покупатель не разберется и, покусившись на низкую цену, купит эти контроллеры. У них вся надежда только на покупателей-лохов.
Посоветую ли я покупать Arduino Pro Mini? Новичку — нет. Да — человеку, который точно знает что это такое, какие имеет недостатки и стоят ли они той мизерной экономии.
Еще раз повторю, что прошить Arduino Pro Mini несложно, но стоит ли эта возня с подключением проводков или Arduino UNO разницы в цене $0,2-$0,25. Особенно если придется подключать контролер к компьютеру для отладки много раз, а если в корпусе? Если вы считаете что десять-пятнацать раз подсоединить-отсоединить 5 проводков выгоднее, чем заплатить 20 центов — этот контроллер для вас.
Вот собственно и все. Я поделился своим опытом и высказал свое мнение, решать — вам.
P.S. Прошло немного времени и я несколько изменил свое мнение о Arduino Pro Mini. Даже экономия в 25-50 центов это немало, особенно если собирается небольшая партия изделий, использующих этот контроллер. Понятно, что по-хорошему для небольшой партии желательно интегрировать контроллер непосредственно на плату, а не использовать готовый Arduino (это все же скорее отладочная плата). Но варианты бывают разные, иногда уже есть готовые платы и можно их модернизировать и расширить функционал, интегрировав Arduino. Это окажется дешевле чем разводить новые платы.
А наличие переходника USB-UART на борту изделия, передаваемого пользователю, совсем не нужно и даже вредно. Так что Arduino Pro Mini имеет право на жизнь.
Спасибо!!! Единственная статья, которая помогла запустить эту долбаную плату!!!
Всем привет! У ардуино про мини уже есть RC обвязка для ресета, о каком конденсаторе идет речь? Столкнулся с проблемой у самодельной ардуины про мини, ни вкакую нехочет заливать скетч, захочет-зальет не захочет-пошлет)) из схемы только атмега 328P(QFP) и кварц на 16МГц. Как исправить?
Спасибо. Статья очень помогла. Да, действительно зачем париться с mini ? Проще купить UNO,и забыть про все эти провода. Сам сидел две ночи пока не проштудировал много статей в инете. Спасибо!!!!!
UNO хороша по-своему, но великовата. Как альтернатива PRO MINI тогда уж лучше рассматривать NANO.
Хочу выразить огромную благодарность автору. Именно его статья помогла-таки заставить работать связку Arduino Mini Pro + PL2303.
В одном месте и в одно время собрались практически ВСЕ проблемы, которые могут быть.
Во-первых, перепутаны RX и TX. Пришлось это выяснять экспериментальным путем.
Во-вторых, не выведен сигнал DTR, а чехарда с ресетом не срабатывала. Пришлось выводить сигнал напрямую с микросхемы PL2303, что не так-то просто.
В-третьих, подключение этого сигнала к ноге GRN не помогало — загрузка не шла.
В-четвертых, подключение этого сигнала к ноге RST тоже не помогало — загрузка не шла.
И только после того, как сигнал был подан на RST через конденсатор — началась загрузка.
Большое спасибо за информацию! Вышло так, что этих CP-шек у меня много, натеребонькал с работы. И так же валялся китайский клон pro mini. Т.к. плату под CP2102 делал сам, не составило труда вывести оттуда DTR. Я сам не люблю Ардуино, но если надо что-то сляпать по быстрому — эта штука просто класс, тем более я дружу с паяльником и мне не составляет труда сделать обвеску. К чему все это я, а к тому что на Али можно найти pro mini по 100 руб. Так что плата очень даже полезная!
Ардуино Мини полезны при использовании их как удаленные (15-30м.)UART контроллеры по 3х проводной линии.В NANO единственный UART занят USB конвертором.
Спасибо Вам большое за труд по написанию статьи. Действительно, интернет- барахолка бредовых мыслей идиотов, но на мое счастье я наткнулся на сей труд. В моем случае Dtr у загрузчика был выведен, но вот на плате ардуинки 168 5В 16МГц были перепутаны Rx и Tx. Кстати, фирма производитель ардуинки Baite (как у автора загрузчик). Однако перепутали сволочи…
Тоже парился с RST с преобразователя. Правда там не было дополнительных ножек на плате, пришлось бы напрямую с пина чипа CP2102 проводком соединять с GRN пином платы Про мини. В итоге прошивал ловя момент при компиляции скетча. Как только в логе исчезала надпись компиляция, жал ресет и скетч нормально загружался в плату.
Так тоже можно, но неудобно. Проще уже DTR вывести с микросхемы. Один раз повозился, зато потом пользуйся сколько хочешь, шей скетчи с комфортом.
Самый полезный пост во всем интернете!!! Все описано, все правильно.
У меня точно такой же набор pro mini + uart.
Подключение работает только так как тут написано.
Возникла проблема с заливкой последующих скетчей, конденсатор спас!
Спасибо Вам огромное!
Пожалуйста. Рад если моя писанина кому-то помогла.
Респект автору, собbрилался пойти по пути советчиков из интернета и прошивать особым способом. Попробовал как выше описано, махом все получилось. СПАСИБО. Сэкономил кучу времени.