Как сделать перемычки для ардуино

Обновлено: 04.07.2024

После знакомства с Arduino вы могли заметить, что в некоторых аспектах это устройство не очень-то удобно. Лично у меня провода между Arduino и макетной платой постоянно отваливаются, да и места эта конструкция занимает многовато. К счастью, микроконтроллер ATmega328P, на базе которого работает Arduino Uno, можно легко извлечь из устройства. Нужно только воткнуть под него пинцет сначала с одной стороны, а затем с другой. Учитывая, что помимо ATmega328P в Arduino Uno не так уж много компонентов, интересно, удастся ли нам собрать свою Arduino прямо на макетке?

Fun fact! Аналогичную заметку про STM32 ищите здесь — Используем STM32 безо всяких отладочных плат.

Использование запрограммированного ATmega328P

Зальем в микроконтроллер программу Blink и извлечем его описанным выше способом. Только запомните, как стоял микроконтроллер в вашей Arduino на случай, если захотите потом вставить его обратно. На моей Arduino Uno микроконтроллер стоит головой вниз от USB разъема и кнопки Reset. Хотя интуитивно я бы вставлял его с точностью до наоборот.

В сети не сложно найти объяснение, какие пины ATmega328P каким входам и выходам Arduino соответствуют:

Соответствие пинов ATmega328P входам и выходам Arduino

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

Итак, пошаговая инструкция по сборке Arduino на макетной плате:

  1. Подключаем конденсатор на 100 мкФ в качестве сглаживающего фильтра. Если вы можете использовать от 7.5 до 9 В, вместо него лучше использовать стабилизатор напряжения LM7805. Как он подключается ранее рассказывалось в посте Интегральные схемы: чипы стандартной логики 74xx. Также можно добавить светодиод для индикации, что напряжение подано. В общем, обычная подготовка.
  2. Пин 1 — это Reset. Его подключаем через резистор на 10 кОм к плюсу, а через кнопку — к минусу. Если же кнопка Reset вам не нужна, можно подключить напрямую к плюсу.
  3. Пин 7 (VCC) подключаем к плюсу, пины 8 и 22 (GND) — к земле. Пины 20 (AVCC) и 21 (AREF) подключаем к плюсу.
  4. Между пинами 9 и 10 ставится кварцевый резонатор на 16 МГц. Подобно резистору, его все равно, как подключать. Затем сами пины подключаются к земле через конденсаторы на 22 пФ.
  5. Опционально: так как в микроконтроллер сейчас залита программа Blink, к пину 19 (в Arduino это цифровой пин 13) можно подключить светодиод, который через резистор на 220 Ом идет к земле.

Если все было сделано правильно, после включения цепи вы увидите, как микроконтроллер мигает светодиодом. Но это только пол дела. Сейчас, чтобы запрограммировать чип, нам придется вставлять его обратно в Arduino, запрограммировать, затем извлечь и вставить обратно в макетку. Спрашивается, а нельзя ли как-то поудобнее?

Программирование микроконтроллера без Arduino

Оказывается, что можно. Для этого нам понадобится преобразователь USB-UART на базе чипа FT232. Они бывают разные. Для нас главное, чтобы устройство имело выходы VCC, GND, TXD и RXD, остальные не потребуются. Лично я использовал самое простое устройство ценой менее 9$. Если у вас такого преобразователя нет и вы не хотите ждать его доставки, можно обойтись и без него. На мой взгляд, альтернативный способ сильно менее удобен. Ему далее будет посвящен отдельный параграф.

Примечание: Существуют аналогичные преобразователи на базе чипов CP2102, PL2303 и CH340.

Итак, питание для цепи можно подавать прямо от USB — надеюсь, что такое VCC и GND к этому моменту вы уже знаете. На моем FT232 есть перемычка, позволяющая выбирать напряжение — 3.3 В или 5 В. Проверьте, что у вас выбрано нужное вам напряжение. Затем пин 2 (RX) микроконтроллера подключаете к пину TX вашего FT232, а пин 3 (TX) — соответственно к пину RX преобразователя. Почти готово, но так просто залить новую программу не получится:

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00

Чтобы все заработало, нужно нажатием соответствующей кнопки сделать микроконтроллеру Reset и в течение одной секунды нажать Ctr+U в Arduino IDE, выполнить make upload или как вы там вызываете avrdude. Связано это с тем, что сразу после перезапуска ATmega328P управление получает специальная программа-бутлоадер, которая ждет данных по UART. Если они поступают в течение одной секунды, то во flash-память микроконтроллера заливается новая прошивка. Если нет, то управление передается той прошивке, что уже есть.

Окончательный вид самопальной Arduino:

Самопальная Arduino на макетной плате

К сожалению, описанные выше шаги не будут работать, если вы просто купите ATmega328P без Arduino. Дело в том, что в нем почти наверняка не будет записано никакого бутлоадера. Его можно записать прямо в Arduino IDE, но для этого нужно специальное устройство, программатор. Что делать, если его нет?

Загрузка бутлоадера

Как ни странно, но можно воспользоваться Arduino. Отсоединяем FT232, а затем подсоединяем Arduino к микроконтроллеру таким образом:

ArduinoISP - использование Arduino как программатора

Здесь подключено питание, цифровой пин 10 идет на пин 1 (Reset) ATmega328P, цифровые пины 11, 12 и 13 идут на те же самые пины микроконтроллера, физически это пины 17, 18 и 19. В Arduino IDE жмем File → Examples → 11. ArduinoISP → ArduinoISP, жмем Upload. Только что вы превратили вашу Arduino в программатор. Затем выбираем Tools → Programmer → Arduino as ISP и, наконец, говорим Tools → Burn Bootloader.

Arduino IDE может показать вам такую ошибку:

avrdude: WARNING: invalid value for unused bits in fuse "efuse",
should be set to 1 according to datasheet
This behaviour is deprecated and will result in an error in
future version
You probably want to use 0xfd instead of 0x05 (double check
with your datasheet first)

На самом деле, это всего лишь предупреждение, а не ошибка. Теперь можно отключить Arduino и попытаться загрузить на микроконтроллер программу Blink. Поздравляю, бутлоадер загружен!

Как обойтись без FT232

Выше я обещал рассказать, как можно обойтись без FT232. Оказывается, что на самой Arduino уже есть все необходимое, а именно — еще один микроконтроллер ATmega16U2, с прошивкой, делающей из него USB-AURT преобразователь.

Пример использования Arduino в качестве преобразователя USB-UART:

Arduino в качестве преобразователя USB-UART

Микроконтроллер из платы следует извлечь. Питание подключается как обычно. Выходы Reset, RX и TX подключаются к соответствующим пинам ATmega328P (номер 1, 2 и 3 соответственно). Заметьте, что здесь RX подключается к RX, а TX — к TX, а не наоборот, как при использовании FT232. Итак, подключаем к USB и используем, как обычную Arduino.

Заключение

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

Интересно, что на самом деле можно обойтись без кварцевого резонатора и двух конденсаторов, используя внутренние часы микроконтроллера. Для этого нам понадобится программатор (который фактически у нас уже есть), понимание, что такое fuse bits и как использовать микроконтроллер без бутлоадера, а также умение пользоваться avrdude напрямую из консоли. Но эти вопросы я освещу как-нибудь в другой раз.

А вы программируете Atmega328P прямо на макетной плате или все же предпочитаете использовать Arduino?

Дополнение: Если же вы хотите собрать не Arduino Uno, а Arduino Leonardo, это делается не намного сложнее. Даташит используемого в нем микроконтроллера ATmega32U4 можно найти, например, здесь [PDF], а соответствие между пинами микроконтроллера и пинами Arduino — здесь. Пины, помеченные в даташите, как UVcc и VBus, подключаются к плюсу, UGnd — к минусу, UCap — к минусу через конденсатор на 1 мкФ, а помеченные D- и D+ — к соответствующим пинам USB-разъема. Все остальное — по аналогии с ATmega328P.

Стандартная Arduino / CraftDuino имеет 20 цифровых пинов (6 из них — ещё и аналоговые входы), что бывает недостаточно для решения некоторых задач: тот же LCD-дисплей требует минимум 6 пинов. Для подключения нескольких устройств, не требующих двунаправленной передачи данных, вполне подойдут сдвиговые регистры.

В предыдущих статьях про вывод и ввод через сдвиговые регистры мы уже рассмотрели самое простое их применение, а именно управление светодиодами путём посылки байта и считывание состояний кнопок. Для того, чтобы заставить работать тот же LCD-дисплей через регистр, придётся применить парочку архитектурных программерских трюков. При наличии некоторого опыта в C++ это не покажется сложным (:

С первого взгляда не очень-то понятно, а как, чёрт возьми, заставить работать тот же LCD через сдвиговый регистр? Что записывать в регистр, какие его выводы должны менять состояние и как? Очевидно, что для начала нужно как-то предоставить возможность управлять отдельными выводами регистра так же, как и обычными пинами Arduino.

Вспомним, как подключается LCD, а затем заглянем в исходный код библиотеки LiquidCrystal и увидим, что там чуть ли не в каждой функции дёргаются пины, к которым подключен LCD, вызовами функции digitalWrite(), а режимы этих пинов устанавливаются через pinMode(). Логично будет написать такие же функции и для сдвиговых регистров.

Немного забегая вперёд, скажу, что я уже написал класс SPI_Bus для удобной работы с устройствами по SPI (его я опишу позже), и в него нужно только добавить поддержку управления выводами.

Этот интерфейс содержит объявления функций lineConfig(), lineWrite() и lineRead() — это аналоги pinMode(), digitalWrite() и digitalRead(). Всю работу с нужными пинами библиотека LCD должна будет делать через интерфейс LineDriver. Для начала создадим драйвер по умолчанию, который будет просто вызывать стандартные функции:

Теперь добавим в класс LiquidCrystal указатель на экземпляр LineDriver и изменим конструкторы класса и функцию init() так, чтобы они принимали соответствующий аргумент:

По умолчанию аргумент line_driver будет равным нулю и его можно не указывать при объявлении объекта LCD-дисплея — тогда будет использоваться драйвер по умолчанию (DefaultLineDriver) и дисплей будет работать, как обычно, через пины Arduino.

Теперь добавим поддержку интерфейса LineDriver в класс для работы с SPI:
Как можно заметить из приведённого кода, в классе SPI_Bus данные буферизуются: если из регистра ничего не считывать, а только управлять отдельными его выводами через функционал LineDriver, то регистр будет поддерживать уровни напряжений на выводах до тех пор, пока вы не установите новые. Это как раз то, что нужно для управления устройствами — менять состояния отдельных выводов, не трогая при этом другие.

Всё, теперь можно работать со сдвиговыми регистрами, как с наборами пинов:

Так как сделано это через реализацию интерфейса LineDriver, мы можем передавать указатель на объект сдвигового регистра в конструктор объекта LCD:

Теперь при работе с LCD будут меняться уровни не на пинах Arduino, а на выходах сдвигового регистра. Одна строка кода для подключения регистра, и один дополнительный аргумент для объекта LiquidCrystal — и можно управлять дисплеем по 3м проводам SPI. При этом ещё два выхода регистра остались свободными, и мы можем их использовать, как обычные пины.

Но мы не ограничимся одним лишь LCD — есть же ещё сервоприводы . Я проделал аналогичные манипуляции с библиотекой Servo , и теперь точно так же можно управлять сервоприводами через сдвиговый регистр:

А что насчёт ввода? Ранее я писал о чтении состояний кнопок через сдвиговый регистр. Теперь, с библиотекой SPI_Bus, это можно сделать так:

А теперь пора использовать наши сдвиговые регистры на полную катушку — подключим к Arduino сразу несколько устройств всего по 5 проводам: LCD-дисплей, 4 сервопривода, RGB-светодиод, несколько кнопок и dip-переключатель на 3 позиции.


Схема подключения:

Вся логика запитана от +5 В Craftduino, а сервы — напрямую от +5 В блока питания . Сама Craftduino запитана от +12 В провода БП. Тут нужно быть поосторожнее с нагрузкой: если она будет слишком велика, то стабилизатор на Craftduino будет перегреваться из-за слишком высокого входного напряжения. В этой схеме подавать +12 В вполне допустимо, т.к. компоненты, запитанные от крафтины, не особо жадные.


Здесь я сделал пару хитростей для уменьшения количества проводов. Во-первых, сделал breakout-платы для 74HC595 (в корпусах SSOP), которые легко соединяются каскадно, используя общие линии SPI и питание:



Во-вторых, сделал для сигнальных линий сервоприводов 4-жильный шлейф:

Просто взял 4 жилы от старого шлейфа для привода гибких дисков (флопарей), припаял к ним 4 пина гребёнки PLS и залепил всё это поликапролактоном (ПКЛ) — последний для этих целей рулит не по-детски (:


Ну, и в-третьих, припаял к LCD-дисплею легендарный транзистор КТ315 с килоомным резистором на базе — для управления подсветкой, подстроечный резистор на 10 кОм — для настройки контрастности, а также 9-жильный шлейф (4 линии данных DB7-DB4, Enable, RS, подсветка, +5V, GND):



Можете рассмотреть некоторые части системы отдельно. Вот сдвиговые регистры 74HC595, к которым подключены LCD, сервы и RGB-светодиод:


Регистр 74HC165 c подключенными кнопками и dip-переключателем:


Можете убедиться, к Craftduino идёт всего 5 сигнальных проводов:

Суть эксперимента такова: пусть при щёлкании dip-переключателем включается/выключается подсветка LCD и загораются/гаснут два значка на нём, при нажатии и удержании кнопок вращаются сервоприводы, и параллельно ещё меняются цвета RGB-светодиода. Для этого примера потребуются библиотеки LineDriver, SPI_Bus, ServoExt и LiquidCrystalExt, ссылки на которые приведены в конце статьи.

А теперь видео-демка:

Этот исходник в виде файла вы можете взять тут . Библиотеки лежат в репозитории RoboCraft на GitHub, можно скачать архивы самых свежих версий: LineDriver , SPI_Bus , ServoExt и LiquidCrystalExt .
Есть принципиальная схема в формате программы DipTrace.
Рисунки печатной платы — верх и низ — имеют разрешение 600 DPI (точек на дюйм), распечататься они должны в размере около одного квадратного дюйма. Так же есть проект платы в формате DipTrace. Резисторы на плате должны быть номиналом около 100 кОм, но у меня были только 4.7 кОм — их и пришлось поставить. На работу платы не влияет (:
Фотки из статьи доступны в альбоме на Яндекс.Фотках.

Sidekick Basic Kit for Arduino V2 1.jpg

Этот набор предназначен для использования с Arduino/Seeeduino/Seeeduino ADK/Maple Lilypad и другими микроконтроллерными платами. Он включает в себя распространенные комплектующие, которые могут понадобиться для создания проектов на базе Arduino: макетную плату, провода-перемычки, цветные светодиоды, резисторы, зуммер и т.д. Все компоненты находятся в транспортабельном пластиковом корпусе.

Купить набор можно по этой ссылке.

Содержимое набора

Sidekick Basic Kit for Arduino Photo 11 2.jpg

  • Макетная плата – 1 шт.
  • Зеленые светодиоды – 5 шт.
  • Красные светодиоды – 5 шт.
  • RGB-светодиод с общим анодом – 1 шт.
  • Керамические конденсаторы на 10 нФ – 10 шт.
  • Керамические конденсаторы на 100 нФ – 10 шт.
  • Алюминиевые конденсаторы на 100 мкФ – 5 шт.
  • Резисторы на 330 Ом – 10 шт.
  • Резисторы на 1 кОм – 10 шт.
  • Резисторы на 10 кОм – 10 шт.
  • Датчик наклона – 1 шт.
  • Термистор – 1 шт.
  • Фоторезистор – 1 шт.
  • Диод – 1 шт.
  • Зуммер – 1 шт.
  • Кнопка – 1 шт.
  • Переключатели – 5 шт.
  • Маленький сервомотор – 1 шт.
  • Потенциометр с регулирующей ручкой – 1 шт.
  • Провода-перемычки – 25 шт. (длинные – 5 шт., короткие – 20 шт.)
  • Коробки – 4 шт.

Краткое введение в основы электроники

Сила тока и напряжение

Резисторы

Подключение резисторов

Резисторы можно подключить двумя способами: параллельно или последовательно (друг за другом):

  • Когда резисторы подключены последовательно, общее сопротивление будет равно сумме значений резисторов
  • Когда резисторы подключены параллельно, общее сопротивление равно сумме обратных величин значений резисторов

Закон Ома

Отсюда формула: I = V/R. Исходя из этой формулы верно следующее: V = IR и R = V/I.

Чтобы запомнить отношения между величинами V, I и R, используйте треугольник на картинке ниже. Если между величинами расположена вертикальная линия, то это значит, что их нужно умножать, а если горизонтальная – делить друг на друга.

К примеру, чтобы узнать I, нужно поделить V на R.

Ohm-s law triange 3.jpg

Макетная плата

Sidekick Basic Kit for Arduino V2 Breadboard 4.jpg

Arduino Sidekick Breadboard Internal Connections 5.jpg

Постоянные резисторы

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

  • Первая полоска – это первая цифра в значении сопротивления
  • Вторая полоска – это вторая цифра в значении сопротивления
  • Третья полоска – это множитель
  • Четвертая полоска – это значение допуска

Потенциометр

Потенциометр – это регулируемый резистор, чье сопротивление можно изменять при помощи регулятора. Потенциометр оснащен тремя контактами. Два боковых контакта потенциометра подключены к краям проводника, который сделан из резистивного материала. Средний контакт подключен к движку, который перемещается по этому резистивному материалу. Значение сопротивления меняется пропорционально позиции регулятора.

Sidekick Basic Kit for Arduino V2 Sidekick POT 6.jpg

Термисторы

Термисторы – это специальные резисторы, чье сопротивление меняется в зависимости от окружающей температуры. Другими словами, они служат датчиками для измерения температурных изменений.

Sidekick Basic Kit for Arduino V2 Sidekick Thermistor 7.JPG

Фоторезисторы

Sidekick Basic Kit for Arduino V2 Sidekick LDR 8.JPG

Светодиоды

Sidekick Basic Kit for Arduino V2 Sidekick RGB LED 9.JPG

Переключатели

Переключатели используются для открытия/закрытия цепей. В данном комплекте имеются переключатели трех типов – нажимная кнопка, передвижной переключатель и датчик наклона.

Нажимная кнопка – это переключатель, который закрывает цепь, пока вы нажимаете на кнопку:

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

Sidekick Slide Switch 2.JPG

Датчик наклона – переключатель, состоящих из двух контактов, подключенных к цепи. Если датчик наклонен горизонтально, это закрывает цепь, а если вертикально – открывает.

Конденсаторы

Конденсаторы – это электрические компоненты, который хранят электрический заряд. В данном комплекте есть конденсаторы двух типов: электролитические и керамические дисковые. Электроемкость конденсаторов выражается в фарадах (Ф).

Sidekick Capacitor 3.JPG

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

  • Последовательно – в данном случае суммарная электроемкость будет равна сумме обратных величин значений конденсаторов
  • Параллельно – в данном случае суммарная электроемкость будет равна сумме значений конденсаторов

Электролитические конденсаторы бывают полярными и неполярными. Для изготовления анодной и катодной фольги используются металлы вроде алюминия, тантала, ванадия и висмута. Электролитические конденсаторы могут иметь и большое, и маленькое значение электроемкости.

Керамические дисковые конденсаторы состоят из керамического диэлектрика и тонкой металлической пленки, выступающей в качестве электродов. Дисковые конденсаторы с двух сторон покрыты обкладками, т.е. тонкими слоями проводникового металла (например, серебра). Как правило, используются для маленьких значений электроемкости.

Зуммер

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

Sidekick Buzzer 4.jpg

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

Во-первых, зуммер можно подключить к выходному цифровому контакту (если подать на этот контакт HIGH, зуммер издаст звук). Во-вторых, зуммер моно подключить к выходному аналоговому ШИМ-контакту, и тогда он будет генерировать звуки разных тональностей.

Диод – это полупроводниковый электронный компонент, который проводит ток только в одном направлении. Он начинает проводить ток, только если напряжение электротока превысит пороговое значение. Таким образом, при прямом смещении диод играет роль закрытого переключателя, а при обратном смещении – роль открытого переключателя. Диоды различаются в зависимости от полупроводникового материала и могут использоваться для изготовления, к примеру, диодов с p-n переходом, диодов Зенера, светодиодов и т.д.

Смещение диода

Подача напряжения на диод называется смещением диода. Диод называется прямо-смещенным, если на его контакты подано положительное напряжение, и он начинает проводить свыше 0.7 вольт (для кремниевого диода) или 0.3 вольт (для германиевого диода). Диод называется обратно-смещенным, если на его контакты подано отрицательное напряжение. Если на обратно-смещенный диод подать напряжение, превышающее безопасный порог, это приведет к его повреждению.

Sidekick Diode 5.JPG

Маленький сервомотор

Сервомоторы – это моторы постоянного тока (DC-моторы) с механизмом зубчатого сцепления и датчиком обратной связи. Они используются для управления механизмами роботов.

Mini Servo Photo 6.jpg

Проекты-уроки

Эта глава расскажет о проектах, которые можно собрать с использованием деталей из набора. Кроме того, для всех проектов понадобится плата Arduino.

Проект-урок 1: Мигание светодиодом

Arduino Sidekick 1LED Blink 7.jpg

Затем скомпилируйте и загрузите на плату следующий код:

Проект-урок 2: Создание маленького светодиодного дисплея

  • Подключите три светодиода к 9-ому, 10-ому и 11-ому цифровым контактам Arduino
  • Подключите между тремя светодиодами и соответствующими контактами три 330-омовых резистора

Arduino Sidekick 3LEDs Display 8.jpg

Скомпилируйте и загрузите на плату следующий код:

Проект-урок 3: Коммуникация с Arduino с помощью кнопки

Скомпилируйте и загрузите на плату следующий код:

Теперь, если цепь будет открыта, светодиод будет загораться, а если закрыта – выключаться.

Проект-урок 4: Регулирование яркости светодиода при помощи потенциометра

  • Подключите анодсветодиода к 5-ому цифровому контакту (на схеме ниже он ошибочно подключен к контакту 5V)
  • Подключите 220-омовый резистор между анодомсветодиода и 5-ым контактом
  • Подключите катодсветодиода к контакту GND
  • Подключите потенциометр к макетной плате
  • Подключите правую ножку потенциометра к контакту 5V
  • Подключите среднюю ножку потенциометра к любому входному аналоговому контакту (0-5); на схеме ниже она подключена к 1-ому контакту
  • Подключите левую ножку потенциометра к контакту GND

Arduino Sidekick potled1 10.jpg

Скомпилируйте и загрузите на Arduino код ниже:

Проект-урок 5: Управление RGB-светодиодом

В наборе есть RGB-светодиод с общим анодом (это самый длинный проводок). Остальные проводки – это катоды для красного, зеленого и синего светодиодов.

Arduino Uno — флагманская платформа для разработки на языке программирования С++.


Uno выполнена на микроконтроллере ATmega328P с тактовой частотой 16 МГц. На плате предусмотрены 20 портов входа-выхода для подключения внешних устройств, например плат расширения или датчиков.

Видеообзор

Подключение и настройка

Шаг 1


Подключите плату к компьютеру по USB. Для коммуникации используйте кабель USB (A — B).

Шаг 2

Установите и настройте интегрированную среду разработки Arduino IDE.

Что-то пошло не так?

Пример работы

После загрузки программы встроенный светодиод L начнёт мигать раз в секунду.

Это значит, всё получилось, и можно смело переходить к другим экспериментам на Ардуино.

Элементы платы


Микроконтроллер ATmega328P

32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Uno с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.

2 КБ RAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. RAM-память энергозависимая, при выключении питания все данные сотрутся.

1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению это аналог жёсткого диска для Uno.

Микроконтроллер ATmega16U2

Микроконтроллер ATmega328P не содержит USB интерфейса, поэтому для прошивки и коммуникации с ПК на плате присутствует дополнительный микроконтроллер ATmega16U2 с прошивкой USB-UART преобразователя. При подключении к ПК Arduino Uno определяется как виртуальный COM-порт.

Микроконтроллер ATmega328P общается с ПК через сопроцессор ATmega16U2 по интерфейсу UART используя сигналы RX и TX , которые параллельно выведены на контакты 0 и 1 платы Uno. Во время прошивки и отладки программы, не используйте эти пины в своём проекте.

Светодиодная индикация

Имя светодиода Назначение
ON Индикатор питания платформы.
L Пользовательский светодиод на 13 пине микроконтроллера. Используйте определение LED_BUILTIN для работы со светодиодом. При задании значения высокого уровня светодиод включается, при низком – выключается.
RX и TX Мигают при прошивке и обмене данными между Uno и компьютером. А также при использовании пинов 0 и 1 .

Порт USB Type-B

Разъём USB Type-B предназначен для прошивки и питания платформы Arduino. Для подключения к ПК понадобится кабель USB (A — B).

Разъём питания DC

Коннектор DC Barrel Jack для подключения внешнего источника напряжения в диапазоне от 7 до 12 вольт.

Понижающий регулятор 5V

Понижающий линейный преобразователь NCP1117ST50T3G обеспечивает питание микроконтроллера и другой логики платы при подключении питания через разъём питания DC или пин Vin. Диапазон входного напряжения от 7 до 12 вольт. Выходное напряжение 5 В с максимальным выходным током 1 А.

Понижающий регулятор 3V3

Понижающий линейный преобразователь LP2985-33DBVR обеспечивает напряжение на пине 3V3 . Регулятор принимает входное напряжение от линии 5 вольт и выдаёт напряжение 3,3 В с максимальным выходным током 150 мА.

Кнопка сброса

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

ICSP-разъём ATmega328P

ICSP-разъём выполняет две полезные функции:

Используется для передачи сигнальных пинов интерфейса SPI при подключении Arduino Shield’ов или других плат расширения. Линии ICSP-разъёма также продублированы на цифровых пинах SS/10 , MOSI/11 , MISO/12 и SCK/13 .

Предназначен для загрузки прошивки в микроконтроллер ATmega328P через внешний программатор. Одна из таких прошивок — Bootloader для Arduino Uno, который позволяет прошивать платформу по USB.

ICSP-разъём ATmega16U2

ICSP-разъём предназначен для программирования микроконтроллера ATmega16U2. А подробности распиновки читайте в соответствующем разделе.

Распиновка


Пины питания

5V: Выходной пин от стабилизатора напряжения с выходом 5 вольт и максимальным током 1 А. Регулятор обеспечивает питание микроконтроллера и другой обвязки платы.

IOREF: Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В нашем случае рабочее напряжение платформы 5 вольт.

Порты ввода/вывода

Пины общего назначения: 20 пинов: 0 – 19
Логический уровень единицы — 5 В, нуля — 0 В. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.

АЦП: 6 пинов: 14 – 19 / A0 – A5
Позволяет представить аналоговое напряжение в виде цифровом виде. Разрядность АЦП не меняется и установлена в 10 бит. Диапазон входного напряжения от 0 до 5 В, при подаче большего напряжения микроконтроллер может выйти из строя.

ШИМ: 6 пинов: 3 , 5 , 6 и 9 – 11
Позволяет выводить аналоговое напряжение в виде ШИМ-сигнала из цифровых значений. Разрядность ШИМ не меняется и установлена в 8 бит.

Serial: пины TX1/1 и RX1/0 . Контакты также соединены с соответствующими выводами сопроцессора ATmega16U2 для общения платы по USB. Во время прошивки и отладки программы через ПК, не используйте эти пины в своём проекте.

Из Википедии: Макетная плата — универсальная печатная плата для сборки и моделирования прототипов электронных устройств. Макетные платы подразделяются на два типа: для монтажа посредством пайки и без таковой.

Макетная плата - важный элемент при работе с Arduino. Это устройство позволяет вам создавать прототипы вашего проекта Arduino без необходимости непрерывной пайки схем. Использование макета позволяет создавать временные прототипы и экспериментировать с различными схемами. Внутри отверстий (точек крепления) пластикового корпуса находятся металлические зажимы, которые соединены друг с другом полосками из проводящего материала.


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

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


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

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


На каждой стороне макета два ряда отверстий соединены по всей длине платы (изображения выше и ниже).



Замечание! Иногда горизонтальные полосы могут в длинных макетах соединять только половину отверстий и в таком случае используйте провода-перемычки для завершения всех соединений (см. изображение ниже).


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


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

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