Как перепрошить китайский Ардуино для работы с софтом Ардуино. CH340

Для того что бы создавать свои проекты на базе Arduino, вам будет необходимо писать прошивки и загружать их в ваш микроконтроллер. Эти функции позволяет выполнить среда разработки Arduino IDE. Есть и другие способы написания прошивок и загрузки скетчей в ардуинку, но самый простой — это использовать Arduino IDE. Далее я расскажу где можно скачать и какую версию лучше установить, как настроить и как пользоваться этой программой.

Cкачать Arduino IDE

Версия Windows Mac OS X Linux
1.6.5

Zip

Installer

Installer

32 bits

64 bits

1.8.2

Zip

Installer

Installer

32 bits

64 bits

ARM

Самый безопасный и надежный источник — это, конечно же, официальный сайт, но вы можете скачать самые популярные версии на этой странице по ссылкам выше. Самая свежая версия на момент написания статьи 1.8.2. Вы можете скачать ее, но многие рекомендуют скачивать версию 1.6.5, потому что она считается самой стабильной. Так же существует классическая версия Иде 1.0.6. Она не поддерживает работу с Arduino Yún и Arduino DUE. Так же эта линейка версий программ больше не поддерживается сообществом и обновляться не будет.

Для Windows есть возможность загрузки архива (Windows) и инсталлятора (Windows Installer). Архив можно использовать как Portable версию. А если вы устанавливаете среду разработки ардуино на свое постоянное рабочее место, то лучше выбрать Windows Installer.

Я использую последнюю версию, но у нее есть трудности при работе из другого редактора. Я долго пытался настроить функции программы в редакторе Sublime Text 3. Работать такая связка абсолютно не хотела, поэтому я просто отказался от этой идеи и оставил все как есть. Если вы хотите использовать свой любимый редактор, то лучше скачивайте версию 1.6.5.

Для загрузки выберите необходимую версию, подходящую под вашу операционную систему. Далее откроется страница с добровольными пожертвованиями. Arduino IDE является бесплатной программой. Вы можете просто скачать ее нажав на серую надпись «Just Download», или можете отблагодарить разработчиков добровольным взносом.

image

Установка Arduino IDE

Если вы скачали архив, то просто распакуйте его и запустите Arduino.exe.

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

Запускаем установочный файл. Соглашаемся с условиями лицензионного соглашения (естественно после прочтения).

image
Соглашаемся с условиями

Выбираем необходимые модули программы. Первые два должны быть отмечены обязательно. Остальные на ваше усмотрение.

Выбор компонентов Arduino ide

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

Выбор пути установки программы

Во время установки может появиться окно с предложением установки драйвера USB-to-serial. Соглашаемся и ждем окончания установки. На этом весь процесс завершен. Осталось настроить среду разработки и можно творить.

Настройка Arduino IDE

После установки необходимо настроить программу. Сделать это очень легко:

1. Сначала подключите вашу ардуинку к компьютеру с помощью USB кабеля.

2. Потом перейдите в «Пуск >> Панель управления >> Диспетчер устройств«. Там надо найти «Порты COM и LPT». В этом списке будет указана ваша arduino и порт к которому она подключена (COM2). Запомните это значение.

Если вашего микроконтроллера нет в списке, или он показан как неопознанное устройство, значит драйвер установлен неправильно, или у вас китайская плата с чипом CH340. Это не проблема. Просто вам нужен другой драйвер. Где его скачать и как установить я рассказал в этой статье.

Arduino Uno в диспетчере устройств

3. Теперь запускаем Arduino IDE и сразу идем в меню «Инструменты >> Порт«. Там необходимо выбрать тот COM порт, который вы запомнили.

Выбор COM порта

4. Далее надо выбрать плату. Для этого в меню»Инструменты >> Платы» выбираете модель вашей платы.

Выбор платы ардуино

На этом настройка закончена. Не забывайте, что эти настройки придется менять если вы подключите плату к другому USB порту или будите использовать другую плату.

Использование Arduino IDE

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

Примеры в Arduino IDE

Потом нажимаем кнопку «Загрузить» и ожидаем окончания загрузки скетча. После загрузки сразу должен начать мигать встроенный светодиод. Это значит что все работает так как надо. Теперь вы можете писать свои прошивки или использовать готовые. Описание функций языка программирования Arduino есть на странице моего сайта Программирование

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

1

Из чего состоит Arduino?

На аппаратном уровне это серия смонтированных плат, мозгом которых являются микроконтроллеры семейства AVR. Подробнее о том, чем микроконтроллер отличается от микропроцессора.

Платы имеют на борту всё необходимое для комфортной работы, но их функциональности часто бывает недостаточно. Чтобы сделать свой проект более интерактивным, можно использовать различные модули и платы расширений, совместимые с платформой Arduino. Сюда входят датчики (температуры, освещения, влаги, газа/дыма, атмосферного давления), устройства ввода (клавиатуры, джойстики, сенсорные панели) и вывода (сегментные индикаторы, LCD/TFT дисплеи, светодиодные матрицы).

На программном уровне платформа Arduino представляет собой бесплатную среду разработки Arduino IDE. Микроконтроллеры надо программировать на языке C++, с некоторыми отличиями и облегчениями, созданными для быстрой адаптации начинающих. Компиляцию программного кода и прошивку микроконтроллера среда разработки берёт на себя.

Существует также s4a.cat — сервис, базирующийся на Scratch, позволяющий более наглядно вести разработку на Arduino. Он подойдёт для обучения детей, а также если вы разово хотите создать простое устройство без изучения языка программирования Arduino и различных документаций. Для остальных же случаев лучше придерживаться традиционного процесса разработки.

2

Нужно ли уметь паять?

Знания в области электромонтажа приветствуются, но совсем не обязательны. Простые устройства на базе Arduino часто выполняются в виде макета. Для этого используется беспаечная макетная плата (англ. breadboard), на которой происходит коммутация модулей с платой Arduino с помощью перемычек.

Макетная плата на 400 отверстий (имеются шины питания по бокам). Источник

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

Набор для изучения Arduino. Источник

3

Какие бывают платы

По производителю

Существуют как официальные версии плат Arduino, так и платы от сторонних производителей. Оригинальные платы отличаются высоким качеством продукта, но и цена тоже выше. Они производятся только в Италии и США, о чём свидетельствует надпись на самой плате.

На примере самой популярной платы Arduino UNO:

  • Оригинальная плата. Поставляется только в фирменной коробке, имеет логотип компании, на портах платы — маркировка. Цена от производителя 20 €.

    Оригинальная плата Arduino UNO. Источник

  • Плата от стороннего производителя. Качество хуже, однако цена начинается от 150 рублей. Качество платы может отразиться на её работоспособности в дальнейшем. Хоть это и редкость, но плата и вовсе может не работать «из коробки» — всё зависит от добросовестности изготовителя и продавца. Для работы с подобными платами требуется драйвер CH340, который находится в свободном доступе. Во всём остальном процесс разработки идентичен процессу разработки на оригинальных платах.

    Плата Arduino UNO от стороннего производителя. Источник

По назначению

У платы UNO достаточно портов для реализации большинства проектов. Однако иногда возможностей UNO может быть недостаточно, а иногда — избыточно. По этой причине как оригинальный, так и сторонние производители выпускают большое количество плат, различающихся характеристиками микроконтроллера, количеством портов и функциональным назначением.

Различные платы Arduino. Источник

Самые популярные из них:

  • Arduino Nano — различие с UNO только в конструктивном исполнении. Nano меньше.
  • Arduino Mega — плата на базе мощного микроконтроллера. Имеет большое количество портов.
  • Arduino Micro — имеет встроенную поддержку USB-соединения, а потому может использоваться как HID-устройство (клавиатура, мышь, MIDI-устройство).
  • Arduino Ethernet — имеет возможность подключения к сети через Ethernet-провод. На плате также расположен слот для microSD карточки.
  • Arduino Mini — по характеристикам немного уступает UNO. Преимуществом платы является её миниатюрное исполнение.
  • Arduino Due — плата на базе 32-разрядного ARM микроконтроллера. Имеет преимущество в производительности по сравнению с остальными.
  • Arduino LilyPad — форм-фактор позволяет использовать плату в предметах одежды и текстиля.
  • Arduino Yún — «нужно было ставить линукс…». Имеет поддержку дистрибутива Linux, встроенную поддержку Ethernet и Wi-Fi, слот для microSD. Как и Micro, имеет встроенную поддержку USB-соединения.

4

Установка ПО

После выбора необходимой платы нужно установить бесплатную среду разработки Arduino IDE, которую можно найти на официальном сайте, а также, по необходимости, драйвер CH340.

Недавно открылась облачная платформа Arduino Create, которая покрывает большинство этапов разработки (от идеи до сборки). Вам не нужно ничего устанавливать на свой компьютер, всё необходимое платформа берёт на себя. В первую очередь — онлайн редактор кода.

В Arduino Create имеется доступ к обучающим материалам, проектам. Вы сможете общаться с профессионалами и помогать новичкам.

Среда разработки Arduino IDE

5

Особенности программирования на платформе Arduino

Термины

Программный код для Arduino принято называть скетчами (англ. sketches). У скетчей есть два основных метода: setup() и loop(). Первый метод автоматически вызывается после включения/сброса микроконтроллера. В нём происходит инициализация портов и различных модулей, систем. Метод loop() вызывается в бесконечном цикле на протяжении всей работы микроконтроллера.

Порты — неотъемлемая часть любого микроконтроллера. Через них происходит взаимодействие микроконтроллера с внешними устройствами. С программной стороны порты называются пинами. Любой пин может работать в режиме входа (для дальнейшего считывания напряжения с него) или в режиме выхода (для дальнейшей установки напряжения на нём).

Любой пин работает с двумя логическими состояниями: LOW и HIGH, что эквивалентно логическому нулю и единице соответственно. У некоторых портов есть встроенный АЦП, что позволяет считывать аналоговый сигнал со входа (например, значение переменного резистора). Также некоторые пины могут работать в режиме ШИМ (англ. PWM), что позволяет устанавливать аналоговое напряжение на выходе. Обычно функциональные возможности пина указываются на маркировке самой платы.

Основные функции

Для базовой работы с платой в библиотеке Arduino есть следующие функции:

  • pinMode(PIN, type) — указывает назначение конкретного пина PIN (значение typeINPUT — вход, OUTPUT — выход);
  • digitalWrite(PIN, state) — устанавливает логическое состояние на выходе PIN (stateLOW — 0, HIGH — 1);
  • digitalRead(PIN) — возвращает логическое состояние со входа PIN (LOW — 0, HIGH — 1);
  • analogWrite(PIN, state) — устанавливает аналоговое напряжение на выходе PIN (state в пределах от 0 до 255);
  • analogRead(PIN) — возвращает значение аналогового уровня сигнала со входа PIN (пределы зависят от разрядности встроенного АЦП. Обычно разрядность составляет 10 бит, следовательно, возвращаемое значение лежит в пределах от 0 до 1023);
  • delay(ms) — приостанавливает исполнение скетча на заданное количество миллисекунд;
  • millis() — возвращает количество миллисекунд после момента запуска микроконтроллера.

В остальном процесс программирования на Arduino такой же, как на стандартном C++.

6

Пишем первую программу

Вместо всем привычных Hello World’ов в Arduino принято запускать скетч Blink, который можно найти в ФайлПримеры01.BasicsBlink. Там же можно найти множество других учебных скетчей на разные темы.

Почти на всех платах размещён светодиод, номер пина которого содержится в переменной LED_BUILTIN. Его можно использовать в отладочных целях. В следующем скетче будет рассмотрен пример управления таким светодиодом.

Рассмотрим скетч Blink:

// Эта функция запускается при старте микроконтроллера  void setup() {    // Назначаем пин выходом. На пине LED_BUILTIN находится встроенный светодиод, размещённый на плате    pinMode(LED_BUILTIN, OUTPUT);  }    // Эта функция вызывается циклически  void loop() {    digitalWrite(LED_BUILTIN, HIGH);   // Включаем светодиод (подаём на него логическую 1 — напряжение питания микроконтроллера)    delay(1000);                       // Ждём секунду    digitalWrite(LED_BUILTIN, LOW);    // Выключаем светодиод (подаём на него логический 0 — напряжение земли)    delay(1000);                       // Ждём секунду  }  

Прошивка

После написания необходимо «залить» скетч на микроконтроллер. Как уже говорилось, платформа Arduino берёт весь процесс прошивки микроконтроллера на себя — вам лишь необходимо подключить плату к компьютеру.

Перед прошивкой микроконтроллера нужно выбрать вашу плату из списка в IDE. Делается это во вкладке ИнструментыПлата. Большинство существующих плат уже там есть, но при необходимости можно добавлять другие через Менеджер Плат.

После этого нужно подключить плату Arduino к любому USB-порту вашего компьютера и выбрать соответствующий порт во вкладке ИнструментыПорт.

Теперь можно приступать к прошивке микроконтроллера. Для этого достаточно нажать кнопку Загрузка, либо зайти на вкладку СкетчЗагрузка. После нажатия начнётся компиляция кода, и в случае отсутствия ошибок компиляции начнётся прошивка микроконтроллера. Если все этапы выполнены правильно, на плате замигает светодиод с периодом и интервалом в 1 сек.

7

Обмен данными с компьютером

У всех плат Arduino есть возможность обмена информацией с компьютером. Обмен происходит по USB-кабелю — никаких дополнительных «плюшек» не требуется. Нам нужен класс Serial, который содержит все необходимые функции. Перед работой с классом необходимо инициализировать последовательный порт, указав при этом скорость передачи данных (по умолчанию она равна 9600). Для отправки текстовых данных в классе Serial существуют небезызвестные методы print() и println(). Рассмотрим следующий скетч:

void setup() {    Serial.begin(9600); // Инициализируем последовательный порт на скорости 9600 бод  }    void loop() {    Serial.println("T for Tproger"); // Отправляем сообщение по последовательному порту и переводим на новую строку    delay(1000); // Ждём секунду  }

В Arduino IDE есть Монитор порта. Запустить его можно через ИнструментыМонитор порта. После его открытия убедитесь, что Монитор работает на той же скорости, которую вы указали при инициализации последовательного порта в скетче. Это можно сделать в нижней панели Монитора. Если всё правильно настроено, то ежесекундно в Мониторе должна появляться новая строка «T for Tproger». Обмен данными с компьютером можно использовать для отладки вашего устройства.

Информацию на стороне компьютера можно не только получать, но и отправлять. Для этого рассмотрим следующий скетч:

void setup() {    Serial.begin(9600); // Инициализируем последовательный порт на скорости 9600    pinMode(LED_BUILTIN, OUTPUT); // Инициализируем порт со светодиодом как выход  }    void loop() {    if (Serial.available() > 0) // Если в буфере есть байт для чтения, то...      switch (Serial.read()) { // Считываем байт с буфера        case '1': digitalWrite(LED_BUILTIN, HIGH); // Если байт равен '1' — включаем светодиод          break;        case '0': digitalWrite(LED_BUILTIN, LOW); // Если байт равен '0' — выключаем светодиод          break;        case 'T': Serial.println("proger"); // Если байт равен 'T' — отправляем по серийному порту текст "proger"      }    }  

Прошиваем микроконтроллер и возвращаемся в Монитор порта. Вводим в верхнее поле 1 и нажимаем Отправить. После этого на плате должен загореться светодиод. Выключаем светодиод, отправив с Монитора . Если же отправить символ T, в ответ мы должны получить строку «proger».

Таким способом можно пересылать информацию с компьютера на Arduino и обратно. Подобным образом можно реализовать связь между двумя Arduino.

8

А как подключать модули?

Для работы с датчиками и модулями их изготовители создают специальные библиотеки. Они служат для простой интеграции модулей в вашу систему. Подключение библиотеки возможно с zip файла или с помощью Менеджера Библиотек.

Однако большое количество датчиков являются бинарными, т. е. считывать информацию с них можно простой функцией digitalRead().

9

Что изучить дальше?

  • Синтаксис библиотеки Arduino.
  • Для более сложных архитектур может пригодиться ООП.
  • Примеры проектов.
  • Работа на макетной плате.
  • Основные модули и датчики.

Александр Ланский

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

Что такое ISP?

ISP (In-System Programming) расшифровывается как внутрисхемное программирование. Это технология, которая позволяет программировать микроконтроллер, установленный в устройство. До появления этой технологии микроконтроллеры программировались перед установкой в устройство, а для их перепрограммирования требовалось их извлечение из устройства. Существует 2 основных подхода внутрисхемного программирования:

  • С использованием программатора. В этом случае программатор работает напрямую с памятью микроконтроллера, самостоятельно размещая байты прошивки по нужным адресам. Микроконтроллер в этом процессе не участвует.
  • С использованием загрузчика. Загрузчик, он же бутлоадер (от английского bootloader) — это программа, записанная обычно в конце ПЗУ микроконтроллера, которая берет на себя функции программатора. При включении микроконтроллера управление сначала передается загрузчику. Он проверяет наличие определенных условий, сообщающих о необходимости перейти в режим программирования. Если условия не выполнены, то управление передается основной программе, в противном случае загрузчик принимает данные по заранее определенному интерфейсу и размещает их в ПЗУ. Таким образом микроконтроллер перепрограммирует сам себя.

Одной из важнейших особенностей Ардуино является возможность программирования непосредственно через USB порт, без дополнительного программатора. Сразу после включения Ардуино запускается загрузчик, который работает несколько секунд. Если за это время загрузчик получает команду программирования от IDE по последовательному интерфейсу UART, то он принимает и загружает новую программу в память микроконтроллера. Использование загрузчика существенно упрощает процесс перепрограммирования микроконтроллера, что особенно полезно при отладке. Но за удобство приходится платить. Во-первых, загрузчик занимает часть ПЗУ и для программы пользователя остается меньший объем памяти. Во-вторых, загрузчик не может изменить Fuse-биты и Lock-биты (в отличие от программаторов). Ну и, конечно, не обойтись без программатора, если вы хотите обновить бутлоадер или загрузить его в чистый МК. Таким образом существует ряд задач, которые могут быть выполнены только с использованием программатора. Если же у вас нет аппаратного программатора, то вместо него можно воспользоваться Ардуино, о чем и будет рассказано дальше.

Arduino as ISP. Прошивка загрузчика в Ардуино.

Итак, мы решили превратить Ардуино в программатор. Для примера попробуем прошить загрузчик в целевую плату Ардуино. Сначала подготовим плату, которую будем использовать в качестве программатора. Для этого загрузим в нее скетч ArduinoISP, его можно найти в стандартных примерах: Теперь подсоединим к ней плату, в которую хотим прошить загрузчик. При прошивке используются линии SPI (Serial Peripheral Interface — последовательный периферийный интерфейс). Выводы MOSI, MISO и SCK обеих плат должны быть соединены, а вывод SS Ардуино-программатора подключается к выводу Reset целевой платы. И еще 2 провода нужны чтобы запитать целевую плату. Также может потребоваться предотвратить автоматическую перезагрузку платы-программатора, для этого между ее выводами Reset и GND нужно установить электролитический конденсатор на 10мкФ. Сначала можно попробовать без конденсатора, если же прошивка не начнется, то попробуйте добавить в схему конденсатор. По моим наблюдениям конденсатор нужен при использовании дешевых Ардуино-клонов (без контроллера ATmega8u2) в качестве программатора. Если мы работаем с двумя платами Arduino Uno, то схема их подключения может выглядеть следующим образом: Если используются не Uno, а другие платы Ардуино, то перед подключением программатора к целевой плате необходимо уточнить расположение на них выводов MOSI, MISO и SCK. Их расположение для различных плат приведено ниже в таблице. Как вы можете видеть, не на всех платах Ардуино линии SPI мультиплексированны с цифровыми выводами, поэтому для подключения к данному интерфейсу необходимо использовать разъем ICSP. Ниже показан пример подключения Uno в качестве программатора к плате Nano через ICSP разъем.

Плата Ардуино MOSI MISO SCK Уровень
Uno, Duemilanove 11 или ICSP-4 12 или ICSP-1 13 или ICSP-3
Nano 11 или ICSP-4 12 или ICSP-1 13 или ICSP-3
Pro Mini 11 12 13 3.3В или 5В
Mega1280, Mega2560 51 или ICSP-4 50 или ICSP-1 52 или ICSP-3
Leonardo ICSP-4 ICSP-1 ICSP-3 
Due ICSP-4 ICSP-1 ICSP-3  3.3В
Zero ICSP-4 ICSP-1 ICSP-3 3.3В
101 11 или ICSP-4 12 или ICSP-1 13 или ICSP-3 3.3В
Подключение Uno в качестве программатора к плате Nano через ICSP

Обратите внимание на нумерацию выводов ICSP платы Nano: она начинается с правого нижнего угла. Поэтому на приведенной схеме Arduino Nano перевернута. Теперь необходимо вернуться в Arduino IDE и изменить в ней параметры:

  1. В меню Инструменты > Плата выбираем вариант, соответствующий нашей целевой плате.
  2. В меню Инструменты > Программатор выбираем Arduino as ISP.

Подключаем плату-программатор к компьютеру, открытый в данный момент скетч значения не имеет, выбираем пункт меню Инструменты > Записать загрузчик и дожидаемся сообщения об успешном завершении операции. На этом прошивка бутлоадера в Ардуино завершена. Кроме того процедура прошивки бутлоадера включает в себя установку фьюзов микроконтроллера. Подробнее о фьюзах будет рассказано в следующей публикации. Резюмируя вышеописанное, выделим основные шаги для прошивки загрузчика с использованием Ардуино в качестве ISP программатора:

  • Запускаем Arduino IDE, открываем из примеров скетч ArduinoISP и загружаем его в плату Ардуино, которую будем использовать как программатор.
  • Подключаем к Ардуино-программатору целевую плату по приведенной схеме.
  • Меняем плату в Arduino IDE на целевую.
  • Выбираем в IDE программатор Arduino as ISP.
  • Записываем загрузчик в целевую плату командой из меню IDE.

Прошивка скетча с использованием Arduino as ISP

Еще один пример использования программатора — это загрузка скетча в целевую плату. Разумеется, это проще сделать привычным способом, подключив ее напрямую к компьютеру, но это может оказаться невозможным, например, при выходе из строя контроллера ATmega8u2/ATmega16u2 или преобразователя USB/UART. Если при этом основной микроконтроллер Ардуино остался рабочим, то мы можем прошить его, используя программатор. Для этого выполняем все шаги, описанные выше, но на последнем этапе вместо записи загрузчика необходимо:

  • Открыть в Arduino IDE интересующий скетч.
  • Загрузить скетч в целевую плату командой из меню IDE: Скетч > Загрузить через программатор.

Таким образом можно подарить вторую жизнь плате Ардуино, которую компьютер уже не видит через USB.

Прошивка является популярным способом распространения программ для ардуино и микроконтроллеров.

Здесь описана процедура загрузки прошивки микроконтроллера платы Arduino.

Данная инструкция позволит вам установить прошивку на наиболее популярные платы такие как Nano, UNO, Leonardo, Mini, Pro Micro и другие, собранные на микроконтроллере atmega328p, atmega168, atmega32u4 и других.

Для прошивки других типов плат обратитесь за помощью (http://jarduino.ru/support).

О прошивках Arduino

Не стоит путать прошивку со скетчем!

Скетч – это исходный код прошивки.

Прошивка ардуино – это скомпилированный (бинарный) файл, загружаемый в плату Arduino (в микроконтроллер).  Прошивка не является исходным кодом программы (скетча). Файл прошивки обычно имеет расширение HEX.

Преимущество прошивки – это простота ее использования:

  • Не нужны никакие библиотеки,
  • Легко загрузить и выгрузить,
  • Можно перенести с одного устройства на другое.

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

Вместе с прошивкой часто может поставляться и копия памяти ПЗУ (EEPROM), в которой хранятся данные, необходимые для работы устройства.

Способы прошивки Arduino

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

Рассмотрим пару наиболее популярных программ прошивки.

XLoader

Самая простая и лаконичная программа, которая подойдет любому, кому просто надо загрузить hex на популярную Arduino.

Xloader

Загрузка прошивки интуитивно понятна:

  • Выбираем…
    • файл прошивки
    • плату ардуино
    • COM-порт
    • Скорость передачи данных
  • Нажимаем кнопку Upload (Загрузить).

Последняя версия – 1.0.

Скачать.

Не может загружать EEPROM.

SinaProg

SinaProg – это уже более профессиональная и универсальная программа, разработанная неизвестными иранскими программистами. Однако сразу надо сказать, что данная программа – не более чем графическая оболочка для утилиты AVRDude, о которой пойдет речь дальше.

Универсальная оболочка для AVRDude
  1. Выбираем файл прошивки
  2. Настраиваем программатор: выбираем…
  3. Arduino,
  4. Порт
  5. Скорость передачи

Последняя версия — 2.1.1

Avrdude

Большинство всех загрузчиков используют одну и ту же утилиту – AVRDude (AVR Downloader-Uploader), которая давно вошла во многие среды разработки для ардуино, в т.м. числе и в Arduino IDE.

Это мощнейшая утилита для работы с чипами AVR, но все-таки это утилита командной строки, что многим неудобно.

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

Читайте в следующем параграфе как прошить ардуино и с его помощью.

Последняя версия – 6.3.

Arduino IDE, AVRDude

Рассмотрим как загрузить прошивку, имея только Arduino IDE на компьютере с Windows.

Напомню, что вместе с Arduino IDE ставится и AVRDude, с помощью которого мы и загрузим прошивку.

Установка программного обеспечения

  • Установить программу Arduino IDE, если она не установлена
    • В ряде случаев потребуется установить дополнительный драйвер вашей платы (если плата – китайский клон). Драйвер нужен только в случае если вы не видите вашу плату в Arduino IDE.

Подготовка

  • Подключить плату к компьютеру
  • Запустить Arduino IDE
  • Определить к какому порту подключена Arduino, через меню, как показано ниже:
Выбор COM-порта ардуино
  • Определите в какой папке установлена Arduino IDE

Обычно – «C:Program Files (x86)Arduino»

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

  • Открываете командную строку и вводите следующую команду, предварительно скорректировав ее под свои условия:

«C:Program Files (x86)Arduinohardwaretoolsavr/bin/avrdude» -«C:Program Files (x86)Arduinohardwaretoolsavr/etc/avrdude.conf» -v -patmega328p -carduino -PCOM3 -b115200 -D -Uflash:w:Firware.hex:i

Обратите внимание на:

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

Если при выполнении команды вы увидите ошибку как ниже

 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xd2 
Ошибка avrdude, avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xd2

, значит ваша плата не может работать со скоростью 115200, и необходимо установить скорость 57600.

Нажмите CTRL+C, чтобы прервать процесс.

Получение помощи

Если у вас что-то не получилось, и вы являетесь нашим клиентом, обратитесь на страницу поддержки.

Часто задаваемые вопросы о прошивке

Какой COM-порт выбирать?

Такой вопрос возникает обычно, когда программа не может автоматически выбрать COM-порт, к которому подключена Arduino.

Прежде всего, чтобы ардуино определялась, необходимо, чтобы на компьютере были установлены ее драйвера. Они ставятся вместе с Arduino IDE. Для китайских удешевлённых колонов может понадобится поставить драйвер CH340.

Итак, драйвера установлены, теперь выберем правильный порт.

Порт можно посмотреть в Arduino IDE…

Выбор COM-порта в Arduino IDE

… или, если вы на Windows, в диспетчере устройств:

Определение COM-порта, к которому подключена Arduino через диспетчер устройств Windows.

Однозначно, это не COM1. Поэтому, в моем случае это будет COM3.

Какую скорость выбрать?

Скорость передачи зависит от версии платы. Если мы говорим о популярных Nano или UNO, то скорость будет 115200. Однако, если вы имеете дело с китайский клоном, то, возможно, придется выбрать 57600.

В общем, рецепт прост: если не получается с одной скоростью, тут же пробуете другую.

В прошлой статье 

мы проговорили общие моменты и теперь имеем неплохое представление об Arduino в целом. И теперь уже настало время приступить к практике

.

Скачать Adruino IDE

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

 

Adruino IDE для Windows 7 и выше.

Adruino IDE для MAC OC X 10.10 и выше.

Adruino IDE для Linux 32 бита.

Adruino IDE для Linux 64 бита.

Adruino IDE для Linux ARM 32 бита.

Adruino IDE для Linux ARM 64 бита.

Внимание! Если у вас Windows 8.1 или 10, то нужно скачать приложение на .

Также скачать Ардуино IDE бесплатно можно на официальном сайте (англ.): 

image

При скачивании, нам предложат сделать пожертвование, но это вовсе не обязательно:

image

И так мы качаем установочный файл, в архиве (.zip) или сразу сам файл, и начинаем устанавливать. Тут все как обычно при установке программ.

image

На рабочем столе появится ярлык программы, давайте запустим и посмотрим.

image

Тут пишется код программы. И мы уже видим написанных две функции, это необходимый минимум.  То, что происходит в теле функции setup() выполняется при включении платы, то есть при подаче на нее питания.  То, что происходит в теле функции loop() выполняется после полной отработки функции setup(). Но у функции loop() есть одна важная отличительная черта: программа из этой функции выполняется по кругу,  бесконечное кол-во раз, пока работает ArduinoNano.

Подключаем ArduinoNano к компьютеру

Программа для разработки установлена, теперь давайте подключим плату к компьютеру. Подключаем по USB-кабелю.

image

В диспетчере устройств должно появиться новое устройство в разделе – «Порты». Но у нас не появилось. Зато есть неизвестное устройство в разделе — «Другие устройства».

image

Так и должно быть.  Дело в том, что для связи платы и компьютера используется микросхема CH340. Следовательно, необходимо установить драйвер — просто вбейте в поисковик «ch340 драйвер скачать» и установите этот драйвер на компьютер.

image

Снова заходим в диспетчер задач и видим плоды установки драйвера. В разделе «Порты» появилось новое устройство с номером COM-порта три.

image

Отлично, компьютер видит нашу ArduinoNano. Возвращаемся в IDEArduino. Теперь необходимо ее настроить, но это очень просто. Сначала заходим во вкладку «инструменты» и выбираем тип платы, потом микроконтроллер (обратить внимание, какой конкретно я выбрал) и напоследок выбираем номер порта, его-то мы точно знаем.

Теперь даже если мы закроем IDEArduino, то настройки останутся прежними. И, конечно же, после установки всего этого стоит перезагрузить компьютер (даже если у Вас windows 10).

Первая программа

Теперь настало время написать первую тестовую программу. Это совсем не сложно. Для начала предлагаю просто скопировать код у меня, а уже после мы разберемся, как это работает.

Код:

void setup() {

  pinMode(13, OUTPUT);

}

void loop() {

  digitalWrite(13, HIGH);

  delay(200);

  digitalWrite(13, LOW);

  delay(200);

}

Теперь нам необходимо нажать кнопку – «Загрузка».  Выглядит она как стрелочка вправо. При этом среда разработки предложит сохранить код.  Важно сохранить его по правильному пути, в котором не будет русских символов, иначе при компиляции будет ошибка.

Теперь давайте введем новое определение: тут куски кода, наши программы называются – скетч.  Если скетч загрузился успешно, то мы увидим следующую надпись – «Загрузка завершена».

А если появится какая-то ошибка, то советую вернуться на несколько этапов назад и попытаться понять, что Вы пропустили.

Все-таки скетч загрузился в ArduinoNano, и что же мы должны увидеть? Светодиод L, расположенный на плате, должен начать быстро моргать (гаснуть и зажигаться). Именно это и делает наша программа.  Примерно такой же программой обычно тестируют данные модули перед продажей, только как правило, у них стоит задержка 1000мс (1 секунда), а мы поставили 200 мс, то есть светодиод стал моргать гораздо быстрее.

Разбор кода

Давайте разберем скетч, тут все достаточно просто. Как я уже говорил, у нас имеются две функции, как они записаны Вы уже видели. Каждая функция имеет открывающуюся и закрывающуюся фигурную скобку.  То, что между фигурными скобками, и называется телом функции. В теле функции находятся команды, которые в последствии выполняет МК.

Каждая команда пишется в отдельной строке и заканчивается «;».

Давайте разберем одну единственную команду из функции setup().

pinMode(13, OUTPUT);

Тут я вызываю метод, инициализирующий вывод МК — pinMode(). И передаю туда два параметра: первый параметр (13) обозначает номер вывода, который необходимо задействовать. Второй параметр (OUTPUT) обозначает, что данный вывод будет работать как выход МК.  Говоря другими словами, мы сообщили программе, что у нас будет задействован вывод D13 и он будет в дальнейшем управляться этой же программой, которая будет подавать и убирать напряжение на данный вывод.

Теперь перейдем к функции loop(), тут немного больше команд, но не намного сложнее. Возьмём первую команду из 6 строки.

digitalWrite(13, HIGH);

Вызывается метод управления состоянием вывода — digitalWrite().  И также, как в предыдущей команде, мы передаем два параметра. Думаю, Вы уже догадались, что первый параметр отвечает за номер ноги, кстати говоря, обычно пишут немного по-другому, но пока что мы не будем забивать этим голову. А второй параметр (HIGH) говорит программе, что на этот вывод необходимо подать напряжение. Сразу же обратим внимание на 8 строку. Там то же самое, но вторым параметром идёт значение – LOW, это говорит программе, что с 13 ноги нужно снять напряжение.

Теперь не разобранной осталась еще одна команда, которая используется в 7 и 9 строке – delay(200). Но чутье подсказывает мне, что вы уже и без меня догадались, что эта команда делает. Но все же проговорить будет не лишним.  Вызываем метод delay(),  что бы произвести задержку в выполнении  программы, так как сама функция loop() повторяется с огромной скоростью.  И параметр, который мы в данном случае передаем (200), равняется 200 мс (0,2 секунды).

Теперь вопрос, который интересовал внимательного читателя до данного момента: как связаны 13 вывод и светодиод Lна плате?  И это правильный вопрос. Дело в том, что этот светодиод питается от 13 вывода. Данное решение существует специально для отладки и не более того.

Заключение

Мы установили необходимый софт, подключили плату и написали простейшую программу. И это говорит нам только об одном: мы медленно, но верно движемся к своей цели – управлять адресными лентами на основе светодиода ws2812b. Движемся с толком, и когда перед нами появятся 

более серьезные задачи

, мы будем полностью готовы и вооружены нужными знаниями.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
А как считаете Вы?
Напишите в комментариях, что вы думаете – согласны
ли со статьей или есть что добавить?
Добавить комментарий