Выбор руководства
Платформа Arduino Nano выпускается на микроконтроллере Microchip ATmega328 семейства AVR. На текущий момент микроконтроллер Microchip ATmega328 можно встретить в двух модификациях:
- ATmega328P — базовый микроконтроллер на котором выпускалась Arduino Nano с 2010 года по настоящее время.
- ATmega328PB — улучшенный микроконтроллер на котором Arduino Nano стали выходить с 2024 года.
Визуально платформы Arduino Nano ATmega328P и Arduino Nano ATmega328PB полностью идентичны, отличить их можно только по маркировке на микроконтроллере.
Из коробки Arduino Nano на чипах ATmega328P и ATmega328PB полностью повторяют друг друга в использовании. Для штатной работы с платой читайте наше базовое руководство по использованию Arduino Nano.
Для микроконтроллера ATmega328P данная статья не подходит и вам по ссылке выше! Однако, если вам достался микроконтроллер ATmega328PB и вы хотите раскрыть весь потенциал обновлённого чипа — не переключайтесь. Все подробности про расширенную работу платы на ATmega328PB читайте в текущей статье.
Доступные версии
В нашем магазине мы предлагаем Arduino Nano в нескольких вариантах:
Модель | Микроконтроллер | USB-UART | Исполнение |
---|---|---|---|
Arduino Nano (USB CH340 / Без ног) |
ATmega328P / ATmega328PB | CH340 | Без ног |
Arduino Nano (USB CH340 / С ногами) |
ATmega328P / ATmega328PB | CH340 | С ногами |
Arduino Nano (USB FT232R / С ногами) |
ATmega328P / ATmega328PB | FT232R | С ногами |
Режимы микроконтроллера ATmega328PB
Arduino Nano на микроконтроллере ATmega328PB может работать в двух режимах:
- Режим совместимости с ATmega328P: контроллер функционирует аналогично ATmega328P, предоставляя стандартный набор интерфейсов и возможностей.
- Расширенный режим ATmega328PB: контроллер предлагает дополнительные функции, которые улучшает коммуникационные возможности микроконтроллера.
Параметры | Режим совместимости с ATmega328P | Расширенный режим ATmega328PB |
---|---|---|
Контакты с ШИМ | 6 | 9 |
Интерфейс SPI | 1 | 2 |
Интерфейс UART | 1 | 2 |
Расширенный режим ATmega328PB
Для активации в Arduino Nano всех плюшек микроконтроллера ATmega328PB необходимо:
- Скачать и установить среду программирования Arduino IDE.
- Добавить в Arduino IDE поддержку микроконтроллера ATmega328PB.
- Записать загрузчик ATmega328PB в контроллер Arduino Nano.
- Настроить Arduino IDE на работу с Arduino Nano на ATmega328PB.
- Выполнить проверку Arduino Nano на базовом примере.
В качестве примера рассмотрим все шаги на платформе Arduino Nano (USB CH340 / С ногами). С другими моделями Nano процесс коммуникации будет аналогичный.
1. Скачивание и установка Arduino IDE
Для старта необходимо скачать и установить среду программирования Arduino IDE. Весь процесс описан в нашем руководстве по Arduino IDE.
2. Добавления в Arduino IDE поддержки ATmega328PB
По умолчанию IDE настроена только на штатные AVR-платы. Для работы с платформой Arduino Nano на микроконтроллере ATmega328PB — добавьте в менеджере плат поддержку платформ на ядре MiniCore.
- Откройте среду программирования Arduino IDE.
- Зайдите в настройки Arduino IDE:
Файл
→Настройки
-
В окне
Дополнительные ссылки для менеджера плат
введите адрес:https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
И нажмите на кнопкуOK
. - Зайдите в менеджер плат:
Инструменты
→Плата
→Менеджер плат
- Вбейте в поисковое окно строку
MiniCore
. Найдите в списке соответствующую платформу и нажмите на кнопкуУстановить
. - Начнётся установка дополнений, после которой отобразится надпись
INSTALLED
. Это значит установка завершилась успешно и можно нажимать кнопкуЗакрыть
. - Теперь вам доступны к программированию платы из ядра
MiniCore
, в котором есть семейство микроконтроллеровATmega328
.
3. Запись загрузчика ATmega328PB в Arduino Nano
Записать загрузчик в Arduino Nano можно с помощью другой платы Arduino в роли программатора. Для удобства приведем нейминг плат:
- Плата программатор — контроллер Arduino через который будем зашивать загрузчик в плату исполнитель. Для примера в роли программатора будем использовать Arduino Uno. В вашем случае это может быть и другая Arduino.
- Плата исполнитель — контроллер Arduino в который будем зашивать загрузчик. В даном случае будем использовать как раз Arduino Nano.
- Подготовьте плату программатор. Подробности читайте в нашей общей статье по записи загрузчика в Arduino.
- Соедините плату программатор Arduino Uno с платой исполнитель Arduino Nano. Подробности читайте в нашей общей статье по записи загрузчика в Arduino.
- Подключите плату программатор к компьютеру через кабель USB. При успешном подключении должны загореться индикаторные светодиоды питания на плате программаторе и плате исполнителе.
- В Arduino IDE выберите семейство контроллеров ATmega328:
Инструменты
→Плата
→MiniCore
→ATmega328
- В Arduino IDE выберите контроллер ATmega328PB:
Инструменты
→Variant
→328PB
- В Arduino IDE выберите COM-порт платы программатора:
Инструменты
→Порт
→COMx
, гдеx
— номер порта платы. - В Arduino IDE выберите тип программатора:
Инструменты
→Программатор
→Arduino as ISP
- Плата программатор и исполнитель настроены — можно записывать загрузчик. В Arduino IDE выберите:
Инструменты
→Записать загрузчик
- Если все шаги были пройдены правильно, на плате программаторе начнут мигать светодиоды
RX
иTX
. При завершении процесса — в окне статуса Arduino IDE должна появиться надписьЗапись загрузчика завершена
. - Отключите плату программатор от USB. А затем разберите схему между платой программатором Arduino Uno и платой исполнителем Arduino Nano. Плата программатор кстати нам больше не понадобится, все дальнейшие шаги будем совершать с помощью платы исполнителя Arduino Nano.
Номер COM-порта платы программатора, можно подсмотреть в диспетчере устройств. Подробнее мы рассмотрели этот процесс при подготовке программатора в общей статье по записи загрузчика в Arduino.
4. Настройка Arduino IDE на работу с Arduino Nano на ATmega328PB
- Подключите платформу Arduino Nano к компьютеру через кабель USB. При успешном подключении должен загореться индикаторный светодиод
PWR
. - Откройте диспетчер устройств Windows.
- В диспетчере устройств раскройте вкладку
Порты (COM и LPT)
, идентифицируйте среди устройств плату исполнитель Arduino Nano и запомните номер назначенного COM-порта. В нашем случае это USB-SERIAL CH340 с COM-портом номер11
. - CH340 для OS Windows 7 или Windows 10
- FT232R для OS Windows 7 или Windows 10
- В Arduino IDE выберите семейство контроллеров ATmega328:
Инструменты
→Плата
→MiniCore
→ATmega328
- В Arduino IDE выберите контроллер ATmega328PB:
Инструменты
→Variant
→328PB
- В Arduino IDE выберите COM-порт платы:
Инструменты
→Порт
→COMx
, гдеx
— номер порта платы. - В Arduino IDE выберите тип программатора:
Инструменты
→Программатор
→USBtinyISP slow
- На этом этапе плата Arduino Nano настроена на расширенный режим с микроконтроллером ATmega328PB и можно переходить к примерам работы.
Как узнать номер COM-порта платы Arduino Nano, мы смотрели пару шагов выше в диспетчере устройств.
5. Пример работы Arduino Nano ATmega328PB
Сделаем маячок с нарастающей яркостью. Для этого подключим светодиод к пину 2
.
Что понадобится
Схема устройства
Исходный код
Прошейте платформу Arduino Nano ATmega328PB кодом ниже.
// Даём пину со светодиодом понятное имя constexpr int LED_PIN = 2; void setup() { // Настраиваем пин со светодиодом в режим выхода pinMode(LED_PIN, OUTPUT); Serial1.begin(9600); } void loop() { // Создаём цикл для перебора всех значений от 0 до 255 // Выдаём на светодиод ШИМ-сигнал for (int brightness = 0; brightness <= 255; brightness++) { analogWrite(LED_PIN, brightness); // Ждём 10 мс delay(10); } // Создаём цикл для перебора всех значений от 255 до 0 // Выдаём на светодиод ШИМ-сигнал for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(LED_PIN, brightness); // Ждём 10 мс delay(10); } }
Результат
После прошивки, светодиод начнёт плавно загораться, а затем плавно гаснуть.
2
пине ШИМа нет, а на расширенном загрузчике ATmega328PB на 2
пине ШИМ есть. Именно поэтому сейчас есть плавное нарастания яркости.
Режим совместимости с ATmega328P
Для активации в Arduino Nano режиме совместимости с микроконтроллером ATmega328P необходимо:
- Скачать и установить необходимый софт.
- Записать загрузчик ATmega328P в контроллер Arduino Nano.
- Подменить фьюзы от ATmega328P в ATmega328PB.
- Настроить Arduino IDE на работу с Arduino Nano на ATmega328P.
- Выполнить проверку Arduino Nano на базовом примере.
В качестве примера рассмотрим все шаги на платформе Arduino Nano (USB CH340 / С ногами). С другими моделями Nano процесс коммуникации будет аналогичный.
1. Подготовка софта
- Скачайте и установите среду программирования Arduino IDE. Весь процесс описан в нашем руководстве по Arduino IDE.
- Скачайте и установите программу AVRDUDESS для прошивки микроконтроллеров семейства AVR.
- Скачайте и разархивируйте загрузчик ATmega328P. На выходе вы должны получить файл прошивки
optiboot_atmega328.hex
, содержащий машинный код для записи в память микроконтроллера.
2. Запись загрузчика ATmega328P в Arduino Nano
Записать загрузчик в Arduino Nano можно с помощью другой платы Arduino в роли программатора. Для удобства приведем нейминг плат:
- Плата программатор — контроллер Arduino через который будем зашивать загрузчик в плату исполнитель. Для примера в роли программатора будем использовать Arduino Uno. В вашем случае это может быть и другая Arduino.
- Плата исполнитель — контроллер Arduino в который будем зашивать загрузчик. В даном случае будем использовать как раз Arduino Nano.
- Подготовьте плату программатор. Подробности читайте в нашей общей статье по записи загрузчика в Arduino.
- Соедините плату программатор Arduino Uno с платой исполнитель Arduino Nano. Подробности читайте в нашей общей статье по записи загрузчика в Arduino.
- Подключите плату программатор к компьютеру через кабель USB. При успешном подключении должны загореться индикаторные светодиоды
PWR
на плате программаторе и плате исполнителе. - Откройте программу AVRDUDESS для прошивки микроконтроллеров семейства AVR.
-
В AVRDUDESS выберите следующие настройки:
- Микроконтроллер:
ATmega328PB
- Программатор:
Arduino as ISP
- COM-порт платы программатора:
COMx
, гдеx
— номер порта платы.
- Микроконтроллер:
- В AVRDUDESS нажмите на кнопку
Detect
. В консольной части программы вы должны увидеть сообщение про успешную инициализацию микроконтроллера ATmega328PB. - В AVRDUDESS скормите файл загрузчика ATmega328P: раздел
Flash
→…
и выберите заранее скаченный файлoptiboot_atmega328.hex
. - В AVRDUDESS укажите, что будете прошивать контролер: раздел
Flash
и выберите чекбоксWrite
. - Плата программатор и исполнитель настроены — можно записывать загрузчик: раздел
Flash
и нажмите на кнопкуGo
. - Вы должны увидеть командную строку с последовательностью исполнения инструкций при прошивке. В завершении прошивки, всплывёт окно про успешную запись загрузчика.
Номер COM-порта платы программатора, можно подсмотреть в диспетчере устройств. Подробнее мы рассмотрели этот процесс при подготовке программатора в общей статье по записи загрузчика в Arduino.
3. Подмена фьюзов ATmega328PB к ATmega328P
С виду микроконтроллеры ATmega328P и ATmega328PB идентичны, однако имеют разные сигнатуры и фьюзы.
Параметры | Микроконтроллер ATmega328P | Микроконтроллер ATmega328PB |
---|---|---|
Сигнатура | 1E 95 16 | 1E 95 0F |
LOW Fuse Byte | FF | FF |
HIGH Fuse Byte | DA | D7 |
EXTENDED Fuse Byte | FD | F5 |
- Сигнатура — это идентификатор подписи микроконтроллера. Каждый микроконтроллер AVR имеет свой уникальный трёхбайтовый код подписи, который можно считать для подтверждения правильности типа устройства, подключенного к программатору. Сигнатуру микроконтроллера менять нельзя.
- Фьюз-байты — это идентификаторы параметров микроконтроллеров AVR для хранения параметров при прошивке, например источник тактового сигнала, защита от записи и другие. В штатном загрузчике ATmega328P уже прописаны определённые фьюзы, которые отличаются от фьюзов загрузчика ATmega328PB.
Для активации совместимости, подменим фьюзы от ATmega328P в ATmega328PB.
- В AVRDUDESS считаем текущие фьюзы микроконтроллера ATmega328PB: раздел
Fuses
и нажмите кнопкуRead
. - В разделе
Fuses
вы должны увидеть считанные фьюзы. -
В AVRDUDESS вбейте вручную фьюзы от загрузчика ATmega328P:
L:
→FF
H:
→DA
E:
→FD
- В AVRDUDESS запищите вписанные фьюзы в микроконтроллер ATmega328PB: раздел
Fuses
и нажмите кнопкуWrite
. - Вы должны увидеть командную строку с последовательностью исполнения инструкций при смене фьюзов. В завершении, всплывёт окно про успешную запись данных.
- Отключите плату программатор от USB. А затем разберите схему между платой программатором Arduino Uno и платой исполнителем Arduino Nano. Плата программатор кстати нам больше не понадобится, все дальнейшие шаги будем совершать с помощью платы исполнителя Arduino Nano.
Считанные фьюзы могут отличатся от фьюзов на скрине.
4. Настройка Arduino IDE на работу с Arduino Nano на ATmega328P
- Подключите платформу Arduino Nano к компьютеру через кабель USB. При успешном подключении должен загореться индикаторный светодиод
PWR
. - Откройте диспетчер устройств Windows.
- В диспетчере устройств раскройте вкладку
Порты (COM и LPT)
, идентифицируйте среди устройств плату исполнитель Arduino Nano и запомните номер назначенного COM-порта. В нашем случае это USB-SERIAL CH340 с COM-портом номер11
. - CH340 для OS Windows 7 или Windows 10
- FT232R для OS Windows 7 или Windows 10
- В Arduino IDE выберите плату Arduino Nano:
Инструменты
→Плата
→Arduino AVR Boards
→Arduino Nano
- В Arduino IDE выберите контроллер:
Инструменты
→Процессор
→ATmega328P
- В Arduino IDE выберите COM-порт платы:
Инструменты
→Порт
→COMx
, гдеx
— номер порта платы. - В Arduino IDE выберите тип программатора:
Инструменты
→Программатор
→AVRISP MKII
- На этом этапе плата Arduino Nano настроена на режим совместимости с микроконтроллером ATmega328P и можно переходить к примерам работы.
Как узнать номер COM-порта платы Arduino Nano, мы смотрели пару шагов выше в диспетчере устройств.
5. Пример работы Arduino Nano ATmega328P
Сделаем маячок с нарастающей яркостью. Для этого подключим светодиод к пину 2
.
Что понадобится
Схема устройства
Исходный код
Прошейте платформу Arduino Nano ATmega328PB кодом ниже.
// Даём пину со светодиодом понятное имя constexpr int LED_PIN = 2; void setup() { // Настраиваем пин со светодиодом в режим выхода pinMode(LED_PIN, OUTPUT); Serial1.begin(9600); } void loop() { // Создаём цикл для перебора всех значений от 0 до 255 // Выдаём на светодиод ШИМ-сигнал for (int brightness = 0; brightness <= 255; brightness++) { analogWrite(LED_PIN, brightness); // Ждём 10 мс delay(10); } // Создаём цикл для перебора всех значений от 255 до 0 // Выдаём на светодиод ШИМ-сигнал for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(LED_PIN, brightness); // Ждём 10 мс delay(10); } }
Результат
После прошивки, у светодиода будет только два состояния: горит и не горит. Плавного нарастания яркости не будет.
2
пине ШИМа нет, а на расширенном загрузчике ATmega328PB на 2
пине ШИМ есть. Именно поэтому плавного нарастания яркости сейчас нет.
Элементы платы
В качестве примера рассмотрим основные компоненты на платформе Arduino Nano (USB CH340 / С ногами). На других моделях Nano, расположение компонентов на плате может немного отличаться, но суть и назначение одинаковое.
Микроконтроллер ATmega328
Все платформы Arduino Nano выполнены на микроконтроллере Microchip ATmega328 семейства AVR с тактовой частотой 16 МГц. Процессор обладает тремя видами памяти:
- 32 КБ Flash-памяти, из которых 0,5 КБ используются загрузчиком, который позволяет прошивать Arduino Nano с обычного компьютера через USB. Flash-память постоянна и её предназначение — хранение программ и сопутствующих статичных ресурсов.
- 2 КБ SRAM-памяти, которые предназначены для хранения временных данных, например переменных программы. По сути, это оперативная память платформы. SRAM-память энергозависимая, при выключении питания все данные сотрутся.
- 1 КБ энергонезависимой EEPROM-памяти для долговременного хранения данных, которые не стираются при выключении контроллера. По своему назначению — это аналог жёсткого диска для Arduino.
На текущий момент микроконтроллер Microchip ATmega328 можно встретить в двух модификациях:
- ATmega328P — базовый микроконтроллер на котором выпускалась Arduino Nano с 2010 года по настоящее время.
- ATmega328PB — улучшенный микроконтроллер на котором Arduino Nano стали выходить с 2024 года.
Визуально платформы Arduino Nano ATmega328P и Arduino Nano ATmega328PB полностью идентичны, отличить их можно только по маркировке на микроконтроллере.
Для микроконтроллера ATmega328P данная статья не подходит, соответственно читайте наше базовое руководство по использованию Arduino Nano.
Преобразователь USB-UART
В зависимости от модификации, на плате Arduino Nano можно встретить USB-UART преобразователь на чипе: CH340 или FT232R.
Преобразователь USB-UART обеспечивает связь микроконтроллера ATmega328 с USB-портом компьютера. При подключении к ПК — Arduino Nano определяется как виртуальный COM-порт.
- CH340 для OS Windows 7 или Windows 10
- FT232R для OS Windows 7 или Windows 10
RX
и TX
, которые параллельно выведены на контакты 0
и 1
Arduino Nano. Не используйте эти пины в своём проекте во время прошивки и отладки программы.
Индикаторные светодиоды
Имя | Назначение |
---|---|
PWR | Индикатор питания платформы Arduino Nano. |
L | Пользовательский светодиод на 13 пине Arduino Nano. При задании высокого уровня светодиод загорается, при низком – гаснет. |
TX | Мигает при прошивки и отправление данных из Arduino Nano в USB, а также при использовании пина 0 . |
RX | Мигает при прошивки и получение данных из USB в Arduino Nano, а также при использовании пина 1 . |
Кнопка RESET
Кнопка RESET служит для ручного сброса питания — аналог кнопки RESET обычного компьютера.
Порт USB Mini
Разъём USB Mini предназначен для прошивки и питания платформы Arduino Nano по USB. Для коммуникации понадобится кабель USB Mini.
Преобразователь напряжения 5 В
Понижающий преобразователь AMS1117-5 с выходом 5 вольта, обеспечивает напряжением платформу Arduino Nano при питании через пин Vin
. Диапазон входного напряжения — от 7 до 12 вольт, на выходе напряжение 5 В с максимальны током 1 А.
Разъём ICSP
Разъём ICSP выполняет две полезные фитчи:
- Транслирует сигнальные пины интерфейса SPI. Линии ICSP-разъёма также продублированы на цифровых пинах
11
,12
и13
. - Предназначен для загрузки прошивки в микроконтроллер ATmega328PB через внешний программатор для AVR. Одна из таких прошивок — Bootloader для Nano, который позволяет прошивать платформу по USB.
Распиновка
В качестве примера рассмотрим распиновку контактов на платформе Arduino Nano (USB CH340 / С ногами). На других моделях Nano, расположение пинов аналогичное.
На плате Arduino Nano расположены два ряда по 15 контактов и 6 дублирующих контактов на разъёме ICSP для подключения питания, дополнительных модулей и сенсоров.
В зависимости от загрузчика в Arduino Nano, распиновка платформы отличается:
- Всего физических контактов: 36 (15 + 15 + 6)
- Контакты ввода-вывода GPIO: 22
- Контакты с ШИМ: 9 с разрядностью 8 бит
- Контакты с АЦП: 8 с разрядностью до 10 бит
- Аппаратные интерфейсы: 2× UART, 2× SPI, 1× I²C
- Всего физических контактов: 36 (15 + 15 + 6)
- Контакты ввода-вывода GPIO: 20
- Контакты ввода GPI: 2
- Контакты с ШИМ: 6 с разрядностью 8 бит
- Контакты с АЦП: 8 с разрядностью до 10 бит
- Аппаратные интерфейсы: 1× UART, 1× SPI, 1× I²C
Габаритный чертёж
Размеры Arduino Nano (Без ног)
Размеры Arduino Nano (С ногами)
Характеристики
- Модель: Arduino Nano ATmega328PB
- Интерфейс USB-UART: CH340
- Микроконтроллер: ATmega328PB
- Тактовая частота: 16 МГц
- Flash-память: 32 КБ
- SRAM-память: 2 КБ
- EEPROM-память: 1 КБ
-
Входное напряжение питания: 5 В
- Через USB: 5 В
- Через пин Vin: 7–12 В
- Напряжение логических уровней: 5 В
-
Контакты общего назначения в расширенном режиме ATmega328PB:
- Всего физических контактов: 36 (15 + 15 + 6)
- Контакты ввода-вывода GPIO: 22
- Контакты с ШИМ: 9 с разрядностью 8 бит
- Контакты с АЦП: 8 с разрядностью до 10 бит
- Аппаратные интерфейсы: 2× UART, 2× SPI, 1× I²C
-
Контакты общего назначения в режиме совместимости с ATmega328P:
- Всего физических контактов: 36 (15 + 15 + 6)
- Контакты ввода-вывода GPIO: 20
- Контакты ввода GPI: 2
- Контакты с ШИМ: 6 с разрядностью 8 бит
- Контакты с АЦП: 8 с разрядностью до 10 бит
- Аппаратные интерфейсы: 1× UART, 1× SPI, 1× I²C
Ресурсы
Мы также рекомендуем к чтению ссылки на статьи, документации и другие вспомогательные материалы по платформе Arduino Nano.
Магазин
- Arduino Nano (USB CH340 / Без ног)
- Arduino Nano (USB CH340 / С ногами)
- Arduino Nano (USB FT232R / С ногами)
Инструкции
- Установка и настройка среды Arduino IDE
- Базовое руководство по использованию платформы Arduino Nano
- Расширенное руководство по использованию платформы Arduino Nano
- Общее руководство по записи загрузчика в плату Arduino
- Драйвер на USB-UART преобразователь CH340
- Драйвер на USB-UART преобразователь FT232R
- Установка драйвера USB CH340 для Windows 7
- Установка драйвера USB CH340 для Windows 10
- Установка драйвера USB FT232R для Windows 7
- Установка драйвера USB FT232R для Windows 10
Обсуждение