Руководство arduino nano

Плата Arduino Nano — аналог флагманской Uno в миниатюрном размере. На ней предусмотрено всё необходимое для удобной работы с микроконтроллером: 14 цифровых входов/выходов (6 из них могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, кварцевый резонатор на 16 МГц, разъём Mini-USB, разъём питания, разъём для внутрисхемного программирования (ICSP) и кнопка сброса.

Видеообзор

Подключение и настройка

Для запуска платформы скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.

При выборе платформы выбирайте Arduino Nano.

Если всё получилось — можете смело переходить к экспериментам.

Элементы платы

Микроконтроллер ATmega328P

Сердцем платформы Arduino Nano является 8-битный микроконтроллер семейства AVR — ATmega328P с тактовой частотой 16 МГц. Контроллер предоставляет 32 КБ Flash-памяти для хранения прошивки, 2 КБ оперативной памяти SRAM и 1 КБ энергонезависимой памяти EEPROM для хранения данных.

Микросхема FT232R

Микросхема FTDI FT232R обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к компьютеру Nano определяется как виртуальный COM-порт.

USB-UART преобразователь общается с микроконтроллером ATmega328P по интерфейсу UART через пины 0(RX) и 1(TX). Рекомендуем не использовать эти контакты в своём проекте.

Светодиодная индикация

Имя светодиода Назначение
RX и TX Мигают при обмене данными между Arduino Nano и ПК.
L Пользовательский светодиод подключённый к 13 пину микроконтроллера. При высоком уровне светодиод включается, при низком – выключается.
ON Наличие питания на Arduino Nano.

Разъём Mini-USB

Разъём Mini-USB предназначен для прошивки платформы с помощью компьютера.

Регулятор напряжения 5 В

Линейный понижающий регулятор напряжения LM1117MPX-5.0 с выходом 5 вольт обеспечивает питание микроконтроллера ATmega328P и другой логики платформы. Максимальный выходной ток составляет 800 мА.

ICSP-разъём для ATmega328

ICSP-разъём предназначен для загрузки прошивки в микроконтроллер ATmega328 через программатор.

Также через контакты ICSP Nano общается с платами расширения по интерфейсу SPI.

Распиновка

Пины питания

  • VIN: Входной пин для подключения внешнего источника питания с напряжением в диапазоне от 7 до 12 вольт.

  • 5V: Выходной пин от регулятора напряжения на плате с выходом 5 вольт и максимальных током 800 мА. Питать устройство через вывод 5V не рекомендуется — вы рискуете спалить плату.

  • 3.3V: Выходной пин от стабилизатора микросхемы FT232R с выходом 3,3 вольта и максимальных током 50 мА. Питать устройство через вывод 3V3 не рекомендуется — вы рискуете спалить плату.

  • GND: Выводы земли.

  • AREF: Пин для подключения внешнего опорного напряжения АЦП относительно которого происходят аналоговые измерения при использовании функции analogReference() с параметром «EXTERNAL».

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

  • Цифровые входы/выходы: пины 013
    Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.

  • ШИМ: пины 3,5,6,9,10 и 11
    Позволяет выводить аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ не меняется и установлена в 8 бит.

  • АЦП: пины A0A7
    Позволяет представить аналоговое напряжение в цифровом виде. Разрядность АЦП не меняется и установлена в 10 бит. Диапазон входного напряжения от 0 до 5 В. При подаче большего напряжения — вы убьёте микроконтроллер.

  • TWI/I²C: пины A4(SDA) и A5(SCL)
    Для общения с периферией по интерфейсу I²C. Для работы используйте библиотеку Wire.

  • SPI: пины 11(MOSI), 12(MISO), 13(SCK) и 10(SS)
    Для общения с периферией по интерфейсу SPI. Для работы — используйте библиотеку SPI.

  • UART: пины 0(RX) и 1(TX)
    Используется для коммуникации платы Arduino с компьютером или другими устройствами по последовательному интерфейсу. Выводы 0(RX) и 1(TX) соединены с соответствующими USB-UART преобразователя FT232R. Для работы с последовательным интерфейсом — используйте методы библиотеки Serial.

Принципиальная и монтажная схемы

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

  • Микроконтроллер: ATmega328P

  • Ядро: 8-битный AVR

  • Тактовая частота: 16 МГц

  • Flash-память: 32 КБ (2 КБ занимает загрузчик)

  • SRAM-память: 2 КБ

  • EEPROM-памяти: 1 КБ

  • Портов ввода-вывода всего: 20

  • Портов с АЦП: 8

  • Разрядность АЦП: 10 бит

  • Портов с ШИМ: 6

  • Разрядность ШИМ: 8 бит

  • Аппаратных интерфейсов SPI: 1

  • Аппаратных интерфейсов I²C / TWI: 1

  • Аппаратных интерфейсов UART / Serial: 1

  • Номинальное рабочее напряжение: 5 В

  • Максимальный выходной ток пина 5V: 800 мA

  • Максимальный выходной ток пина 3V3: 50 мA

  • Максимальный ток с пина или на пин: 40 мА

  • Допустимое входное напряжение от внешнего источника: 7–12 В

  • Габариты: 18×45 мм

Ресурсы

 Плата контроллер Arduino NanoПлата Arduino Nano

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

Платформа Nano, построенная на микроконтроллере ATmega328 (Arduino Nano 3.0) или ATmega168 (Arduino Nano 2.x), имеет небольшие размеры и может использоваться в лабораторных работах. Она имеет схожую с Arduino Duemilanove функциональность, однако отличается сборкой. Отличие заключается в отсутствии силового разъема постоянного тока и работе через кабель Mini-B USB. Nano разработана и продается компанией Gravitech.

Принципиальные схемы и исходные данные

Arduino Nano 3.0 (ATmega328): схемы и файлы Eagle.

Arduino Nano 2.3 (ATmega168): руководство (pdf) и файлы Eagle. Примечание: т.к. свободная версия файлов Eagle не позволяет работать более чем с двумя слоями, а данная версия схем 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 может получать питание через подключение Mini-B USB, или от нерегулируемого 6-20 В (вывод 30), или регулируемого 5 В (вывод 27), внешнего источника питания. Автоматически выбирается источник с самым высоким напряжением.

Микросхема FTDI FT232RL получает питание, только если сама платформа запитана от USB. Таким образом при работе от внешнего источника (не USB), будет отсутствовать напряжение 3.3 В, генерируемое микросхемой FTDI, при этом светодиоды RX и TX мигаю только при наличие сигнала высокого уровня на выводах 0 и 1.

Память

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

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

Arduino Nano лицевая сторона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 (информация на сайте Wiring).

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

  • AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().
  • Reset. Низкий уровень сигнала на выводе перезагружает микроконтроллер. Обычно применяется для подключения кнопки перезагрузки на плате расширения, закрывающей доступ к кнопке на самой плате Arduino.

Обратите внимание на соединение между выводами Arduino и портами ATmega168.

Связь

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

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

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

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

Платформа программируется посредством ПО Arduino. Из меню Tools > Board выбирается «Arduino Diecimila, Duemilanove или Nano w/ ATmega168» или «Arduino Duemilanove или Nano w/ ATmega328» (согласно установленному микроконтроллеру). Подробная информация находится в справочнике и инструкциях.

Микроконтроллеры ATmega168 и ATmega328 поставляются с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.

Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы блока ICSP (внутрисхемное программирование). Подробная информация находится в данной инструкции.

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

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

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

Миниатюрная плата семейства Arduino, построенная на микроконтроллере ATmega168.

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

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

arduino-nano.jpg

Рисунок №1 – плата Arduino Nano 

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

Если внимательно рассмотреть плату Arduino Nano, то на ней можно заметить не только микроконтроллер ATmega328, но и ряд дополнительных компонентов, обеспечивающих «жизнедеятельность» этого аппаратного комплекса в целом. На рисунке №2 можно увидеть, за что отвечает каждый из них.

arduino-nano-shema.jpg

Рисунок №2 – Состав платы Arduino Nano 

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

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

Где приобрести комплектующие для Ардуино? Купить платы Arduino вы можете в нашем магазине 3DIY!


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

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

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

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

tip-controlera-arduino-nano.jpg

Рисунок №3 – выбор типа микроконтроллера, установленного на плате 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, на которой наглядно можно увидеть оговоренные ранее моменты (рисунок №4).

electrical-shema-arduino-nano.jpg

Рисунок №4 – электрическая схема 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
эти выводы имеют обозначение D3, D5, D6, D9, D10, D11. Ниже даны несколько соответствующих примеров:

  • 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 эти входы маркируются как A0, A1, A2, A3, A4, A5, A6, A7. Первые пять входов могут использоваться в качестве цифровых, работая в оба направления. Пины A6 и A7
способны работать только на вход!!! Это следует помнить при проектировании программного обеспечения. Чтобы оценить уровень напряжения на аналоговом входе, необходимо воспользоваться следующей командой:

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

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

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

raspinovka-arduino-nano.jpg 

Рисунок №5 – распиновка выводов платы Arduino Nano

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

arduino nano-tablica.jpg


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

Память 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):

nano.jpg


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

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

faq.jpg


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

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

faq2.jpg


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

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

На данной странице находится максимально подробный гайд по началу работы с Arduino, в котором можно найти ответы на все вопросы касательно установки, подключения и загрузки прошивки, а также по работе с моими проектами. Внимательно изучите гайд, прежде чем писать мне на почту или в нашу группу ВК, если у вас что-то не получается, тут есть ответы на все вопросы. Также прилагаю список уроков на этом сайте, где можно найти ещё больше базовой информации:

  • Начало работы
  • Работа с Arduino IDE
  • Первая прошивка, ошибки, FAQ
  • Питание платы

Arduino  IDE


Arduino IDE – программа для написания и загрузки прошивки в плату, скачать можно с официального сайта вот здесь. Внимание! Перевод языка страницы в браузере ломает кнопки! На данный момент называется Legacy IDE (1.8.X), так как вышла новая IDE v2. Новичкам рекомендуется начать с версии 1.8.X.

Перед загрузкой вам предложат пожертвовать на развитие проекта, можно отказаться и нажать JUST DOWNLOAD (только скачать). Либо открываем прямую ссылку на загрузку версии 1.8.19 и сразу качаем файл.

Для работы рекомендуется компьютер с Winodws 7 или выше, либо Linux/MacOS

  • Если у вас Windows XP, придётся установить версию 1.6.13, более свежие версии будут очень сильно тормозить или не будут работать вообще. Есть ещё одна проблема: некоторые библиотеки не будут работать на старых версиях Arduino IDE, также не будет работать поддержка плат семейства esp8266, поэтому крайне рекомендуется обновить свой компьютер до Windows 7 или выше
  • Установка на Linux из системного репозитория – читать тут
  • Установка на MacOS – читать тут

Arduino Windows app
Не рекомендуется устанавливать Arduino Windows app из магазина приложений Windows, так как с ней бывают проблемы

Другие версии
Не устанавливайте старые версии IDE, если нет на то весомых причин, а также beta и hourly-билды

Java


Для старых версий Arduino IDE, а также для некоторых других программ, понадобится пакет Java JRE. Скачать можно с официального сайта для своей операционной системы.

Установка


Arduino IDE устанавливается как обычная программа, запускам и жмём далее далее далее…

Драйвер


Во время установки Arduino IDE программа попросит разрешения установить драйвера от неизвестного производителя, нужно согласиться на установку всего предложенного.

Обновление


Перед установкой новой версии нужно удалить старую. Ни в коем случае не удаляйте папку установленной IDE из Program Files, удалять нужно через “Установка и удаление программ“, либо запустив файл uninstall.exe из папки с установленной программой. Иначе установщик откажется устанавливать новую программу, так как в системе остались следы от старой. Решение этой проблемы описано в видео ниже. Вкратце о том, как удалить IDE вручную:

Удаление остатков IDE

Удаляем папки:

  • Папка с программой
    • C:Program Files (x86)Arduino (64-битная версия Windows)
    • C:Program FilesArduino (32-битная версия Windows)
  • Папка со скетчами и библиотеками
    • ДокументыArduino
  • Папка с настройками и дополнительными “ядрами” плат
    • C:Пользователи (или Users)Ваш_пользовательAppDataLocalArduino15

Удаляем следы из реестра:

  • Открыть редактор системного реестра:
    • Windows 10: Пуск/regedit
    • Предыдущие: Пуск/Выполнить/regedit
    • Инструкция для всех Windows
  • В открывшемся окне: Правка/Найти…
    • В окне поиска пишем arduinouninstall
    • Поиск
  • Удаляем найденный параметр (см. скриншот ниже)
  • На всякий случай Правка/Найти далее
  • Удаляем и так далее, пока не удалим все найденные параметры с arduinouninstall
  • После этого можно запускать установщик и устанавливать новую программу

Другие проблемы


  • Если перестала запускаться Arduino IDE – удаляем файлик preferences.txt из C:Пользователи (или Users)Ваш_пользовательAppDataLocalArduino15

Портативная версия


Вместо полной установки программы можно скачать архив с уже “установленной”, на странице загрузки он называется Windows ZIP file. Вот прямая ссылка на 1.8.19. Распаковав архив, получим портативную версию Arduino IDE, которую можно скинуть на флешку и использовать на любом компьютере без установки программы. Но понадобится установить драйвер CH341 для китайских плат, а также драйверы из папки с программой Arduino IDE (подробнее в следующем уроке). Возможно понадобится установить Java.

Работа на смартфоне


Писать и загружать прошивку через смартфон тоже можно, понадобится смартфон на Android и приложение ArduinoDroid. Также для тренировки и удобного редактирования скетчей можно использовать CppDroid, но загружать в плату она не умеет.

Первое подключение

Осмотр платы


Перед подключением к компьютеру рекомендуется провести визуальный осмотр платы на предмет дефектов пайки компонентов. Что можно встретить (в порядке фотографий):

  • Замкнутые пины (вроде бы паяются китайцами вручную)
  • Неприпаянная нога компонента
  • “Торчащие” вверх или под углом компоненты типа резисторов и конденсаторов, припаянные только с одной стороны
  • Компоненты со смещением
  • “Сопля” между ногами компонента

blank

blank

Плату с обнаруженным дефектом не рекомендуется подключать к компьютеру! Всё можно исправить паяльником, если не умеете сами – попросите того, кто умеет.

Реакция на подключение питания


Как понять, что плата работает корректно? На примере Nano/Uno:

  • При подключении USB загорается и горит светодиод PWR
  • Если плата новая и на ней прошит загрузчик (он обязан быть прошит) – однократно мигает светодиод L
  • Примечание: светодиоды могут быть любого цвета
  • На новой плате прошито “мигание светодиодом”, поэтому светодиод L продолжит мигать один или два раза в секунду в зависимости от версии загрузчика
  • При нажатии на кнопку сброса (RESET, единственная кнопка на плате) должен однократно мигнуть светодиод L, сигнализируя о завершении работы загрузчика.

Если ваша плата ведёт себя иначе – скорее всего это заводской брак, если плата новая, или кривые руки – если плата уже паялась и или куда то подключалась =)

Драйвер USB контроллера

CH341


В своих проектах я использую “Ардуино-совместимые” китайские платы, у которой для подключения по USB используется контроллер CH340/CH341. Чтобы он распознавался компьютером, нужно установить драйвер.

Windows

Скачать драйвер можно по ссылке:

  • FTP сайта
  • Яндекс.Диск
  • Сайт driverslab

Запускаем и в появившемся окошке нажимаем INSTALL. Готово!

Если во время установки Arduino IDE вы по какой-то причине пропустили установку драйверов, то их можно установить вручную из папки с программой, расположенной по пути

  • C/Program Files/Arduino/drivers (для 32-х разрядной системы)
  • C/Program Files (x86)/Arduino/drivers (для 64-х разрядной системы).

Запустить файл

  • dpinst-x86.exe (для 32-х разрядной системы)
  • dpinst-amd64.exe (для 64-х разрядной системы)

blank

Linux Mint

В Linux уже встроен необходимый драйвер, но Arduino IDE может отказаться с ним работать: Linux определяет ардуинку как устройство ttyUSB*, обычно это ttyUSB0 (это можно узнать командой dmesg в терминале), то есть в системе появляется интерфейс /dev/ttyUSB0. Чтобы с ним работать, нужны права доступа. Читать и писать на устройство /dev/ttyUSB0 имеет пользователь root и пользователи группы dialout. Работы с правами суперпользователя лучше избегать, поэтому следует занести своего пользователя в группу dialout. Это можно сделать следующей командой (обратите внимание, команда whoami в обратных кавычках)

sudo usermod -a -G dialout `whoami`

После этого нужно перелогиниться. Дальше запускаем Arduino IDE и в меню «Инструменты/Порт» ставим галочку напротив /dev/ttyUSB0.

Linux Arch

Вся информация по работе с IDE на данной ОСи есть вот в этой статье

FT232


На оригинальных Arduino Nano стоит USB контроллер производства FTDI – FT232, драйвер для всех версий ОС можно скачать с официального сайта (прямая ссылка на инсталлятор для Windows). Некоторые очень редкие китайцы паяют на свои Наны поддельные FTDI контроллеры, которые буквально выходят из строя после некоторых обновлений Windows. Если вам достался такой экземпляр (я никогда не даю ссылки на такие поделки) – подробности по ситуации читайте здесь. Как восстановить контроллер и сделать рабочий драйвер – читайте здесь.

CP2102


На некоторые Arduino-совместимые платы китайцы ставят контроллер USB CP2102. Драйвер на него в большинстве случаев уже есть в системе (на Linux точно есть), если не работает – скачать можно с официального сайта.

  • Прямая ссылка на драйвер для Windows всех версий
  • Прямая ссылка на драйвер для Mac OS

На Windows установка производится следующим образом: достаём из архива и

Настройка и прошивка

Подключение платы


Плата подключается к компьютеру по USB, на ней должны замигать светодиоды. Если этого не произошло:

  • Неисправен USB кабель
  • Неисправен USB порт компьютера
  • Неисправен USB порт Arduino
  • Попробуйте другой компьютер, чтобы исключить часть проблем из списка
  • Попробуйте другую плату (желательно новую), чтобы исключить часть проблем из списка
  • На плате Arduino сгорел входной диод по линии USB из-за короткого замыкания, устроенного пользователем при сборке схемы
  • Плата Arduino сгорела полностью из-за неправильного подключения пользователем внешнего питания или короткого замыкания

Компьютер издаст характерный сигнал подключения нового оборудования, а при первом подключении появится окошко “Установка нового оборудования”. Если этого не произошло:

  • См. предыдущий список неисправностей
  • Кабель должен быть data-кабелем, а не “зарядным”
  • Кабель желательно втыкать напрямую в компьютер, а не через USB-хаб
  • Не установлены драйверы Arduino (во время установки IDE или из папки с программой), вернитесь к установке.

В списке портов (Arduino IDE/Инструменты/Порт) появится новый порт, обычно COM3. Если этого не произошло:

  • См. предыдущий список неисправностей
  • Некорректно установлен драйвер на USB контроллер Arduino
    • Переверните плату и найдите “узкую” микросхему. Если на ней написано CH341 – ставим драйвер по инструкции выше
    • Если написано FT232R – опять же инструкция выше
    • Если ничего не написано – открываем “Диспетчер устройств”, смотрим блок “Другие устройства”. Если при подключении платы к компьютеру там появляется FT232R USB UART – смотрим инструкцию выше
  • Если список портов вообще неактивен – драйвер Arduino установлен некорректно, вернитесь к установке
  • Возникла системная ошибка, обратитесь к знакомому компьютерщику или экзорцисту

Выбор и настройка платы (Arduino NANO)


  • Выбираем соответствующую плату в ИнструментыПлата Большинство моих проектов сделаны на Arduino Nano. Если вы используете Nano:
    •  В микроконтроллер китайских плат зашит “старый” загрузчик, поэтому выбираем ИнструментыПроцессорATmega328p (Old Bootloader). Если вам по какой-то причине пришлют платы с новым загрузчиком – прошивка не загрузится (будет минутная загрузка и ошибка), можно попробовать сменить пункт Процессор на ATmega328p
  • Теперь выбираем порт, к которому подключена плата. COM1 – в большинстве случаев системный порт, у вас должен появиться ещё один (обычно COM3)

Загрузка прошивки


“Загрузка” прошивки происходит в два этапа – компиляция и непосредственно загрузка в микроконтроллер. Компиляция – проверка кода на наличие ошибок, её можно запустить, нажав кнопку с символом галочки в верхнем меню программы. Компилировать код можно даже не подключая плату к компьютеру! При нажатии на кнопку с символом стрелочки начнётся компиляция, а затем загрузка скомпилированного кода в плату.

Вставьте следующий код с полной заменой содержимого в IDE и загрузите его. Должен начать мигать светодиод на плате, это означает что все программы настроены верно и можно переходить к работе!

Примечание: данный код является универсальным для всех Arduino-совместимых плат

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
  digitalWrite(LED_BUILTIN, 0);
  delay(300);
  digitalWrite(LED_BUILTIN, 1);
  delay(300);
}

ESP8266 (Wemos, NodeMCU)


ESP8266  – микроконтроллер с WiFi на борту, на его базе сделаны платы Wemos D1 mini, NodeMCU и другие.

  • Читайте вводный урок по esp8266.
  • На популярных платах Wemos и NodeMCU стоит бортовой USB и CH340 или CP2102 (обычно это указано на странице товара).
  • Установка драйверов описана выше на этой странице.

Для работы с esp8266 нужно добавить поддержку плат в Arduino IDE:

  • Arduino IDE/Файл/Настройки/
  • В окошко “Дополнительные ссылки…” Вставить
  • http://arduino.esp8266.com/stable/package_esp8266com_index.json
  • Нажать ОК
  • Arduino IDE/Инструменты/Плата/Менеджер плат… Начать вводить в поиске “esp”. Выбрать и установить ESP8266 boards
    • Рекомендуемая версия – 2.7.4, на более высоких пока что наблюдаются проблемы с совместимостью
  • В списке плат Инструменты/Плата/ появится семейство плат на esp8266. Выбираем плату
    • NodeMCU – NodeMCU 1.0
    • Wemos Mini – LOLIN Wemos D1 R2 & mini
    • Или другую согласно своей конфигурации
  • Выбираем порт, к которому подключена плата
  • На четвёртом скриншоте ниже показаны настройки платы по умолчанию, изменены только выделенные красным (плата и порт)

Заметка для NodeMCU. Перед началом загрузки нужно ввести плату в режим прошивки. Подключить к компьютеру, выбрать появившийся порт для загрузки. Зажать кнопку Flash. Кликнуть по кнопке Reset. Отпустить кнопку Flash. И только после этого нажать стрелочку в программе для загрузки прошивки.

ESP32


ESP32  – мощный микроконтроллер с WiFi на борту

  • На плате стоит бортовой USB и CH340 или CP2102 (обычно это указано на странице товара).
  • Установка драйверов описана выше на этой странице.

Для работы с ESP32 нужно добавить поддержку плат в Arduino IDE:

  • Arduino IDE/Файл/Настройки/
  • В окошко “Дополнительные ссылки…” Вставить
  • https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  • Нажать ОК
  • Arduino IDE/Инструменты/Плата/Менеджер плат… Начать вводить в поиске “esp”. Выбрать и установить esp32
  • В списке плат Инструменты/Плата/ появится семейство плат на esp32. Выбираем плату согласно купленной модификации
  • Выбираем порт, к которому подключена плата

У некоторых плат не работает автоматический запуск в режиме прошивки, поэтому в самом начале процесса загрузки прошивки нужно зажать кнопку Flash (BOOT) на плате

Digispark


Digispark – плата на базе ATtiny85.

  • Читайте вводный урок по Digispark.
  • Подключение к ПК по USB (реализован программно)
  • Нужно установить специальный драйвер, скачать можно на официальном GitHub проекта (в разделе Релизы, вот прямая ссылка на архив), либо с моего FTP. Драйвера есть для Win, MacOS и Linux.
  • Пользователям Linux читать здесь

Для работы с Digispark нужно добавить поддержку плат в Arduino IDE:

  • Arduino IDE/Файл/Настройки/
  • В окошко “Дополнительные ссылки…” Вставить
    • http://digistump.com/package_digistump_index.json
    • или https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json
  • Нажать ОК
  • Arduino IDE/Инструменты/Плата/Менеджер плат… Начать вводить в поиске “Digispark”. Выбрать и установить Digistump AVR Boards
  • В списке плат Arduino IDE/Инструменты/Плата/ появится семейство плат Digispark. Выбираем Digispark (Default – 16.5mhz)

Прошивка загружается следующим образом: ПЛАТУ НЕ ПОДКЛЮЧАЕМ, ПОРТ НЕ ВЫБИРАЕМ, нажимаем загрузка, ждём компиляции. Появится надпись “подключите плату”. Втыкаем плату в USB и прошивка загружается.

LGT8F328


LGT8F328 – китайский клон ATmega328

  • Читайте вводный урок по lgt8f328.
  • Может понадобиться драйвер (прямая ссылка на архив)

Для работы с LGT8F328 нужно добавить поддержку плат в Arduino IDE:

  • Запустить Arduino IDE, перейти в Файл/Настройки/
  • В окошко “Дополнительные ссылки…” Вставить
  • https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
  • Нажать ОК
  • Перейти в Инструменты/Плата/Менеджер плат… Начать вводить в поиске “lgt8”. Выбрать и установить LGT8fx Boards
  • Теперь в списке плат Инструменты/Плата/ появится семейство плат Logic Green… Выбираем свою плату

“Голые” МК


Для начала рекомендуется изучить вот эти два урока: первый и второй. У проектов на базе голого микроконтроллера есть два варианта:

  • Если проект основан на ATmega328 (Arduino Nano/Mini) и на плате есть источник тактирования на 16 МГц (резонатор), то микроконтроллер можно просто перепаять с Arduino и загружать прошивку через внешний USB-TTL переходник, как на Arduino Pro Mini. Либо загрузить прошивку, и потом перепаивать – всё будет работать.
    • Если источника тактирования нет – так делать нельзя! Сначала нужно настроить МК на внутреннее тактирование, подключив ISP программатор к плате Arduino и выбрав внутренний источник тактирования в настройках ядра. Подробнее читайте в уроке.
  • Если используется новый микроконтроллер (или припаянный китайцами) – он по умолчанию настроен на внутреннее тактирование и его можно паять на плату в любом случае. Загрузить прошивку можно только при помощи ISP программатора. Также можно прошить загрузчик и в дальнейшем загружать прошивку через USB-TTL преобразователь.

Установка библиотек


Библиотека – несколько файлов с кодом, облегчающим работу с датчиками и другими модулями. К моим проектам библиотеки идут в архиве (об этом ниже). Рассмотрим все способы загрузки и установки библиотек.

Менеджер библиотек


Большинство Ардуино-библиотек можно установить автоматически из встроенного в программу менеджера библиотек:

  • Скетч/Подключить библиотеку/Управлять библиотеками…
  • Комбинация клавиш Ctrl+Shift+I

Нужную библиотеку можно найти в поиске по названию и нажать Установка, библиотека будет автоматически установлена в папку с библиотеками. Arduino IDE проверяет обновления библиотек при запуске и предложит обновиться, если найдёт обновления.

Скачивание с GitHub


Не все существующие библиотеки есть в менеджере библиотек и скачать их можно только с GitHub. Есть два способа: скачать весь репозиторий и скачать релиз. Весь репозиторий со всеми “лишними” служебными файлами можно скачать одним архивом вот так, нажав Code/Download ZIP

Если у библиотеки есть релизы – справа будет отмечен последний (свежий) релиз. Нажимаем на него:

И в новом окне нажимаем Source code (zip) – начнётся загрузка архива. Скачивание релиза более предпочтительно, так как содержит только файлы библиотеки.

blank

В обоих случаях библиотека скачается как .zip архив.

Автоматическая установка


Скачанный .zip архив можно установить в автоматическом режиме через Скетч/Подключить библиотеку/Добавить .ZIP библиотеку… В открывшемся окне выбрать скачанный архив, библиотека будет установлена по указанному в настройках пути.

Ручная установка


Для начала нужно распаковать архив (стандартный архиватор Windows или WinRAR). Чтобы Arduino IDE смогла использовать библиотеку, нам нужно положить её туда, где программа будет её искать. Таких мест три (на примере Windows):

  • Документы/Arduino/libraries/
  • Папка с программой/libraries/
    • C/Program Files/Arduino/libraries/ (Windows 32)
    • C/Program Files (x86)/Arduino/libraries/ (Windows 64)
    • В портативной версии IDE желательно держать библиотеки в Папка с программой/libraries

Рекомендуется держать все библиотеки в одном месте, чтобы не было путаницы. Лично я устанавливаю все библиотеки в папку с программой (в Program Files), но для этого могут потребоваться права администратора (зависит от версии и настроек Windows). Если у вас возникли с этим проблемы – устанавливайте в Документы/Arduino/libraries/. На скриншотах показана установка скачанной с GitHub библиотеки в папку с программой и в документы. Ставить нужно в одно место, я просто показываю оба варианта.

Ошибки компиляции


Возникает на этапе сборки и компиляции прошивки. Ошибки компиляции вызваны проблемами в коде прошивки, то есть проблема сугубо программная. Слева от кнопки “загрузить” есть кнопка с галочкой – проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру.

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текст ошибки и понять, куда копать
  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием <название файла>.h no such file or directory. Это означает, что в скетче используется библиотека <название файла>, и нужно положить её в Program Files/Arduino/libraries/. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки всегда можно поискать в гугле по <название файла>.
  • При использовании каких-то особых библиотек, методов или функций, ошибкой может стать неправильно выбранная плата в “Инструменты/плата“. Пример: прошивки с библиотекой Mouse.h или Keyboard.h компилируются только для Leonardo и Micro.
  • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк. Обычно указывается строка, в которой сделана ошибка, также эта строка подсвечивается красным.
  • Иногда причиной ошибки бывает слишком старая, или слишком новая версия Arduino IDE. Читайте комментарии разработчика скетча.
  • Ошибка недостаточно свободного места возникает по вполне понятным причинам. Оптимизация: статическая память – память, занимаемая кодом (циклы, функции). Динамическая память занята переменными.

Частые ошибки в коде, приводящие к ошибке компиляции

  • …no such file or directory – компилятор не может найти файл, который используется в коде. Чаще всего это библиотека, которую не установили или установили неправильно
  • expected ‘,’ or ‘;’ – пропущена запятая или точка запятой на предыдущей строке
  • stray ‘320’ in program – русские символы в коде
  • expected unqualified-id before numeric constant – имя переменной не может начинаться с цифры
  • … was not declared in this scope – переменная или функция используется, но не объявлена. Компилятор не может её найти
  • redefinition of … – повторное объявление функции или переменной
  • storage size of … isn’t known – массив задан без указания размера

Ошибки загрузки


Возникает на этапе, когда прошивка собрана, скомпилирована, в ней нет критических ошибок, и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за настроек программы и драйверов.

  • Если неправильно выбран COM порт – прошивка не загрузится с ошибкой avrdude: ser_open(): can’t open device. Вернитесь к пункту “Выбор и настройка платы” этого урока и убедитесь в том, что выбор порта активен и при подключении платы появляется новый.
  • Большинство проблем при загрузке, вызванных “зависанием” ардуины или загрузчика, лечатся полным отключением Ардуины от питания. Потом вставляем USB и по новой прошиваем.
  • Причиной ошибки загрузки может быть неправильно выбранная плата в “Инструменты/Плата”, а также неправильно выбранный процессор в “Инструменты/Процессор”.
    • Если это Arduino Nano – попробуйте оба, Old и не Old.
  • Если у вас открыт монитор COM порта в другом окне Arduino IDE или плата общается через СОМ порт с другой программой (Ambibox, HWmonitor, SerialPortPlotter и т.д.), то вы получите ошибку загрузки, потому что порт занят. Отключитесь от порта или закройте другие окна и программы.
  • Если у вас задействованы пины RX или TX – отключите от них всё! По этим пинам Arduino общается с компьютером, в том числе для загрузки прошивки.
  • Если в описании ошибки встречается bootloader is not responding и not in sync, из-за ошибок записи мог “слететь” загрузчик, его можно попробовать прошить заново.
  • Если все пункты из этого списка проверены, а загрузчик прошить не удаётся – микроконтроллер скорее всего необратимо повреждён, то есть сгорел.

Предупреждения


Помимо ошибок, по причине которых проект вообще не загрузится в плату и не будет работать, есть ещё предупреждения, которые выводятся оранжевым текстом в чёрной области лога ошибок. Предупреждения могут появиться даже тогда, когда выше лога ошибок появилась надпись “Загрузка завершена“. Это означает, что в прошивке нет несовместимых с жизнью ошибок, она скомпилировалась и загрузилась в плату. Что же тогда означают предупреждения? Чаще всего можно увидеть такие:

  • # Pragma message……. – сообщения с директивой Pragma обычно выводят библиотеки, сообщая о своей версии или каких-то настройках. Это даже не предупреждение, а просто вывод текста в лог.
  • Недостаточно памяти, программа может работать нестабильно – чуть выше этого предупреждения обычно идёт информация о задействованной памяти. Память устройства можно добивать до 99%, ничего страшного не случится. Это флэш память и во время работы она не изменяется. А вот динамическую память желательно забивать не более 85-90%, иначе реально могут быть непонятные глюки в работе, так как память постоянно “бурлит” во время работы. НО. Это зависит от скетча и в первую очередь от количества локальных переменных. Можно написать такой код, который будет стабильно работать при 99% занятой SRAM памяти.
  • Предупреждения о несовместимых типах данных. Компилятор не смог привести один тип к другому и сообщает о потенциальных ошибках в ходе выполнения программы. В большинстве случаев ничего плохого не случится, но лучше найти проблемную строку и помочь компилятору преобразовать тип.

Частые вопросы


  • Ардуину можно прошить только один раз? Нет, несколько десятков тысяч раз, всё упирается в ресурс flash памяти. А он довольно большой.
  • Как стереть/нужно ли стирать старую прошивку при загрузке новой? Память автоматически очищается при прошивке, старая прошивка автоматически удаляется.
  • Можно ли записать две прошивки, чтобы они работали вместе? Нет, при прошивке удаляются абсолютно все старые данные. Из двух прошивок нужно сделать одну, причём так, чтобы не было конфликтов.
  • Можно ли “вытащить” прошивку с уже прошитой Ардуины? Теоретически можно, но только в виде нечитаемого машинного кода, в который преобразуется прошивка на С++ при компиляции, т.е. вам это НИКАК не поможет, если вы не имеете диплом по низкоуровневому программированию.
    • Зачем это нужно? Например есть у нас прошитый девайс, и мы хотим его “клонировать”. В этом случае да, есть вариант сделать дамп прошивки и загрузить его в другую плату на таком же микроконтроллере.
    • Если есть желание почитать код – увы, прошивка считывается в виде бинарного машинного кода, превратить который обратно в читаемый Си-подобный код обычному человеку не под силу
    • Вытащить прошивку, выражаясь более научно – сделать дамп прошивки, можно при помощи ISP программатора, об этом можно почитать здесь
    • Снять дамп прошивки можно только в том случае, если разработчик не ограничил такую возможность, например записав лок-биты, запрещающие считывание Flash памяти, или вообще отключив SPI шину. Если же разработчик – вы, и есть желание максимально защитить своё устройство от копирования – гуглите про лок-биты и отключение SPI

▶Проекты AlexGyver◀


ВНИМАТЕЛЬНО ЧИТАЙ ИНСТРУКЦИЮ
Если это твой первый опыт работы с Arduino — внимательно изучи каждый пункт инструкции выше, здесь всё написано!!!

Все мои проекты имеют одинаковую структуру и устанавливаются/прошиваются одинаково, поэтому вот финальная общая инструкция:

1. Установить Arduino IDE и драйверы, как написано в гайде выше. Если это ваш первый раз – желательно не подключать ничего к новой плате, а загрузить пробную прошивку из гайда и убедиться, что всё загружается и работает. Если после сборки схемы прошивка перестанет загружаться – увы, схема собрана с ошибками и плата уже могла сгореть. Но она работала, мы это проверили =)

  • Если проект основан не на стандартной Arduino плате, а например на esp8266, ESP32, Digispark, lgt8f328 – устанавливаем поддержку этих плат, как описано выше.

2. Скачать архив со страницы проекта. Ссылка всегда одна, она ведёт на прямую загрузку архива с хранилища GitHub. Когда проект обновляется (об этом может быть написано на странице проекта), ссылка на архив остаётся той же, но в нём будут уже какие-то изменённые файлы, добавлены новые версии прошивки и т.д. Все обновления указаны на странице проекта.

3. Распаковать архив. Архив имеет формат .zip, для его распаковки можно использовать встроенные инструменты операционной системы, либо популярный WinRAR. Если не распаковать архив – прошивка откроется неправильно. Я не отличаюсь буйной фантазией и всегда называю папки одинаково, вот что может быть в архиве проекта:

  • firmware – прошивки для Arduino
  • software – программы для ПК
  • libraries – библиотеки
  • schemes – схемы
  • PCB – gerber файлы печатных плат
  • docs – всякие документы
  • Android – исходники приложения
  • 3Dprint – модели для печати
  • processing – программа на Processing

Извлечение WinRAR

Извлечение Windows

Распакованная папка

4. Установить библиотеки. К прошивкам моих проектов почти всегда идут библиотеки, необходимые для работы кода. Библиотеки в проектах часто пересекаются, но рекомендуется ставить именно идущую в комплекте с проектом версию, так как библиотеки обновляются и старые или новые могут быть несовместимы с проектом.

Примечание 1: не у всех проектов в архиве есть папка с библиотеками. Если её нет – дополнительно устанавливать ничего не нужно.

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

Если папка с библиотеками есть, содержимое папки libraries из архива помещаем в:

  • Документы/Arduino/libraries/

Установка в документы

Примечание 3: в видео инструкции выше сказано устанавливать библиотеки в папку с программой. На Windows 10 и выше это требует прав администратора, так что лучше устанавливать библиотеки в Документы.

К разным проектам идут разные версии одних и тех же библиотек, они не всегда совместимы. При возникновении ошибок рекомендуется удалить текущие версии и заменить их теми, которые идут в архиве.

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 порт выбирать не надо, читай инструкцию выше

blank

blank

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 и получил непонятные ошибки – удали старую и УСТАНОВИ СВЕЖУЮ ВЕРСИЮ
  • Некоторые проекты будут работать только на тех платах, что показаны в видео и описаны на странице проекта. Под другие платы прошивка компилироваться не будет!

Понравилась статья? Поделить с друзьями:
  • Швейная машина singer 1507 инструкция по применению
  • Аквафор а800 инструкция по эксплуатации на русском
  • Camozzi mc202 d00 инструкция на русском
  • Babybjorn one air 3d mesh инструкция
  • Электрический триммер huter get 400 инструкция