Arduino: выбор платы, подключение и первая программа

Начало работы с Ардуино

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

Чаще всего плата выглядит вот так:

На рисунке показана одна из плат Ардуино – Arduino Uno. Мы изучим ее подробнее на следующих уроках.

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

Вся работа над проектом разбивается на следующие этапы:

  1. Придумываем идею и проектируем.
  2. Собираем электрическую схему. Тут нам пригодится макетная плата, упрощающая монтаж элементов. Безусловно, понадобятся навыки работы с электронными приборами и умение пользоваться мультиметром.
  3. Подключаем плату Arduino к компьютеру через USB.
  4. Пишем программу и записываем ее в плату буквально нажатием одной кнопки на экране в специальной среде программирования Arduino.
  5. Отсоединяем от компьютера.  Теперь устройство будет работать автономно – при включении питания оно будет управляться той программой, которую мы в него записали.

Программа и среда программирования выглядят вот так:

На экране показана программа (на сленге ардуинщиков текст программы называется “скетч”), которая будет мигать лампочкой, подсоединенной к 13 входу на плате Ардуино UNO. Как видим, программа вполне проста и состоит из понятных для знающих английский язык инструкций. В языке программирования Arduino используется свой диалект языка C++, но все возможности C++ поддерживаются.

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

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

В целом все выглядит довольно понятно, не так ли? Осталось разобраться в деталях.

Подготовка и бесконечность

В любой программе для Arduino есть две принципиальные части: подготовительная часть и основной цикл.

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

Основной цикл — это то, что происходит в функции loop(). Ардуино берёт оттуда команды и выполняет их подряд. Как только команды закончились, он возвращается в начало цикла и повторяет всё. И так до бесконечности.

В основном цикле мы описываем все полезные вещи, которые должен делать контроллер: считывать данные, мигать лампами, включать-выключать моторы, кормить кота и т. д.

Стартовый набор Arduino

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

Базовый набор ардуино для начинающих:
Большой набор для обучения и первых проектов:
Набор дополнительных датчиков и модулей:
Ардуино Уно самая базовая и удобная модель из линейки:
Беспаечная макетная плата для удобного обучения и прототипирования:
Набор проводов с удобными коннекторами:
Комплект светодиодов:
Комплект резисторов:
Кнопки:
Потенциометры:

Аппаратная часть Arduino

Для начала стоит уяснить, что собой представляет микроконтроллер. По логике, это небольшое устройство, к которому подключаются все остальные элементы системы. Ардуино должен координировать их работу при помощи прописанных в нём скриптов, выдавая соответствующие электрические сигналы. Для стандартного МК Ардуино сигналом является 5 вольт – это единичка, а отсутствие сигнала – нолик.

Именно на таком принципе построено программирование двоичным кодом. Но от такой системы мы уже давно ушли, и потому к устройству можно подключать трансформаторы переменного тока и дополнительные резисторы, ведь некоторым модулям требуется ток в 3.2-4.7 Вольт.

Соответственно, аппаратная часть Ардуино в стандартной комплектации представлена чипом с постоянной памятью, набором из резисторов и транзисторов, а также несколькими пинами. Такая простая конструкция позволяет пользователю самому навешивать «улучшения» по необходимости.

С «коробки» в микроконтроллер устанавливается стандартная прошивка, способная распознавать базовые АТ команды. Пользователь может переустановить её или перепрошить Ардуино по желанию, но стоит учитывать, что без должного опыта вы можете получить бесполезную и неработающую плату.

Как несложно догадаться, изначально Ардуино – это лишь инструмент, который позволяет координировать работу всей системы. А делает он это при помощи встроенных в него библиотек, которые можно устанавливать в систему дополнительно, по необходимости. Вплоть до того, что вы можете поставить вспомогательную карту памяти, если не хватает места. А сами же библиотеки написаны на низкоуровневом C++, который обеспечивает полный контроль над работой микроконтроллера, но имеет и ряд весомых недостатков, о которых мы и поговорим ниже.

Подключение вашей платы Arduino к компьютеру

После того как вы установили Arduino IDE на свой компьютер следующим логичным шагом будет подключение платы Arduino UNO к компьютеру. Чтобы сделать это просто используйте кабель для программирования (синего цвета) и соедините его с платой Arduino и USB портом вашего компьютера.

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

  1. Он запитывает плату Arduino UNO, то есть чтобы обеспечить выполнение программ на ней необходимо просто запитать ее с помощью USB кабеля.
  2. Через него программируется микроконтроллер ATmega328, находящийся на плате Arduino UNO. То есть код программы пересылается из компьютера в микроконтроллер именно по этому кабелю.
  3. Он может функционировать в качестве кабеля для последовательной связи, то есть с его помощью можно передавать данные с Arduino UNO в компьютер – это полезно для целей отладки программы.

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

Поскольку вы подключаете плату Arduino в первый раз к компьютеру необходимо некоторое время чтобы драйвера для нее успешно установились. Чтобы проверить правильно ли все установилось и определилось откройте «Диспетчер устройств (Device manager)» на вашем компьютере.

В диспетчере устройств откройте опцию «Порты» “Ports (COM & LPT)”, кликните на ней и посмотрите правильно ли отображается там ваша плата.

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

Если вы не можете в диспетчере устройств найти опцию “Ports (COM & LPT)”, то это означает, что ваша плата не корректно определилась компьютером. В большинстве случает это означает проблему с драйверами – по какой то причине они автоматически не установились для вашей платы. В этом случае вы должны будете вручную установить необходимые драйверы.

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

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

Язык программирования Ардуино

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

Для программирования Arduino используется упрощенная версия языка C++ с предопределенными функциями. Как и в других Cи-подобных языках программирования есть ряд правил написания кода. Вот самые базовые из них:

  • После каждой инструкции необходимо ставить знак точки с запятой (;)
  • Перед объявлением функции необходимо указать тип данных, возвращаемый функцией или void если функция не возвращает значение.
  • Так же необходимо указывать тип данных перед объявлением переменной.
  • Комментарии обозначаются: // Строчный и /* блочный */

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

Все прошивки для Arduino должны содержать минимум 2 функции. Это setup() и loop().

Функция setup

Функция setup() выполняется в самом начале и только 1 раз сразу после включения или перезагрузки вашего устройства. Обычно в этой функции декларируют режимы пинов, открывают необходимые протоколы связи, устанавливают соединения с дополнительными модулями и настраивают подключенные библиотеки. Если для вашей прошивки ничего подобного делать не нужно, то функция все равно должна быть объявлена. Вот стандартный пример функции setup():

Функция loop

Функция loop() выполняется после функции setup(). Loop в переводе с английского значит «петля». Это говорит о том что функция зациклена, то есть будет выполняться снова и снова. Например микроконтроллер ATmega328, который установлен в большинстве плат Arduino, будет выполнять функцию loop около 10 000 раз в секунду (если не используются задержки и сложные вычисления). Благодаря этому у нас есть большие возможности.

О пустом месте и красивом коде

В языке C++ пробелы, переносы строк, символы табуляции не имеют большого значения для компилятора.
Там где стоит пробел, может быть перенос строки и наоборот. На самом деле 10 пробелов подряд,
2 переноса строки и ещё 5 пробелов — это всё эквивалент одного пробела.

Пустое пространство — это инструмент программиста, с помощью которого можно или сделать программу
понятной и наглядной, или изуродовать до неузнаваемости. Например, вспомним программу для мигания
светодиодом:

void setup()
{
    pinMode(5, OUTPUT);
}
 
void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(900);
}

Мы можем изменить её так:

void setup(
)
    {
pinMode(5, OUTPUT);
    }
 
        void loop
    () {
digitalWrite(5,HIGH);
delay(100
)
;
    digitalWrite(5,LOW);
    delay(900); }

Всё, что мы сделали — немного «поработали» с пустым пространством. Теперь можно наглядно видеть
разницу между стройным кодом и нечитаемым.

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

1. Всегда, при начале нового блока между и увеличивайте отступ. Обычно используют 2 или 4
пробела. Выберите одно из значений и придерживайтесь его всюду.

Плохо:

void loop()
{
digitalWrite(5, HIGH);
delay(100);
digitalWrite(5, LOW);
delay(900);
}

Хорошо:

void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(900);
}

2. Как и в естественном языке: ставьте пробел после запятых и не ставьте до.

Плохо:

digitalWrite(5,HIGH);
digitalWrite(5 , HIGH);
digitalWrite(5 ,HIGH);

Хорошо:

digitalWrite(5, HIGH);

3. Размещайте символ начала блока на новой строке на текущем уровне отступа или в конце предыдущей.
А символ конца блока на отдельной строке на текущем уровне отступа:

Плохо:

void setup()
{
    pinMode(5, OUTPUT); }
 
void setup()
    {
    pinMode(5, OUTPUT);
    }
 
void setup()
        {
    pinMode(5, OUTPUT);
        }

Хорошо:

void setup()
{
    pinMode(5, OUTPUT); 
}
 
void setup() {
    pinMode(5, OUTPUT); 
}

4. Используйте пустые строки для разделения смысловых блоков:

Хорошо:

void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
    digitalWrite(5, LOW);
    delay(900);
    digitalWrite(6, HIGH);
    delay(100);
    digitalWrite(6, LOW);
    delay(900);
}

Ещё лучше:

void loop()
{
    digitalWrite(5, HIGH);
    delay(100);
 
    digitalWrite(5, LOW);
    delay(900);
 
    digitalWrite(6, HIGH);
    delay(100);
 
    digitalWrite(6, LOW);
    delay(900);
}

Простые проекты Ардуино

Давайте начнем наш обзор с традиционно самых простых, но очень важных проектов, включающих в себя минимальное количество элементов: светодиоды, резисторы и, конечно же, плату ардуино. Все примеры рассчитаны на использование Arduino Uno, но с минимальными изменениями будут работать на любой плате: от Nano и Mega до Pro, Leonardo и даже LilyPad.

Проект с мигающим светодиодом – маячок

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

Нам понадобится:

  • Плата Ардуино Uno, Nano или Mega со встроенным светодиодом, подключенным к 13 пину.
  • И все.

Что должно получиться в итоге:

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

Схема проекта

Схема проекта довольно проста:  нам нужен только контроллер ардуино со встроенным светодиодом, подсоединенным к пину 13. Именно этим светодиодом мы и будем мигать. Подойдут любые популярные платы: Uno, Nano, Mega и другие.

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

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

Программирование в проекте Ардуино

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

Открываем программу Arduino IDE, убеждаемся, что выбран нужный порт.

Проверка порта Ардуино – выбираем порт с максимальным номером

Затем открываем уже готовый скетч Blink – он находится в списке встроенных примеров. Откройте меню Файл, найдите подпункт с примерами, затем Basics и выберите файл Blink.

Открываем пример Blink в Ардуино IDE

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

Кнопки компиляции и загрузки скетча
Информация в Arduino IDE – Загрузка завершена

Ждем немного (внизу можно отследить процесс загрузки) – и все. Плата опять подмигнет несколькими светодиодами, а затем один из светодиодов начнет свой размеренный цикл включений и выключений. Можно вас поздравить с первым загруженным проектом!

Проект маячка со светодиодом и макетной платой

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

Графическое изображение схемы подключения доступно на следующем рисунке:

Другие идеи проектов со светодиодами:

  • Мигалка (мигаем двумя свтодиодами разных цветов)
  • Светофор
  • Светомузыка
  • Сонный маячок
  • Маячок – сигнализация
  • Азбука Морзе

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

Наборы и конструкторы Ларт

ЛАРТ Сармат Армага

Набор на основе контроллера Ардуино, при помощи которого можно собрать робота, движущегося по линии. Главный компонент комплекта – миниатюрная плата Ардуино Нано, которая позволяет подключать не только входящие в состав набора компоненты, а и другие элементы совместимые с Ардуино, как механического, так и электронного типа. Это дает возможность совершенствовать полученного робота.

ЛАРТ Печенег Батана

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

Выбрать и купить наборы ЛАРТ можно на официальном сайте: lartmaster.ru/

Конструктор Смарт Робо

Готовый конструктор для создания электронного робота на основе Ардуино, в комплект входит необходимое количество элементов, и руководство к сборке. Базовый элемент набора – плата от Keyestudio (100% аналог Ардуино). Полученный робот может быть запрограммирован на движение по линии, возможность объезда препятствий и управление от дистанционного пульта. Все элементы соединяются при помощи быстроразъемных соединителей и не требуют пайки. Доработать и усовершенствовать полученную конструкцию можно добавив на плату дополнительные элементы, совместимые с контроллером Ардуино.

Конструктор Смарт

Серия наборов, которые отличаются по комплектации. Основной компонент – плата Smart Uno – аналог контроллера Ардуино Уно, не уступающий ему по качественным характеристикам. В зависимости от комплектации (Смарт 10, Смарт 20 и Смарт 30) набор содержит элементы, как для начального уровня проектирования, так и для разработки более сложных проектов. При необходимости возможно подключение других электронных компонентов, совместимых с микроконтроллером.

Смарт Genuino

Серия наборов – Смарт 10 Genuino, Смарт 20 Genuino, Смарт 30 Genuino, которые отличны по количеству деталей в комплекте. Главный базовый компонент – плата Genuino Uno, кроме которой в составе имеются электронные детали, беспаечная макетная плата, провода и руководство по проектированию. Набор будет интересен как новичкам, так и профессиональным пользователям.

Выбрать и купить конструктор SmartElements можно на официальном сайте: https://smartelements.ru/

Робоплатформа Robbo (ScratchDuino)

Конструктор предназначен для обучения детей и взрослых основам робототехники и электроники. Управление роботизированным механизмом может осуществляться из различных сред программирования (Scratch, Lazarus, Кумир) или же пульта управления. Базовый компонент – картридж Ардуино. В зависимости от типа комплектации варьируется количество составных элементов.

Выбрать и купить конструктор Robbo можно на официальном сайте: https://robboclub.ru/

Какова же альтернатива?

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

  • Scratch []. Это веселый и легкий инструмент для детей и подростков, желающих освоить программирование, который даже поддерживает возможность разбиения кода. Конечно же, он не предназначен для встраиваемых систем, но для детей это хороший способ понять, что такое программа.
     
  • Mbed . Онлайн компилятор с открытым кодом, поддерживающий множество модулей и плат на микроконтроллерах различных производителей, включая NXP, Analog Devices, STMicroelectronics, Nordic Semiconductor, Ublox, который отлично подходит для новичков, так как не требует установки инструментальных средств. С компилятором предлагается огромный архив примеров, которые можно легко импортировать в свой проект. Да, речь именно о проектах. Вам дается возможность полного контроля над исходным кодом и его структурой, включая онлайн управление версиями. Предоставляемый mbed код – это Си++, использующий классы и перегрузку операторов, что лично меня, воспитанного на ANSI-C, первоначально немного сбивало с толку, однако документация, которую вы тоже найдете в своем проекте, прозрачна и доступна. Использование периферии нельзя назвать простым, но можно косвенно использовать таймеры для генерирования прерываний по времени, и, опять же, все это хорошо документировано. Вам не нравятся онлайн сервисы? Хорошо, можно работать оффлайн. Единственный, на мой взгляд, недостаток mbed – отсутствие возможности отладки с использованием точек останова и наблюдения.
     
  • Компилятор AVR-GCC/WinAVR с микроконтроллерами серии Xmega. Пакет программ AVR-GCC (с библиотеками avr-libc) имеет солидную репутацию и очень хорошую базу пользователей . Причина, по которой я рекомендую серию Xmega, – это «фантастическая» документация. Правда, из-за того, что для каждого периферийного устройства есть отдельное указание по использованию, Atmel Studio имеет очень «раздутые» размеры, но зато предоставляет реальный набор мощных инструментов для разметки кода, отладки (точки останова) и симуляции (просмотр и изменение битов регистров периферии). При использовании отладчика Dragon (переоцененного) можно работать с устройствами, имеющими память программ до 32 Кбайт. Конечно, начинать с такого набора без каких-либо знаний в области программирования будет тяжело, но всегда можно найти информацию в Интернете или попросить помощи у знающего друга. При чтении указаний по применению у меня возникает ощущение, что можно создать систему, которая после настройки все будет делать самостоятельно: DMA будут отправлять полученные значения АЦП в память, система событий будет запускать таймеры для запуска ЦАП, и тому подобное. Поработать придется довольно много, но вы сделаете действительно встраиваемую систему. Это как самостоятельно приготовить суши вместо того, чтобы идти в Макдональдс…
     
  • Использовать отладочные платы Launchpad/STM32/… []. Другие ARM платы. И да, и нет… Конечно, ARM – это будущее, но начинать с этого, думаю, довольно сложно. Кроме того, при использовании бесплатных инструментальных наборов вам придется потратить уйму времени на их настройку. Правда, это полезно; оценочная плата с интегрированным отладчиком (8 евро за плату серии STM32F0 Discovery – не сравнить с продуктами Atmel/Microchip), и еще что-то, и в своем резюме вы сможете указать, что работали с ARM. Однако документация в основном посредственная и пугающе объемная. Кроме того, набор опций в компиляторах и средах разработки настолько велик, что порой трудно разобраться, почему программа не компилируется.

AlexGyver

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

Есть также бесплатные видеоуроки. Цикл охватывает все стандартные операторы и функции Ардуино и построен таким образом, что от выпуска к выпуску у зрителя идёт плавное формирование “базы”, каждый последующий урок (видео урок) содержит в себе информацию из предыдущих, то есть уроки усложняются и становятся комплексными.

Что узнает ребенок:

  • Что такое Ардуино и зачем она нужна?
  • Что умеет Ардуино и что можно сделать на её основе?
  • Подключение датчиков к Ардуино
  • Питание Arduino от различных источников электричества
  • Математические операторы для работы с переменными
  • Особенности переменных и констант
  • Общение между компьютером и Arduino Через COM порт
  • Какие существуют типы реле? В чём достоинства и недостатки?
  • Как подключить реле и как им управлять?

И это еще не все. 16 видеоуроков расскажут все нюансы о программировании на Arduino.

ArduinoSim

Это кросс-платформенный симулятор Arduino, который выполняет то, что он обещает, обеспечивая отличную платформу для обучения программированию и дизайну схем. Хотя программа не имеет открытого исходного кода этот симулятор бесплатный и дает вам возможность работать в операционных системах Windows и Linux. ArduinoSim был создан на Python для интеграции с окружающей средой Arduino.

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

Arduino+

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

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

Из следующего курса учащийся узнает, как программировать на Python, как выглядит программное обеспечение Ардуино, как использовать внешние компоненты и макетную плату и многое другое.

Моделирование событий

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

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

Еще одно большое преимущество симуляторов Ардуино заключается в том, что он поддерживает построчную отладку, поэтому пользователь точно знает, где и в какой строке он или она сделал что-то не так. Симуляторы существуют в различных формах и разработаны для совместимости с основными операционными системами — Windows, Linux и Mac OS. Поэтому, чтобы упростить поиск отличного симулятора Arduino, созданного для экосистемы вашего компьютера мы составили список самых популярных программ.

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

В то время как на рынке существует много разновидностей плат, есть несколько видов Ардуино, которые чаще всего можно увидеть. Наиболее часто используемые виды Arduino как инженерами, так и любителями включают в себя:
• Ардуино UNO
• Ардуино Nano
Ардуино Due
• Ардуино
Mega

Arduino UNO

UNO, пожалуй, самая популярная Ардуино. Она основана на микроконтроллере ATmega328, работающего на частоте 16 МГц, включает 32 КБ флеш-памяти, 1 КБ EEPROM, 2 КБ ОЗУ, имеет 14 цифровых входов / выходов, 6 аналоговых входов, а также шины питания 5 В и 3,3 В.

Ардуино Уно

Ардуино Уно имеет стандартный форм-фактор совместимый с большинством шилд на рынке. Разъём питания включён в UNO, что позволяет ему питаться от внешнего блока питания. И также имеется VIN для подключения UNO к батарейкам.
Физические размеры UNO (69 мм x 54 мм) делают его небольшой платой для разработки, которая может легко вписаться во многие проекты.

Arduino Nano

Ардуино нано — это, по сути, UNO с очень маленьким профилем, что делает его очень удобным для ограниченного пространства и проектов, которым возможно, потребуется уменьшить вес.
Как и UNO, Nano имеет на борту процессор Atmega328, работающего на частоте 16 МГц, включает 32 КБ флеш-памяти, 1 КБ EEPROM, 2 КБ ОЗУ. Нано имеет 14 цифровых входов / выходов, 6 аналоговых входов, а также шины питания 5 В и 3,3 В.
(Примечание: на платах Ардуино Нано до версии V3.0 использовался ATmega168, который по сути, имеет половину характеристик.)

Ардуино Нано

Nano, в отличие от UNO, не может подключаться к шилдам Arduino методом простой стыковки. Нано имеет разъёмы, которые делают его полезным для использования на макетных платах. Часто платы Arduino Nano являются самым дешёвым из доступных плат Arduino. Это делает их экономически эффективными для крупных проектов.

Arduino Due

Due — одна из самых больших плат, а также первая плата Ардуино, оснащённая процессором ARM.
В то время как UNO и Nano работают при 5 В, Дуэ работает при 3,3 В — это важно отметить, потому что перенапряжение повредит плату. Процессор ATSAM3X8E Cortex-M3, работающий на частоте 84 МГц, Due имеет 512 КБ ПЗУ и 96 КБ ОЗУ, 54 пина цифрового ввода-вывода, 12 каналов ШИМ, 12 аналоговых входов и 2 аналоговых выхода

Ардуино дуе

Due не имеет встроенной EEPROM и является одной из самых дорогих плат семейства Arduino. Due имеет большое количество выводов для подключения к множеству цифровых входов / выходов. Дуэ также совместимо по выводам со стандартными шилдами Ардуино.

Arduino Mega 2560

Arduino Mega чем-то похожа на Due в том, что она также имеет 54 ввода / вывода. Однако вместо ядра ARM, Мега использует ATmega2560.
Процессор работает на частоте 16 МГц. Мега имеет 256 КБ ПЗУ, 8 КБ ОЗУ и 4 КБ EEPROM. Питается Mega от 5 вольт, что делает его простым в использовании с большинством электронных компонентов.

Ардуино Мега2560

Ардуино Мега имеет 16 аналоговых входов, 15 каналов ШИМ, распиновку похожую на Due, и аппаратно совместима с шилдами Arduino.

Coursera

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

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

Создание устройств будет включать проектирование, изучение компонентов, сборку схем, написание программ, диагностику. Попутно с созданием самих устройств вы сделаете визуализацию на ПК, создадите веб-страницу, которую будет демонстрировать одно из ваших устройств, а также разберетесь с устройством и работой FDM 3D-принтера.

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

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

2 Управление светодиодом и пьезоизлучателемс помощью оператора delay()

Напишем вот такой скетч и загрузим его в Ардуино.

const int soundPin = 3; /* объявляем переменную с номером пина, 
                           на который подключён пьезоэлемент */
const int ledPin = 13;  // объявляем переменную с номером пина светодиода
                     
void setup() {
    pinMode(soundPin, OUTPUT); // объявляем пин 3 как выход.
    pinMode(ledPin, OUTPUT);   // объявляем пин 13 как выход.
}

void loop() {
    // Управление звуком:
    tone(soundPin, 700); // издаём звук на частоте 700 Гц
    delay(200);
    tone(soundPin, 500); // на частоте 500 Гц
    delay(200);
    tone(soundPin, 300); // на частоте 300 Гц
    delay(200);
    tone(soundPin, 200); // на частоте 200 Гц
    delay(200);
    
    // Управление светодиодом:
    digitalWrite(ledPin, HIGH); // зажигаем
    delay(200);
    digitalWrite(ledPin, LOW); // гасим
    delay(200);
}

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

Дело в том, что обычным образом эту задачу не решить. Задачи выполняются микроконтроллером строго последовательно. Оператор delay() задерживает выполнение программы на указанный промежуток времени, и пока это время не истечёт, следующие команды программы не будут выполняться. Из-за этого мы не можем задать разную длительность выполнения для каждой задачи в цикле loop() программы. Поэтому нужно как-то сымитировать многозадачность.

All-Arduino

Программирование микроконтроллеров Arduino осуществляется на языке программирования C++. Этот язык является низкоуровневым, поэтому считается сложным и имеет высокий порог вхождения. Но для программирования Arduino используется упрощенная версия этого языка программирования.

Этот сайт содержит уроки для обучения новичков. Здесь собранны уроки по Arduino для начинающих. Так же будут уроки и по более сложным аспектам программирования ардуино.

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

После прохождения курса вы сможете реализовать проекты любой сложности. Курс по работе с arduino для новичков рассчитан на 8 часов.