Arduino Nano – это отладочная плата небольшого размера, которая входит в тройку лидеров по популярности среди радиолюбителей-программистов. Несмотря на свой скромный размер, она практически ничем не уступает нашумевшей Arduino Uno по функционалу и может использоваться в проектах, где габариты играют существенную роль.
Ранние версии Arduino Nano базировались на основе микроконтроллера ATmega168. Начиная с версии 3.0, в них установлены более продвинутые ATmega328, с увеличенным объёмом FLASH и EEPROM-памяти, а также с большей тактовой частотой. Ниже показан внешний вид платы Arduino Nano V3.0.

Плата Arduino Nano 

Плата Arduino Nano 

Как видно из фото выше, для общения с внешним миром в этой плате предусмотрены штыревые колодки. Это удобно для макетирования, но при желании их можно не устанавливать. В таком случае провода к нужным выводам припаиваются напрямую. Также штыревые колодки нужны при использовании в проекте специализированных плат расширения (шилдов), которых для данной модификации Arduino придумано огромное множество.
Если внимательно рассмотреть плату Arduino Nano, то на ней можно заметить не только микроконтроллер ATmega328, но и ряд дополнительных компонентов, обеспечивающих «жизнедеятельность» этого аппаратного комплекса в целом. Ниже можно увидеть, за что отвечает каждый из них.

Состав платы Arduino Nano

Состав платы Arduino Nano 

Чтобы сэкономить место, разработчики расположили радиоэлементы по обе стороны платы. С лицевой стороны нанесена вся информативная шелкография, установлен микроконтроллер ATmega328, кварцевый резонатор, разъём Mini-USB, кнопка сброса и четыре индикаторных светодиода (TX, RX, PWR и L). Первые два светодиода загораются при обмене данными платы Arduino Nano с другими устройствами через последовательный серийный порт. Индикатор PWR отражает поступление на плату питания, а светодиод L является индикатором общего назначения и загорается в случае подачи высокого сигнала на вывод №13.

Обратная сторона послужила основой для линейного стабилизатора напряжения 5V и преобразователя интерфейса FTDI USB.

Программирование и связь с ПК

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

Если работа с платой происходит впервые, скорее всего, потребуется скачать и установить драйвер для микросхемы CH340. Эта микросхема представляет собой USB-to-Serial преобразователь, который обеспечивает общение Arduino Nano с компьютером через USB-кабель. Подобные микросхемы установлены в большинстве модификаций и реплик плат Arduino Nano.

Следующий момент, на котором необходимо заострить внимание – это тип установленного микроконтроллера. Как говорилось выше, их может быть два: ATmega168 и ATmega328. Перед программированием, необходимо выбрать в среде Arduino IDE именно тот, с которым будет вестись работа. Этот нюанс отражён на нижеприведённом рисунке.

Выбор типа микроконтроллера, установленного на плате Arduino Nano

Выбор типа микроконтроллера, установленного на плате Arduino Nano

Если всё сделано правильно, то при соединении Arduino Nano с компьютером во вкладке меню Инструменты-Порт, должен появиться номер виртуального COM-порта, привязанный к текущей плате. С этого момента можно загружать скетч в микроконтроллер путём нажатия всего одной кнопки, в виде смотрящей направо стрелки.

Для продвинутых пользователей предусмотрена возможность внутрисхемного программирования «напрямую» через разъём ICSP. В таком случае не обойтись без стороннего программатора, например USB-ASP, STK500 или AVRISP.

Система питания

Чтобы Arduino Nano начала функционировать, её необходимо запитать одним из двух возможных способов, а именно:

  • через USB-кабель при подключении к компьютеру или другому источнику питания 5V.
  • при помощи внешнего стабилизированного источника питания, напряжение которого должно лежать в диапазоне 6-20V (рекомендуется 7-12V). Данное напряжение подаётся непосредственно на вход VIN платы Arduino Nano.

Примечание. Если одновременно подключить два источника питания, то плата выберет тот, потенциал которого будет выше. Независимо от способа подключения, вывод GND платы Arduino Nano является общим минусом.

Что касается портов ввода-вывода, то следует помнить, что они работают с напряжениями 0-5V. Любое превышение, несмотря на встроенные ограничительные диоды, может вывести микроконтроллер из строя. То же самое касается и нагрузочной способности порта. Максимальный ток, который может выдать один вывод, равен 40мА, а суммарный ток всех выводов не должен превышать значение 200мА.

Также плату Arduino Nano можно использовать для питания мелкой периферии. Для этого на ней предусмотрены выводы 5V и 3.3V. Первое напряжение формируется встроенным линейным стабилизатором LM1117IMPX-5.0, а второе берётся с четвёртого вывода микросхемы-конвертора CH340G (у платы Arduino Uno для этого предусмотрен свой отдельный стабилизатор). Следовательно, использовать напряжение 3.3V можно только в случае питания через разъём USB.

Для полноты картины, ниже приведена электрическая схема платы Arduino Nano, на которой наглядно можно увидеть оговоренные ранее моменты.

Электрическая схема Arduino Nano 

Электрическая схема Arduino Nano 

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

Для пользователя платы Arduino Nano доступно 14 цифровых контактов ввода/вывода. Их обозначение начинается с латинской буквы «D», от английского слова digital-цифровой. Каждый из этих контактов может быть настроен как на вход, так и на выход. Настройка направления осуществляется при помощи функции pinMode(), например:

  • pinMode(13, OUTPUT); – настройка на выход вывода №13;

  • pinMode(13, INPUT); – настройка на вход вывода №13;

  • pinMode(13, INPUT_PULLUP); – настройка на вход вывода №13 с подтяжкой к напряжению питания через внутренний резистор.

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

  • digitalWrite(13, LOW); – установить нулевой уровень на выводе №13;

  • digitalWrite(13, HIGH); – установить 5V на выводе №13;

Также, некоторые из цифровых выводов способны генерировать на своём выходе ШИМ-сигнал с настраиваемой скважностью. Эти выводы помечаются на плате специальным дополнительным символом «*». Для Arduino Nano эти выводы имеют обозначение D3D5D6D9D10D11. Ниже даны несколько соответствующих примеров:

  • analogWrite(3, 0); – установить на выводе №3 ШИМ сигнал с максимальной скважностью (аналогично логическому нулю);

  • analogWrite(3, 255); – установить на выводе №3 ШИМ сигнал с минимальной скважностью (аналогично логической единице);

  • analogWrite(3, 128); – установить на выводе №3 ШИМ сигнал со скважностью 50%.

В случае, когда цифровой пин настроен на вход, пользователь может узнать логический уровень, который в данный момент на нём присутствует, например:

  • uint8_t level=digitalRead(13); – переменной level будет присвоено значение 0 или 1 в зависимости от уровня напряжения на входе №13.

Помимо цифровых контактов, плата Arduino Nano имеет на своём борту 8 аналоговых входов, которые связаны с 10-битным АЦП. Это даёт возможность измерять напряжение в пределах 0-5V с точностью 0,0048V. Расширение диапазона измеряемых напряжений достигается путём использования резистивных делителей.

Обозначение аналоговых входов начинается буквой «А», от английского слова analog. На плате Arduino Nano эти входы маркируются как A0A1A2A3A4A5A6A7. Первые пять входов могут использоваться в качестве цифровых, работая в оба направления. Пины A6 и A7 способны работать только на вход!!! Это следует помнить при проектировании программного обеспечения. Чтобы оценить уровень напряжения на аналоговом входе, необходимо воспользоваться следующей командой:

  • int adc=analogRead(A0); – переменной adc будет присвоено значение от 0 до 1023 в зависимости от величины напряжения на входе.

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

Чтобы наглядно увидеть возможности этой небольшой платы в комплексе со всеми альтернативными возможностями, ниже приведена полная карта распиновки выводов Arduino Nano.

Распиновка выводов платы Arduino Nano 

Распиновка выводов платы Arduino Nano

Некоторые наиболее из часто используемых в Arduino IDE альтернативных функций для удобства восприятия сведены в таблицу ниже.

Вывод платы Arduino Nano

Название вывода в скетче

Альтернативная функция

Генерация ШИМ

Цифровой пин №0 

Serial (RX)

Цифровой пин №1 

Serial (TX)

Цифровой пин №2 

Вход для внешних прерываний 

Цифровой пин №3 

Вход для внешних прерываний 

есть 

Цифровой пин №4 

Цифровой пин №5 

есть 

Цифровой пин №6 

есть 

Цифровой пин №7 

Цифровой пин №8 

Цифровой пин №9 

есть 

Цифровой пин №10 

10 

SPI (SS)

есть 

Цифровой пин №11 

11 

SPI (MOSI)

есть 

Цифровой пин №12 

12 

SPI (MISO)

Цифровой пин №13 

13 

SPI (SCK) + светодиод 

Аналоговый пин №0 

А0 

Аналоговый пин №1 

А1 

Аналоговый пин №2 

А2 

Аналоговый пин №3 

А3 

Аналоговый пин №4 

А4 

I2C (SDA)

Аналоговый пин №5 

А5 

I2C (SCL)

Аналоговый пин №6 

А6

Только работа на вход

Аналоговый пин №7 

А7

Только работа на вход

Структура памяти

Память Arduino Nano можно функционально разделить на три разных группы. Такая классификация обусловлена применением микроконтроллера линейки AVR, в котором подобная топология заложена производителем. Каждый подвид памяти выполняет свою функцию, что в комплексе обеспечивает полноценную жизнедеятельность микроконтроллера. Итак, Arduino Nano предоставляет следующие виды памяти:

  • Flash-память – служит для хранения программного кода в виде прошивки. Иногда программисты её используют также для хранения каких-либо константных данных с целью экономии места в оперативной памяти. Как пример – текстовые строки для меню и т.п. Если Arduino Nano выполнена на базе микроконтроллера ATmega168, то объем flash-памяти будет равен 16кБ. В случае с ATmega328 мы получим 32кБ flash-памяти. Следует учитывать, что в обоих случаях 2кБ будет занято программой-загрузчиком!

  • EEPROM-память – это энергонезависимая память, значения которой не изменяются даже при отключении питания. Широко используется программистами для сохранения последних настроек в проекте, которые по задумке подвержены периодическому отключению от источника электроэнергии. Как и в предыдущем случае, объем этой памяти зависит от типа используемого микроконтроллера. ATmega168 предоставляет 512 байт EEPROM, а ATmega328 в два раза больше – 1кБ. В Arduino IDE есть специализированная библиотека, позволяющая удобно работать с энергонезависимой памятью. Подключить её можно следующей строкой: #include <EEPROM.h>
  • SRAM-память – оперативная память, которая служит для хранения значений переменных в период выполнения программного кода и полностью обнуляется при отключении Arduino Nano от источника питания. Микроконтроллер ATmega168 имеет SRAM в объеме 1кБ. Это ровно вполовину меньше от того, что даёт микроконтроллер ATmega328 (2кБ). Многие, особенно начинающие программисты сталкиваются с быстрым израсходованием оперативной памяти. Чтобы этого не происходило, следует тщательно следить за типами данных, чтобы избежать избыточности на всех этапах разработки проекта.

Подведение итогов

Несмотря на очень скромный размер (4.3см х 1.85см), Arduino Nano представляет собой полнофункциональное законченное устройство, которое в большинстве случаев базируется на микроконтроллере ATmega328. Плата призвана облегчить процесс макетирования и учитывая её популярность, успешно справляется с этой задачей на протяжении долгого времени. Arduino Nano практически не уступает по возможностям её «старшему собрату» - плате Arduino Uno, которая имеет куда большие габариты и стоимость.

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


Что делать если:

Во время прошивки китайской копии Arduino Nano V3.0 (CH340G) среда Arduino IDE выдаёт ошибку, хотя показывает, что плата подключена по СОМ3. Соответствующий драйвер тоже установлен.

В некоторых подобных случаях необходимо просто выбрать в меню «Инструменты» тип процессора ATmega328 с пометкой Old Bootloader, как показано ниже (опция появилась в версиях Arduino IDE старше 1.6.20):

Пропадает шина 3V3 при работе Arduino Nano от внешнего источника питания. От USB-кабеля всё работает как надо.

На плате Arduino Nano установлен один линейный стабилизатор на 5V. Напряжение 3V3 берётся с микросхемы преобразователя USB-интерфейса, которая активна только при организации питания через USB-кабель. В случае прямого питания, напряжение 3,3V попросту не выдаётся. В этом случае рекомендуется использовать сторонние модули для преобразования, например AMS117-3.3:

Существует ли шилд под Arduino Nano для ЧПУ-станка?

Для Arduino Nano существует большое множество плат расширения и в частности для станка ЧПУ или 3Д-принтера. Выглядит он следующим образом:

Arduino Nano для ЧПУ-станка

Использую Arduino Nano в авто. Необходим более быстрый запуск после включения зажигания.

Для ускорения запуска необходимо стереть загрузчик и прошивать микроконтроллер напрямую через разъём ICSP любым подходящим программатором.

Рекомендуемые товары

Комментарии 0