Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Содержание

Как программировать и управлять Arduino с помощью Python

Python взял штурмом мир кодирования. Наряду с появлением этого нового языка, сцена электроники DIY также процветала. Макетные платы и одноплатные компьютеры от таких компаний, как Arduino

и малиновый пи

изменили способ создания домашней электроники. Разве это не было бы здорово, если бы вы могли программировать Arduino с Python?

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

Эта статья покажет вам, как настроить Arduino UNO (хотя любая Arduino-совместимая плата

может работать здесь) для программирования и управления из командной строки с помощью программ Python. Этот учебник написан для Windows 10, но также работает для Mac и Linux. Вы даже можете использовать этот рабочий процесс для управления Arduino напрямую с Raspberry Pi

для окончательного двойного опыта DIY.

Настройка вашего Arduino для Python

Для сегодняшнего проекта мы будем использовать Arduino Uno вместе с интерфейсом pyFirmata для Python. Для этого вы можете использовать практически любую Arduino-совместимую плату, хотя на момент написания интерфейса PyFfirmata поддерживались только Arduino Uno, Mega, Due и Nano. Если вы уже являетесь гуру Python, вы можете добавить свою собственную поддержку плат в pyFirmata — обязательно обновите их GitHub, если вы это сделаете!

Если вы этого еще не сделали, установите Arduino IDE. Если вы новичок в мире микроконтроллеров, наш путеводитель по Arduino для начинающих

поможет вам все на месте.

Подключите плату Arduino и откройте IDE. Убедитесь, что вы выбрали правильную плату и порт в инструменты меню. Загрузите StandardFirmata Пример наброска и выгрузка его на доску. Это позволит вам напрямую управлять Arduino, если он подключен к компьютеру через USB. Если эскиз загружен на вашу доску без ошибок, вы готовы двигаться дальше.

Python и контроль командной строки

Мы будем использовать Python 3.4 для управления нашим Arduino, так как модуль, который вы будете устанавливать, определяет его как последнюю совместимую версию. Любая версия до этого должна работать нормально, и сообщалось, что более поздние версии будут работать. Вы можете скачать Python 3.4 для Windows 10 с сайта Python Software Foundation. Если вы хотите запустить несколько версий Python, наше руководство по виртуальным средам Python

смогу вам помочь.

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

Если вы уже видите ДОРОЖКА в списке нажмите «Изменить» и добавьте питон а также Python / Scripts каталог. Если у вас нет переменной PATH, нажмите new и добавьте ее. Обратите внимание, что Python был установлен прямо в

C: \ Вот. Если вы установили его в другом месте, вам нужно изменить его, чтобы отразить это. Нажмите OK, чтобы вернуться в цепочку окон, и вы почти готовы управлять своим Arduino с помощью Python!

Волшебная смазка

Вам понадобится один последний кусочек головоломки, чтобы Python хорошо говорил с нашим Arduino. Это происходит в форме интерфейса Python под названием pyFirmata. Этот интерфейс, созданный Tino de Bruijn, доступен для загрузки с github, хотя вы можете установить его прямо из командной строки, набрав:

pip install pyfirmata

Все хорошо, он должен установить и выглядеть так:

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

Как это случилось

Теперь все настроено, и вы можете создать программу на Python для своего Arduino, чтобы протестировать ее. Откройте IDE по вашему выбору. Мы будем использовать Eclipse

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

или даже IDE в облаке

,

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

Во-первых, вы хотите импортировать то, что вам нужно, из pyFirmata модуль вместе со стандартным Python Время модуль.

from pyfirmata import Arduino, util
import time

Теперь вы хотите настроить плату Arduino. В этой статье предполагается, что вы используете Arduino Uno плата, хотя поддерживается несколько других плат Arduino. Обратитесь к pyFirmata github за подробной информацией о поддержке платы.

Проверьте, какой COM-порт вы используете в Arduino IDE, и введите его в свой код в качестве переменной

доска.

board = Arduino("COM3")

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

loopTimes = input('How many times would you like the LED to blink: ')
print("Blinking " + loopTimes + " times.")

Чтобы светодиод мигал соответствующее количество раз, вы используете для цикла. Если вы новичок в Python

Будьте осторожны с отступом, так как в отличие от других языков пробелы являются частью синтаксиса. Обратите внимание, что контакт 13 является встроенным светодиодом для Arduino Uno, вам нужно будет изменить его, если ваша плата отличается.

for x in range(int(loopTimes)):
board. digital[13].write(1)
time.sleep(0.2)
board.digital[13].write(0)
time.sleep(0.2)

Вы бросите loopTimes переменная к целому числу здесь, поскольку ввод от пользователя будет автоматически сохранен как строка. В этой простой демонстрации мы предполагаем, что пользователь введет числовое значение. Любая другая запись, такая как «восьмерка», выдаст ошибку.

Сохраните ваш скрипт и откройте Командная строка.

Мигающие огни и другие откровения

Все готово к работе, все, что вам нужно сделать, это перейти туда, где находится скрипт, и запустить его. Сделайте это, набрав cd [путь к каталогу скрипта] а затем печатать python blink.py.

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

Вывод программы должен выглядеть так:

Как только вы нажмете Enter после выбранного количества миганий, Arduino выполнит ваши заказы.

Маленькие Начало

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

Если вы используете сервер Linux

дома этот метод связи с платами Arduino может превратить этот сервер в полноценную систему домашней автоматизации DIY. Путем объединения скриптов Python, управляющих микроконтроллером, со схемой автоматизации DIY

Ваш ящик для хранения NAS может взять на себя целый новый набор полезных функций.

Чтобы сделать его незабываемым, почему бы не создать собственную коробку NAS

и использовать его для управления своими приборами? Представьте, как здорово было бы нажать play на вашем Plex

сервер и выключить свет автоматически!

Вы уже управляете Arduino с помощью Python? Есть ли удивительные обходные пути, о которых мы просто еще не знаем? Дайте нам знать в разделе комментариев ниже!

Программируем Arduino Nano с использованием Arduino Uno

Недавно мы купили новый клон Arduino Nano (Ch440) от ebay для нашего мини-проекта Arduino. После этого мы подключили Arduino к ПК и установили драйверы, но он не работал.

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

Шаг 1. Комплектующие

Нам на самом деле понадобится не так много всего, список очень скромный:

Шаг 2. Подключение

Одна из главных задач нашего небольшого урока - правильно соединить Uno к Nano:

  • D13 <-> SCK
  • D12 <-> MISO
  • D11 <-> MOSI
  • D10 <-> RST (сброс)
  • 5V <-> VIN
  • GND <-> GND

Если рабочее напряжение вашей платы составляет 3,3 В, то используйте 3,3 В.

Шаг 3. Готовим Arduino IDE

На данном этапе вы всё соединили и теперь нам нужно сделать некоторые настройки в среде Arduino IDE.

Перейдите в раздел:

Инструменты (Tools) → Выберите Arduino Uno → Выберите правильный ПОРТ → Загрузите любой код

Настройки выполнены. Теперь откройте эскиз, который вы хотите загрузить в своем Nano.

В меню перейдите в Sketch и нажмите «Upload using Programmer». IDE скомпилирует эскиз и загрузит его в ваш Nano. Светодиоды RX TX быстро мигнут на обеих досках, и вы увидите, что вы сделали загрузку.

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

Если возникла какая-либо ошибка, нажмите кнопку сброса на Nano и на Arduino Uno.

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

Как запрограммировать Arduino с помощью C++



Так что в последнее время я играл с моим Arduino, и мне было интересно, есть ли какой-то способ запрограммировать Arduino в C++. Я программировал его с помощью языка C++/ Processing в Vim и использовал makefile для компиляции и загрузки в Arduino.

Но моя цель-иметь возможность использовать классы и все замечательные функции C++ (или, по крайней мере, sum) для его программирования. В конце концов я бы даже хотел запрограммировать его в raw C, и у меня просто возникли проблемы с тем, чтобы узнать, как это сделать. Было бы здорово, если бы кто-то мог указать мне правильное направление или помочь мне.

c++ c arduino
Поделиться Источник Michaelslec     30 августа 2013 в 01:36

2 ответа


  • Как запрограммировать экран CAN-BUS arduino для управления автомобилем windows?

    Мой проект состоит в том, чтобы управлять автомобилем windows с помощью распознавания голоса. Я успешно контролировал некоторые LED-е, используя щит EasyVR arduino и arduino MEGA. Теперь я хочу взять под контроль windows, используя экран CAN-BUS arduino. Поскольку автомобиль, которым я владею, не...

  • Avr-GCC с Arduino

    Как я могу запрограммировать свой Arduino в C на Ubuntu. Я слышал об avr-gcc, но все онлайн-учебники кажутся чрезвычайно утомительными и не имеют вариантов для чипа AVR с загрузчиком Arduino. Может ли кто-нибудь помочь мне с более простым способом установить avr-gcc на Ubuntu и начать...



52

Вот мой опыт: я создаю роботизированную умную игрушку для детей-аутистов с использованием Arduino, датчиков, двигателей, светодиодов и bluetooth. Я написал свои собственные библиотеки, чтобы делать именно то, что мне нужно, используя C++. Но я обнаружил, что компилятор Arduino IDE-это более старая версия, которая не поддерживает новые функции C++11.

Поэтому мне пришлось найти способ скомпилировать код C++11 и загрузить его в свой Arduino. Оказывается, это "pretty" basic: мне нужен был файл Makefile, набор инструментов avr-gcc 4.8 и вуаля! Работа с makefile выполняется Sudar ( https://github.com/sudar/Arduino-Makefile ), и она отлично работает. Мне пришлось немного настроить его, чтобы он работал для моего проекта.

Вот некоторая документация, которую я написал для своего проекта. Вы должны взглянуть, это может быть полезно для вас. https://github.com/WeAreLeka/moti/blob/master/INSTALL.md

Надеюсь, это поможет! Ура 🙂

EDIT 08/16/2014:

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

Это голый проект Arduino

Надеюсь, это может чем-то помочь! Если вы обнаружите ошибки или вещи, которые я мог бы улучшить, не стесняйтесь заполнять и выпускать. 🙂

Поделиться ladislas     30 августа 2013 в 07:40



5

Язык, поддерживаемый Arduino IDE, в основном является C++ с некоторыми дополнительными функциями, реализованными программистами Arduino. Кроме того, в эскизе вы просто кодируете процедуры setup и loop (есть несколько других, к которым вы в конечном итоге придете, когда станете более продвинутым программистом).

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

Наконец, классы C++ могут стать большими, поэтому в какой-то момент ваш исходный код перерастет то, что может хранить процессор. Итак, классы Arduino редки и к месту!

Для начала я бы использовал Arduino IDE и писал эскизы (которые в любом случае в основном C++). И, если позволяет случай, вы можете закодировать свои собственные библиотеки в C и/или C++.

Поделиться JackCColeman     30 августа 2013 в 04:52


Похожие вопросы:


загрузите код arduino в arduino с помощью winform c#

Я создаю редактор кода для arduino с помощью winform C#, и у меня очень хорошо получается мой проект. Мой редактор позволяет автозаполнение и предоставляет помощь во время программирования. Моя...


Не могу запрограммировать Arduino из OS X

Я пытаюсь запрограммировать Arduino из OS X Lion. Это абсолютно не сработает, и у меня нет других машин, чтобы работать над этим. Вот ошибка, которую я получаю, когда пытаюсь загрузить: Binary...


как запрограммировать Arduino на языке assembly в os x?

Я довольно новичок в Arduino, но не в программировании. Недавно я купил Arduino Uno,и, несмотря на то, что изначально узнал, что он может быть запрограммирован только на c, я хотел посмотреть, смогу...


Как запрограммировать экран CAN-BUS arduino для управления автомобилем windows?

Мой проект состоит в том, чтобы управлять автомобилем windows с помощью распознавания голоса. Я успешно контролировал некоторые LED-е, используя щит EasyVR arduino и arduino MEGA. Теперь я хочу...


Avr-GCC с Arduino

Как я могу запрограммировать свой Arduino в C на Ubuntu. Я слышал об avr-gcc, но все онлайн-учебники кажутся чрезвычайно утомительными и не имеют вариантов для чипа AVR с загрузчиком Arduino. Может...


Не могу запрограммировать Arduino 328P после первого использования ICSP Sparkfun AVR Pocket Programmer

Мне нужно было изменить свое коричневое выходное напряжение на 4.3V с Arduino по умолчанию. Я купил у Sparkfun карманный программатор AVR и подключился в соответствии с инструкциями. У меня есть...


Невозможно запрограммировать Atmega8a MCU с помощью arduino

Я новичок в этом деле. Купил микроконтроллер Atmega8a, чтобы немного повеселиться с ним. Но я не могу запрограммировать его с помощью arduino uno rev-3. Я не использовал никаких внешних частей для...


Как найти Arduino с помощью C#

Я хочу общаться с arduino, используя C#., но я не хочу общаться с любым arduino. Я хочу найти конкретный arduino. Например, если я использую arduino nano и встраиваю в него свои коды, я хочу найти. ..


Можете ли вы запрограммировать python на Arduino

Я ищу способ программировать с помощью python на Arduino. Существуют ли какие-либо переводчики даты up-to? Я просмотрел некоторые старые вопросы, но нет никаких версий даты up-to. В частности, я ищу...


Можете ли вы открыть и отредактировать файлы .c в Arduino IDE? А затем загрузить их на доску Arduino

Я пытался открыть c файла в Arduino IDE (что, как утверждают некоторые люди, возможно). Я не смог этого сделать. Как я могу запрограммировать Arduino в c, учитывая, что у меня есть проект/файлы в...

Как прошить ардуино плату другой ардуиной 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В


Обратите внимание на нумерацию выводов 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.

 

Подключение и программирование Digispark - Описания, примеры, подключение к Arduino

Для работы с контроллерами Digispark необходимо настроить программное обеспечение.

Программное обеспечение:

Digispark использует платформу Arduino IDE и 1.6.5

Для программирования Digispark потребуется программное обеспечение Arduino IDE и 1.6.5 и новее.

Инструкция по установке:

  1. Для начала нужно скачать ПО. Можно скачать с официального сайта https://www.arduino.cc/en/Main/Software
  2. Установите или распакуйте скаченное ПО Arduino IDE .
  3. Запустите Arduino IDE .
  4. В Arduino IDE зайдите в меню “Файл” и выберите “Настройки”

В поле “Additional Boards Manager URLs” необходимо ввести следующую ссыл

<a href="http://digistump.com/package_digistump_index.json">http://digistump.com/package_digistump_index.json</a>

И начать "ОК"

Перейдите в меню “Инструменты” и затем “Плата:******” и в подменю - выберите пункт “Boards Manager”,

В появившемся окне в выпадающем меню выберите “Contributed”:

Теперь устанавливаем


Готово!

Теперь в списке у нас появились Digispark платы.


Теперь необходимо установить драйвер https://iarduino.ru/file/220.html

Как записать скетч:

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


Arduino bootloader | avr | programming

Что такое бутлоадер? Обычно микроконтроллеры программируются с помощью специального программатора. Это может быть или программатор ISP, JTAG, debugWire, HVSP, HVPP. Для микроконтроллеров AVR в качестве альтернативы может использоваться функция самопрограммирования [4], когда запись в память новой программы (firmware) для микроконтроллера берет на себя специальная маленькая программа. Эта маленькая программа и называется бутлоадер (bootloader, загрузчик) [2]. Она запускается сразу после включения питания платы Arduino, или когда на плате нажата кнопка reset, или когда компьютер-хост USB, к которому подключена плата Arduino, выдал сигнал сброса (это делается с помощью специальной схемы реализации виртуального USB COM-порта Arduino). У программы загрузчика только есть только одна основная функция - принять через USART от компьютера-хоста новую программу, и прошить её в память программ (FLASH) микроконтроллера AVR платы Arduino (подробнее про загрузчик см. врезку "Как работает загрузчик?").

Примечание: ISP означает In-System Programming - внутрисхемное программирование, т. е. когда микроконтроллер программируется без физического извлечения из программируемой системы. JTAG это специальный интерфейс для программирования, отладки и тестирования схемы. debugWire это проприетарная разработка (компании Atmel), разновидность интерфейса JTAG для программирования и отладки. HVSP и HVPP обозначают соответственно High-Voltage Serial Programming (высоковольтное последовательное программирование) и High-Voltage Parallell Programming (высоковольтное параллельное программирование).

Не обязательно использовать бутлоадер. Когда Вы работаете в среде программирования Arduino (или в любой другой среде - BACSCOM AVR, AVR Studio, Atmel Studio, CodeVision AVR, Eclipse, IAR Embedded Workbench, Visual Studio), то для перепрошивки firmware (скетчей) в память микроконтроллера можете использовать внешний программатор [5]. Это дает определенные преимущества - Вы можете использовать для перепрошивки всю память программ (FLASH) микроконтроллера, и при использовании программатора нет задержки запуска программы из-за ожидания загрузчика.

Прошивка загрузчика из среды разработки Arduino. Чтобы прошить bootloader, Вам понадобится купить AVR-ISP (фирменный программатор ISP компании Atmel), USBtinyISP [6] или самому собрать ParallelProgrammer [7]. Программатор должен быть подключен к коннектору ICSP, это двухрядный разъем "папа", 2x3 выводов, с цоколевкой ISP6 [8]. При подключении убедитесь, что подсоединили коннектор в правильной ориентации, не наоборот. Для программирования на микроконтроллер платы должно подаваться питание; для плат Arduino обычно питание подается от внешнего источника или от порта USB.

Убедитесь, что правильно выбрали тип платы Arduino через меню Tools -> Board. Затем просто запустите подходящую команду из меню Tools -> Burn Bootloader. Прошивка загрузчика занимает примерно 15 секунд или больше. Подробнее про прошивку загрузчика см. врезки ниже.

Команда "Burn Bootloader" (прошить загрузчик) среды разработки Arduino IDE использует avrdude, утилиту с открытым исходным кодом. При этом выполняются друг за другом шагов: разблокировка секции загрузки микроконтроллера (с помощью изменения фьюзов lock byte), запись фьюзов микроконтроллера, загрузка кода загрузчика в память микроконтроллера (программа bootloader записывается в секцию загрузки), и затем блокировка секции загрузчика микроконтроллера (с помощью изменения фьюзов активация защиты секции загрузчика lock byte). Эти шаги управляются некоторыми настройками в preferences file системы Arduino.

Примечание: что такое preferences file, где он находится?

Вот, например, эти настройки в preferences file для ATmega8 bootloader:

bootloader.atmega8.programmer (значение по умолчанию: stk500) здесь задается протокол,
используемый загрузчиком.
bootloader.atmega8.unlock_bits (значение по умолчанию: 0xFF) это значение записывается в
байт фьюзов защиты (lock byte) микроконтроллера ATmega8, чтобы разблокировать секцию
загрузки (bootloader section).
bootloader.atmega8.high_fuses (значение по умолчанию: 0xca) это значение для записи старшего
байта фьюзов ATmega8.
bootloader.atmega8.low_fuses (значение по умолчанию: 0xdf) это значение для записи младшего
байта фьюзов ATmega8.
bootloader.atmega8.path (значение по умолчанию: bootloader) путь каталога (относительно
каталога приложения Arduino), в котором находится готовая прошивка загрузчика (двоичный
код).
bootloader.atmega8.file (значение по умолчанию: ATmegaBOOT.hex) имя файла, где содержится
прошивка загрузчика (в папке bootloader.atmega8.path).
bootloader.atmega8.lock_bits (значение по умолчанию: 0x0F) это значение записывается в байт
фьюзов защиты (lock byte) микроконтроллера ATmega8, чтобы включить блокировку секции
загрузки (чтобы он случайно не был перезаписан программатором или при загрузке скетча).

Вот настройки для ATmega168 bootloader (здесь слово ПЛАТА может быть либо diecimila, либо ng):

bootloader.atmega168-ПЛАТА.programmer (значение по умолчанию: avrispmkii) здесь задается
протокол, используемый загрузчиком.
bootloader.atmega168-ПЛАТА.unlock_bits (значение по умолчанию: 0x3F) это значение записывается
в байт фьюзов защиты (lock byte) микроконтроллера ATmega168, чтобы разблокировать секцию
загрузки (bootloader section).
bootloader.atmega168-ПЛАТА.extended_fuses (значение по умолчанию: 0x00) это значение для
записи байта расширенных фьюзов ATmega168.
bootloader.atmega168-ПЛАТА.high_fuses (значение по умолчанию: 0xdd) это значение для записи
старшего байта фьюзов ATmega168.
bootloader.atmega168-ПЛАТА.low_fuses (значение по умолчанию: 0xff) это значение для записи
младшего байта фьюзов ATmega168.
bootloader.atmega168-ПЛАТА.path (значение по умолчанию: bootloader168) путь каталога
(относительно каталога приложения Arduino), в котором находится готовая прошивка загрузчика
(двоичный код).
bootloader.atmega168-ПЛАТА.file (значение по умолчанию: ATmegaBOOT_168_ПЛАТА.hex) имя
файла, где содержится прошивка загрузчика (в папке bootloader.atmega168-ПЛАТА.path).
bootloader.atmega168-ПЛАТА.lock_bits (значение по умолчанию: 0x0F) это значение записывается
в байт фьюзов защиты (lock byte) микроконтроллера ATmega168, чтобы включить блокировку
секции загрузки (чтобы он случайно не был перезаписан программатором или при загрузке скетча).

Здесь приведен перевод инструкции, предоставленной Gian Pablo Vilamil (Bootload the Arduino Mini site:arduino.cc). Инструкция полезна также для китайских плат Arduino, в которые производители для удешевления производства "забывают" прошить загрузчик.

В каких случаях может понадобиться перешить загрузчик?

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

2. Нужно заменить имеющуюся версию загрузчика на другую. Старые несовершенные загрузчики плат Arduino (до появления Arduino Diecimila) ждали около 10 секунд после сброса или включения питания, пока придет от хоста новая программа микроконтроллера (скетч). Такая задержка могла появиться и после программирования скетча. Эта лишняя задержка довольно неприятна, когда не нужно записывать в память скетч. Альтернативные загрузчики, в том числе Adaboot bootloader, LilyPad bootloader и загрузчик Arduino Diecimila устраняют эту задержку. Также в некоторых случаях Вы можете самостоятельно изменить код загрузчика (см. разделы "Исходный код загрузчиков Arduino", ссылку [9] и врезку "Пример конфигурирования загрузчика Arduino UART"). Это полезно, когда нужно, чтобы проект стартовал намного быстрее (без таймаута загрузчика), и особенно когда при включении питания/сбросе возможно поступление на вход UART каких-то данных, не относящихся к загрузке. Если обычный загрузчик получит некоторые посторонние данные, то он будет пытаться их обработать как данные новой прошивки, что может привести к ошибкам, задержке запуска, и возможно даже что Ваша программа никогда не запустится.

3. Загрузчик вообще не используется. Процедура замены загрузчика в среде программирования Arduino также позволит Вам его полностью заменить каким-то приложением. Преимущество тут в том, что Ваше приложение будет запускаться немедленно, без задержки, и освободятся дополнительно 2 килобайта памяти программ. Недостаток в том, что больше нельзя перепрограммировать Вашу плату Arduino через USB - надо будет использовать ISP (до тех пор, пока Вы не замените/восстановите загрузчик).

4. Имеющийся загрузчик иногда оказывается поврежденным. Это встречается очень редко, однако все-таки возможно при некоторых обстоятельствах повреждение памяти FLASH микроконтроллера Arduino, и не получается запрограммировать Arduino традиционным способом (через USB - TTL UART). Повторная установка загрузчика может исправить эти проблемы. Ситуация похожа на переформатирование жесткого диска в компьютере.

Чем программирование загрузчика у Arduino Mini отличается от других плат Arduino? Полноразмерные платы Arduino имеют 6-контактный коннектор ISP для подключения программатора. Ну у платы Arduino такого коннектора нет (он просто не поместился на маленькой плате), поэтому Вам понадобится сделать кабель с коннектором самостоятельно. В остальном программирование загрузчика ничем не отличается.

Что понадобится?

• Программатор ISP [5], например AVR ISP MkII или другой.
• 6 проводков.
• 2 кусочка линеек по 3 контакта (или двухрядный разъем "папа" на 6 контактов).
• Среда программирования AVR Studio (можно загрузить с сайта Atmel, или см. [11]).

Как сделать кабель?

Кабель должен соединять 6 контактов платы Arduino Mini с контактами разъема ISP программатора. Эти 6 выводов называются MISO, MOSI, SCK, RESET, Power и Ground. Из этих выводов 3 соответствуют цифровым портам ввода / вывода Arduino 11..13. Другие 3 вывода это сброс (Reset), +5V (Power) и земля (Ground, GND), и возможно Вы их уже используете. Обратите внимание, что вывод +5V это не вывод +9V. Вывод +5V нужен для подачи питания в программатор ISP.

Эти 6 выводов платы Arduino нужно подключить к 6 выводам коннектора ISP, показанным ниже.

Обратите внимание, что на этом рисунке показана нумерация контактов с обратной стороны коннектора ISP программатора (или со стороны штырьков коннектора, который будет подключен к плате Arduino Mini). Если коннектор программатора наколот на плоский кабель, у которого красным помечен первый провод, и коннектор обращен от Вас, то на рисунке показано то, что Вы увидите.

Сделайте соединения между платой Arduino и двухрядным коннектором "папа", как показано на рисунке ниже. Подключите этот коннектор к разъему ISP6 "мама" программатора, соблюдая правильную ориентацию коннекторов. Подключите программатор к компьютеру, подайте питание на плату Arduino.

Как прошить загрузчик в среде программирования Arduino?

Теперь Вы можете записать загрузчик с помощью программатора и среды Arduino IDE. Запустите Arduino IDE на компьютере, выберите тип платы Arduino (в меню Tools -> Board выберите Arduino Mini). Затем в меню Tools -> Burn Bootloader выберите тип Вашего программатора (например, это программатор AVR-ISP mkII).

Чтобы прошить альтернативный загрузчик (например, который Вы скомпилировали сами), понадобится программное обеспечение для управления программатором. Есть множество таких утилит, и в зависимости от имеющегося программатора Вам нужно выбрать то программное обеспечение, которое работает с Вашим программатором. Если Вы используете программатор AVR-ISP mkII, отладчик AVR Dragon или JTAGICE mkII, то можете воспользоваться средой программирования AVR Studio [11], где есть утилита программатора.

Как прошить загрузчик в среде программирования AVR Studio?

Загрузите и установите среду программирования AVR Studio. К сожалению, она работает только в операционной системе семейства Windows, но в Интернете можно найти инструкции, как прошить загрузчик (как и любую программу в память микроконтроллера AVR) в среде Mac OS/X, Linux и даже FreeBSD.

Запустите AVR Studio. Нажмите Cancel, чтобы пропустить стартовое окно, предлагающее создать или открыть проект.

В меню Tools -> Program AVR -> Connect... выберите тип Вашего программатора (Platform:) и порт для его подключения (Port:) и нажмите кнопку Connect.

Запустится окно утилиты программатора. На закладке Program выберите тип программируемого микроконтроллера, который установлен на Вашей плате Arduino Mini (ATmega168 или ATmega328), режим программирования Programming mode -> ISP mode. Поставьте галочки "Erase Device Before Programming" и "Verify Device After Programming". В разделе Flash -> Input HEX File выберите прошивку загрузчика.

Нажмите кнопку Program. В строке статуса основного окна AVR Studio Вы увидите отображение прогресса записи кода загрузчика. После окончания записи можно также нажать кнопку Verify, чтобы еще раз убедиться, что процедура завершилась успешно.

После того, как загрузчик записан, программатор ISP больше не понадобится. Отключите программатор от порта USB компьютера, и отключите коннектор ISP от платы Arduino Mini. Для записи скетчей в плату Arduino Mini понадобится только требуется специальный переходничок, который реализует преобразование интерфейса USB CDC (виртуальный COM-порт) в RS232 TTL (см. врезку "Переходники USB - TTL RS232 на аппаратных чипах").

Примечание: если Вы программируете новый микроконтроллер, в котором не были настроены фьюзы (например, если сами собрали плату Arduino или заменили неисправный микроконтроллер), то также понадобится правильно установить фьюзы микроконтроллера. Основной смысл установки фьюзов - обеспечить запуск загрузчика при включении питания сброса, и правильно настроить тактовый генератор. Также полезно установить биты защиты, чтобы случайно не повредить секцию загрузчика. В утилите программирования AVR Studio фьюзы настраиваются на закладке Fuses, а биты защиты на закладке LockBits.

Подробнее про настройку фьюзов см. врезку "На что нужно обратить внимание при программировании загрузчика". В установке фьюзов и бит защиты очень помогает калькулятор фьюзов [10], также см. даташит на используемый микроконтроллер.

[Версии загрузчика Arduino]

Есть разные версии bootloader, потому что они должны работать на разной аппаратуре (разных платах Arduino), и потому что за длительное время развивалась как схема Arduino, так и код загрузчика.

Текущие версии загрузчиков (например те, которые поставляются вместе со средой Arduino 0009) почти идентичны для плат Arduino Diecimila и Arduino NG (на которых стоит ATmega168). Оба загрузчика этих плат работают на скорости передачи данных 19200 бод, и занимают в памяти программ (FLASH) микроконтроллера ATmega168 область размером в 2 килобайта. Отличия могут быть только во времени, сколько загрузчик ждет поступления новой программы, и в количестве мерцаний светодиодом на порте 13 Arduino (pin 13 LED), когда загрузчик запускается. Из-за автоматического сброса плат Arduino Diecimila загрузчик ждет очень малое время (меньше секунды), и для экономии времени также только один раз мигает светодиодом на порте 13. Загрузчик Arduino NG ждет примерно 6-8 секунд (потому что плата сбрасывается вручную при загрузке) и мигает светодиодом 3 раза при старте загрузчика.

Загрузчик, который реально поставляется вместе с продающимися платами Arduino NG, имеет незначительные отличия. Он разрешает внутренний pullup резистор микроконтроллера на порте 6, и не разрешает внутренний pullup резистор на выводе RX pin. Также он не использует таймаут при приеме ошибочных данных, так что если Вы пошлете микроконтроллеру через порт UART какие-то данные сразу после сброса (или включения питания), то загрузка Вашего скетча не произойдет (см. вопросы "Почему мой скетч не запускается ..." в FAQ [3]).

Загрузчик платы Arduino BT делает некоторую первоначальную конфигурацию модуля Bluetooth.

Загрузчик ATmega8 занимает объем всего лишь 1 килобайт памяти программ (flash). Он также не использует таймаут при приеме неправильных данных, поэтому Вам нужно убедиться, что в плату Arduino на основе ATmega8 не отправляется никаких данных в течение 6..8 секунд, пока активен загрузчик.

Некоторые древние версии загрузчика работают на скорости 9600 бод (вместо 19200). Такая скорость удобна для плат, у которых нет кварцевого резонатора для стабилизации тактовой частоты микроконтроллера. Чтобы код скетча успешно загружался в таких условиях, нужно поменять параметр serial.download_rate в файле настроек (preferences file) на 9600.

Примечание: правильный выбор скорости обмена через порт USART - основной принцип работы как загрузчика, так и всего программно-аппаратного комплекса Arduino IDE. В частности, загрузчик платы Arduino может работать и на более высоких скоростях - например загрузчик Arduino Mega 2560 работает на скорости 115200 бод. Поэтому если есть какие-то проблемы в работе загрузчика, попробуйте протестировать ряд наиболее часто используемых стандартных скоростей UART (9600, 19200, 38400, 57600, 115200). Еще лучше, если Вы сразу определите правильную скорость обмена загрузчика с помощью осциллографа - см. длительность импульсов бит данных на ножке TX микроконтроллера, при правильно настроенной скорости их длительность должна совпадать с длительностью импульсов бит данных на ножке RX.

Платы Arduino сторонних производителей также используют загрузчик. Следует заметить, что есть 3 основных разновидности загрузчика - Arduino UART, USBasp, Atmel DFU.

Arduino UART. Первая, используемая наиболее широко, применяет для передачи данных UART (так называемый загрузчик Arduino UART). Этот загрузчик давно используется совместно с традиционными микроконтроллерами AVR, у которых на борту нет аппаратуры интерфейса USB. Промежуточным интерфейсом для USB служит отдельный аппаратный блок на специальном чипе (мост USB - TTL USART, который смонтирован на многих платах Arduino, а на некоторых платах его нет, и приходится использовать отдельные переходники USB - TTL UART).

Продвинутый загрузчик, поставляемый с Arduino-совместимыми платами Wulfden Freeduino Kits. Его код основан на коде загрузчика Arduino UART. "Lady Ada", Limor Fried из Adafruit Industries, сделала множество исправлений и добавлений в код загрузчика с целью получения универсальности (код загрузчика работает в любой версии Arduino IDE, скетчи запускаются сразу после включения питания, скетчи запускаются сразу после загрузки). Последние ревизии Brian Riley унифицировали исходный код для микроконтроллеров ATmega168, ATmega328 и ATmega644, так что получился один файл исходного кода и один файл makefile. Добавлено мигание светодиодом pin 13 LED, показывающее процесс загрузки. Этот загрузчик можно использовать на старых, новых (и самостоятельно изготовленных) платах, как оборудованных, так и не оборудованных функцией автосброса (со средой разработки Arduino-0009 и платами Arduino Diecimilia).

Дополнительную информацию по изменениям кода загрузчика можно найти на сайте Lady Ada (см. Bootloader for the Atmega328 site:learn.adafruit.com). Исходный код ADABOOT можно загрузить на сайте разработчика (см. ADABOOT - an ATmega Arduino(tm) compatible bootloader site:wulfden.org), или в одном архиве [9].

USBasp. Это загрузчик, часто используемый на платах metaboard, неофициально (и не полностью, см. [3]) поддерживаемых средой разработки Arduino. Его достоинство в том, что не нужно использовать отдельный мост USB - TTL UART для подключения к USB на традиционных микроконтроллерах. Это упрощает и удешевляет схему, и плату metaboard легче собрать в домашних условиях.

Atmel DFU. С некоторых пор среда разработки Arduino начала поддержку плат, на которых установлен микроконтроллер AVR со встроенной аппаратурой USB. На таких платах также нет отдельного моста USB - TTL UART. Но загрузчик конечно другой, поддерживающий периферию USB AVR, и протокол загрузки кода USB DFU компании Atmel. К сожалению, исходный код оригинальных загрузчиков от Atmel закрыт, есть только бинарники. Однако, поскольку протокол DFU опубликован, имеется альтернативная версия загрузчика с открытым исходным кодом - в библиотеке LUFA.

Подробную информацию по различным загрузчикам см. в таблицах 4, 5, 6 (врезка "На что нужно обратить внимание при программировании загрузчика"), и 7 (раздел "Исходный код загрузчиков Arduino").

Чтобы записать загрузчик, Вам обязательно нужен внешний ISP-программатор [5]. Программатор подключается к программируемой платой Arduino через 6-выводный коннектор ISP [8], который обычно всегда установлен на плате Arduino. При подключении коннектора убедитесь, что он ориентирован правильным образом. Некоторые платы наподобие Arduino Mini требуют самостоятельного подключения коннектора проводами к контактам платы. Если есть сомнения при подключении, то обратитесь к схеме платы и её описанию.

Загрузчик можно записать прямо из среды разработки Arduino (Tools -> Burn Bootloader), перед этим нужно сначала выбрать тип программатора и тип платы в меню Tools.

Выбор загрузчика. Поскольку могут быть различные варианты реализации целевой системы - может быть применена разная модель микроконтроллера (ATmega168, ATmega328, ATmega32U4 и т. п.). Загрузчики для разных моделей микроконтроллеров могут быть несовместимыми друг с другом.

Частота кварцевого резонатора. Обязательно убедитесь, что прошиваемый Вами загрузчик точно соответствует рабочей частоте системы. Рабочая частота микроконтроллера обычно зависит от конфигурации фьюзов и от частоты внешнего кварцевого или керамического резонатора (чаще всего применяют кварцевые резонаторы на 8 или 16 МГц, но могут быть и другие варианты).

Фьюзы. Для правильного функционирования загрузчика важны 2 аспекта, которые конфигурируются фьюзами - выбор размера секции загрузки (фьюзы BOOTSZ1, BOOTSZ0), разрешение работы загрузчика (фьюз BOOTRST), а также конфигурирование тактовой частоты (фьюзы, управляющие генератором тактовой частоты и прескалером - CKDIV8, SUT1, SUT0, CKSEL3..0).

Если Вы неправильно прошьете фьюзы BOOTSZ1, BOOTSZ0, BOOTRST, то код загрузчика не будет запускаться, и загрузчик работать не будет. Точно также если Вы неправильно сконфигурируете фьюзами тактовый генератор и прескалер, то микроконтроллер может заработать на той частоте, на которую загрузчик не рассчитан, и работоспособность загрузчика также будет нарушена. Для вычисления правильного значения фьюзов Вам поможет калькулятор фьюзов [10].

В таблице я привел самые популярные загрузчики и конфигурации для них. Фьюзы указаны в шестнадцатеричном значении, где HFUSE это старший байт фьюзов, LFUSE младший байт фьюзов, EFUSE байт расширенных фьюзов.

Таблица 4. Загрузчики Arduino UART.

AVR Тактовая частота Прошивка Размер секции загрузки, байт Фьюзы (HEX)
ATmega8 8 ArduinoBOOT-mega8-8MHz.hex 1024 HFUSE=CA
LFUSE=DF
16 ArduinoBOOT-mega8-16MHz.hex
ATmega168 8 ArduinoBOOT-mega168-8MHz.hex 2048 HFUSE=DD
LFUSE=E2
EFUSE=00
16 ArduinoBOOT-mega168-16MHz.hex
ATmega328 8 ArduinoBOOT-mega328-8MHz.hex 2048 HFUSE=DA
LFUSE=FF
EFUSE=05
16 ArduinoBOOT-mega328-16MHz.hex 2048

Прошивки загрузчиков Arduino можно найти в папке, где установлена система разработки Arduino, обычно это папка с полным путем наподобие c:\Program Files\Arduino1.0.6\hardware\arduino\bootloaders. Там же можно найти исходный код загрузчиков. Также готовые прошивки и исходный код всех загрузчиков можете скачать по ссылке [9], см. папку arduino\bootloaders\HEX архива, и ищите там имена файлов прошивок, указанные в таблицах 4, 5, 6 (имя файла прошивки указано в столбце Прошивка).

Таблица 5. Загрузчики Atmel DFU.

AVR Тактовая частота Прошивка Размер секции загрузки, байт Фьюзы (HEX)
ATmega32U4 8 BootloaderDFU-mega32u4-8MHz.hex 4096 HFUSE=D8
LFUSE=DE
EFUSE=F3
16 BootloaderDFU-mega32u4-16MHz.hex

Таблица 6. Загрузчики USBasp.

AVR Тактовая частота Прошивка Размер секции загрузки, байт Фьюзы (HEX)
ATmega168 12 USBaspLoader-mega168-12MHz.hex 2048 HFUSE=D6
LFUSE=DF
EFUSE=00
16 USBaspLoader-mega168-16MHz.hex
20 USBaspLoader-mega168-20MHz.hex
ATmega328 12 USBaspLoader-mega328-12MHz.hex HFUSE=DA
LFUSE=F7
EFUSE=03
16 USBaspLoader-mega328-16MHz.hex
20 USBaspLoader-mega328-20MHz.hex

Загрузчик (bootloader) - одна из основных вещей, что отличает Arduino от простого микроконтроллера AVR компании Atmel. Когда Вы собираете свою плату, или когда случайно купили на ebay плату, не прошитую загрузчиком, то Вам нужен внешний программатор ISP, чтобы прошить в память микроконтроллера загрузчик. Но когда Вы прошили загрузчик, то можно программатор ISP положить на полку - больше он не понадобится (за исключением каких-то специальных случаев), потому что дальше перешивать память программ микроконтроллера удобнее с помощью загрузчика.

Загрузчик [2] это по сути маленькая программа, предназначенная для только одной цели - перепрошить микроконтроллер программой пользователя. Загрузчик размещен в старших адресах пространства памяти программ (FLASH), а программа пользователя - в младших адресах (начиная с нулевого адреса). На рисунке показан типичный пример распределения памяти программ (FLASH) микроконтроллера ATmega328.

Примечание: если у Вас есть программатор ISP [5], то Вы можете настроить среду разработки Arduino так, чтобы использовать для загрузки именно программатор, а не bootloader. Достоинство такого метода загрузки в том, что Вы можете полностью задействовать всю доступную память программ (FLASH) микроконтроллера (потому что загрузчик уже не используется, и его область памяти программ свободна для использования).

Микроконтроллер Arduino сконфигурирован фьюзами так, чтобы при запуске системы (включение питания, сброс) управление всегда получал загрузчик. Затем загрузчик некоторое время ждет (1..2 секунды) загрузки программы пользователя, и если загрузка не началась, то запускает программу пользователя (передает управление на адрес 0). Таким образом, всегда можно при желании перезаписать программу пользователя, и тем самым обновить или полностью изменить функционал устройства. Код загрузчика при этом остается нетронутым.

Условие запуска загрузчика. Есть загрузчики, которые сразу передают управление в программу пользователя (без задержки), если не выполнено условие загрузки. Это иногда делается для того, чтобы ускорить запуск программы пользователя. Условие загрузки может быть разным, но чаще всего это перемычка, замыкающая на землю определенный (известный заранее пользователю) вывод микроконтроллера. Если перемычка установлена, то условие загрузки выполняется, и загрузчик ждет начала загрузки, не передавая управление в программу пользователя.

[Готовые прошивки загрузчика Arduino]

См. архив по ссылке [9] и таблицы 4, 5, 6 во врезке "На что нужно обратить внимание при программировании загрузчика".

[Исходный код загрузчиков Arduino]

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

AVR bootloader: https://github.com/arduino/Arduino/tree/master/hardware/arduino/avr/bootloaders
SAMD bootloader: https://github.com/arduino/ArduinoCore-samd/tree/master/bootloaders/zero

В таблице я привел описание самых популярных загрузчиков, которые используются в Arduino-совместимых платах. Исходный код загрузчиков вместе с готовыми прошивками также можно скачать по ссылке [9].

Таблица 7. Разновидности загрузчиков, которые можно использовать для платформы разработки Arduino.

Название AVR Описание
Arduino UART ATmega8, ATmega168, ATmega328 и другие Используется для большинства плат Arduino, когда код загружается через мост USB-UART.
Atmel DFU ATmega32U4 и другие Применяется для случаев, когда микроконтроллер AVR имеет на борту аппаратный интерфейс USB. Загрузчик основан на протоколе Atmel DFU Flip и открытой библиотеке LUFA.
USBasp ATmega168, ATmega328 Применяется для плат metaboard. Загрузчик основан на открытой библиотеке V-USB, эмулирует поведение популярного программатора USBasp.

Как компилировать. Для компиляции Вам потребуется тулчейн AVR-GCC, доступный для большинства операционных систем - Linux, Mac OS, Windows. На операционной системе Windows тулчейн можно получить, если скачать и установить пакет WinAVR или среду разработки Atmel Studio.

Компилируется загрузчик командами утилиты make. Обычно для этого нужно зайти в каталог с исходным кодом загрузчика, и выполнить 2 команды:

После этого в текущем каталоге появится файл с расширением HEX - готовая прошивка загрузчика, которую нужно записать в память микроконтроллера с помощью обычного ISP-программатора [5] (не забудьте также правильно установить фьюзы микроконтроллера!).

Инструкции по компиляции и настраиваемым опциям можно обычно получить, изучая содержимое файла Makefile проекта загрузчика, и сопутствующие файлы документации readme.txt.

Процесс получения прошивки загрузчика состоит из предварительного конфигурирования Makefile, где настраиваются опции (если это необходимо) и последующей компиляции командами make clean и make. Конечно же, для компиляции у Вас должен быть установлен тулчейн (компилятор AVR GCC и библиотеки). На операционной системе Windows тулчейн можно получить, если установить пакет разработки WinAVR или Atmel Studio.

Когда нужно получить загрузчик для Arduino, то чаще всего (в зависимости от типа платы или Вашей конструкции) это микроконтроллер ATmega328, или реже ATmega168, ATmega8, ATmega32U4. Поэтому сначала нужно выбрать, какой загрузчик использовать. Почти все загрузчики можно найти в папке установки Arduino c:\Program Files\Arduino1.0.6\hardware\arduino\bootloaders, распределенные по подкаталогам atmega8, atmega и другим.

Выбор загрузчика. Если Вам нужен загрузчик для ATmega8, то его исходный код и Makefile находится в папке atmega8. Если нужен загрузчик для ATmega168 или ATmega328, то см. папку atmega. Если нужен загрузчик для ATmega32U4, то его можно найти в библиотеке LUFA, см. папку Bootloaders\DFU.

Примечание: исходный код и прошивки загрузчиков можно скачать по ссылке [9].

Конфигурирование загрузчика для ATmega8. Зайдите в папку atmega8, и откройте текстовым редактором файл Makefile. Вам нужно проверить следующие опции:

• DIRAVR. Эта опции указывают на каталог установки тулчейна (в этом каталоге находится папка bin с исполняемыми файлами для компилятора и других утилит, и папка include для заголовочных файлов библиотек). Если у Вас установлен тулчейн WinAVR, то значение этой опции должно быть наподобие c:\WinAVR-20100110\avr. Если у Вас установлен тулчейн в составе Atmel Studio, то значение этой опции должно быть наподобие "c:\Program Files\Atmel\AVR Tools\AVR Toolchain" (должны быть кавычки, потому что в составе пути есть пробелы).

• DEFS. В этой опции указана тактовая частота системы через значение макропеременной F_CPU. Например, если указана опция:

DEFS = -DF_CPU=8000000 -DBAUD_RATE=19200

то это означает, что прошивка будет скомпилирована в расчете на тактовую частоту 8 МГц. 8 МГц обычно используется, если работает внутренний RC-генератор микроконтроллера AVR. Если у Вас используется другая тактовая частота, задаваемая внешним кварцевым резонатором, то укажите рядом с -DF_CPU= тактовую частоту в Герцах. Чаще всего используется тактовая частота 16 МГц, т. е. нужно указать -DF_CPU=16000000.

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

На этом конфигурирование загрузчика можно считать законченным. Для получения прошивки загрузчика осталось выполнить последовательность из двух команд:

После компиляции получится файл ATmegaBOOT.hex, который можно с помощью программатора ISP записать в память микроконтроллера ATmega8. Не забудьте после программирования загрузчика правильно установить фьюзы микроконтроллера (см. таблицу 4).

Конфигурирование загрузчика для ATmega168 или ATmega328. Зайдите в папку atmega, и откройте текстовым редактором файл Makefile. Здесь все устроено несколько сложнее, потому что этот Makefile универсальный, он предназначен для получения прошивок для множества различных плат Arduino:

Таблица 8. Выбор цели (target) в Makefile для ATmegaXX8.

Плата Arduino Target
Arduino LilyPad lilypad
Arduino Pro или Arduino Pro Mini pro8, pro16 или pro20 в зависимости от используемой тактовой частоты
Arduino Diecimila diecimila
Arduino NG ng
Своя плата на ATmega328 atmega328
Arduino Pro на ATmega328P без кварца atmega328_pro8
Arduino Mega mega

Примечание: цель Target, указанная в таблице, подставляется как опция команды make при компиляции прошивки:

make clean
make < тут надо указать Target >

Первое, что Вам нужно сделать, это выбрать цель для компиляции (вариант из столбца Target таблицы 6) в зависимости от платы, которая у Вас используется. Предположим, что у Вас самодельная плата на микроконтроллере ATmega328, для которой Вы собираетесь сделать свой загрузчик. Тогда цель для компиляции у Вас будет atmega328, прошивка получается выполнением 2 команд:

make clean
make atmega328

Если у Вас используется другая тактовая частота, то проверьте значение макропеременной AVR_FREQ (по умолчанию для цели atmega328 задана тактовая частота 16 МГц: AVR_FREQ = 16000000L). После компиляции получите прошивку ATmegaBOOT_168_atmega328.hex, которую можно записать в память Вашего микроконтроллера с помощью программатора ISP. Внимание, не забудьте также правильно установить фьюзы микроконтроллера (см. таблицу 4).

Для подключения к компьютеру недорогих плат наподобие Arduino Mini понадобится отдельный внешний переходник для моста USB - TTL UART.

Переходник USB TTL COM-port (он подключается с одной стороны к 6-pin коннектору FTDI, а с другой стороны к компьютеру по USB) можно купить готовый. Обычно такой переходник сделан по простейшей схеме на основе чипа FT232 (компания FTDI) или CP210x (компания Silicon Labs). Драйвер для переходника можно скачать с сайта соответствующей компании. Хорошие переходники USB to TTL Serial Cable FTDI (или на чипе CP210x) можно купить на eBay, dealextreme или aliexpress, есть даже предложения с бесплатной доставкой. При покупке выбирайте 5V версию (иногда бывают версии на 3.3V). Самый лучший вариант – когда можно выбрать перемычкой рабочие уровни порта TTL RS-232 (3.3V или 5V). Если уровни сигналов на переходнике USB to TTL и отлаживаемом устройстве не совпадают, то понадобятся последовательно включенные резисторы номиналом около 1…2 кОм.

[Ссылки]

1. Arduino Bootloader Development site:arduino.cc.
2. Загрузчики (bootloader) для микроконтроллеров AVR.
3. Arduino: что там внутри? (FAQ).
4. AVR109: самопрограммирование AVR.
5. Программаторы для AVR.
6. USBtinyISP - AVR programmer & SPI interface site:adafruit.com.
7. Parallel Port Programmer site:arduino.cc.
8. Цоколевки коннекторов ISP.
9. 150117arduino-bootloaders.zip - исходный код и готовые прошивки загрузчиков Arduino.
10. Engbedded Atmel AVR® Fuse Calculator site:engbedded.com.
11. AVR Studio 4.13, 4.14, 4.19, 5.0 и не только.

Статьи про Arduino, периферию и программирование.

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

Описание плат Arduino, Arduino IDE, Scratch, схема работы, история, советы по покупке.

DigiSpark – это Ардуино подобная отладочная плата на ATtiny85. Имеет небольшой размер и минимум pin для подключения периферийных устройств. Программирование также отличается от классической Arduino UNO. Давайте рассмотрим все по порядку.

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

  • Поддержка Arduino IDE 1.0 и более поздних (OS X, Windows и Linux)
  • Питание от USB или внешнего источника - 5 В или 7-35 V (автоматический выбор)

В предыдущей статье уже рассказывал про USB-to-UART TTL конвертер на PL2303HX и как установить драйвера на Linux, Windows 8/10, Mac OS. А сегодня с помощью данного преобразователя запрограммируем Arduino Pro Mini.

Arduino Pro Mini одна из самых маленьких плат семейства Arduino и при этом может использоваться в готовых проектах. Построена на микроконтроллере ATmega168, а позже вышла плата на базе микроконтроллера ATmega328. Платформа содержит 14 цифровых входов и выходов (6 из которых могут использоваться как выходы ШИМ), 6 аналоговых входов. Arduino Pro Mini — это Arduino Nano без встроенного преобразователя FTDI FT232RL (или Ch440G). Поэтому прошивка загружается с помощью программатора или конвертора.

17 сентября 2020 68

Большинство отладочных плат Arduino имеют встроенный USB-to-Serial преобразователь. Но как запрограммировать Arduino pro mini, Arduino pro и другие отладочные платы, которые не оснащены USB-to-Serial конверторами? Тут нам поможет USB-to-UART преобразователь на микросхеме PL2303HX. PL2303HX – это небольшой USB-Serial конвертер со встроенным приемопередатчиком RS232 (интерфейс UART). Микросхема создает на компьютере виртуальный COM — порт, через который можно прошить микроконтроллеры, а так же восстанавливать роутеры, приставки.

15 сентября 2020 63

Программирование Arduino за несколько простых шагов

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

STEP 2
Для начала вам нужно установить Arduino Programmer, также известную как интегрированная среда разработки (IDE).

ШАГ 3
Подключите Arduino к USB-порту компьютера.Для этого может потребоваться специальный кабель USB. Каждый Arduino имеет свой виртуальный адрес последовательного порта, поэтому вам нужно будет перенастроить порт, если вы используете разные Arduinos.

STEP 4
Установите тип платы и последовательный порт в программаторе Arduino.

STEP 5
Протестируйте микроконтроллер с помощью одной из предварительно загруженных программ, называемых эскизами, в Arduino Programmer. Откройте один из примеров эскизов и нажмите кнопку загрузки, чтобы загрузить его.Arduino должен начать реагировать на программу: например, если вы настроили мигать светодиодным индикатором, он должен начать мигать.

STEP 6
Чтобы загрузить новый код в Arduino, вам понадобится либо доступ к коду, который вы можете вставить в программатор, либо вам придется написать его самостоятельно, используя язык программирования Arduino, чтобы создать свой собственный. эскиз. Скетч Arduino обычно состоит из пяти частей: заголовок с описанием скетча и его автора; раздел, определяющий переменные; программа установки, которая устанавливает начальные условия переменных и запускает предварительный код; подпрограмма цикла, в которую вы добавляете основной код, который будет выполняться многократно, пока вы не остановите выполнение скетча; и раздел, в котором вы можете перечислить другие функции, которые активируются во время настройки и подпрограмм цикла.Все эскизы должны включать в себя процедуры настройки и цикла.

STEP 7
После того, как вы загрузили новый скетч в Arduino, отсоедините его от компьютера и интегрируйте в свой проект, как указано.

Этот проект был взят из Большая книга хаков: 264 удивительных технических проекта DIY, _ сборник гениальных и веселых проектов для начинающих разработчиков. Купите здесь.

Learning Arduino Programming - платформа для сборки роботов Arduino с открытым исходным кодом | Ресурсы для обучения Makeblock

Arduino - это электронная платформа с открытым исходным кодом, основанная на простом в использовании аппаратном и программном обеспечении.Он предназначен для всех, кто создает интерактивные проекты. Среда разработки Arduino позволяет легко писать код и загружать его на плату ввода-вывода. Вы можете использовать язык Arduino (C \ C ++) для взаимодействия с оборудованием Arduino.
Мы предоставляем полную среду с использованием Arduino.

Step2 Установите библиотеку Makeblock для Arduino

  1. Загрузите zip-пакет библиотеки: https://github.com/Makeblock-official/Makeblock-Libraries/archive/master.zip
  2. Распакуйте папку makeblock в zip-архиве в библиотеку Arduino по умолчанию:
    • Windows 7: «[каталог установки arduino] \ библиотеки» Ваша папка библиотеки Arduino теперь должна выглядеть следующим образом (в Windows):
      [каталог установки arduino] \ libraries \ makeblock \ src
      [каталог установки arduino] \ библиотеки \ makeblock \ пример
      ....
    • или подобное (на Mac):
      [каталог arduino] \ Contents \ Java \ libraries \ makeblock \ src
      [каталог arduino] \ Contents \ Java \ libraries \ makeblock \ example
      ...
    • или аналогично для Linux.
  3. Откройте приложение Arduino. Если он уже открыт, вам нужно перезагрузить, чтобы увидеть изменения.
  4. Щелкните «Файл-> Примеры». Вот некоторые тестовые программы

Step3 Базовый пример

Что вам понадобится:
Starter Robot Kit или Ultimate Robot Kit для создания ультразвуковой машины.

  1. Подключите Arduino к ПК с помощью кабеля USB. В Arduino IDE нажмите «Файл-> Примеры» и выберите пример.
  2. Выберите тип платы и номер COM.
    • Orion / mCore - выберите Arduino Uno
    • Auriga / MegaPi - выберите Arduino Mega 2560
    • Плинтус
    • Me - выберите Arduino Leonardo

  3. Нажмите кнопку «Загрузить», чтобы скомпилировать и загрузить код. Примерно через 1 минуту он покажет «Готово».

альтернативных интерфейсов Arduino - learn.sparkfun.com

Обзор опций

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

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

ArduBlock - расширение Arduino для визуального программирования

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

ArduBlock - идеальный интерфейс, если вы только начинаете заниматься программированием, электроникой или Arduino. Ознакомьтесь с разделом ArduBlock этого руководства для ознакомления и краткого руководства по началу работы.

Minibloq - Автономное программное обеспечение для визуального программирования

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

Одной из самых мощных функций Minibloq является генерация кода в реальном времени - когда вы перетаскиваете блоки в свою программу, одновременно генерируется эквивалентный код. Это делает Minibloq отличным инструментом для начинающих и программистов среднего уровня.

Ознакомьтесь с разделом Minibloq этого руководства для ознакомления с интерфейсом.

... и выше

Это альтернативы, которые мы обсудим в этом руководстве, но есть много других, которые стоит проверить, в том числе:

  • Scratch for Arduino - Еще визуальное программирование ! Scratch for Arduino (S4A) - это рифф популярной среды программирования Scratch.Если вы опытный пользователь Scratch, вам определенно стоит попробовать!
  • Modkit - После успешной кампании на Kickstarter Modkit уверенно идет к созданию еще одной отличной visual альтернативы Arduino. Посетите их веб-сайт и почувствуйте их визуальную среду на основе браузера .
  • Arduino IDE для Atmel Studio - Atmel Studio - невероятно мощный инструмент для программирования и отладки микросхем AVR, подобных тем, что есть на Arduino.Если вы ищете более продвинутый подход к Arduino или чипам Atmel в целом, попробуйте это расширение для Atmel Studio.

Это расширение может быть чрезвычайно мощным инструментом - в комплекте с реализацией точки останова и множеством функций, к которым вы можете привыкнуть из более продвинутых IDE.

ArduBlock

ArduBlock - это среда программирования, призванная сделать «физические вычисления с Arduino такими же простыми, как перетаскивание».«Вместо того, чтобы писать код, беспокоиться о синтаксисе и (неправильно) расставлять точки с запятой, ArduBlock позволяет визуально программировать с помощью связанного списка блоков кода.

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

Установка ArduBlock

ArduBlock является чем-то вроде «надстройки» к Arduino, поэтому для него требуется, чтобы у вас была установлена ​​Arduino IDE.Однако преимущество этого заключается в том, что Arduino является многоплатформенным - ArduBlock работает в Windows, Mac или Linux . Кроме того, наличие уже существующей Arduino упрощает переход от визуального программирования к текстовому программированию, когда неизбежность приближается.

Установка ArduBlock может быть немного сложной - нет установщика, только файл Java, который нужно сохранить в очень определенном месте. Чтобы установить его, выполните следующие действия:

  1. Загрузите и установите Arduino (если вы еще этого не сделали) - Ardublock является расширением IDE Arduino по умолчанию, поэтому для его запуска вам потребуется установить Arduino на свой компьютер.Ознакомьтесь с нашим руководством по установке Arduino IDE, чтобы узнать, как это сделать.
  2. Загрузите ArduBlock - щелкните ссылку слева или перейдите на страницу ArduBlock Sourceforge, чтобы найти самую последнюю и лучшую версию.
  3. Определите местоположение вашей книги Arduino Sketchbook - это папка на вашем компьютере, в которой по умолчанию сохраняются ваши эскизы и библиотеки. Чтобы найти местоположение вашего блокнота, запустите Arduino и откройте Preferences , перейдя в File> Preferences.Содержимое верхнего текстового поля определяет местоположение вашего альбома для рисования. Запомните это место и закройте Arduino.

  4. Создайте [альбом для рисования] / tools / ArduBlockTool / tool / - файл Ardublock, который вы загрузили ранее, должен находиться в очень определенном месте в вашем альбоме для рисования Arduino. Перейдите в свой альбом для рисования, затем создайте группу из трех каталогов: tools > ArduBlockTool > tool (будьте осторожны, каждая папка чувствительна к регистру ).
  5. Вставьте «ardublock-xxxxxxxx.jar» в / tool / - Вставьте загруженный вами файл Ardublock - файл JAR (Java ARchive) - в последнюю папку в созданном вами гнезде.
  6. Запустите Arduino - или перезапустите его, если он был открыт.
  7. Выберите плату и последовательный порт - Как и при использовании Arduino, выберите плату и последовательный порт в меню «Инструменты».
  8. Откройте ArduBlock - запустите ArduBlock, щелкнув Tools > ArduBlock .Если вы не видите здесь записи для ArduBlock, дважды проверьте, чтобы все ваши каталоги были правильно набраны и заключены в регистр.

ArduBlock работает рука об руку с Arduino IDE - он полагается на то, что IDE открыта в фоновом режиме, поэтому не закрывает окно Arduino !

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

Окно ArduBlock разделено на две половины. Слева есть «ящики», в которых хранятся все возможные блоки, которые вы можете добавить в свой скетч. На пустой серой доске справа от нее вы «рисуете» свой набросок.Чтобы добавить блок к вашему эскизу, просто перетащите его из корзины в пустую серую область.

Для начала, для каждого скетча ArduBlock требуется программный блок , который вы можете найти в разделе «Управление». Блок Program определяет функции setup и loop , которые требуются каждой программе Arduino.

Оттуда вы можете перетащить больше блоков, привязав их к секциям loop или setup . Вот попробуйте сделать программу мигания .Блоки набора цифровых выводов , которые действуют на цифровой вывод (аналог функции Arduino digitalWrite ), находятся в разделе «Выводы». Блок задержки в миллисекундах , находящийся в разделе «Управление», аналогичен функции delay Arduino.

Затем нажмите Загрузить в Arduino , чтобы отправить рисунок на плату Arduino. Вы можете ALT + TAB вернуться в окно Arduino, чтобы проверить статус загрузки кода.

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

Советы и хитрости ArduBlock

Вы можете клонировать блоков или групп блоков, щелкнув правой кнопкой мыши и выбрав «Клонировать».Все, от блока, который вы щелкнули правой кнопкой мыши, до нижней части этой «группы» будет скопировано и вставлено в верхний левый угол окна. Это огромная экономия времени на для больших рисунков.

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

Наконец, если вы снова взглянете на окно Arduino после загрузки чертежа ArduBlock, вы можете заметить кое-что другое. Чтобы создать ваш код, программа ArduBlock просто анализирует ваши блоки и выводит эквивалентный код Arduino в окно Arduino.

Это станет отличным инструментом обучения, если вы хотите перейти от графического программирования к текстовому.

Ресурсы ArduBlock

Цифровая песочница SparkFun

В наличии DEV-12651

Цифровая песочница (DS) - это обучающая платформа, охватывающая как программный, так и аппаратный мир.Он оснащен микро…

12

Миниблок

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

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

Minibloq специализируется на робототехнике . Он включает поддержку популярных платформ робототехники, таких как Multiplo и наш RedBot Kit.

Начало работы с Minibloq

Перейдите на страницу загрузки Minibloq, чтобы получить последнюю версию. Имейте в виду, что, по крайней мере, на данный момент Minibloq (в основном) совместим только с Windows .

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

Раздел оборудования позволяет вам выбрать вашу Arduino-совместимую плату среди опций, включая RedBoard, Arduino Uno, Arduino Leonardo, RedBot Kit и другие.

Среднее окно редактора Minibloq - это то место, где вы будете проводить большую часть своего времени при создании программы. Это представление работает рука об руку с отдельным окном «Действия», в котором вы нажимаете кнопки, чтобы добавлять блоки в свою программу.

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

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

Затем ознакомьтесь с некоторыми из включенных примеров, перейдя в Файл > Примеры . Среди множества примеров эскизов - коллекция специальных программ SparkFun Inventor's Kit и RedBot Kit. Проверьте их!

Ресурсы Minibloq


Ищете подходящую Arduino?

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

Отведи меня туда!

Узнайте, как программировать платы Arduino сегодня с помощью этих команд

9369 9369
Проверить Сканирует ваш код и сообщает о любых ошибках
Загрузить Компилирует ваш код и загружает его на плату Arduino через USB
Новый Открывает пустой эскиз Arduino
Открыть Открывает список сохраненных эскизов в браузере файлов
Сохранить Сохраняет текущий эскиз
Serial Monitor Открывает последовательный монитор в новом window
Структура программы Arduino
void setup () {} Выполняется один раз при запуске
void loop () {} Выполняется постоянно
Настройка контактов
pinMode (PIN_NUMBER, INPUT / OUTPU T) Устанавливает вывод в местоположении PIN_NUMBER как INPUT или OUTPUT
pinMode (PIN_NUMBER, INPUT_PULLUP) Устанавливает контакт в местоположении PIN_NUMBER как вход с использованием встроенного вывода платы Arduino -вверх резистор
digitalRead (PIN_NUMBER) Считывает ввод с PIN_NUMBER и возвращает 1 или 0 (HIGH или LOW)
digitalWrite (PIN_NUMBER, VALUE) Записывает значение 1 или 0 (HIGH или LOW) к цифровому контакту PIN_NUMBER
analogRead (PIN_NUMBER) Считывает аналоговый контакт PIN_NUMBER и возвращает целое число от 0 до 1023
analogWrite (PIN_NUMBER, VALUE) Эмулирует аналоговый выход VALUE с использованием PINUM_NUM (примечание: доступно только на контактах 3, 5, 6, 9, 10 и 11)
аналоговая ссылка (ПО УМОЛЧАНИЮ) Используйте опорное напряжение по умолчанию (5 В или 3.3 В в зависимости от напряжения платы)
аналоговая ссылка (ВНУТРЕННЯЯ) Используйте внутреннее опорное напряжение (1,1 В для ATmega168 / 328p, 2,56 для ATmega 32U4 / 8)
аналоговая ссылка (ВНЕШНЯЯ) Используйте приложенное напряжение на вывод AREF в качестве опорного напряжения (примечание: только 0-5 В)
Функции времени
миллис () Возвращает время в миллисекундах с момента начала работы скетча Arduino как длинное целое число без знака
micros () Возвращает время в микросекундах с момента начала работы скетча Arduino как длинное целое число без знака
delay (INTEGER) Задерживает выполнение программы на INTEGER миллисекунды
delayMEGER3 Delays (INTEGER3) выполнение программы для целых микросекунд
Математические функции
мин (i, j) Возвращает наименьшее из двух значений i и j
max (i, j) Возвращает наибольшее из двух значений i и j
abs (i) Возвращает абсолютное значение i
sin (угол) Возвращает синус угла в радианах
cos (угол) Возвращает косинус угла в радианах
tan (угол) Возвращает тангенс угол в радианах
sqrt (i) Возвращает квадратный корень из i
pow (основание, экспонента) Восстанавливает основание числа до степени (например,g pow (2, 3) == 8)
constrain (i, minval, maxval) Сопоставляет значение i между minval и maxval
map (val, fromL, fromH, toL, toH) Переназначает val из одного диапазона в другой
random (i) Возвращает случайное длинное целое число меньше i
random (i, j) Возвращает случайное длинное целое число между i и j
randomSeed (k) Использует значение k для заполнения функции random ()
Приведение
(тип) переменная Преобразует значение переменной в новый тип
Serial Связь
Последовательный.begin (speed) Начать последовательную связь с указанной скоростью
Serial.end () Закрыть последовательную связь
Serial.print (DATA) Печатает ДАННЫЕ на последовательный порт. ДАННЫЕ могут быть символами, строками, целыми числами и числами с плавающей запятой
Serial.available () Вернуть количество символов, доступных для чтения в последовательном буфере
Serial.read () Прочитать первый символ в последовательном буфере (возвращает -1, если данные недоступны)
Serial.write (DATA) Записать ДАННЫЕ в последовательный буфер. ДАННЫЕ могут быть символом, целым числом или массивом
Serial.flush () Очищает последовательный буфер после завершения исходящей связи
Servo (#include the Servo.h tag)
Servo myServo Создает переменную myServo типа Servo
myServo.attach (PIN_NUMBER) Связывает myServo с контактом в местоположении PIN_NUMBER
myServo.write (angle) Записывает угол между 0 и 180 сервоприводом, подключенным к myServo
myServo.writeMicroseconds (us) Записывает значение в микросекундах на сервопривод, подключенный к myServo (обычно между 1000 и 2000 с 1500 в качестве средней)
myServo.read () Возвращает целое число, содержащее текущий угол сервопривода от 0 до 180
myServo.attached () Возвращает истину, если сервопривод прикреплен к выводу
myServo.detach () Разъединяет myServo с прикрепленным контактом
myServo.detach () Разъединяет myServo с прикрепленным контактом

Как программировать Arduino?

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

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

Программы в среде Arduino называются эскизами. В среде Arduino IDE белое пространство, выделенное на изображении ниже, называется текстовым редактором.Это пространство можно использовать для написания всего кода для наших плат Arduino.

Выберите следующий набор проектов Arduino, которые вы хотите изучить в Electronicshub : Arduino Projects »

Прежде чем с энтузиазмом приступить к написанию нашей собственной программы, мы сначала рассмотрим пример скетча, представленный в Arduino IDE. Для этого нам нужно перейти в меню «Файл» и перейти на вкладку «Примеры». В раскрывающемся меню вкладки Примеры мы можем увидеть список правильно разделенных на категории примеров, таких как Базовый, Аналоговый, Цифровой, Связь и т. Д.

Как новичок или первый пользователь, используйте базовые примеры и выберите в них эскиз «Мигание». Откроется новое окно с эскизом Blink. Используя эскиз Blink, мы собираемся включить светодиод, подключенный к выводу 13 Arduino, на одну секунду и выключить его на одну секунду повторяющимся образом, то есть мы будем мигать светодиодом непрерывно.

Всякий раз, когда мы начинаем с электроники и, в частности, микроконтроллеров, первый проект или программа, которую мы реализуем, - это мигание светодиода, поскольку мигание светодиода в электронике считается эквивалентом Hello World в C.

На этом этапе мы напрямую загрузим скетч, не углубляясь в программную часть проекта. Чтобы загрузить эскиз на плату Arduino, нам нужно использовать два значка в Arduino IDE: сначала «Проверить или скомпилировать», а затем «Загрузить». Эти значки выделены на изображении ниже.

Первый значок с галочкой - это значок проверки или компиляции. Используя этот значок, мы можем проверить правильность написанного скетча с точки зрения синтаксиса и показать ошибки компиляции, если они есть.Мы загружаем скетч только в том случае, если компиляция прошла успешно, без ошибок. В качестве альтернативы мы можем использовать сочетание клавиш Ctrl + R для проверки или компиляции эскиза.

Часть в нижней части IDE называется окном сообщений. Он отображает статус компиляции, сообщения об ошибках и подробную информацию об ошибках. Если мы скомпилируем скетч с помощью первого значка, мы сможем увидеть статус компиляции и сообщение Done Compilation в окне сообщений.

Если в скетче есть ошибка, например, пропущенная точка с запятой или незакрытая скобка, компиляция останавливается на этом месте, и в окне сообщения указывается ошибка вместе с ее типом и местоположением.Используя это, мы можем исправить ошибку.

Второй значок рядом со значком «Подтвердить» - это значок «Загрузить». Как только компиляция скетча будет успешной, мы сможем загрузить скетч, используя этот значок. Существует сочетание клавиш Ctrl + U для загрузки скомпилированного скетча. Каждый раз, когда мы нажимаем на значок «Загрузить», эскиз компилируется перед загрузкой.

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

В это время светодиоды TX и RX на плате Arduino UNO мигают, указывая на то, что данные передаются через последовательный порт. Как только скетч будет успешно загружен, в окне сообщений появится сообщение Done Uploading.

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

После успешной загрузки скетча светодиод на плате Arduino, который подключен к его 13 -й штифт , начнет мигать с интервалом в одну секунду (или согласно написанному эскизу).

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

Программирование микроконтроллеров Arduino для начинающих | разработано специалистами по программному обеспечению j-labs

Проверьте, насколько просто и легко программировать микроконтроллер Arduino.

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

Пусть это руководство вдохновит вас на создание собственных устройств, микромашин, компонентов умного дома и многого другого!

Настройте свою плату и IDE

Шаг 1 - вам нужна плата Arduino. Существует множество типов плат, а также множество клонов, для начала, Arduino Uno - самый дешевый выбор.

Шаг 2 - Загрузите программное обеспечение Arduino Ide. Загрузите программное обеспечение IDE, совместимое с вашей ОС, с официальной страницы https://www.arduino.cc/en/Main/Software.

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

Шаг 3 - Включите плату. Подключите плату Arduino к ПК с помощью USB-кабеля.

Шаг 4 - Запустите и настройте IDE.

  • Файл -> Новое для запуска нового проекта
  • Инструменты -> Плата для выбранного типа платы, которую вы используете
  • Инструменты -> Последовательный порт для выбора порта, плата подключена к

Теперь вы готовы к написать код.

Структура кода

Программное обеспечение Arduino имеет открытый исходный код. Исходный код среды Java выпускается под лицензией GPL, а библиотеки микроконтроллеров C / C ++ - под лицензией LGPL.

Структура кода состоит из двух основных функций:

· Функция Setup ()

· Функция Loop ()

Пустая настройка () {

}

Функция настройки используется для инициализировать переменные, режимы контактов, прикрепить библиотеки. Эта функция будет запускаться только один раз после включения платы или после сброса.

Пустой цикл () {

}

Эта функция циклически повторяется последовательно, позволяя программе изменяться и реагировать.Активно управлять платой

Содержит основное тело программы.

Создание проекта

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

Я буду использовать:

  • Датчик пыли DMS501
  • простой двухстрочный ЖК-дисплей (с поворотным потенциометром) 2 строки с 16 буквами для представления результата измерения.
  • В качестве контроллера я использую Arduino Mega (клон), но все используемые модули можно подключить к плате Arduino.

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

Примечание:

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

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

Существует множество руководств для любого типа дисплея / модуля, который у вас есть.

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

Схема выводов подключения для ЖК-дисплея, как указывалось ранее, это не единственный способ сделать это с ЖК-дисплеем 2x16:

Описание контактов:

1 Земля (0 В) - Земля
2 Напряжение питания; 5 В (4,7 В - 5,3 В) - Vcc
3 Регулировка контрастности; через переменный резистор - VEE
4 Выбирает регистр команд при низком уровне и регистр данных при высоком - Регистр Выберите
5 Низкий для записи в регистр; Высокий уровень для чтения из регистра - чтение / запись
6 Отправляет данные на контакты данных при подаче импульса от высокого к низкому - Включить
7 8-битных контактов данных - D80
8 8-битных контактов данных - D81
9 8-битных выводы данных - D82
10 выводов 8-битных данных - D83
11 выводов 8-битных данных - D84
12 выводов 8-битных данных - D85
13 8-битных выводов данных - D86
14 8-битных выводов данных - D87
15 Backlight VCC (5V) - Led +
16 Backlight Ground (0V) - Led

И датчик пыли:

Полная схема подключения:

Код - переменные и библиотеки

Этот код C ++ универсален и будет работать на любой плате Arduino или клонировать.

Я разделил все переменные на первую часть кода.

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

Другая часть - определить PINS, к которым фактически подключаются кабели.

Setup ()

Часть настройки содержит код, который будет выполняться при запуске - только один раз.

Инициализация для двух модулей.

Шлейф для прогрева датчика.

Вывод информации на консоль и на ЖК-дисплей

Loop ()

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

Запрос данных от датчика и очистка ЖК-дисплея для удаления текста счета.

Я использую методы библиотеки dsm501 для получения информации о плотности частиц

для последующей печати на ЖК-дисплее. Я использую эту библиотеку, потому что в основном этот датчик обеспечивает количество частиц на квадратный фут, а эти единицы мало что говорят о нашей стране.

Lib содержит нетривиальный расчет для преобразования его в мкг / м3 (микрограмм на квадратный метр)

Консоль

Ввод инструментов-> Serial Monitor покажет консоль

Конечное устройство

Сводка

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

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

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

Мир маленькой электроники открыт для всех, кто хочет попробовать.

Как программировать Arduino с помощью устройства Android

Мы создали множество проектов Arduino и все время использовали официальную Arduino IDE для программирования Arduino.Но знаете ли вы, что мы также можем запрограммировать Arduino с помощью вашего смартфона . Иногда у нас нет ПК или ноутбука для программирования наших плат Arduino. Мы все еще можем программировать его с помощью нашего мобильного Android-устройства, благодаря адаптеру OTG (On the Go).

Возможно, вы использовали адаптер OTG для подключения Pendrives и игровых контроллеров, а также для питания небольших устройств. Вы можете делать гораздо больше, кроме включения платы Arduino со смартфона. В этом руководстве мы скомпилируем и загрузим код Arduino с помощью приложения для Android под названием «ArduinoDroid» , которое полностью совпадает с Arduino IDE.

Необходимые материалы:
  1. Плата Arduino
  2. Кабель OTG
  3. USB-кабель Arduino
  4. Устройство Android

Начнем с установки приложения ArduinoDroid:

Шаг 1: Загрузите приложение по приведенной ниже ссылке или просто зайдите в магазин игр, найдите ArduinoDroid и установите его.

https://play.google.com/store/apps/details?id=name.antonsmirnov.android.arduinodroid2

Шаг 2: Откройте приложение после установки. Это будет выглядеть так, как показано ниже:

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

Шаг 3: Вы найдете опцию Sketch в раскрывающемся меню, как показано ниже. В меню эскиза есть опция Примеры , щелкните по ней.

В этом меню вы найдете несколько примеров, как в Arduino IDE. Выберите пример кода, который вы хотите записать внутри Arduino. Здесь, , мы загрузим Программа Blink .

Шаг 4: Подключите плату Arduino к устройству Android с помощью кабеля USB и OTG.

Шаг 5: Выберите свою плату в меню «Настройки »> «Тип платы» .

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

Вы можете увидеть статус компиляции в окне вывода.

Шаг 6: После завершения компиляции нажмите кнопку Загрузить , как показано ниже.

Ваша программа успешно загружена, как вы можете видеть в окне вывода. Как только он будет загружен, вы увидите, что на плате , светодиод начнет мигать.Вы можете проверить полную процедуру в Видео , приведенном ниже.

Также помните, что вам не нужно подавать какое-либо внешнее питание на плату Arduino, поскольку она будет получать питание от вашего смартфона Android с помощью кабеля OTG.

.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *