Arduino pro mini – специализированная электронная платформа в виде микросхемы, предназначение которой состоит в создании электронных устройств.
Следовательно, в микроконтроллере отсутствует привычная микросхема, роль которой заключается в поддержании связи с помощью USB-UART. Цена намного дешевле, в отличие от других представителей Arduino.
Pro Mini или просто pro – модельный ряд, не оснащенный разъемами USB, которые используются для подключения и прошивания устройства.
Вместо этого существует программатор. Начинающий электронщик может выбрать из двух доступных вариантов изделия: Ардуино с 3,3 В и 8 МГц или Ардуино про мини 5 V, в котором доступна распиновка. Статья ниже познакомит читателя с особенностями модели и покажет, где можно использовать электронную плату.
Техническая сторона Arduino mini:
- рабочее напряжение, требуемое для нормальной работоспособности – 3,3 и 5 Вольт;
- напряжение, используемое при входе – 3-12 или 5-12 Вольт;
- количество цифровых входов и выходов – 14 штук, 6 из которых эксплуатируются как выходы ШИМ;
- состояние постоянного тока, требуемого для входа и выхода – 40 мА;
- flash-память – 16 Кб, но 2 Кб предназначены для загрузчика;
- оперативная память – 1 Кб;
- eeprom – 512 байт;
- частота тактов – в первой модели 8 МГц, а во второй 16 МГц;
- Arduino pro включает i2c-интерфейс.
Также стоит отдельно сказать про размеры платы — они, на самом деле очень скромные. Многие кто знакомятся с линейкой ардуино в первый раз всегда удивляются размерам, когда достают МК из коробки. Ниже вы можете оценить плату в дюймах и в сантиметрах.
Аппаратная часть мк Arduino pro mini
В таблице ниже описана аппаратная часть Arduino pro mini. На Arduino mini pro особое внимание уделяется входам и выходам.
Аппаратная часть | Особенности |
Питание | На платформе Ардуино мини про расположен разъем для подсоединения кабеля FTDI, с помощью которого устройство получает питание. Также возможно включать ардуинку через вывод Vcc или RAW. Рассмотрим подробнее источники питания на Ардуино мини:
|
Состояние памяти | Распределение памяти на схеме Ардуино мини про:
|
Количество входов и выходов и их предназначение | Для распиновки разработчики Ардуино про выделили 14 контактов, которые пользователь самостоятельно настраивает, как входы или выходы. На вывод потребуется 3,3 Вольта. В настройках по умолчанию нагрузочный резистор, сделанный для вывода, пропускает 40 мА. Особенные функции для Arduino mini pro pinout:
|
Как мы уже заметили ранее — по размерам Arduino mini pro компактна и подойдет для конструирования любого устройства.
Схема и распиновка Pro Mini
Принципиальная схема микроконтроллера выглядит так:
Принципиальная схема платы
Теперь перейдем к распиновке платы:
Распиновка микроконтроллера
Программирование мк Arduino pro mini
Все программы программируются с помощью бесплатной среды разработки для Arduino pro mini. В Arduino mini включен ATmega328, в который предварительно вшивается загрузчик. Поэтому пользователь может свободно загружать программы в память микроконтроллера. Связь обеспечивает протокол STK500.
Распиновка ATmega328
Как прошить Ардуино про мини без загрузчика с помощью внешнего программатора? Легко и просто.
Для начала потребуется отменить требование на нажатие кнопки перезагрузки перед тем, как прошивать код написанной программы. Ардуино mini pro сконструирован так, что перезагрузка посредством программного обеспечения доступна напрямую с любого компьютерного устройства. В 6-контактных выводах есть один, который напрямую связан с линией сброса Arduino 328 pro с помощью конденсатора на 100 нФ.
Через управление вышеописанным выводом возможно преобразовать USB или последовательный порт путем подключения к разъему. Если сделать так, что появится уровень ниже нормы в течение продолжительного времени, платформа автоматически перезагрузится.
СПРАВОЧНИК ПРОГРАММИСТА ARDUINO
Arduino IDE дает возможность пользователю, чтобы тот загрузил программный код при одном нажатии на кнопку для загрузки бесплатной среды разработки.
Arduino IDE
Однако повышается риск неоправданных последствий и поломки платформы. Если на компьютере электронщика установлена операционная система Мак Ос или Линукс, то сбрасывание на микроконтроллере будет происходить каждый раз, когда программное обеспечение с помощью USB-кабеля с платформой.
Спустя половину секунды с момента сброса начинает свою работу загрузчик. В основном, загрузчик устроен так, чтобы не перехватывать другие данные, однако нередко все происходит наоборот: перехватываются первые байты данных программы, которые отправляются на плату при установленном соединении.
Чтобы устранить такой «баг», необходимо в коде программы, которая будет работать на Ардуино, проверить, как осуществляется процесс передачи данных программы с компьютера на платформу. Оптимальное время для отправления кода – секунда с момента установки соединения между устройствами.
Реализация проектов на базе микроконтроллера Arduino pro mini
Сегодня в интернете можно найти любой проект на Ардуино. И это неудивительно, ведь эта платформа популярна среди начинающих разработчиков электронных приспособлений для дома и дачи. Ниже представлено несколько известных и простых проектов, в основе которых используется платформа Ардуино:
- Сигнализация, построенная с помощью подключения dfplayer к Ардуино pro.
- Управляемая конструкция для квадрокоптера.
- Автоматизация аквариума.
- Таймер.
- Анализатор влажности почвы.
- Автополив для комнатных растений.
- Датчик, измеряющий осадки и скорость ветра.
Источник: https://ArduinoPlus.ru/arduino-pro-mini/
Arduino Pro Mini + CP2102 — преобразователь USB-UART
Стоимость: $6,3 (сейчас 1,43)
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 имеет право на жизнь.
Источник: https://www.kupislonica.ru/arduino-pro-mini-cp2102-preobrazovatel-usb-uart/
Как прошить arduino
В этой статье не будем рассказывать что такое ардуино, так как такой информации везде навалом в интернете.А перейдем к тому,как и чем ее прошить. Программа так же в этой статье.
1. Качаем и устанавливаем Arduino IDE* .
При установке Arduio IDE должны автоматически установиться драйвера, то есть при появлении окошка «согласиться ли на установку драйверов» нажать да.* Это программа для написания скетчей и прошивки Arduino
2. Для китайской Arduino NANO скачать и установить драйвер CH341*, ссылка ниже, см.скриншот.
* На китайских НАНАХ стоят USB контроллеры CH340/CH341, для правильной работы нужен специальный драйвер. Это единственное отличие китайских Ардуин от оригинальных.
- При установке Arduio IDE должны автоматически поставиться драйвера.Если этого не произошло, установить драйвера Arduino из папки с Arduino IDE (C:\Program files…), см. второй скриншот.
- Подключить Arduino к компьютеру, подождать, пока Windows её распознает и запомнит (первое подключение).P.S. Вылезет окошечко, сообщающее, что устройство опознано и подключено к COM порту с определённым номером (2, 3, 6, 9…)
Настраиваем Arduino IDE
Запустить Arduino IDE, выбрать плату (Инструментыплата»ваша плата»). См. первый скриншот.
Выбрать порт: инструментыпорт«COM отличный от COM1, например COM3, COM5…» См. второй скриншот. Какой именно порт вы могли видеть при первом подключении Ардуино к компьютеру.Примечание: если у вас только СОМ1 — значит либо не встали драйвера, либо сдохла плата.
- Готовые прошивки просто открываются двойным кликом. Чтобы загрузить прошивку, жмите кнопку ЗАГРУЗИТЬ на верхней панели инструментов, она в виде стрелочки.ВНИМАНИЕ, СОВЕТ! В ПУТИ К ПАПКЕ СО СКАЧАННЫМИ СКЕТЧАМИ НЕ ДОЛЖНО БЫТЬ РУССКИХ БУКВ! СОЗДАЙТЕ В КОРНЕ ДИСКА ПАПКУ ARDUINO, И РАБОТАЙТЕ В НЕЙ!
- ВНИМАНИЕ, СОВЕТ! КАК ТОЛЬКО ДОСТАНЕТЕ ARDUINO ИЗ ПАКЕТИКА, СРАЗУ ПРОШЕЙТЕ В НЕЁ СКЕТЧ С МИГАНИЕМ СВЕТОДИОДА (blink.ino)Таким образом вы узнаете, что Ардуина изначально рабочая (на тот случай, когда после сборки/пайки она перестанет работать и прошиваться), то есть вы сами её сломали, а не она была изначально бракованная =)
- Как установить библиотеку на Arduino
- Допустим, скачали библиотеку. Её нужно разархивировать и положить в папку:
- C:Program Files (x86)Arduinolibraries (Windows x64)
- C:Program FilesArduinolibraries (Windows x86)
Как пример — библиотека для дисплея на чипе TM1637, смотрите скриншот
В папке libraries должна появиться папка TM1637, в которой есть папка examples, и два файла с расширениями .h и .cpp . Эти два файла должны быть в каждой библиотеке.
Второй способ. Папка с библиотекой кладётся в папку со скетчем. Тогда скетч, использующий библиотеку, сможет ей пользоваться. Но для остальных скетчей эта библиотека будет недоступна!
Основные ошибки при прошивке Arduino (FAQ)
Возникает на этапе сборки и компиляции прошивки, ошибки компиляции вызваны проблемами в коде прошивки, то есть проблема сугубо софтварная. Слева от кнопки «загрузить» есть кнопка с галочкой — проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру.
|
Возникает на этапе, когда прошивка скомпилирована, в ней критических ошибок, и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за софта.
|
Источник: http://radiostroi.ru/arduino/289-kak-proshit-arduino.html
104-Прошивка любого Hex-файла в Arduino при помощи штатного загрузчика (Bootloader)
Давайте немного отвлечемся от создания нашего робота и поговорим о том, как мы будем записывать прошивку в Arduino.
Нас, прежде всего, интересуют три платы Arduino:
— Arduino Uno – как самый распространенный вариант
— Arduino Nano – компактный вариант, удобный для применения в небольших конструкциях
— Arduino Pro Mini – дешевый компактный вариант без встроенного USB-UART преобразователя (для работы с ним понадобится внешний USB-UART преобразователь), но удобный в случае применения сети устройств.
Во всех вышеописанных платах используется микроконтроллер ATmega328 (в более старых версиях ATmega168).
Atmel-8271-8-bit-AVR-Microcontroller-ATmega48A-48PA-88A-88PA-168A-168PA-328-328P_datasheet.pdf (7826 Загрузок)
Одной из главных причин выбора платы Arduino для проекта робота была возможность записывать прошивку устройства в МК не применяя программатора и каких либо дополнительных устройств. Все что нужно для прошивки микроконтроллера Arduino – это стандартный USB шнур (который входит в комплект Arduino).
Это значит, если Вы имеете Ардуину – Вы имеете любое устройство ZiChip!
Запись программы в МК через USB происходит через специальный загрузчик (Bootloader), который записан в МК при изготовлении платы. Вообще, загрузчик предназначен для работы со своим специальным программным обеспечением Arduino IDE, но в случае, когда необходимо прошить в Ардуину что-то постороннее (свой Hex-файл), есть программки позволяющее это реализовать.
Начнем, конечно, с моей программы загрузчика
GC-Uploader
gcUploader.zip (8044 Загрузки)
Программа интересна тем, что выбранный HEX-файл будет заливаться в Ардуину автоматически после каждого его изменения. Это удобно, так как при разработке проекта каждая компиляция (обновление хекса) будет инициировать прошивку Ардуины — Вам ничего не придется делать самому! Кроме того в программе есть и ручной режим прошивки.
Следующая — маленькая и удобная
XLoader (Arduino HEX uploader)
XLoader.zip (18329 Загрузок)
Программка имеет аскетичный интерфейс и работать с ней предельно просто:
— подключаем Arduino в USB-порт (отдельного питания не нужно)
— выбираем Hex файл
— выбираем тип Вашего Arduino
— выбираем COM порт, который создался при подключении Arduino к USB (скорость порта автоматически подставится при выборе типа Arduino)
— жмем Upload
Источник: http://www.GetChip.net/posts/104-proshivka-lyubogo-hex-fajjla-v-arduino-pri-pomoshhi-shtatnogo-zagruzchika-bootloader/
Как перепрошить китайский Ардуино для работы с софтом Ардуино. CH340
Вы когда-нибудь думали о том, что дешевый китайский клон Ардуино действительно может работать?Вы платите всего пару долларов, и получаете такой же продукт. Звучит слишком хорошо, чтобы быть правдой, не так ли?
Правда заключается в том, что некоторые из них работают, а некоторые – нет.Читайте статью до конца, и вы узнаете, как сделать любой китайский клон рабочим за пару минут.
Я использую Arduino Uno для этого примера, но для других моделей процесс тот же самый.Здесь у нас оригинальный Ардуино Уно и его китайская копия (Магазин на Aliexpress, Banggood).
Давайте проведем тесты.
Мой софт от Ардуино установлен на компьютер и работает нормально. Сначала я подключаю оригинальный Ардуино и все работает как надо.Теперь я подключаю мою дешевую китайскую копию Ардуино, и компьютер не может определить устройство.
Проблема в том, что китайский клон не использует стандартный Serial to USB чип, хотя чип называется CH340. Ваш компьютер не распознает эти CH340 чипы, если вы их подключите.Исправить это просто.
Скачайте софт от китайского производителя и установите себе на компьютер. Этот софт будет работать на всех версиях Windows.Windows: http://www.wch.cn/download/CH341SER_EXE.html
Теперь подключите свой китайский клон и попробуйте снова. Все должно работать. Китайский клон должен появиться в софте Ардуино и быть готов к использованию. Я загружаю программу мигания, и все работает нормально.
Но в некоторых случаях китайская плата все еще может не работать. Это потому, что bootloader не был установлен на контроллер Atmel.Чтобы решить эту проблему, нам нужен работающий Ардуино и клон Ардуино, который мы хотим прошить.
Сначала мы подключаем работающий Ардуино к компьютеру и открываем софт Ардуино.Мы идем File -> Examples и выбираем ArduinoISP. Загружаем это на плату. После загрузки отсоедините Ардуино.
Теперь клон Ардуино мы подсоединяем проводами к работающему Ардуино по этой схеме:
- Разъем 10 подключается к Reset,
- Разъем 11 подключается к разъему 11,
- Разъем 12 – к 12,
- Разъем 13 – к 13,
- 5 Вольт – к 5 Вольт,
- Земля – к Земле.
Следующий шаг – подключаем работающий Ардуино к компьютеру.
- Идем Tools -> Board и выбираем китайскую плату, которая не работает. В моем случае это Ардуино Уно.
- Теперь снова идем в Tools -> Programmer и выбираем “Arduino as ISP”
- Еще раз идем в Tools и выбираем “Burn Bootloader”.
- Снова Tools -> Programmer и устанавливаем “ArduinoISP”.
Ваша китайская копия теперь должна работать нормально.
Ардуино – прекрасный софт и полностью бесплатен для использования. Если вы покупаете китайские копии контроллеров Ардуино, подумайте о пожертвовании для поддержки разработчиков.
Надеюсь, статья была полезна. Оставляйте комментарии.
Источник: https://diy-life.ru/kak-pereshit-kitajskij-arduino-dlya-raboty-s-softom-arduino.html
Arduino, watchdog, bootloop и прошивка загрузчика optiboot
Watchdog
Как вам может быть известно, Arduino (а вернее, микроконтроллер на плате) поддерживает watchdog (сторожевой таймер) который позволяет установить промежуток времени, через который микроконтроллер будет перезагружен, даже если программа зависнет. При этом, сторожевой таймер может быть сброшен программно.
Схема работы примерно следующая: «взодим» таймер на некоторое количество секунд, а далее в основной программе постоянно обнуляем счётчик, если всё идёт нормально. Как только мы перестанем обнулять счётчик (а это и может означать зависание), контроллер автоматически перезагрузится по истечению заданного времени.
Однако, работа с watchdog должна поддерживаться загрузчиком платы. Дело в том, что после перезагрузки, которая была вызвана watchdog, контроллеры последних выпусков оставляют включенным сторожевой таймер на минимальный период, т.е. 15ms.
Это нужно для того, чтобы была возможность внутри программы узнать, что перезагрузка была по watchdog.Поэтому первоочередная задача загрузчика — сохранить информацию о том, что перезагрузка была «неожиданной» и сразу же выключить сторожа. Если этого не сделать, то система уйдет в bootloop, т.е. будет вечно перегружаться.
Как известно, в Arduino есть специальный загрузчик, который выполняется в первую очередь после перезагрузки системы. И, к огромному сожалению, стандартный загрузчик не сбрасывает watchdog! Таким образом, система заходит в жестокий bootloop (состояние «crazy led», при котором светодиод на 13-м пине мигает как сумасшедший).
Из статьи вы узнаете, как проверить загрузчик своей платы на поддержку watchdog и что делать, если он не поддерживается.
Для проверки загрузчика следует загрузить в плату следующий скетч:
#include
void setup() {
wdt_disable(); // бесполезная строка до которой не доходит выполнение при bootloop
Serial.begin(9600);
Serial.println(«Setup..»);
Serial.println(«Wait 5 sec..»);
delay(5000); // Задержка, чтобы было время перепрошить устройство в случае bootloop
wdt_enable (WDTO_8S); // Для тестов не рекомендуется устанавливать значение менее 8 сек.
Serial.println(«Watchdog enabled.»);
}
int timer = 0;
void loop(){
// Каждую секунду мигаем светодиодом и значение счетчика пишем в Serial
if(!(millis()%1000)){
timer++;
Serial.println(timer);
digitalWrite(13, digitalRead(13)==1?0:1); delay(1);
}
// wdt_reset();
}
wdt_disable(); // бесполезная строка до которой не доходит выполнение при bootloop Serial.println(«Setup..»); Serial.println(«Wait 5 sec..»); delay(5000); // Задержка, чтобы было время перепрошить устройство в случае bootloop wdt_enable (WDTO_8S); // Для тестов не рекомендуется устанавливать значение менее 8 сек. Serial.println(«Watchdog enabled.»); // Каждую секунду мигаем светодиодом и значение счетчика пишем в Serial digitalWrite(13, digitalRead(13)==1?0:1); delay(1); |
После подачи питания встроенный светодиод мигнет, сигнализируя о том, что запустился загрузчик. Далее в секции setup происходит включение watchdog с таймером на 8 сек. Через 8 минут работы должна произойти перезагрузка. Если после перезагрузки платы весь цикл повторяется, то ваша плата поддерживает watchdog:
Arduino не подвержена bootloop
В противном случае вы увидите, как светодиод на 13 пине начнёт лихорадочно мигать. Это как раз и есть внешнее проявление bootloop. В мониторе порта вы увидите только первый цикл. После него новые строки выводиться перестанут:
Arduino подвержена bootloop
Нажатие кнопки reset не изменить ситуации. Для «лечения» платы, её нужно отключить от питания, затем подключить снова и залить любой другой скетч.
Рекомендуется использовать загрузчики из пакета optiboot. В принципе, эти загрузчики идут в инсталляции самой платформы Arduino, но лучше скачать и установить последнюю версию optiboot с сайта разработчиков: https://github.com/Optiboot/optiboot или копию с моего сайта: https://uscr.ru/share/optiboot.zip
После прошивки загрузчика optiboot вы уже не сможете загружать в плату скетчи со стандартными настройками среды. Поэтому, рекомендую все последующие действия производить на копии среды разработки.
В ОС linux для этого достаточно скопировать каталог, из которого запускается среда разработки с новым именем. В ОС Windows, кажется, тоже достаточно просто скопировать папку (по умолчанию C:Program Files (x86)Arduino).
Далее все пути к папкам и файлам указаны относительно корневого каталога со средой разработки.
Папку optiboot-master/optiboot/bootloaders/optiboot из архива нужно переместить в hardware/arduino/avr/bootloaders/optiboot
Содержимое файла optiboot-master/optiboot/boards.txt дописать в конец файла hardware/arduino/avr/boards.txt
После (пере)запуска среды разработки, в списке плат появятся новые платы с пометкой [optiboot].
Для прошивки загрузчика вам понадобится 2 платы Arduino. Одна из них будет использоваться в качестве программатора.
Теоретически, в качестве программатора подходит любая плата. Но у меня получилось заставить работать только Arduino Uno. Ни Nano, ни leonardo работать программатором не захотели.
Если Arduino Uno у вас нет, купить её у проверенного мной продавца можно здесь.
Подключите плату-программатор к компьютеру и залейте в неё скетч Arduino ISP, который входит в стандартную поставку среды разработки (Файл->Arduino ISP->Arduino ISP).
Прошивка скетча Arduino ISP
Теперь можно временно отключить нашу плату-программатор от компьютера. И соединить её с платой, в которую хотим записать загрузчик. В моём случае, это будет Arduino Nano. Прошивка производится через отдельный разъем ICSP, который есть почти на всех платах.
MISO соединяется с MISO, MOSI с MOSI и SCK с SCK. При этом подключать ICSP целевой платы нужно к обычным выводам платы-программатора. Это довольно странно, но соединение ICSP-ICSP не работает. Хотя контакты там физически соединены друг с другом.
Соединение нужно выполнить вот по такой схеме:
Вот распиновка ICSP разъёма (плата ориентирована USB разъёмом вправо):
ICSP разъём Arduino
Дополнительно, необходимо на плате-программаторе установить электролитический конденсатор ёмкостью не менее 10мкФ(uF) между выводом Reset и GND, для препятствования автоматическому сбросу программатора при начале прошивки. Не забудьте подключить питание к целевой плате.
Ещё можно установить светодиоды (через резистор), с помощью которых программатор сигнализирует об ошибках:
Вот так всё это должно выглядеть в итоге:
Программатор подключён к Arduino Nano
На схеме не показаны резисторы для светодиодов, что бы не загромождать иллюстрацию. Если вы не знаете, зачем светодиодам нужны резисторы, то я вам целую статью написал: Светодиод .
В случае прошивки Arduino Pro Mini, у которого нет IСSP, подключение производится непосредственно к выводам:
После подключения целевой платы к программатору, нужно подключить программатор к компьютеру, в качестве программатора выбрать «Arduino as ISP»:
Выбор программатора
А в качестве платы для прошивки указать целевую плату, а не программатор. Т.Е. в моём случае, в качестве платы выбираю Arduino Nano:
Выбор платы для прошивки
Теперь достаточно выбрать пункт «Инструменты»->»Записать загрузчик»:
Запись загрузчика в плату
После записи загрузчика нужно ещё исправить конфиг. Загрузчики optiboot имеют еще одну особенность — они увеличивают скорость взаимодействия по последовательному порту, поэтому при использовании плат с optiboot нужно внести соответствующие изменения в boards.txt:
Для Arduino Nano:
menu.cpu.nano.atmega328.upload.speed=115200
Для Arduino Mini:
menu.cpu.mini.atmega328.upload.speed=115200
Источник: https://uscr.ru/arduino-watchdog-bootloop-i-proshivka-zagruzchika-optiboot/