Андрей Смирнов
Время чтения: ~13 мин.
Просмотров: 1

Супер-быстрый старт с Ардуино: берёшь и делаешь

Загрузка скетча в Arduino Nano, ничем не отличается от загрузки на другие платформы, например Uno или Mega.   Для загрузки можно использовать программу Arduino IDE специально разработанную компанией для этих целей. На момент написания статьи последней версией была 1.8.9. Она полностью поддерживает русский язык и теперь в мониторе порта можно читать русские буквы.  Если вы уже подключили вашу плату к компьютеру(если нет, то читайте как это сделать «Первое подключение Arduino к компьютеру»), то надо открыть Arduino IDE и настроить её для дальнейшей работы с вашей Arduino Nano.

купить Arduino Nano 

Сначала вам нужно установить вашу плату Arduino Nano

Теперь выбираем процессор. Если у вас Arduino Nano 3.0, то у вас процессор ATmega328P, если версия 2.хх, то ATmega168. Про различия платформ Arduino можно прочитать статью Arduino Nano, Pro Mini, Uno, Mega, а конкретно про отличия версий Nano . Возможно вам придётся попробовать выбрать ATmega328P(Old bootloader)

Затем выбрать порт к которому у вас подключена плата(у вас возможно будет другой COM). Если у вас не отображается порт, то скорее всего у вас не установлен драйвер.Скачать  Драйвера CH340G Для WIN  скачать Для MAC скачать Для LINUX скачать

Очень часто в Arduino Nano уже установлен скетч blink и при подаче питания на плату, например при подключении к компьютеру через USB кабель у вас начнёт мигать светодиод установленный на плате. Если нет, то мы сейчас это исправим.

Загрузка скетча в Arduino Nano

Нажимаем Загрузить

Снизу страницы у вас должна появиться примерно такая запись и светодиод должен замигать раз в секунду. Скетч загрузился в микроконтроллер.

1 строчка delay это сколько светодиод светится

2 строчка delay сколько он находится в выключенном состоянии

Ну вот вы и загрузили свой первый скетч.

Поздравляю.

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

arduino_nano.jpg

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

arduino_nano_shema.jpg

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

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

Где приобрести?

Купить платы Arduino вы можете в нашем магазине!

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

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).

Рисунок №4 – электрическая схема Arduino Nano

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

Для пользователя платы ArduinoNano доступно 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;

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

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

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

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

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

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

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

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

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

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

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

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

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

Вывод платы 

Arduino Nano

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

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

Генерация 

ШИМ

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

Serial (RX)

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

Serial (TX)

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

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

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

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

есть 

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

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

есть 

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

есть 

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

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

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

есть 

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

10 

SPI (SS)

есть 

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

11 

SPI (MOSI)

есть 

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

12 

SPI (MISO)

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

13 

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

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

А0 

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

А1 

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

А2 

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

А3 

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

А4 

I2C (SDA)

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

А5 

I2C (SCL)

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

А6

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

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

А7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Загружаем первый скетч в Arduino

1111111111Рейтинг 5.00 (1 Голос)

  Загрузка первого скетча, это состояние восторга не покидает продолжительное время. Описать то что ты испытываешь в момент удачи очень сложно, особенно если ты не когда ранее не имел дела с программируемой радиоэлектроникой. В голове крутятся мысли, идеи, и хочется скорее узнать на что же ещё способен этот кусок текстолита и набор радиодеталей ! Если вы прошли этап Arduino uno R3 CH340G подключение и настройка.  к компьютеру, мы можем приступить к следующим действиям.

Первый скетч совсем не обязательно искать на просторах интернета или писать самому. Arduino IDE обладает набором предустановленных библиотек и примеров, которые вы можете использовать в своих проектах при дальнейшей работе с контроллером.  Для начала откроем Arduino IDE и переходим на вкладку Файл в верхнем меню окна, далее наводим указатель мыши на пункт Примеры.  Примеров скетчей много, но я предлагаю остановить выбор на скетче Blink в категории примеров Basics. Скетч очень простой и не требует каких либо дополнительных элементов для своей демонстрации.  

 2018-02-14_00-41-25.png

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

2018-02-15_00-00-24.png

   Давайте немного разберём что несёт в себе этот скетч. С 1 по 23 сточку мы видим текст серого цвета. Этот текст несёт информационный характер и описывает пользователю некоторые параметры работы данного скетча, также автор этого скетча может оставить контактную информацию о себе. Эти строчки закомментированы и при прошивке контроллера они не загружаются в него. Закомментировать текст можно двумя способами. Первый способ будет удобен если нужно скрыть от загрузчика несколько строк, в таком случае используется знак /* в начале комментариев, */ в конце комментариев, как в первой и двадцать третьей строке. Второй способ больше подходит для описания части кода или какой либо функции, для этого используется // текст или код попавший за двойной слеш // в пределах одной строки будет скрыт от загрузки в контроллер, что мы можем наблюдать в остальной части кода. Кстати, если вы в дальнейшем планируете писать скетчи сами то, считается хорошим тоном оставлять описание параметров работы скетча и комментариев к функциям. Из описания которое оставил нам автор понятно следующее, что этот скетч заставляет встроенный в плату контроллера светодиод и привязанный к 13 цифровому пину, моргать с частотой в 1000 миллисекунд. 

Я чувствую что вам уже не терпится побыстрее что нибудь загрузить в вашу Ардуинку. Для этого в верхней части окна находим 5 кнопок и нажимаем кнопку загрузить.

2018-02-15_02-40-16.png

 После нажатия кнопки начинается процесс компиляции кода и проверки его на наличие ошибок. Если загрузка кода проходит удачно, то об этом нас информирует строка состояния загрузки.

2018-02-15_03-58-09.png

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

  Для большего понимания работы этого скетча, давайте немного отредактируем код и посмотрим что изменилось. Переходим на 34 строку кода и изменим время паузы,   delay(1000); изменим на  delay(10000); .

sh.png

 В результате этих манипуляций программа работы нашего контроллера изменилась. И сейчас светодиод на контроллере загорается не на 1 секунду как это было при загрузке исходного кода, а на 10 секунд. Сейчас мы программно указали в 33 строчке включить светодиод и этот светодиод будет гореть до тех пор пока относительно него не поступит другой команды. Поэтому в 34 строчке мы ставим паузу в  10 секунд а в 35 строчке гасим светодиод. Должно получится что то вроде ниже представленного изображения.

  Как мне кажется представленной информации достаточно для начала работы с контроллером и мне остаётся только пожелать вам успехов и огромных результатов в ваших начинаниях.

Чтобы комментировать войдите или зарегистрируйтесь !

Используемые источники:

  • http://arduino-kid.ru/arduino_nano_zagruzka_scetcha
  • https://3d-diy.ru/wiki/arduino-platy/arduino-nano/
  • https://gabs.su/arduino/37-zagruzhaem-pervyj-sketch-v-arduino

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации