Что такое arduino?

Модели Ардуино


Платы Arduino

Вот мы и добрались до самих плат Ардуино, которых на данный момент появилось великое множество благодаря открытости платформы: все схемы и исходные коды находятся в открытом доступе, и вы можете сделать свою версию платы и продавать её, чем активно занимаются китайцы. Единственный пункт: слово Arduino – зарегистрированная торговая марка, и свою плату вам придется назвать как-то по-другому, отсюда и появились всякие Искры, Бузины и прочие так называемые Arduino совместимые платы. Разновидностей плат очень много, но используют они одни и те же модели микроконтроллеров. От модели микроконтроллера зависит объем памяти и количество ног, ну и есть некоторые специальные фишки. На большинстве моделей Arduino стоят 8-битные МК от AVR с кварцевым генератором на 16 МГц (либо ниже), то есть по производительности платы на ATmega не отличаются, отличаются только объемом памяти, количеством ног и интерфейсов/таймеров. Модели Ардуино с МК от производителя ARM, например Arduino DUE, в разы мощнее своих собратьев за счёт 32-битного процессора, но это совсем другая история.

Параметр ATtiny85 ATmega328 ATmega32u4 ATmega2560
Кол-во ног 8 32 44 100
Из них доступны 5 23 24 86
Flash память 8 Kb 32 Kb 32 Kb 256 Kb
EEPROM память 512 bytes 1 Kb 1 Kb 4 Kb
SRAM память 512 bytes 2 Kb 2.5 kB 8 Kb
Каналов АЦП 3 (4 с rst) 6 (8 в SMD корпусе) 12 16
Каналов PWM 3 6 7 15
Таймеры 2х 8bit 2х 8bit 2х 8bit 2х 8bit
1х 16bit 2х 16bit 4х 16bit
Serial интерфейс Нет х1 х1 х4
I2C интерфейс Нет Да Да Да
Прерывания 1 (6 PCINT) 2 (23 PCINT) 5 (44 PCINT) 8 (32 PCINT)
Платы на его основе Digispark, LilyTiny Uno, Nano, Pro Mini, Lilypad, Strong Leonardo, Micro, Pro Micro, BS Micro Mega, Mega Pro

Таким образом вы должны сразу понять, что, например, Ардуино Уно=Нано=Про Мини=Лилипад по своим возможностям и взаимозаменяемости. Или Леонардо=Про Микро. Ссылки на недорогие китайские Ардуины вы можете найти у меня на сайте. Точно там же вы найдёте ссылки на кучу датчиков, модулей и другого железа, которое можно подключить к Arduino. О возможностях ардуино по работе с другими железками поговорим в одном из следующих уроках.

Самая простая схема на Arduino

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

Наша программа «Blink» из примера управляет сигналом на контакте 13, к которому подключен светодиод на плате. Однако ничто не мешает нам подключить к этому выводу (13) и «земле» (GND) любой другой внешний светодиод. Имея макетную плату  мы можем быстро собрать такую схему:

Конечно, контакт 13, здесь только как пример. Мы так же можем в программе изменить  номер контакта (например, на 6) и к этому контакту подключить дополнительный светодиод.

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

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

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

AlexGyver

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

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

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

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

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

Программное обеспечение (IDE)

Программное обеспечение, используемое для программирования Arduino, представляет собой интегрированную среду разработки Arduino IDE. IDE представляет собой Java приложение, которое работает на множестве различных платформ, включая системы PC, Mac и Linux. Она разработана для начинающих, которые не знакомы с программированием. Она включает в себя редактор, компилятор и загрузчик. Также в IDE включены библиотеки кода для использования периферии, например, последовательных портов и различных типов дисплеев. Программы для Arduino называются «скетчами», и они написаны на языке, очень похожем на C или C++.

Оформление

Есть такое понятие, как форматирование (выравнивание) кода, то есть соблюдение пробелов и интервалов. Чисто для примера, сравните эти два куска кода. Какой смотрится более понятно?
Не бойтесь, во всех серьезных средах разработки есть автоформатирование кода, оно работает как в процессе написания, так и “по кнопке”. Arduino IDE – не исключение, в ней код форматируется комбинацией клавиш Ctrl+T:

  • Между математическими действиями, знаками сравнения, присваивания и всем подобным ставится пробел.
  • Как и в обычном тексте, пробел ставится после и не ставится перед запятой, двоеточием, точкой с запятой.
  • Отступ от левого края экрана – знак табуляции, код сдвигается вправо и на одном расстоянии формируются команды из одного блока кода. В Arduino IDE одна табуляция равна двум пробелам. Можно использовать клавишу Tab.
  • Каждое действие выполняется с новой строки (автоформатирование это не исправляет).
  • Имена функций и переменных принято называть с маленькой буквы. Пример:
  • Если имя состоит из двух и более слов, то их принято разделять. Есть два способа:
    • camelCase (верблюжий стиль): первая буква маленькая, каждая первая буква следующего слова – большая.
    • under_score (подчёркивание): все буквы маленькие, разделитель – подчёркивание.
  • Имена типов данных и классов принято писать с большой буквы. Пример: ,
  • Имена констант принято писать в верхнем регистре, разделение – подчеркивание. Пример:
  • При написании библиотек и классов, имена внутренних (приватных) переменных принято писать, начиная со знака подчёркивания. Пример:
  • Несколько общепринятых сокращений для названий переменных, вы часто будете встречать их в чужих прошивках и библиотеках:
    • button – btn, кнопка
    • index – idx – i, индекс
    • buffer – buf, буфер
    • value – val, значение
    • variable – var, переменная
    • pointer – ptr, указатель
  • Имена функций и методов принято начинать с глагола, кратко описывающего действие функции. Вот те из них, которые вы будете встречать постоянно:
    • get – получить значение (getValue)
    • set – установить значение (setTime)
    • print, show – показать что-то
    • read – прочитать
    • write – записать
    • change – изменить
    • clear – очистить
    • begin, start – начать
    • end, stop – закончить, остановить

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

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

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

Из меню «Файл – Примеры – Basics» выберите «Blink»

Это очень простая программа, отвечающая за мигание , расположенного на плате Arduino, который подключен к выводу 13:

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

// Все что стоит после (//…) или между (/* … */) являются комментариями в коде
/*
Функция setup () выполняется только один раз, в начале программы.
Она чаще всего используется для загрузки различных параметров.
*/
void setup() {
pinMode(13, OUTPUT); // Установить вывод 13 в качестве выхода
}
//Функция loop () — это цикл, который выполняется все время пока включено питание.
void loop() {
digitalWrite(13, HIGH); // подать высокий уровень (+5В) на вывод 13
delay(1000); // ждать секунду (1000 мсек = 1 сек)
digitalWrite(13, LOW); // подать низкий уровень (0В) на вывод 13
delay(1000); // ждать секунду
// После достижения конца цикла loop () все начнется с самого начала
}

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

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

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

Важные страницы

  • Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
  • Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
  • Полная документация по языку Ардуино, все встроенные функции и макро, все доступные типы данных
  • Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
  • Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
  • Поддержать автора за работу над уроками
  • Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ()

5 / 5 ( 7 голосов )

Софт (программная часть)

Знакомство с интерфейсом Ардуино

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

Ниже расположена панель с иконками, которые отображают наиболее используемые функции Arduino IDE:

  • загрузка программы;
  • проверка на наличие ошибок;
  • создание нового скетча;
  • сохранение скетча;
  • загрузка сохранения;
  • открытие окна порта микроконтроллера;

Следующим по важности элементом является вкладка с файлами проекта. Если это простой скетч, то файл будет всего один

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

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

Компиляция – преобразование исходного кода языка высокого уровня в машинный код или на язык ассемблера.

Arduino и Raspberry Pi в проектах Internet of Things. Виктор Петин

Arduino и Raspberry Pi в проектах Internet of Things

Аннотация

Еще одна книга от Виктора Петина, рассказывающая о создании простых проектов в рамках концепции Интернета вещей (IoT) на основе платы Ардуино и микрокомпьютера Raspberry Pi. В ней показано, как устанавливать и настраивать среду разработки Arduino IDE и среду макетирования Fritzing. Рассказано, как подключать датчики и исполнительные устройства, как они работают и взаимодействуют друг с другом, описаны их технические возможности. Приведена организация доступа проектов к интернету, отправка и прием данных с использованием облачных IoT сервисов. Имеется рассмотрение проекта собственного сервера сбора данных с устройств на базе Ардуино. Подходит для пользователей продвинутого уровня. В архиве размещены исходные коды программ и нужные библиотеки.

Приложение. Готовые каркасы и роботы Arduino

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

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

Обзор готовых игрушек-роботов Arduino.

Еще один обзор готовых ардуино-роботов.

Еще один вариант — покупка каркаса или корпуса робота: платформы на колесиках или гусенице, гуманоида, паука и т.п. В этом случае начинку робота придется делать самостоятельно.

Обзор каркасов для роботов Arduino и других плат.

Что купить для изучения Ардуино с нуля

Совсем маленьким детям до 10 лет рекомендуем для начала купить наборы по сборке простых электрических схем без программирования, например, Знаток (есть различные комплектации конструктора) или Микроник. Если у ребенка появится интерес к электронике, то уже можно приобретать бесплатные учебники и заказывать стартовые наборы (эти комплекты в интернет магазинах называют Starter KIT).

Наши советы: с чего начать изучать Arduino

Для детей можно заказать стартовые наборы на Алиэкспресс, где есть все необходимое для начала. Также можно посмотреть в интернете русские наборы на Arduino от Амперки и других производителей. Они будут стоить значительно дороже, но во многих есть инструкции на русском языке и уроки. С другой стороны, ничего не мешает выполнять уроки по Arduino на русском, используя недорогой набор из Китая.

Работа схемы

В этом проекте мы напишем программу мигания светодиодом каждые 1000 мс. Для этого мы подсоединим светодиод к контакту PIN13 платы при помощи ограничивающего резистора 220 Ом.

Теперь загрузите программу в плату при помощи нажатия на кнопку Upload Button, находящуюся в верхнем левом углу экрана.

После того как вы успешно загрузили программу в плату в нижнем левом углу экрана должна появиться надпись ’DONE UPLOADING’ и светодиод должен начать мигать.

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

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

Самая простая схема на Arduino

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

Наша программа «Blink» из примера управляет сигналом на контакте 13, к которому подключен светодиод на плате. Однако ничто не мешает нам подключить к этому выводу (13) и «земле» (GND) любой другой внешний светодиод. Имея мы можем быстро собрать такую схему:

Конечно, контакт 13, здесь только как пример. Мы так же можем в программе изменить номер контакта (например, на 6) и к этому контакту подключить дополнительный светодиод.

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

Int led = 13; // назначаем переменной led номер контакта 13
void setup() {
pinMode(led, OUTPUT); // подставить переменную led вместо номера контакта 13
}
void loop() {
digitalWrite(led, HIGH); // подставить переменную led вместо номера контакта 13
delay(1000);
digitalWrite(led, LOW); // подставить переменную led вместо номера контакта 13
delay(1000);
}

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

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

Потенциометр здесь использован в роли . То есть, напряжение на его крайних выводах (+5В и «земля») делится на две части, из которых одна часть подается (центральный вывод потенциометра) на вход A0 (аналоговый вход Arduino). Вращая потенциометр, мы меняем величину напряжения, которое подается на аналоговый вход.

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

Все остальное объясним уже в самой программе:

Int led = 13; // это уже для нас понятно
int potPin = 0; // назначаем переменной номер аналогового входа
int pot; // переменная, в которой мы будем сохранять значение потенциометра
int bk; // переменная, в которой мы будем сохранять значение скорости мигания светодиода
void setup() {
pinMode(led, OUTPUT);
}
void loop() {
pot = analogRead(potPin); // считываем A0 и сохраняем в переменной pot
/*
Использованная ниже функция map() служит для преобразования одного диапазона чисел в другой. В нашем случае, перерасчет числа из диапазона от 0 до 1023 (значение, полученное с A0) на диапазон чисел от 50 до 3000 (интервал между включением и выключением светодиода). Пересчитанный диапазон чисел будет сохранен в переменной «bk».
*/
bk = map(pot, 0, 1023, 50, 3000);
digitalWrite(led, HIGH);
delay(bk); // пауза зависит от положения потенциометра
digitalWrite(led, LOW);
delay(bk); // пауза зависит от положения потенциометра
}

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

Проще говоря, это резистор, сопротивление которого изменяется в зависимости от интенсивности падающего на него света.

Как видно на рисунке выше, фоторезистор подключен между +5В и контактом A0, а затем A0 через резистор на массу. Это точно такое же подключение, как и в случае с потенциометром. Здесь просто вместо двух крайних выводов потенциометра у нас ножка от фоторезистора и резистор, а вместо среднего вывода потенциометра, мы соединили друг с другом оставшиеся свободные выводы фоторезистора и резистора.

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

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

All-Arduino

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7Загрузка скетчав память Ардуино

Теперь можно загрузить программу в память платы. Подключите плату к компьютеру, подождите несколько секунд, пока происходит инициализация платы. Нажмите кнопку Загрузить, и Ваш скетч запишется в память платы Arduino. Светодиод должен начать весело подмигивать вам с периодичностью 2 секунды (1 секунду горит, 1 выключен). Ниже приведён код нашей первой программы для Ардуино.

void setup() { // блок инициализации
    pinMode(13, OUTPUT); // задаём пин 13 в качестве выхода.
}

void loop() { // цикл, который повторяется бесконечно, пока включена плата:
    digitalWrite(13, HIGH);   // подаём на 13 вывод высокий уровень - зажигаем светодиод
    delay(1000);                  // на 1000 мсек = 1 сек.
    digitalWrite(13, LOW);    // подаём на 13 вывод низкий уровень - гасим светодиод
    delay(1000);                  // на 1 сек.
}   // далее цикл повторяется

Почитайте комментарии в тексте программы – их достаточно чтобы разобраться с нашим первым экспериментом. Сначала описываем блок инициализации setup(), в котором задаём начальные значения переменных и функции выводов Arduino. Далее следует бесконечный цикл loop(), который повторяется снова и снова, пока на плату подаётся питание. В этом цикле мы выполняем все необходимые действия. В данном случае – зажигаем и гасим светодиод. Оператор delay() задаёт длительность выполнения (в миллисекундах) предшествующего оператора. Оператор digitalWrite() указывает Ардуино, на какой вывод подать напряжение, и какой именно уровень напряжения.Ваш первый скетч готов!

Полезный совет

В сети есть множество сайтов, посвящённых работе с платами семейства Arduino. Читайте, осваивайте, не бойтесь экспериментировать и познавать новое! Это увлекательное и полезное занятие, которое принесёт вам много удовольствия.

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

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

Ардуино уроки для начинающих с нуля

Понравилась статья? Поделиться с друзьями:
Зинг-Электро
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: