Arduino Nano

Общие сведения

Плата Arduino Nano, построенная на микроконтроллере ATmega328 (версия 3.0) или ATmega168 (версии 2.x), имеет небольшие размеры и может использоваться как для лабораторных работ, так и законченных устройствах. Nano разработана компанией Gravitech. Она имеет схожую с Arduino Uno функциональность, однако отличается сборкой и размерами. Отличие заключается в отсутствии силового разъема постоянного тока и работе через кабель USB mini-B.
[sape count=2 block=1 orientation=1]
Все рассматриваемые в блоге и продающиеся в магазине платы Arduino Nano собраны с использованием USB-UART преобразователя на  микросхеме   CH340G вместо микросхемы FTDI FT232RL.  Для работы CH340G необходимо загрузить драйвера.

Характеристики Arduino Nano

Микроконтроллер
Atmel ATmega168 или ATmega328
Рабочее напряжение (логическая уровень)
5 В
Входное напряжение (рекомендуемое)
7-12 В
Входное напряжение (предельное)
6-20 В
Цифровые Входы/Выходы
14 (6 из которых могут использоваться как выходы ШИМ)
Аналоговые входы
8
Постоянный ток через вход/выход
40 мА
Флеш-память
16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика
ОЗУ
1 Кб (ATmega168) или 2 Кб (ATmega328)
EEPROM
512 байт (ATmega168) или 1 Кб (ATmega328)
Тактовая частота
16 МГц
Размеры
1.85 см x 4.2 см

Питание

Arduino Nano может получать питание через подключение USB mini-B или от нерегулируемого 6-20 В  (вывод 30)  или регулируемого  +5 В  (вывод 27) внешнего   источника питания.  Автоматически выбирается источник с самым высоким напряжением.

Память

Микроконтроллер ATmega328 имеет 32 кБ (2 Кб используется для хранения загрузчика), 2 Кб ОЗУ и 1 Кб EEPROM (которая читается и записывается с помощью библиотеки EEPROM).

Входы и Выходы

Каждый из 14 цифровых выводов Nano, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход, работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:

  • Последовательная шина 0 (RX) и 1 (TX) — выводы используются для получения  (RX) и передачи (TX) данных TTL и подключены к соответствующим выводам  микросхемы последовательной шины CH340G 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. Если значение на выводе имеет высокий потенциал, то светодиод горит
  • IA4 (SDA) и A5 (SCL) имеют дополнительные функции — осуществляют связь по протоколу I2C (TWI). Для создания используется библиотека Wire.

На плате Arduino Nano установлены 8 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно имеют диапазон измерения до +5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством функции analogReference().

Дополнительная пара выводов платформы:

AREF — опорное напряжение для аналоговых входов. Используется с функцией analogReference().
Reset — низкий уровень сигнала на выводе перезагружает микроконтроллер.

Arduino Nano pinout
Диаграмма входов/выходов Arduino Nano

Связь

На плате Arduino Nano установлено несколько устройств для осуществления связи с компьютером, другими устройствами Arduino или микроконтроллерами. ATmega168 и ATmega328 поддерживают последовательный интерфейс UART TTL (5 В), осуществляемый выводами 0 (RX) и 1 (TX). Установленная на плате микросхема CH340G направляет данный интерфейс через USB, а её драйверы предоставляют виртуальный COM порт программе на компьютере.
[sape count=2 block=1 orientation=1]
Монитор последовательной шины (Serial Monitor) программы Arduino  позволяет посылать и получать текстовые данные при подключении к платформе. Светодиоды RX и TX на плате будут мигать при передаче данных через микросхему CH340G или USB подключении (но не при использовании последовательной передачи через выводы 0 и 1).

Библиотекой SoftwareSerial возможно создать последовательную передачу данных через любой из цифровых выводов Nano.

ATmega168 и ATmega328 поддерживают интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека Wire для удобства использования шины I2C. Более подробная информация находится в документации.

Программирование

Платформа программируется посредством программного обеспечения Arduino IDE.  Из меню Инструменты — > Платы выбирается  Arduino Diecimila,  Duemilanove или Nano w/ ATmega168 или Arduino  Duemilanove или  Nano  w/ ATmega328 (согласно установленному микроконтроллеру).
Микроконтроллеры ATmega168 и ATmega328 поставляются с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.
Имеется возможность запрограммировать микроконтроллер через выводы блока ICSP (внутрисхемное программирование).

Автоматическая (программная) перезагрузка

Arduino Nano разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой, а не нажатием кнопки на платформе. Одна из линий CH340G, управляющих потоком данных (DTR), подключена к выводу перезагрузки микроконтроллеров ATmega168 или ATmega328 через конденсатор 100 нФ. При активации этой линии, то есть подачи сигнала низкого уровня, перезагружается микроконтроллер. Программа Arduino IDE, используя данную функцию, загружает код нажатием кнопки «Загрузить» в самой среде программирования. Подача сигнала низкого уровня с линии DTR скоординирована с началом записи кода, что сокращает задержку загрузчика.

Функция имеет еще одно применение. Перезагрузка Nano происходит каждый раз при подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие полсекунды после перезагрузки работает загрузчик. Во время программирования происходит задержка нескольких первых байтов кода во избежание получения платформой некорректных данных (всех, кроме кода новой программы). При отладке скетча, записанного в платформу или ввода каких-либо других данных при первом запуске, необходимо убедиться, что программа на компьютере не активна в течение секунды перед передачей данных.