Arduino Nano (рус. Ардуино Нано) – плата, которая работает на чипе ATmega328P и имеет минимальные размеры, которые лучше всего подходят для создания компактных устройств.
О плате
Ардуино Нано - это аналог Arduino Uno, которая также работает на чипе ATmega328P, но отличается формфактором платы, которая в 2-2,5 раза меньше, чем Уно (53 х 69 мм). Размеры подобны пачке сигарет, и позволяют легко собирать сложные схемы навесным монтажом, но после стадии создания макета идёт сборка действующих экземпляров, а для этого лучше подходит как раз Нано.
Отличие такой миниатюрной платы, заключается в отсутствии вынесенного гнезда для внешнего питания, но вместо него с легкостью можно подключиться напрямую к пинам. В плате используется чип FTDI FT232RL для USB-Serial преобразования и примененяется mini-USB кабель для связи с ардуино вместо стандартного. Связь с различными устройствами обеспечивают UART, I2C и SPI интерфейсы.
В остальном, способы взаимодействия и характеристики чипов совпадают с базовой моделью Уно, которая больше подходит для экспериментов, чем для реальных проектов. Нет более насущной проблемы для любителя электроники, чем желание красиво и компактно оформить своё устройство.
Платформа имеет контакты в виде пинов, поэтому ее легко устанавливать на макетную плату. Arduino Nano используется там где важна компактность, а возможностей Mini либо не хватает, либо не хочется заниматься пайкой.
Характеристики Arduino Nano
Микроконтроллер | Atmel ATmega168 или ATmega328 |
---|---|
Рабочее напряжение (логическая уровень) | 5 В |
Входное напряжение (рекомендуемое) | 7-12 В |
Входное напряжение (предельное) | 6-20 В |
Цифровые Входы/Выходы | 14 (6 из которых могут использоваться как выходы ШИМ) |
Аналоговые входы | 8 |
Постоянный ток через вход/выход | 40 mAh с одного вывода и 500 mAh со всех выводов |
Флеш-память | 16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика |
ОЗУ | 1 Кб (ATmega168) или 2 Кб (ATmega328) |
EEPROM | 512 байт (ATmega168) или 1 Кб (ATmega328) |
Тактовая частота | 16 МГц |
Размеры | 1.85 см x 4.2 см |
В первую очередь в разговоре о характеристиках нужно отметить, что Нано выпускается в различных версиях и самые распространённые:
- Nano v.2;
- Nano v.3.
Главное отличие – в самом микроконтроллере. Младшая версия использует Atmega168, Atmega328. Основные отличия чипов – это объём Flash-памяти:
- mega 328: Flash-память – 32 кб, ПППЗУ – 1024 и ОЗУ – 2 кб;
- mega 168: Flash-память – 16 кб, ПППЗУ – 512 и ОЗУ – 1 кб.
Главный конкурент Arduino Nano по размеру – это Arduino Micro. В целом они похожи, но у «микро» интерфейс SPI разведен на другие пины, как и шина I2C, а также изменено количество выводов прерываний. В целом, платы похожи размерами, но различны соотношения сторон, а также некоторые схемотехнические нюансы.
Arduino Nano имеет 8 аналоговых входов, они могут использоваться как цифровой выход, 14 цифровых из которых 6 могут работать как широтно-импульсный модулятор (ШИМ), еще два задействованы под I2C и 3 под SPI.
В противоположном конце платы от разъёма микро-юсб расположена колодка Arudino ICSP для прошивки микроконтроллера.
ШИМ выходы и транзисторы помогут вам: регулировать обороты двигателя, яркость светодиодов, мощность нагревателей и многое другое. А аналоговые входы позволят читать значения с аналоговых датчиков, таких как:
- фоторезисторы;
- терморезисторы;
- термопары;
- измерители влажности;
- датчики давления и другие.
Выходы Digital 2 и 3 могут быть использованы для внешних прерываний. Это такие сигналы, которые сообщают микроконтроллеру о каком-либо важном событии. По этим сигналам вызывается программа обработки прерывания и выполняются необходимые действия, например, выход из режима энергосбережения и выполнение вычислений.
На базе платы Nano получится отличный миниатюрный программатор Arduino ISP, для прошивки целого ряда контроллеров.
Питание модуля
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 распиновка выполнена так, как показано на картинке ниже:
1 – TX (передача UART) или порт D0;
2 – RX (прием UART) или порт D1;
3,28 – сброс (RESET);
4,29 – земля;
5...16 – порты D3...D13;
17 – напряжение 3,3 В;
18 – опорное напряжение АЦП;
19...26 – 8 каналов АЦП A0...A7;
27 – напряжение 5,0 В;
30 – плюс питания модуля 2-20 В
Первые два вывода используются либо для связи по классическому последовательному интерфейсу с другим устройством, либо как порты для двоичных данных. В arduino nano распиновка 5...16 выводов, кроме указанных, имеет дополнительные функции:
5 – прерывание INT0;
6 – прерывание INT1 / ШИМ / AIN0;
7 – таймер-счетчик T0 / шина I2C SDA / AIN1;
8 – таймер-счетчик T1 / шина I2C SCL / ШИМ;
9,12,13,14 – ШИМ;
16 – светодиод.
Более подробная схема вводов-выводов на рисунке ниже (нажмите для увеличения):
AIN0 и AIN1 – это входы быстродействующего аналогового компаратора. Кроме того, имеется 6 каналов с выходом широтно-импульсного модулятора (ШИМ). К тому же имеется большее число пинов, на которые могут быть переведены запросы прерываний.
Проблема с микроконтроллерами заключается в том, что при больших функциональных возможностях (ведь в них кроме процессора есть еще довольно богатый набор периферийных устройств) они имеют ограниченное число выводов. Разработчику тут есть над чем подумать уже на этапе составления принципиальной схемы, ведь его цель – максимально использовать устройство, в то же время не допуская конфликтов между функциями выводов.
Распиновка Arduino Nano 3.0
У Arduino Nano 3.0 распиновка не отличается от той схемы, что приведена выше, несмотря на другой контроллер. ATmega328 отличается от ATmega168 вдвое большим объемами памяти всех видов:
- flash,
- оперативной,
- EEPROM.
Это позволяет улучшить ПО прошивки и загручика, а также дать пользователю больше возможностей для его прикладной задачи. Arduino nano v 3.0 распиновка может быть использована для программирования, но для этих целей используется отдельный разъем. Об этом ниже.
Принципиальная схема платы
Принципиальная схема платы ниже, нажмите для увеличения:
Схема Arduino Nano ISCP
Наконец, надо сказать о подключении программатора. Для программирования контроллеров Atmel, на котором собран модуль Arduino, используется интерфейс ICSP. Для Arduino Nano icsp распиновка выглядит выглядит следующим образом (см. верхнюю часть предыдущего рисунка):
- MISO (ведущий принимает от ведомого);
- +5V (питание);
- SCK (тактовый импульс);
- MOSI (ведущий передает ведомому);
- RESET (сброс);
- GND (земля).
Первый пин 6-контактного разъема имеет в основании форму квадратика и нумеруется по часовой стрелке, если смотреть сверху. Чтобы не возникало сомнений по порядку нумерации выводов коннектора, ниже приводится фрагмент принципиальной схемы платы Ардуино:
Этот разъем подключается к программатору с интерфейсом SPI (интерфейс последовательного программирования контроллеров Atmel). Кроме того, прошивка контроллера может меняться из среды программирования через кабель USB, так что приобретать программатор становится необязательным (он нужен только в том случае, если отсутствует программа загрузчика).
Интерфейсы связи
Arduino Nano поддерживает интерфейс I2C для связи с различными устройствами и периферией. Один из часто встречающихся способов применения – это связь с дисплеем через шину I2C. Благодаря особой технологии вы можете выводить наборы символов и данных на дисплей, используя всего лишь 2 пина, в Нано это пины D4 SDA) и D5 (SCL).
К Ардуино Нано подключение аналогично - используйте отмеченные ранее пины. Для работы с дисплеем вам понадобится библиотека, которую можно скачать ниже:
Код программы ниже:
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // установка адреса LCD на 0x27 для 16 символов и 2 строк void setup() { lcd.init(); // инициализация дисплея // Print a message to the LCD. lcd.backlight(); lcd.print("Hello, world!"); } void loop() { }
Пример скетча - управление задней подсветкой модуля I2C LCD1602:
#include <Wire.h> #include <LiquidCrystal_I2C.h> #if defined(ARDUINO) && ARDUINO >= 100 #define printByte(args) write(args); #else #define printByte(args) print(args,BYTE); #endif LiquidCrystal_I2C lcd(0x27,16,2); // установка адреса LCD на 0x27 для 16 символов и 2 строк void setup(){ lcd.init(); // инициализация дисплея lcd.backlight(); lcd.home(); lcd.print("Hello world..."); lcd.setCursor(0, 1); lcd.print("dfrobot.com"); } int backlightState = LOW; long previousMillis = 0; long interval = 1000; void loop(){ unsigned long currentMillis = millis(); if(currentMillis - previousMillis > interval) { previousMillis = currentMillis; if (backlightState == LOW) backlightState = HIGH; else backlightState = LOW; if(backlightState == HIGH) lcd.backlight(); else lcd.noBacklight(); } }
Работа с SPI требует два пина под передачу данных (master in и out):
- для выбора системы, с которой идёт «общение» (SS или CS – crystal/system select),
- сигнал тактирования SCLK.
На официальном сайте есть специальная библиотека для работы с ним. При написании программ не забудьте подключить её директивой:
#include SPI.h
Теперь можно организовывать систему связи.
Принципиальная схема контроллера
Полную схему можно скачать на нашем сайте здесь, а инструкцию можно скачать здесь.
Заключение
Arduino Nano одна из самых маленьких полноценных версий плат Ардуино. По сути своей, она с точностью повторяет Arduino Uno, но имеет два главных отличия:
- Размеры платы.
- Связь платы UNO с компьютером осуществляется с помощью USB serial преобразователя на базе микроконтроллера типа Atmega8u.
На нано-плате использован преобразователь на базе ft232, однако более дешевые китайские версии используют другой способ связи с ПК Arduino Nano CH341. По сути, эти микросхемы являются основой для USB-UART конвертера.
Конструктор Arduino создан для любителей электроники и робототехники начального уровня, чтобы помочь им обойти сложности низкоуровнего программирования микроконтроллеров, где требуются знания инженера-профи и опыт. Да и монтажника высокого разряда тоже, особенно для новой версии платы.
Паковать крупные платы в большие корпуса в последние десятилетия стало моветоном. Микроконтроллеры слегка улучшили ситуацию тем, что схемы с их использованием стали значительно компактнее, к тому же повысилась простота повторения результата или конструкции.
Вместе с тем активное распространение Ардуино-плат для освоения разработки и проектирования устройств на микроконтроллерных системах породило новый виток в вопросе качества и эргономики.
Всего выпущено несколько платформ Arduino, Nano является одной из них, в миниатюрном исполнении. В то же время сохраняется легкость подключения при помощи разъемов с шагом выводов 2,54 мм, что важно для любительских экспериментов. Для программирования используется Arduino IDE (среда разработки) и язык высокого уровня, похожий на Си, а фактически это и есть C/C++, просто структура программы немного изменена. Вместо функции main() используются две другие: setup() и loop(). Компилятор сам создает из них остальное)
Конечно, нельзя забывать, что это все та же 8-битная Атмега, которая имеет свой потенциал, и нельзя возлагать на неё невозможное – используйте её там, где ей место, а именно в малой автоматизации без особых прецизионных задач.
Разработчику программы для Arduino приходится также иметь дело со схемотехникой подключаемых устройств. Он должен знать уровни допустимых токов и напряжений, обеспечивать защиту электроники при использовании деталей с большой индуктивностью (моторов, катушек реле). Ардуино объединяет две области знаний: электронику и программирование, основу для построения роботов (здесь немного не хватает еще механики).
Раз уж тут объединены программирование и электроника, то ключевой вещью в использовании модуля становится спецификация его выводов, или распиновка, как еще принято говорить. Выводы модуля можно классифицировать разными способами, поскольку их функции зависят от программной конфигурации контроллера. Кроме того, поскольку есть две версии модулей, один из них использует чип ATmega168, а другой ATmega328, то появляется вопрос, есть ли у них различия в подключении.
В каждом конкретном проекте назначение каждого пина конфигурируется программой пользователя. При запуске контроллера сначала выполняется инициализация регистров конфигурации. Поэтому беспокойства по поводу функций выводов в отлаженном устройстве быть не должно.
Конечно, наборы Ардуино (Arduino) не предназначены для разработки встраиваемых приложений, работающих с большой скоростью в ответственных случаях, поэтому при их использовании возможны косяки, тем более что пользователи еще только учатся.
Но как часть конструктора для изучения автоматизации и робототехники он играет важную роль в образовательных целях и способен привлечь в отрасль много будущих специалистов.
31 июля 2020 в 14:55
На цветных рисунках схем вводов-выводов, перепутаны MOSI-MISO
18 мая 2021 в 05:50
Спасибо!