Разные платы arduino: распиновка и схема подключения

Описание пинов Arduino Uno Rev3

Пины Ардуино используются для подключения внешних устройств и могут работать как в режиме входа, так и в режиме выхода. Каждый вывод имеет нагрузочный резистор (по умолчанию отключен) 20-50 кОм и может пропускать до 40 мА.

Некоторые выводы имеют особые функции:

  • Пины 0 и 1 – контакты UART (RХ и TX соответственно) .
  • Пины c 10 по 13 – контакты SPI (SS, MOSI, MISO и SCK соответственно)
  • Пины A4 и A5 – контакты I2C (SDA и SCL соответственно).

Цифровые пины платы Uno

Пины с номерами от 0 до 13 являются цифровыми. Это означает, что вы можете считывать и подавать на них только два вида сигналов: HIGH и LOW. С помощью ШИМ также можно использовать цифровые порты для управления мощностью подключенных устройств.

Пин Адресация Специальное назначение ШИМ
RX
1 1 TX
2 2 Вход для прерываний
3 3 Вход для прерываний ШИМ
4 4
5 5 ШИМ
6 6 ШИМ
7 7
8 8
9 9 ШИМ
10 10 SPI (SS) ШИМ
11 11 SPI (MOSI) ШИМ
12 12 SPI (MISO)
13 13 SPI (SCK)
К выходу также подсоединен встроенный светодиод (есть в большинстве плат Arduino)

Аналоговые пины Arduino Uno

Аналоговые пины Arduino Uno Rev3 предназначены для подключения аналоговых устройств и являются входами для встроенного аналого-цифрового преобразователя (АЦП), который в ардуино уно десятиразрядный.

Пин Адресация Специальное назначение
A0 A0 или 14
A1 A1 или 15
A2 A2 или 16
A3 A3 или 17
A4 A4 или 18 I2C (SCA)
A5 A5 или 19 I2C (SCL)

Дополнительные пины на плате

  • AREF – выдает опорное напряжения для встроенного АЦП. Может управляться функцией analogReference().
  • RESET – Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.

Снижение тактовой частоты.

Потребление любого микроконтроллера сильно зависит от частоты его тактирования, и снижая ее, мы можем добиться значительного снижения энергопотребления. В микроконтроллерах AVR имеется возможность программного изменения предделителя частоты тактирования. А для простоты работы с ним мы будем использовать специальную библиотеку Prescaler.h, скачать которую можно по адресу https://github.com/fschaefer/Prescaler:

#include “Prescaler.h”

Изменение предделителя тактирования производится с помощью функции setClockPrescaler(); имеющей один аргумент, отвечающий за величину предделителя. Существует 9 констант в качестве аргументов для данной функции:

setClockPrescaler(CLOCK_PRESCALER_1);

setClockPrescaler(CLOCK_PRESCALER_2);

setClockPrescaler(CLOCK_PRESCALER_4);

setClockPrescaler(CLOCK_PRESCALER_8);

setClockPrescaler(CLOCK_PRESCALER_16);

setClockPrescaler(CLOCK_PRESCALER_32);

setClockPrescaler(CLOCK_PRESCALER_64);

setClockPrescaler(CLOCK_PRESCALER_128);

setClockPrescaler(CLOCK_PRESCALER_256);

В зависимости от аргумента, данная функция снижает тактовую частоту в несколько раз (CLOCK_PRESCALER_16 означает что базовая тактовая частота микроконтроллера будет снижена в 16 раз).

Перед использованием данной функции, необходимо отметить, что правильность работы всей периферии сильно зависит от тактовой частоты, и при ее снижении – большинство функций микроконтроллера, завязанные на времени, будут работать неправильно (таймеры, PWM, USART, I2C и т.д.). Кроме того неправильно будут работать стандартные функции millis(); и delay();. Но данная библиотека предоставляет замену этим функциям в виде функций trueMillis(); и trueDelay();.

Рассмотрим вариант применения снижения тактовой частоты на примере работы с Serial интерфейсом:

#include "prescaler.h"



int i = 0;



void setup() {

pinMode(LED_BUILTIN, OUTPUT);

Serial.begin(9600);

setClockPrescaler(CLOCK_PRESCALER_256); //Понижаем тактовую частоту в 256 раз

}



void loop() {

digitalWrite(LED_BUILTIN, HIGH); //включаем светодиод

trueDelay(200); //ждем 200 мс с учетом пониженной частоты

digitalWrite(LED_BUILTIN, LOW); //выключаем светодиод

trueDelay(1000); //ждем 1 секунду с учетом пониженной частоты

i++;

if (i == 5) { //каждый 5 цикл отправляем данные в Serial порт

setClockPrescaler(CLOCK_PRESCALER_1); //Повышаем частоту тактирования до стандартной

Serial.println("I'm alive!"); //Отправляем данные

delay(15); //Ждем пока данные отправятся

setClockPrescaler(CLOCK_PRESCALER_256); //Обратно снижаем частоту тактирования

i = 0;

}

}

Как видно, перед тем как использовать Serial порт, необходимо сначала повысить частоту тактирования до стандартной, и только потом отправлять данные. То же самое касается и приема данных – необходимо позаботиться о возвращении стандартной частоты тактирования еще до того, как данные будут отправлены на наш микроконтроллер, иначе они будут приняты неверно. То же касается и остальной периферии, завязанной на временных промежутках.

Таким образом, мы рассмотрели 4 различных способа снижения энергопотребления микроконтроллером во время его работы. Пробуйте комбинировать данные способы в своих проектах для достижения максимальной эффективности ваших устройств. Удачи!

Входные и выходные контакты

Любой из 14 цифровых контактов Pro Mini
можно использовать и в качестве входного, и в качестве выходного контакта – при помощи функций pinMode() , digitalWrite() и digitalRead() . Они оперируют на 3,3
и 5 вольтах
(в зависимости от модели). Каждый контакт может получать/отдавать не более 40 миллиампер
и оснащен встроенным подтягивающим резистором (по умолчанию отключен) номиналом 20-50 кОм
.

Кроме того, некоторые контакты могут выполнять специальные функции:

  • Последовательная передача данных
    : 0-ой (RX)
    и 1-ый (TX)
    контакты. Используются для получения (RX
    ) и передачи (TX
    ) последовательных TTL
    -данных. Эти контакты подключены к контактам TX-0
    и RX-1
    на 6-контактном гребешке
    .
  • Внешние прерывания
    : 2-ой
    и 3-ий
    контакты. Эти контакты можно настроить на запуск прерывания при переключении на значение LOW , нарастающем/убывающем фронте импульса или изменении значения. Более подробно читайте в статье о функции attachInterrupt() .
  • ШИМ
    : 3-ий
    , 5-ый
    , 6-ой
    , 9-ый
    , 10-ый
    и 11-ый
    контакты. Эти контакты обеспечивают 8-битную ШИМ
    при помощи функции analogWrite() .
  • Интерфейс SPI
    : 10-ый (SS)
    , 11-ый (MOSI)
    , 12-ый (MISO)
    и 13-ый (SCK)
    контакты. Они поддерживают SPI
    -коммуникацию, обеспечиваемую оборудованием самой Arduino
    , но не языком Arduino
    .
  • Встроенный светодиод
    : 13-ый контакт
    . Это светодиод, по умолчанию встроенный в плату Arduino
    и управляемый 13-ым цифровым контактом
    . Если на этот контакт подано значение HIGH , то светодиод включится, а если LOW , то выключится.
  • Интерфейс I2C
    : A4 (SDA)
    и A5 (SCL)
    контакты. Они поддерживают TWI
    -коммуникацию (I2C
    -коммуникацию) при помощи библиотеки Wire .
  • Reset
    : если подать на эту линию LOW , это сбросит микроконтроллер. Как правило, используется, чтобы добавить на «шилд»
    кнопку сброса, т.к. подключение «шилда»
    к плате блокирует кнопку сброса на самой плате.

Кроме того, модуль Arduino Pro Mini
оснащен 8 входными аналоговыми контактами
, каждый из которых имеет 10-битное разрешение
(т.е. позволяют работать с данными в диапазоне от 1 до 1024
). Четыре из них расположены на гребешках на краю модуля, а два (4-ый
и 5-ый
) – в отверстиях во внутренней части модуля. По умолчанию вольтовой диапазон в них составляет от Vcc до GND
.

Распиновка Arduino pro mini

Изделие оснащено 14 двунаправленными контактами, 3 интерфейсами, подобно Arduino pro. К интерфейсу USART подключены выводы 0 – RX и 1 – TX, к SPI – 10 SS, 11 MOSI, 12 MISO, 13 SCK. Интерфейс I2C имеет подключение к 2 выводам: А4 – SDA, A5 – SCL.

У Arduino pro mini распиновка предполагает подключение к компьютеру посредством кабеля с преобразователем интерфейса USB–USART. На торцевой части устройства имеются выводы USART – RX и ТХ. Для подключения к этим входам и контактам GND и VCC используют специальный кабель.

Схема правильного соединения USART выглядит так:

  • TX – RX,
  • RX – TX

В некоторых соединителях предусмотрен контакт DTR, что создает сигнал сброса перед программным обновлением. Без этой операции запись новой программы не осуществится. Плата применяется как составная деталь микроконтроллера ATmega368 для записи программ, к примеру, в AVRstudio и подобных пакетах. В этом случае выполнится внутрисхемное программирование.

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

Физические характеристики

Размеры Arduino Pro Mini
составляют примерно 1,77 на 3,3 см
.

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

Все хорошо, но «жаба душила»: жаль 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 ModuleBaud Rate Range: 300-1MbpsControl chip: CP2102Working voltage: 4V-5.25VSupport: Windows 98SE, 2000, XP, Vista, Window7, Mac OS 9, Mac OS X & Linux 2.40Output voltage: Dual voltage output (3.3V and 5V)Output indicator: Power indicator, TXD indicatorOutput 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.Подключил по вполне логичной, на мой взгляд, схеме:

Нынешний путь «ленивого радиоинженера» — лезем в интернет и… обнаруживаем: такая проблема встречается у многих. Предлагается масса путей ее решения, но единого внятного метода — нет! Придется идти своим путем. Пробуем:

  • Изменяем скорость обмена в файле «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

Программирование Pro mini через UNO при изъятой «меге» из платы UNO

Контакты Arduino UNO R3
GND5VTX (1)RX (0)RESET

Контакты Arduino Pro mini
GNDVCCTXRXRST

При таком соединении плат (микросхему контроллера, конечно, из платы 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 Uno или Nano

Для того что бы прошить одну ардуинку через другую, нам понадобятся 2 платы Arduino, соединительные провода, USB кабель и компьютер. Я покажу как прошить Arduino Pro Mini с помощью Arduino Nano, но по этой же инструкции можно использовать и другие платы Arduino, такие как Uno, Mega и тд.

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

Выбор программатора

Выбираем этот скетч и прошиваем. Теперь мы готовы подключать Arduino Pro Mini. Подключаем следующим образом:

Arduino Nano -> Arduino Pro Mini

  • +5v -> Vcc
  • GND -> GND
  • D10 -> RST
  • D11 -> D11
  • D12 -> D12
  • D13 -> D13

У меня это выглядит так:

Arduino Pro Mini через Arduino Nano

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

Теперь мы можем прошить нашу Arduino Pro Mini. Откройте или напишите нужную вам прошивку. Будьте внимательны! Стандартная кнопка загрузки скетча нам не подходит. По умолчанию она заливает прошивку без использования программатора. Таким образом мы прошьем микроконтроллер, который должен выступать в качестве программатора. Чтобы этого не произошло нужно перейти в меню Скетч >> Загрузить через программатор.

Готово!

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

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

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

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

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

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

Загрузка скетчей на Arduino Pro Mini через плату Arduino Uno

Еще один способ загрузки скетчей на Arduino Pro Mini – это использование платы Arduino Uno, в которой используется микроконтроллер ATmega328 в DIP-корпусе. ATmega328 необходимо аккуратно извлечь и на плате останется переходник USB-UART, который подсоединим 5 проводами к плате Arduino Pro Mini согласно таблице 2.

Теперь подключаем Arduino Uno к компьютеру. Выбираем в настройках необходимый порт, плату (Инструменты → Arduino Pro Or Pro Mini) и загружаем скетч.

1. Ошибка загрузки скетча на плату при подключении через конвертер USB-Serial.

  • Проверьте правильность подключения платы Arduino Pro Mini конвертеру USB-Serial.

  • Если у конвертера отсутствует контакт DTR, после компиляции скетча до загрузки, нажмите кнопку RESET на плате Arduino Pro Mini.

2. Ошибка загрузки скетча на плату при подключении интерфейсу SPI.

Проверьте правильность подключения платы Arduino Pro Mini согласно табл. 1.

3. Ошибка загрузки скетча на плату при подключении через Arduino Uno.

Проверьте правильность подключения платы Arduino Pro Mini согласно табл. 2.

Arduino

В жизни начинающего ардуинщика рано или поздно наступает момент, когда хочется сэкономить на размере своего изделия, не жертвуя при этом функциональностью. И тогда Arduino Pro Mini – отличное для этого решение! За счёт того, что у этой платы отсутствует встроенный USB-разъём, она в полтора раза меньше Arduino Nano. Но для того, чтобы её запрограммировать, придётся приобрести дополнительный – внешний – USB-программатор. О том, как «залить» написанную программу в память микроконтроллера и заставить Arduino Pro Mini работать, и пойдёт речь в этой статье.

Нам понадобится:

  • Arduino Pro Mini;
  • USBasp-программатор;
  • соединительные провода (рекомендую вот такой набор проводов);
  • макетная плата;
  • компьютер c Arduino IDE.

1Программатор для Arduino

  • Разъём типа USB-A используется, понятно, для подключения программатора к компьютеру.
  • ISP-соединитель нужен для подключения к программируемой плате.
  • Джампер JP1 контролирует напряжение на выводе VCC ISP-коннектора. Оно может быть 3,3 В или 5 В. Если целевое программируемое устройство имеет собственный источник питания, нужно убрать перемычку.
  • Джампер JP2 используется для перепрошивки самого программатора; в данной статье этот вопрос не рассматривается.
  • Перемычка JP3 нужна, если тактовая частота целевого устройства ниже 1,5 МГц.
  • Светодиоды показывают: G – питание подаётся на программатор, R – программатор соединён с целевым устройством.

USBasp-программатор и назначение его частей

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector