Что такое Arduino?
Arduino – это семейство электронных платформ, предназначенных для изучения проектирования электроники.
Arduino NANO – компактная платформа для прототипирования микроэлектронных устройств, предназначенная для использования с макетной платой. Функционал устройства во многом схож с Arduino UNO и отличается от нее лишь размерами платы и отсутствием отдельного разъема для питания.
Основа Arduino Nano – микроконтроллер на базе ATmega328, логическая микросхема для обработки данных с тактовой частотой 16 МГц, имеющая на борту 8 аналоговых и 14 цифровых контактов общего назначения, а также все необходимые интерфейсы: I2C, SPI и UART.
Пошаговая инструкция по подключению
Подключить LED к Arduino можно двумя методами:
- Через макетную плату.
- Через пайку элементов.
Для работы с макетной платой понадобятся:
- провода типа «папа-папа»;
- светодиод;
- резистор на 220 В.
Инструкция по подключению:
- Провод одним концом подключается к контакту, с которого будет подаваться питание, а другим — к гнезду на сборочном поле макетной платы.
- Последовательно питанию в гнездо макетного поля подключается резистор (полярность не важна).
- Последовательно с резистором подключается светодиод (анодом к резистору).
- Катод LED заводится на вывод GND платы.
Подключение через пайку элементов производится в такой же последовательности за одним исключением: вместо проводов «папа-папа» используются проводники, концы которых лудят и припаивают к элементам.
Достоинство первого метода — простота, недостаток — слабый контакт между элементами. Преимущество второго способа подключения — надежный контакт между компонентами, недостаток — необходимость нагрева платы и элементов паяльником, что повышает риск теплового пробоя любого компонента.
Мигать LED на Arduino может и без подключения периферии. В плате есть встроенный светодиод, который можно настроить на любой режим работы.
Все тесты лучше проводить на макетной плате.
Технические характеристики платы
Питание | 5 В |
Входной сигнал | 7-12 В (DC) |
Количество DP | 14 (6 для ШИМ) |
Количество AP | 8 |
Максимальный ток DP | 40 мА |
Память формата Flash | 16 / 32 Кб |
Оперативная память | 1 / 2 Кб |
Память формата EEPROM | 512 байт / 1 Кб |
Тактовая частота работы микроконтроллера | 16 МГц |
Габариты | Ширина — 19 мм, длина — 42 мм |
Вес | 7 г |
Подробный обзор возможностей платы приведен в Datasheet — технической документации. Там же указаны детальные характеристики и описание AN.
Характеристики Arduino Nano V2.3 ATmega168PA
Микроконтроллер | ATmega168PA |
Рабочее напряжение | 5 В |
Напряжение питания (рекомендуемое) | 7-12 В |
Напряжение питания (предельное) | 6-20 В |
Цифровые входы/выходы | 14 (6 из которых могут использоваться как выходы ШИМ) |
Аналоговые входы | 8 |
ШИМ (PWM) пины | 6 |
Постоянный ток через вход/выход | 40 мА |
Максимальный выходной ток вывода 3.3V | 50 мА |
Flash-память | 16 Кб из которых 2 Кб используются загрузчиком |
SRAM | 1 Кб |
EEPROM | 512 байт |
Тактовая частота | 16 МГц |
Встроенный светодиод | 13 |
Длина | 42.0 мм |
Ширина | 18.5 мм |
Вес | 7 г |
Принципиальная схема
Питание модуля
Arduino Nano может работать с разных источников питания, его можно подключить как через Mini-B USB компьютера, или от обычного нерегулируемого 6-20 вольт (pin 30), или регулируемого 5 вольт (pin 27). Плата автоматически выберет питание с самым высоким напряжением.
- Через mini-USB или microUSB при подключении к компьютеру;
- Через внешний источник питания, напряжение 6-20В.
Внешнее питание стабилизируется благодаря LM1117IMPX-5.0 с напряжением 5В. Когда подключение происходит через USB используется диод Шоттки.
Распиновка платы Arduino Nano
На рисунке указаны номера и назначения выводов Arduino Nano (вид со стороны, на которой расположен микроконтроллер Atmega328):
Расшифровка цвета:
– серый цвет – физический пин микроконтроллера Atmega328;
– светло серый цвет (PD0, PD1 и т.д.) – номер порта микроконтроллера, который доступен из программ на ассемблере;
– зеленый цвет (ADC0 и т.д.) – номера аналогивых выводов;
– голубой цвет – пины портов UART и SPI.
Назначение и обозначения выводов:
USB – USB-порт, предназначенный для подключения ардуины к компьютеру через USB-кабель (нужен Mini-B USB разъем).
VIN – сюда может подается питание от внешнего источника питания на 7-12 В (блок питания покупается отдельно). Напряжение будет подаваться на стабилизатор и понижаться до 5 В. Поэтому оптимально подавать на этот пин около 9 В.
5V – через этот пин также можно запитывать плату от источника питания на 5 вольт, однако напряжение должно быть более-менее стабильным, поскольку оно подается непосредственно на микроконтроллер (стабилизатор не задействован), и поэтому высокое напряжение может убить основной микроконтроллер.
3.3V – на этом пине будет висеть напряжение 3.3 В, которое формируется от внутреннего стабилизатора платы. Этот пин нужен для подключения некоторых внешних устройств, которым для работы требуется 3.3 В – обычно это всякие ЖК-дисплеи. Однако максимальный ток вывода при этом не должны превышать 50 мА.
GND – земля (Ground Pin).
AREF – опорное напряжение для аналоговых входов. Используется по необходимости (настраивается с помощью analogReference()).
IOREF – позволяет узнать рабочее напряжение микроконтроллера. Используется редка. На китайских платах отсутствует вовсе.
Reset – выполняет сброс микроконтроллера, подать низкий уровень на этот вход.
SDA, SCL – пины интерфейса TWI/I2C.
D0…D13 – цифровые входы/выходы. На вывод D13 висит встроенный светодиод, который загорается, если на вывод D13 подан уровень HIGH.
0 (RX), 1 (TX) – выводы порта UART (последовательный порт Serial).
A1…A5 – аналоговые входы (могут использоваться и в качестве цифровых).
Внешний вид платы Arduino Nano с подписанными выводами:
Здесь:
RX+TX LEDs – светодиоды – моргают, когда передаются данные через последовательный порт Serial UART (пины RX и TX).
Reset Button – кнопка для перезапуска микроконтроллера;
(остальные обозначения смотри выше)
FTDI USB chip – микросхема FTDI FT323RL, которая используется для связи ардуины с компьютером через USB-кабель. Со стороны ардуины это serial-интерфейс. На компьютер этот интерфейс будет доступен в виде виртуального COM-порта (должны быть установлены драйвера для чипа FTDI – обычно входят в состав IDE Arduino).
Схематически это выглядит так:
Номер пина, имя, тип и описание выводов:
GPIO
Начнем с пинов, которых больше всего, это GPIO, с англ. General Purpose Input-Output, входы-выходы общего назначения, на плате они подписаны как D0–D13 и A0–A5. По картинке распиновки они называются PD*, PB* и PC*, (вместо звёздочки – цифра) отмечены тёмно-бежевым цветом. Почему “официально” они называются PD/PB/PC? Потому что пины объединены в пОрты по несколько штук (не более 8), на примере Нано есть три порта: D, B и C, соответственно пины так и подписаны: PD3 – Port D 3 – третий выход порта D. Это цифровые пины, способные выдавать логический сигнал (0 или VCC) и считывать такой же логический сигнал. VCC это напряжение питания микроконтроллера, при обычном использовании обычной платы Ардуино это 5 Вольт, соответственно это 5 вольтовая логика: 0V – сигнал низкого уровня (LOW), 5V – высокого уровня (HIGH). Напряжение питания микроконтроллера играет очень большую роль, об этом мы ещё поговорим. GPIO имеют несколько режимов работы: вход (INPUT), выход (OUTPUT) и вход с подтяжкой к питанию встроенным в МК резистором на 20 кОм (INPUT_PULLUP). Подробнее о режимах поговорим в отдельном уроке.
Все GPIO пины в режиме входа могут принять сигнал с напряжением от 0 до 5 вольт (на самом деле до 5.5 вольт, согласно даташиту на микроконтроллер). Отрицательное напряжение или напряжение, превышающее 5.5 Вольт приведёт к выходу пина или даже самого МК из строя. Напряжение 0-2.5 вольта считается низким уровнем (LOW), 2.5-5.5 – высоким уровнем (HIGH). Если GPIO никуда не подключен, т.е. “висит в воздухе”, он принимает случайное напряжение, возникающее из за наводок от сети (провода 220в в стенах) и электромагнитных волн на разных частотах, которыми пронизан современный мир.
GPIO в режиме выхода (OUTPUT) являются транзисторными выходами микроконтроллера и могут выдать напряжение 0 или VCC (напряжение питания МК). Стоит отметить, что микроконтроллер – логическое, а не силовое устройство, его выходы рассчитаны на подачу сигналов другим железкам, а не на прямое их питание. Максимальный ток, который можно снять с GPIO выхода ардуино – 40 мА. Если попытаться снять больше – пин выйдет из строя (выгорит выходной транзистор и всё). Что такое 40 мА? Обычный 5мм одноцветный светодиод потребляет 20 мА, и это практически единственное, что можно питать напрямую от Ардуино. Также не стоит забывать о максимальном токе со всех пинов, он ограничен 200 мА, то есть не более 10 светодиодов можно запитать от платы на полную яркость…
Интерфейсы
Большинство GPIO имеют дополнительные возможности, так как к ним подключены выводы с других систем микроконтроллера, с ними вы уже знакомы из предыдущего урока:
- ADC (АЦП, аналогово-цифровой преобразователь) – зелёные подписи ADC* на распиновке
- UART (интерфейс связи) – голубые TXD и RXD на распиновке
- Выводы таймеров, они же ШИМ пины – светло-фиолетовые OC*A и OC*B, где * номер таймера
- SPI (интерфейс связи) – голубые SS, MOSI, MISO, SCK
- I2C (интерфейс связи) – голубые SDA и SCL
- INT (аппаратные прерывания) – розовые INT0 и INT1, а также PCINT* – PinChangeInterrupt
АЦП
ADC пины (с АЦП) помечены на плате буквой A. Да, пины A6 и A7 на плате Нано имеют только вход на АЦП и не являются GPIO пинами! АЦП – аналогово-цифровой преобразователь, позволяет измерять напряжение от 0 до VCC (напряжения питания МК) или опорного напряжения. На большинстве плат Ардуино разрядность АЦП составляет 10 бит (2^10 = 1024), что означает следующее: напряжение от 0 до опорного преобразуется в цифровую величину от 0 до 1023 (1024-1 так как отсчёт идёт с нуля). Опорное напряжение играет очень большую роль: при опорных 5V один шаг измерения АЦП составит 4.9 милливольта (0.00488 В), а при опорных 1.1В – 1.1 мВ (0.00107 В). Вся суть в точности, я думаю вы поняли. Если опорное напряжение установлено ниже напряжения питания МК, то оцифровывая напряжение выше опорного мы получим 1023. Подавая на АЦП напряжение выше 5.5 Вольт получим выгоревший порт. Подавать отрицательное напряжение также не рекомендуется. На ардуино есть несколько режимов опорного напряжения: оно может быть равно VCC (напряжению питания), 1.1V (от встроенного в МК стабилизатора) или получать значение с внешнего источника в пин Aref, таким образом можно настроить нужный диапазон и получить нужную точность. У других моделей Ардуино (например у Меги) есть и другие встроенные режимы. Опорное напряжение рекомендуется заводить на плату через резистор, например на 1 кОм. Для измерения напряжений выше 5.5 вольт необходимо использовать делитель напряжения на резисторах.
Таймеры (ШИМ)
Выводы таймеров: в микроконтроллере, помимо обычного вычислительного ядра, с которым мы работаем, находятся также “хардварные” счётчики, работающие параллельно со всем остальным железом. Эти счётчики также называют таймерами, хотя к таймерам они не имеют никакого отношения: счётчики буквально считают количество тиков, которые делает кварцевый генератор, задающий частоту работы для всей системы. Зная частоту генератора (обычно 16 МГц) можно с очень высокой точностью определять интервалы времени и делать что-то на этой основе. Какой нам прок от этих счётчиков? “Из коробки” под названием Arduino IDE мы имеем несколько готовых, основанных на таймерах инструментов (функции времени, задержек, измерения длин импульсов и другие).
В этой статье речь идёт о пинах и выходах, о них и поговорим: у каждого счётчика есть два выхода на GPIO. У нано (у МК ATmega328p) три счётчика, соответственно 6 выходов. Одной из возможностей счётчиков является генерация ШИМ сигнала, который и выводится на соответствующие GPIO. Для нано это D пины 5 и 6 (счётчик 0), 9 и 10 (таймер 1) и 3 и 11 (таймер 2). ШИМ сигналу посвящен отдельный урок, сейчас просто запомним, что с его помощью можно управлять яркостью светодиодов, скоростью вращения моторчиков, мощностью нагрева спиралей и многим другим. Но нужно помнить, что ограничение по току в 40 мА никуда не делось и питать от пинов ничего мощнее светодиодов нельзя.
Прерывания
Аппаратные прерывания позволяют процессору мгновенно переключаться на некий блок действий (функция обработчик прерывания) при изменении уровня сигнала на пине. Подробнее об этом, а также о PinChangeInterrupts поговорим в другом уроке.
Другие пины
- Пин 3.3V может быть использован для питания маломощных датчиков и модулей: максимальный ток, который можно снять с пина 3.3V составляет 150 мА, что с головой хватает для любых датчиков и модулей, кроме пожалуй радиомодулей nrf25L01.
- Пины GND – земля питания, все GND связаны между собой
- Пин 5V – питание от источника с напряжением до 5.5V (подробнее о питании смотри в следующем уроке)
- Пин Vin – питание от источника с напряжением 7-15V (подробнее о питании смотри в следующем уроке)
- RST – перезагрузка МК. Также этот пин выведен на кнопку
Обычные светодиоды
Светодиод – простейший индикатор, который можно использовать для отладки кода: его можно включить при срабатывании условия или просто подмигнуть. Но для начала его нужно подключить.
Подключение светодиода
Светодиод – это устройство, которое питается током, а не напряжением. Как это понимать? Яркость светодиода зависит от тока, который через него проходит. Казалось бы, достаточно знания закона Ома из первого урока в разделе, но это не так!
- Светодиод в цепи нельзя заменить “резистором”, потому что он ведёт себя иначе, нелинейно.
- Светодиод полярен, то есть при неправильном подключении он светиться не будет.
- Светодиод имеет характеристику максимального тока, на котором может работать. Для обычных 3 и 5 мм светодиодов это обычно 20 мА.
- Светодиод имеет характеристику падение напряжения (Forward Voltage), величина этого падения зависит от излучаемого цвета. Цвет излучается кристаллом, состав которого и определяет цвет. У красных светодиодов падение составляет ~2.5 вольта, у синих, зелёных и белых ~3.5 вольта. Более точную информацию можно узнать из документации на конкретный светодиод. Если документации нет – можно пользоваться вот этой табличкой, тут даны минимальные значения:
Если питать светодиод напряжением ниже его напряжения падения, то яркость будет не максимальная, и здесь никаких драйверов не нужно. То есть красный светодиод можно без проблем питать от пальчиковой батарейки. В то же время кристалл может деградировать и напряжение уменьшится, что приведёт к росту тока. Но это редкий случай. Как только мы превышаем напряжение падения – нужно стабилизировать питание, а именно – ток. В простейшем случае для обычного светодиода ставят резистор, номинал которого нужно рассчитать по формуле: R = (Vcc — Vdo) / I, где Vcc это напряжение питания, Vdo – напряжение падения (зависит от светодиода), I – ток светодиода, а R – искомое сопротивление резистора. Посчитаем резистор для обычного 5 мм светодиода красного цвета при питании от 5 Вольт на максимальной яркости (2.5 В, 20 мА): (5-2.5)/0.02=125 Ом. Для синего и зелёного цветов получится 75 Ом. Яркость светодиода нелинейно зависит от тока, поэтому “на глаз” при 10 мА яркость будет такая же, как на 20 мА, и величину сопротивления можно увеличить. А вот уменьшать нельзя, как и подключать вообще без резистора. В большинстве уроков и проектов в целом для обычных светодиодов всех цветов ставят резистор номиналом 220 Ом. С резистором в 1 кОм светодиод тоже будет светиться, но уже заметно тусклее. Таким образом при помощи резистора можно аппаратно задать яркость светодиода. Как определить плюс (анод) и минус (катод) светодиода? Плюсовая нога длиннее, со стороны минусовой ноги бортик чуть срезан, а сам электрод внутри светодиода – крупнее:
Мигаем
Мигать светодиодом с Ардуино очень просто: подключаем катод к GND, а анод – к пину GPIO. Очень многие уверены в том, что “аналоговые” пины являются именно аналоговыми, но это не так: это обычные цифровые пины с возможностью оцифровки аналогового сигнала. На плате Nano пины A0-A5 являются цифровыми и аналоговыми одновременно, а вот A6 и A7 – именно аналоговыми, то есть могут только читать аналоговый сигнал. Так что подключимся к A1, настраиваем пин как выход и мигаем!
void setup() { pinMode(A1, OUTPUT); } void loop() { digitalWrite(A1, HIGH); delay(500); digitalWrite(A1, LOW); delay(500); }
Как избавиться от delay() в любом коде я рассказывал вот в этом уроке. https://www.youtube.com/watch?v=uaiLcCd9Tnk
Мигаем плавно
Как насчёт плавного управления яркостью? Вспомним урок про ШИМ сигнал и подключим светодиод к одному из ШИМ пинов (на Nano это D3, D5, D6, D9, D10, D11). Сделаем пин как выход и сможем управлять яркостью при помощи ШИМ сигнала! Читай урок про ШИМ сигнал. Простой пример с несколькими уровнями яркости:
void setup() { pinMode(3, OUTPUT); } void loop() { analogWrite(3, 10); delay(500); analogWrite(3, 100); delay(500); analogWrite(3, 150); delay(500); analogWrite(3, 200); delay(500); analogWrite(3, 255); delay(500); }
Подключим потенциометр на A0 и попробуем регулировать яркость с его помощью:
void setup() { pinMode(3, OUTPUT); } void loop() { // analogRead(0) / 4 == 0… 255 analogWrite(3, analogRead(0) / 4); delay(100); }
Как вы можете видеть, все очень просто. Сделаем ещё одну интересную вещь: попробуем плавно включать и выключать светодиод, для чего нам понадобится цикл из урока про циклы.
void setup() { pinMode(3, OUTPUT); } void loop() { for (int i = 0; i < 255; i++) { analogWrite(3, i); delay(20); } for (int i = 255; i > 0; i—) { analogWrite(3, i); delay(20); } }
Плохой пример! Алгоритм плавного изменения яркости блокирует выполнение кода. Давайте сделаем его на таймере аптайма.
void setup() { pinMode(3, OUTPUT); } uint32_t tmr; int val = 0; bool dir = true; void loop() { if (millis() — tmr >= 20) { tmr = millis(); if (dir) val++; // увеличиваем яркость else val—; // уменьшаем if (val >= 255 || val <= 0) dir = !dir; // разворачиваем analogWrite(3, val); } }
Теперь изменение яркости не блокирует выполнение основного цикла, но и остальной код должен быть написан таким же образом, чтобы не блокировать вызовы функции изменения яркости! Ещё одним вариантом может быть работа по прерыванию таймера, см. урок.
Светодиод будет мигать не очень плавно: яркость будет нарастать слишком резко и практически не будет меняться. Связано это с тем, что человеческий глаз воспринимает яркость нелинейно, а мы управляем ей линейно. Для более плавного ощущения яркости используется коррекция по CRT гамме, которая переехала из этого урока в отдельный урок по миганию светодиодом по CRT гамме в блоке алгоритмов. Изучи обязательно!
Ещё один момент: если подключить светодиод наоборот, к VCC, то яркость его будет инвертирована: 255 выключит светодиод, а 0 – включит, потому что ток потечет в другую сторону:
Интерфейсы связи
Arduino Nano поддерживает интерфейс I2C для связи с различными устройствами и периферией. Один из часто встречающихся способов применения – это связь с дисплеем через шину I2C. Благодаря особой технологии вы можете выводить наборы символов и данных на дисплей, используя всего лишь 2 пина, в Нано это пины D4 SDA) и D5 (SCL).
На официальном сайте есть специальная библиотека для работы с ним. При написании программ не забудьте подключить её директивой:
#include SPI.h
Теперь можно организовывать систему связи.
Принципиальная схема платы Arduino Nano
Часть схемы возле микроконтроллера Atmega328P:
Часть схемы возле чипа FT323 (но на китайских платах в место него будет стоять CH340):
Стабилизатор питания:
Схема разъема ISCP (подробнее здесь ):
Схема всей платы Arduino Nano:
Прошивка и память Arduino v3 0 CH340G
Стандартный вариант платы Arduino Nano, работающий на микросхеме ATmega328P, можно прошить исключительно через программатор с SPI-интерфейсом.
Кроме того, производится модель AN, на которой дополнительно установлена микросхема CH340G. Преимущество данной сборки в том, что плата может быть прошита без подключения SPI-программатора через USB-порт. Это позволяет сделать встроенный загрузчик и преобразователь USB-COM.
При необходимости такую Nano-модель можно прошить и через SPI-интерфейс.
Чтобы загружать прошивки через mini-USB, потребуется:
- Подсоединить плату к ПК через USB. Система определит устройство как USB 2.0 SERIAL.
- Скачать и установить драйвер CH340G.
Как только драйвер будет установлен, система определит плату корректно и ее можно будет прошить через программатор. На плате загорится светодиод ON, а светодиод LED будет мигать.
Виды памяти
ATmega328P поддерживает 3 вида памяти:
- Flash. Она выступает в качестве постоянного запоминающего устройства.
- ОЗУ.
- EEPROM. Эта память также является постоянным запоминающим устройством, но ее можно перепрограммировать.
В микроконтроллере от Atmel 32 Кб Flash-памяти (свободно 30 Кб, т. к. 2 Кб занято загрузчиком), 2 Кб ОЗУ и 1 Кб EEPROM.
Что нужно, чтобы подключить LED к плате Arduino
Вариантов подключения светодиода два. Для целей обучения можно выбрать любой.
- Использовать встроенный светодиод. В этом случае не понадобится больше ничего, кроме кабеля для подключения к ПК через разъем USB – для питания и программирования. Внешний источник напряжения для запитывания платы применять бессмысленно: потребляемый ток невелик.
Шнур USB A-B для подключения Arduino Uno к ПК. - Подключить внешние светодиоды. Здесь дополнительно понадобятся:
- сам светодиод;
- токоограничивающий резистор мощностью 0,25 Вт (или больше) номиналом 250-1000 Ом (в зависимости от LED);
- провода и паяльник для подключения внешней цепи.
Подключение внешнего светодиода непосредственно к выходу контроллера.
LED подключаются катодом к любому цифровому выводу микроконтроллера, анодом на общий провод через балластное сопротивление. При большом количестве светодиодов может понадобиться и дополнительный источник питания.
Элементы платы
Arduino Nano состоит из множества элементов, в числе которых:
- микросхемы;
- пассивные элементы (резисторы, конденсаторы, диоды);
- разъемы;
- регуляторы.
Микросхема платы FT232R
Микросхема позволяет подключать плату через USB. Чип, установленный в AN, не может работать напрямую с USB-интерфейсом, поэтому FT232R преобразует его в UART-интерфейс.
Сердце платформы — микроконтроллер ATmega328P
ATmega328P — главный элемент управления платой. В него загружается написанный программистом скетч, и контроллер рассылает команды различным элементам платы. Например, микроконтроллер заставляет диоды мигать, реле — переключаться, а пьезоэлемент — издавать звуки.
Светодиодная индикация
В плату встроено 4 светодиода, у каждого из которых свое назначение:
- RX- и TX-светодиоды мигают, когда происходит передача данных по UART.
- L-диод зажигается, когда на него подается высокий уровень сигнала, и гасится при низком уровне.
- ON-светодиод горит при наличии питания на плате.
Дополнительно практически на любой пин микроконтроллера можно завести другие светодиоды, 7-сегментные индикаторы или даже дисплеи.
Разъем mini-USB
С помощью разъема mini-USB плату можно подключить к персональному компьютеру. Также AN может получать через этот интерфейс питание от внешних источников.
Линейный понижающий регулятор напряжения 5 В
В качестве регулятора используется микросхема LM1117MPX-5.0. Она обеспечивает преобразование сигнала питания AN в сигнал питания микроконтроллера ATmega и других логических элементов, которые не поддерживают питание более 5 В. Например, элементы транзисторно-транзисторной логики (ТТЛ) запитываются от сигнала такой величины.
Описание пинов и распиновка платы Arduino Nano
На рисунке указаны номера и назначения выводов Arduino Nano (вид со стороны, на которой расположен микроконтроллер Atmega328):
Каждый из 14 цифровых выводов Nano, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
- Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины FTDI USB-to-TTL.
- Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
- ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.
- LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
На платформе Nano установлены 8 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством функции analogReference(). Некоторые выводы имеют дополнительные функции:
- I2C: A4 (SDA) и A5 (SCL). Посредством выводов осуществляется связь I2C (TWI). Для создания используется библиотека Wire.
Дополнительная пара выводов платформы:
- AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
- Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Расшифровка цвета
– серый цвет – физический пин микроконтроллера Atmega328;
– светло серый цвет (PD0, PD1 и т.д.) – номер порта микроконтроллера, который доступен из программ на ассемблере;
– зеленый цвет (ADC0 и т.д.) – номера аналогивых выводов;
– голубой цвет – пины портов UART и SPI.
Назначение и обозначения выводов
USB – USB-порт, предназначенный для подключения ардуины к компьютеру через USB-кабель (нужен Mini-B USB разъем).
VIN – сюда может подается питание от внешнего источника питания на 7-12 В (блок питания покупается отдельно). Напряжение будет подаваться на стабилизатор и понижаться до 5 В. Поэтому оптимально подавать на этот пин около 9 В.
5V – через этот пин также можно запитывать плату от источника питания на 5 вольт, однако напряжение должно быть более-менее стабильным, поскольку оно подается непосредственно на микроконтроллер (стабилизатор не задействован), и поэтому высокое напряжение может убить основной микроконтроллер.
3.3V – на этом пине будет висеть напряжение 3.3 В, которое формируется от внутреннего стабилизатора платы. Этот пин нужен для подключения некоторых внешних устройств, которым для работы требуется 3.3 В – обычно это всякие ЖК-дисплеи. Однако максимальный ток вывода при этом не должны превышать 50 мА.
GND – земля (Ground Pin).
AREF – опорное напряжение для аналоговых входов. Используется по необходимости (настраивается с помощью analogReference).
IOREF – позволяет узнать рабочее напряжение микроконтроллера. Используется редка. На китайских платах отсутствует вовсе.
Reset – выполняет сброс микроконтроллера, подать низкий уровень на этот вход.
SDA, SCL – пины интерфейса TWI/I2C.
D0…D13 – цифровые входы/выходы. На вывод D13 висит встроенный светодиод, который загорается, если на вывод D13 подан уровень HIGH.
0 (RX), 1 (TX) – выводы порта UART (последовательный порт Serial).
A1…A5 – аналоговые входы (могут использоваться и в качестве цифровых).
Внешний вид платы Arduino Nano с подписанными выводами
Здесь:
RX+TX LEDs – светодиоды – моргают, когда передаются данные через последовательный порт Serial UART (пины RX и TX).
Reset Button – кнопка для перезапуска микроконтроллера;
(остальные обозначения смотри выше)
FTDI USB chip – микросхема FTDI FT323RL, которая используется для связи ардуины с компьютером через USB-кабель. Со стороны ардуины это serial-интерфейс. На компьютер этот интерфейс будет доступен в виде виртуального COM-порта (должны быть установлены драйвера для чипа FTDI – обычно входят в состав IDE Arduino).
Будет интересно➡ Самые популярные проекты на Ардуино
Схематически это выглядит так:
Номер пина, имя, тип и описание выводов:
Гайд для новичков Arduino
1. Установить Arduino IDE и драйверы, как написано в гайде. Если это ваш первый раз – желательно не подключать ничего к новой плате, а загрузить пробную прошивку из гайда и убедиться, что всё загружается и работает. Если после сборки схемы прошивка перестанет загружаться – увы, схема собрана с ошибками и плата уже могла сгореть. Но она работала, мы это проверили =)
- Если проект основан на esp8266 или Digispark – устанавливаем поддержку этих плат, как описано в гайде выше.
2. Скачать архив со страницы проекта. Ссылка всегда одна, она ведёт на прямую загрузку архива с хранилища GitHub. Когда проект обновляется (об этом может быть написано на странице проекта), ссылка на архив остаётся той же, но в нём будут уже какие-то изменённые файлы, добавлены новые версии прошивки и т.д. Все обновления указаны на странице проекта.
3. Распаковать архив. Архив имеет формат .zip, для его распаковки можно использовать встроенные инструменты операционной системы, либо популярный WinRAR. Если не распаковать архив – прошивка откроется неправильно. Я не отличаюсь буйной фантазией и всегда называю папки одинаково, вот что может быть в архиве проекта:
- firmware – прошивки для Arduino
- software – программы для ПК
- libraries – библиотеки
- schemes – схемы
- PCB – gerber файлы печатных плат
- docs – всякие документы
- Android – исходники приложения
- 3Dprint – модели для печати
- processing – программа на Processing
Извлечение WinRAR
Извлечение Windows Распакованная папка
4. Установить библиотеки. К прошивкам моих проектов всегда идут библиотеки, необходимые для работы кода. Библиотеки в проектах часто пересекаются, но рекомендуется ставить именно идущую в комплекте с проектом версию, так как более старые или новые могут быть несовместимы.
Содержимое папки libraries из архива помещаем в
- С/Program Files/Arduino/libraries/ (Windows x32)
- C/Program Files (x86)/Arduino/libraries/ (Windows x64)
Установка в libraries
Если возникнут проблемы с доступом к этой папке (на Windows 10), то библиотеки можно положить в
- Документы/Arduino/libraries/
Установка в документы
Примечание: к разным проектам идут разные версии одних и тех же библиотек, они не всегда совместимы. При возникновении ошибок рекомендуется удалить текущие версии и заменить их теми, которые идут в архиве.
5. Открыть скетч (так называется файл с программой). При запуске файла скетча автоматически откроется Arduino IDE. Важно: если в папке со скетчем есть несколько файлов – запускаем любой с логотипом Arduino. Остальные файлы должны подтянуться автоматически и образовать вкладки в окне программы. Если запускать скетч прямо из архива – вкладки не откроются и скомпилировать/загрузить программу будет невозможно.
Вкладки в Arduino IDE
6. Выбрать плату и порт. Выбираем в настройках программы соответствующую плату и порт куда она подключена, как в гайде выше. Важные моменты по настройкам самой платы обычно указано в описании конкретного проекта.
- Для проектов на Arduino Nano выбираем Arduino Nano, а также Инструменты\Процессор\ATmega328p (Old Bootloader). Если вам по какой-то причине пришлют платы с новым загрузчиком – прошивка не загрузится (будет минутная загрузка и ошибка), можно попробовать сменить пункт Процессор на ATmega328p
- Для проектов на Wemos выбираем (LOLIN)Wemos D1 R2 & mini
- Для проектов на NodeMCU выбираем NodeMCU 1.0
- В некоторых проектах, например GyverLamp2 (второй версии) для прошивки в esp8266 нужно выбрать плату Generic esp8266, читайте особенности загрузки на странице проекта!
- Для проектов на Digispark порт выбирать не надо, читай инструкцию выше
7. Настроить программу. Очень часто в начале кода моих программ можно встретить блок настроек. Настройки обычно имеют вид
#define SOME_SETTING 1 // 1 включено, 0 выключено
где цифра отвечает за значение настройки, менять нужно только цифру согласно комментарию.
8. Загрузить прошивку. Нажимаем стрелочку в левом верхнем углу окна программы и прошивка загружается. Не загружается? Читаем гайд выше, там описаны все возможные причины.
Загружать прошивку желательно до подключения компонентов, чтобы убедиться в том, что плата рабочая. После сборки можно прошить ещё раз, плата должна спокойно прошиться. В проектах с мощными потребителями в цепи питания платы 5V (адресная светодиодная лента, сервоприводы, моторы и проч.) необходимо подать на схему внешнее питание 5V перед подключением Arduino к компьютеру, потому что USB не обеспечит нужный ток, если потребитель его потребует – это может привести к выгоранию защитного диода на плате Arduino.
9. Если что-то не работает – читай инструкцию, в ней описан каждый шаг и решение всех проблем. Также в самом начале есть видео, где всё показано ещё более подробно.
Заметка для тех, кто не читал инструкцию и получил какую-то ошибку. Вот список самых частых причин:
- Не распаковал архив и запустил скетч прямо из него, получил ошибку компиляции в стиле not declared in this scope. РАСПАКУЙ АРХИВ
- В логе ошибок встречается фраза no such file or directory – не установил библиотеки. УСТАНОВИ БИБЛИОТЕКИ
- Происходит ошибка загрузки. ВЕРНИСЬ К ИНСТРУКЦИИ ПО НАСТРОЙКЕ IDE
- На плате что-то греется и прошивка не грузится. ДОПУСТИЛ ОШИБКУ ПРИ СБОРКЕ, ВСЁ СГОРЕЛО
- Установил старую или кривую версию Arduino IDE и получил непонятные ошибки – удали старую и УСТАНОВИ СВЕЖУЮ ВЕРСИЮ
Описание элементов платы Arduino Nano V3
- USB Jack – разъем USB Mini-B для подключения устройств USB;
- Analog Reference Pin – для определения опорного напряжения АЦП;
- Ground – земля;
- Digital Pins (2-13) – цифровые выводы;
- TXD – пин передачи данных по UART;
- RXD – пин приема данных по UART;
- Reset Button – кнопка перезагрузки микроконтроллера;
- ISCP (In-Circuit Serial Programmer) – контакты для перепрограммирования платы;
- Microcontroller ATmega328P – микроконтроллер — главный элемент на плате;
- Analog Input Pins (A0-A7) – аналоговые входы;
- Vin – вход используется для подачи питания от внешнего источника;
- Ground Pins – земля;
- 5 Volt Power Pin – питание 5 В;
- 3 Volt Power Pin – питание 3.3 В;
- RST – вход для перезагрузки;
- SMD Crystal – кварцевый резонатор (жарг. «кварц») — прибор, в котором пьезоэлектрический эффект и явление механического резонанса используются для построения высокодобротного резонансного элемента электронной схемы;
- TX LED (White) – светодиод — индикатор отправления данных по UART;
- RX LED (Red) – светодиод — индикатор приёма данных по UART;
- Power LED (Blue) – светодиод — индикатор питания;
- Pin 13 LED (Wellow) – подключенный светодиод к 13-му пину.
Описание пинов/Распиновка Arduino Nano
Каждый из 14 цифровых выводов Nano, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:
- Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины FTDI USB-to-TTL.
- Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().
- ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.
- LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит.
На платформе Nano установлены 8 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством функции analogReference(). Некоторые выводы имеют дополнительные функции:
- I2C: A4 (SDA) и A5 (SCL). Посредством выводов осуществляется связь I2C (TWI). Для создания используется библиотека Wire.
Дополнительная пара выводов платформы:
- AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
- Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.
Изменение частоты мигания светодиода
Для того, чтобы обеспечить более частое мигание светодиода, необходимо изменить параметр, указываемый в скобках ( ) в команде “delay”.
Как уже было указано, период задержки указывается в миллисекундах. То есть, для того, чтобы заставить светодиод мигать в два раза чаще, необходимо изменить значение с 1000 на 500. В результате, пауза между включением/выключением светодиода составит половину секунды и светодиод будет мигать быстрее.
Для проверки, не забудьте загрузить измененный скетч на плату Arduino.
Подключение Arduino Nano
Подключение платы Arduino Nano к компьютеру не представляет особого труда – оно аналогично обычной плате Uno. Единственная сложность может возникнуть при работе с платой на базе чипа ATMEGA 168 – в настройках нужно выбрать сперва плату Nano, а затем нужный вариант процессора.
Установка драйвера для CH340
Микросхема CH340 часто используется в платах Ардуино со встроенным USB-to-Serial преобразователем. Она позволяет уменьшить затраты на производство плат, не влияя на ее работоспособность. При помощи этого программатора можно легко прошивать платы Ардуино. Для того, чтобы начать работать с этой микросхемой, нужно установить драйвер на компьютер.
Установка выполняется в несколько этапов:
- Скачивание архива с драйвером для нужной операционной системы. Для Windows, MacOS и Linux загрузить драйверы можно по ссылке в нашей статье про USB UART.
- Распаковка архива.
- Поиск файла SETUP.EXE, его запуск.
- На мониторе появится окно, в котором нужно нажать кнопку Install. Установка драйвера начнется, после чего можно начинать работу со схемой.
Настройка Arduino IDE
Стандартная среда разработки Arduino IDE используется для работы всех видов Ардуино с компьютером. Чтобы начать работу, нужно сначала скачать Arduino IDE с официального сайта и установить ее. Удобнее скачивать Windows Installer, особенно если среда разработки будет установлена на постоянном рабочем компьютере. Если скачан архив, то его нужно распаковать и запустить файл Arduino.exe.
Как только среда установлена, нужно ее запустить. Для этого нужно подключить к компьютеру саму плату Ардуино через USB. Затем перейти в меню Пуск >> Панель управления >> Диспетчер устройств, найти там Порты COM и LPT. В списке появится установленная плата и указан номер порта, к которому подключается плата.
После этого нужно запустить Arduino IDE, перейти в меню Инструменты >> Порт, и указать порт, к которому присоединена Ардуино. В меня Инструменты>> Платы нужно выбрать модель подключенной платы, в данном случае Arduino Nano. Если у вас плата Nano версии 2.0, то вам нужно также выбрать вариант процессора в соответствующем меню.
Важно помнить, что если к компьютеру будет подключаться другая плата, настройки снова нужно будет поменять на соответствующее устройство.
Настраиваем Arduino IDE
Запустить Arduino IDE, выбрать плату (Инструментыплата”ваша плата”). См. первый скриншот.
Выбрать модель микроконтроллера (ИнструментыПроцессор”Ваш процессор”). На Arduino NANO может стоять atmega328p или 168, я всегда оставляю ссылки на 328p (168 – меньше памяти, больше проблем).
ВНИМАНИЕ! В микроконтроллер на купленной вами плате может быть прошит “новый” или “старый” загрузчик, в продаже есть и те и те. Начиная с Arduino IDE версии выше 1.8.4 можно выбрать ATmega328P и ATmega328P (Old Bootloader), попробуйте оба, потому что это определяется методом тыка.
Выбрать порт: инструментыпорт”COM отличный от COM1, например COM3, COM5…” См. второй скриншот. Какой именно порт вы могли видеть при первом подключении Ардуино к компьютеру. Примечание: если у вас только СОМ1 – значит либо не встали драйвера, либо сдохла плата.
Готовые прошивки просто открываются двойным кликом. Чтобы загрузить прошивку, жмите кнопку ЗАГРУЗИТЬ на верхней панели инструментов, она в виде стрелочки.
ВНИМАНИЕ! В пути к папке со скачанными скетчами не должно быть русских букв! Создайте в корне диска папку Arduino и работайте в ней!
ВНИМАНИЕ! Как только достанете Arduino из пакетика, сразу прошейте в неё скетч с миганием светодиода (blink.ino) Таким образом вы узнаете, что Ардуина рабочая (на тот случай, когда после сборки/пайки она перестанет работать и прошиваться), то есть вы сами её сломали, а не она была изначально бракованная
Примеры проектов с Arduino Nano
Реализовывать проекты на AN удобно из-за наличия библиотек, упрощающих написание кода.
Подключение светодиодов к Arduino Nano
Запитать LED-диод можно, например, с помощью пина 13 через ограничительный резистор на 220 Ом. Чтобы этим диодом мигать, следует написать такой код:
1 2 3 4 5 6 7 8 9 10 | void setup(){// инициализация элементов кода (аналог int main() в C) pinMode(13, OUTPUT);// объявление пина 13 как выхода} void loop(){// бесконечный цикл (аналог while (1) в C) digitalWrite(13, HIGH);// включение LED-диода delay(1000);// обеспечение мигания с частотой 1 Гц digitalWrite(13, LOW);// выключение LED-диода delay(1000);// обеспечение мигания с частотой 1 Гц} |
void setup() { // инициализация элементов кода (аналог int main() в C) pinMode(13, OUTPUT); // объявление пина 13 как выхода } void loop() { // бесконечный цикл (аналог while (1) в C) digitalWrite(13, HIGH); // включение LED-диода delay(1000); // обеспечение мигания с частотой 1 Гц digitalWrite(13, LOW); // выключение LED-диода delay(1000); // обеспечение мигания с частотой 1 Гц }
Для создания пиксельного изображения, где пиксель — это 1 диод, используется адресная лента WS2812.
Подключение LCD 1602 к Arduino Nano
LCD 1602 — это монохромный программируемый дисплей. Для его подключения к плате нужно написать такой скетч:
1 2 3 4 5 6 7 8 9 10 11 12 | #include
|
#include
- LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup(){ lcd.init(); // инициализация экрана lcd.backlight(); // активация подсветки lcd.setCursor(0,0); // установка курсора в начало первой строки lcd.print(“text”); // набор текста на первой строке lcd.setCursor(0,1); // установка курсора в начало второй строки lcd.print(“text”); // набор текста на второй строке }
Подключение NRF24L01 к Arduino Nano
NRF24L01 — радио-модуль, который часто используется для создания интернета вещей. Он заводится на плату следующим образом:
Пин модуля Pinout платы GND GND VCC 3.3 В CE D9 CSN D10 SCK D13 MOSI D11 MISO D12 IRQ Не подключается
Схема Arduino Nano ISCP
Наконец, надо сказать о подключении программатора. Для программирования контроллеров Atmel, на котором собран модуль Arduino, используется интерфейс ICSP. Для Arduino Nano icsp распиновка выглядит выглядит следующим образом (см. верхнюю часть предыдущего рисунка):
- MISO (ведущий принимает от ведомого);
- SCK (тактовый импульс);
- MOSI (ведущий передает ведомому);
- RESET (сброс);
- GND (земля).
+5V (питание);
Первый пин 6-контактного разъема имеет в основании форму квадратика и нумеруется по часовой стрелке, если смотреть сверху. Чтобы не возникало сомнений по порядку нумерации выводов коннектора, ниже приводится фрагмент принципиальной схемы платы Ардуино:
Этот разъем подключается к программатору с интерфейсом SPI (интерфейс последовательного программирования контроллеров Atmel). Кроме того, прошивка контроллера может меняться из среды программирования через кабель USB, так что приобретать программатор становится необязательным (он нужен только в том случае, если отсутствует программа загрузчика).
Распиновка ICSP
ICSP (In Circuit Serial Programming) — это один из нескольких методов, доступных для программирования плат Arduino. Обычно для программирования платы Arduino используется программа загрузчика Arduino, но если загрузчик отсутствует или поврежден, вместо него можно использовать ICSP. ICSP можно использовать для восстановления отсутствующего или поврежденного загрузчика.
Распиновка arduino nano icsp
Каждый вывод ICSP обычно соединен с другим выводом Arduino с тем же именем или функцией. Например, MISO в ICSP Nano подключен к MISO / цифровому выводу D12, MOSI в ISCP подключен к MOSI / цифровому выводу D11, и так далее.
Питание модуля
Arduino Nano может работать с разных источников питания, его можно подключить как через Mini-B USB компьютера, или от обычного нерегулируемого 6-20 вольт (pin 30), или регулируемого 5 вольт (pin 27). Плата автоматически выберет питание с самым высоким напряжением.
- Через mini-USB или microUSB при подключении к компьютеру;
- Через внешний источник питания, напряжение 6-20В.
Внешнее питание стабилизируется благодаря LM1117IMPX-5.0 с напряжением 5В. Когда подключение происходит через USB используется диод Шоттки.
Установка драйверов
В Windows драйверы будут установлены автоматически, при подключении платы, если вы использовали установщик. Если вы загрузили и распаковали Zip архив или по какой-то причине плата неправильно распознана, выполните приведенную ниже процедуру.