Язык программирования arduino для начинающих. Arduino для начинающих - стартовый набор или как начать ардуинить? Много фото и видео! Общее описание языков программирования

Ядром платформы Arduino является микросхема-микроконтроллер известная как ATmega328.

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

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

Частота выполнения операций процессора задается тактовым генератором 16 МГц. Питание можно подавать через разъем USB. Для работы без USB-питания Arduino требуется отдельный источник питания напряжением от 7 до 12 V (это напряжение нормализуется до необходимых уровней регулятором расположенным на борту, так что вам просто нужен недорогой источник питания для этого). На борту, оба уровня напряжения 5 В и 3,3 В доступны пользователю, из которых можно выжать максимум 50 мА тока.

Память Arduino состоит из трех типов: флэш-память, где хранится программа 32 Кб; оперативная память (SRAM) 2 КБ, где процессор хранит и перезаписывает переменные, используемые в программе; и постоянная память (EEP-ROM) 1 КБ, где программист может хранить данные, которые должны остаться при перезапуске контроллера (как флэш-память, где хранится программа). По сравнению с современными компьютерами, которые оперируют как минимум несколькими гигабайтами, 35 кбайт кажется смешным, но на самом деле этого достаточно для большинства целей. Из-за отсутствия операционной системы, использование памяти переносится под полную вашу ответственность: если случится переполнение памяти или будет обращение к несуществующей ячейке памяти, ваша программа может повести себя непредсказуемо, и это довольно трудно отследить во время отладки. Вы всегда должны держать количество переменных под контролем в вашей программе.

Процессор ATmega328 подключен к 14 дискретным портам ввода / вывода (пронумерованных от 0 до 13), 6 аналоговым входам и порту USB. Дискретный вход / выход это электрическое соединение, которое может иметь два логических состояния: 1 и 0, или TRUE и FALSE, или, как в синтаксисе Arduino, LOW и HIGH. Если сигнал в значении LOW, соответствующий вывод имеет нулевой потенциал 0 В - тоесть подключен к общему проводу. Если сигнал HIGH, то уровень напряжения между данным выводом и землей 5 В.

Контакты 0 и 1 используются для последовательного приема и передачи данных: через них плата Arduino может общаться с присоединенными к ней модулями (шилдами), используя последовательный протокол. Последовательные протоколы это коммуникационные протоколы, в которых каждый бит передается / принимается по очереди один за другим. Контакты 2 и 3 могут быть также использованы в качестве прерываний. Прерывание это электрический сигнал на дискретном входе, который прерывает текущую программу процессора при наступлении заданного логического состояния. Прерывания также существуют и у процессоров обычных компьютеров. После наступления прерывания, процессор сохраняет свое состояние в памяти и откладывает выполнение программы, перескакивает на выполнение обработчика прерывания: короткий кусок программного кода, необходимый для обслуживания прерывания. После завершения, процессор возобновляет статус, который он имел перед приходом прерывания, и возобновляет выполнение программы.

Контакты 3, 5, 6, 9, 10 и 11 могут использоваться как выходы ШИМ (широтно-импульсной модуляции PWM) и имеют некоторые аналоговые настройки. Соответственно, их ячейки памяти содержат значения между 0 и 255.

Рис.1 Arduino UNO, как он выглядит сверху и снизу. Обратите внимание на карту Италии на задней стороне.

Контакт 13 также подключен к светодиоду на борту. Когда сигнал LOW, светодиод выключен, а если сигнал HIGH светодиод светится.

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

Аналоговые входы помечены A0 ... A5: каждый из них имеет цифровое разрешение 10 бит,

то есть они преобразовывают любое напряжение от 0 до 5 В в число между 0 и 1023, которое может быть доступно в памяти.

Все платформы смонтированы на плате, размером 60,6 мм × 53,4 мм и весом не больше 25 г (рис. 1).

На платах также имеются разъемы USB A / B, с помощью которых вы можете подключить их к компьютеру для коммуникации. Подключение USB-также обеспечивает питание для Arduino при подключении к компьютеру, так что для начала вам не нужен внешний источник питания.

Программа

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

Все эти инструменты входят в одну программу IDE (Integrated Development Environment), свободную

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


Рис.2 Программа Arduino появляется как окно, в котором можно ввести текст программы, которую попросту называют скетч.

Вы можете скомпилировать свой скетч в программе Arduino (рис. 2) нажав на кнопку Verify в верхнем левом углу окна: процесс компиляции транслирует C ++ программу в соответствующие машинные коды процессора ATmega328. После компиляции исполняемый скетч может быть загружен в память Arduino через USB кабель, при нажатии на кнопку Upload. Вам может понадобиться выбрать соответствующий COM-порт в меню, если есть более чем один доступный. Загрузка скетча всегда вызывает запуск компилятора, в первую очередь. Запуск скетча происходит сразу после окончания загрузки.

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

Наверное, многие слышали о такой замечательной платформе, но из-за плохого знания электроники или программирования многие решат обойти arduino стороной. Да платформа достаточно сложная, но разобраться можно, главное желание. Я сам долго не решался изучить данную платформу, но в один прекрасный день, понял, что она бы могла облегчить мне жизнь…
В интернете очень много информации об arduino, но без практики никакая теория не поможет, по этому я решил купить данный набор, но забегу вперед, что все таки дешевле все компоненты купить самостоятельно, не набором, а архивы с инструкциями и программами (скетчами) я выложил ниже.
Почему я взял данный набор, ведь выбора в Китае много? Раньше ардуино было для меня как что-то заоблачное и не понятное и выбирал только из-за количества уроков, по этому и выбрал данный набор, кстати подобный уже обозревал .

Покупал я напрямую с тао:

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


Что же там в коробке?

Комплектация:



- 1х плата arduino uno, возможно даже оригинал
- 1х LCD дисплей 16 символами на 2 строки с i2c платой


- 15х светодиодов: 5 шт. красного цвета, 5 шт. синего цвета и 5 шт. оранжевого цвета


- 3х фоторезистора
- 1х ИК приемник
- 1х датчик пламени
- 2х датчика вибрации
- 1х термодатчик
- 4х кнопки
- 2х пьезоэлемента


- цифровой светодиодный дисплей на 1 цифру
- цифровой светодиодный дисплей на 4 цифры
- светодиодная матрица 8х8


- 8х постоянный резистор на 220 Ом
- 5х постоянный резистор на 1 кОм
- 5х постоянный резистор на 10 кОм


- 1х резистор переменного сопротивления(потенциометр) на 50 кОм


- 1х большая макетная площадка


- 1x DuPont кабель мама-папа 30 разноцветных проводов


- 30х соединительных проводов для макетной площадки папа-папа


- 1х USB кабель


- 1х RFID плата
- 1х RFID карта
- 1х RFID на ключи


- 1x ИК пульт
- 1x микрофонный модуль
- 1x модель кнопочной площадка 4х4
- 1x реле
- 1x модуль часов
- 1x модуль драйвера для мотора
- 1x модуль датчика температуры и влажности
- 1x модуль джойстика
- 1x модуль RGB светодиода
- 1x модуль датчика влажности
- 1x кабель питания для кроны


- 1x сервопривод
- 1x мотор с редуктором


- 1x сдвиговый регистр 74НС595N
Вот так выглядит все в сборе:



Когда я получил набор, то сразу принялся искать инструкции, но внутри коробки ничего не обнаружил, подумал, что китаец обманул и уже хотел с ним ругаться, но почитал описание лота и там была ссылка со всеми инструкциями и программами: (пароль:22cd)
Но китайскими программами лучше не пользоваться, по тому программу для программирования arduino лучше скачать с официального сайта:
А вот собраны мной инструкции, программы, скетчи найденные в интернете и мои скетчи, которые пригодились в освоении arduino.

Начало

Рекомендую для начала прочитать pdf книгу на русском языке: Руководство по освоению Arduino - 2012, которая лежит на моей . Там много полезного написано и понятным языком, только мало уроков.
В архиве Modkit_Desktop_WIN32_Kickstarter_v2.zip находится программа для визуального программирования.
В архиве Arduino - китайщина.rar находится китайская инструкция, китайские скетчи, библиотеки, но там много ошибок.
В архиве Arduino - программа.rar находится программа arduino с библиотеками, которые мне пригодились в освоении ардуино.
В архиве arduino-master - много уроков.zip имеется достаточно много уроков, схем, библиотек с хорошим описанием на англ. Причем большую часть из этого архива «стянуто» китайцами.
В архиве Мои скетчи.rar находятся мои проекты, хоть их и 34, но не все китайские уроки я выполнял, некоторые подправлял и самый последний проект я сделал самостоятельно. Номера моих скетчей не совпадают с номерами обозреваемых уроков, но все мои скетчи подписаны в транслите и думаю всем будет понятно.
Начинаем!
Урок №1 - мигание светодиода
Для этого урока нам понадобятся вот такие детали:


- 2 провода (далее количество проводов я указывать не буду),
- светодиод,
- резистор на 220Ом,
- макетная площадка и плата arduino uno
Подключаем:


И получаем:
Урок №2 - подключение 8 светодиодов - бегущие огни
Для этого урока нужно:
- 8 светодиодов,
- 8 резисторов на 220 Ом,

Я немного не правильно подключил, поставил 1 резистор на массу и подвел ко всем светодиодам:




Результат:
Урок №3 - изменение яркости светодиода с помощью переменного резистора
Нам нужно:
- светодиод,
- переменный резистор,
- резистор на 220Ом,
- провода, макетная площадка и arduino


Решил в этот раз не подключать резистор к светодиоду, но если подключать «на постоянку», то сопротивление на светодиод нужно поставить, иначе светодиод сгорит быстро.




Результат:
Урок №4 - бегущие огни из 6 светодиодов
Необходимо:
- 6 светодиодов,
- резистор на 220Ом
- провода, макетная площадка и arduino


Получилось так:




Результат:
Урок №5 - подключение RGB светодиода
Понадобится:
- модуль RGB
- провода, макетная площадка и arduino


Получилось так:




Результат:
Урок №6 - подключение пьезоэлемента
Детали:
- пьезоэлемент
- провода, макетная площадка и arduino


Получилось так:


Результат:

С музыкой:

Урок №8 - включение светодиода с кнопки
Детали:
- кнопка
- светодиод
- резисторы на 220 Ом и 10 кОм
- провода, макетная площадка и arduino


Получилось так:


Результат:
Урок №8.1 - вкл/выкл. светодиода с кнопки
Детали:
- светодиод
- 2 кнопки
- резистор на 220 Ом
- 2 резистора на 10кОм
- провода, макетная площадка и arduino


Получилось так




Результат:
Урок №8.2 - изменение яркости светодиода с кнопки
Схема подключения идентична уроку 8.1, только скетч другой и результат:
Урок №9 - сервопривод
Детали:
- сервопривод
- провода, макетная площадка и arduino


Получилось так:


Результат:
Урок №10 - подключение сдвигового регистра 74HC595
Детали:
- 8 светодиодов
- сдвиговый регистр 74HC595
- 8 резисторов на 220 Ом
- провода, макетная площадка и arduino


Получилось так:

Урок №11 - изменение яркости светодиода с помощью фоторезитора
Детали:
- фоторезитор
- светодиод
- резитор на 220 Ом и на 10кОм
- провода, макетная площадка и arduino


Получилось так:


Результат:
Урок №12 - вольтметр
Детали:
- батарейка
- резистор 10 кОм
- провода, макетная площадка и arduino
Получилось так:




Урок №13 - измерение температуры
Детали:
- датчик температуры
- провода, макетная площадка и arduino
Получилось так:


Результат отображается в «мониторе протра»:


Если нагреть датчик зажигалкой, температура изменяется:

Урок №13.1 - изменение температуры - визуальное отображение
Детали:
- датчик температуры
- 3 светодиода
- резистора 220 Ом
- провода, макетная площадка и arduino
Получилось так:


Результат:
Урок №14 - подключение цифрового светодиодного дисплея
Детали:
- 6 резистров 220 Ом
- цифровой светодиодный дисплей
- провода, макетная площадка и arduino
Получилось так:


Результат китайского скетча:

Результат моего переделанного скетча:

Урок №14 - подключение цифрового светодиодного дисплея на 4 цифры
Детали:
- светодиодная панель на 4 цифры
- провода, макетная площадка и arduino
Получилось так:


Результат - секундомер:
Урок №15 - подключение светодиодной матрицы 8х8
Детали:
- светодиодная матрица 8х8
- провода и arduino
Получилось так:




Результат моего скетча:
Урок №16 - подключение датчика влажности
Детали:
- датчик влажности
- светодиод (я подключил RGB модуль к 1 светодиоду)
- провода и arduino
Получилось так:


Результат:
Урок №17 - измерение температуры и влажности
Детали:
- датчик влажности и температуры
- провода и arduino
Получилось так:


Результат отображается в «мониторе протра»:
Урок №18 - подключение модуля реле
Детали:
- модуль реле
- светодиод
- резистор на 220Ом
- провода, макетная площадка и arduino
Получилось так:


Результат:
Урок №19 - подключение LCD дисплея 16х2
Детали:
- дисплей LCD1602
- провода и arduino
Получилось так:


Результат:

Урок №20 - подключение двигателя
Детали:
- модуль драйвера для мотора
- мотор с редуктором
- провода и arduino
Получилось так:


Результат:
Урок №21 - Включение/выключение светодидодов с помощью пульта
Детали:
- ИК пульт
- ИК приемник
- 6 светодиодов
- 6 резисторов 220Ом
- провода, макетная площадка и arduino


Получилось так:


Результат:
Урок №22 - Подключение джойстика
Детали:
- джойстик
- провода и arduino
Результат отображается в «мониторе протра»:
Урок №23 - Подключение клавиатуры 4х4
Детали:
- клавиатура
- провода и arduino
Результат отображается в «мониторе протра»:
Урок №24 - Подключение RFID
Детали:
- модуль RFID
- провода и arduino
Получилось так:


Результат отображается в «мониторе протра» - чтение дампа карты:


Результат отображается в «мониторе протра» - чтение брелка:


Результат отображается в «мониторе протра» - пытался прочитать УЭК, банковсвкую карту с payWave и транспортную карту:

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

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

Домашнее задание - цифровой термометр
Детали:
- датчик температуры
- LCD дисплей
- провода, макетная площадка и arduino
Получлось так:


Осталось самое сложное объединить 2 скетча и еще что бы все это работало, получился вот такой скетч:

Цифровой термометр

#include #include LiquidCrystal_I2C lcd(0x27,16,2); int potPin = 0; // пин куда подключен датчик float dat = 0; // переменная для температуры void setup() { lcd.init(); lcd.backlight(); lcd.begin(16, 2); lcd.print("S"); delay(300); lcd.print("p"); delay(300); lcd.print("e"); delay(300); lcd.print("c"); delay(300); lcd.print("i"); delay(300); lcd.print("a"); delay(300); lcd.print("l"); delay(300); lcd.print("l"); delay(300); // ждем 0.5 секунды lcd.print("y"); delay(300); // ждем 0.5 секунды lcd.print(" f"); delay(300); // ждем 1 секунду lcd.print("o"); delay(300); // ждем 1 секунду lcd.print("r"); delay(700); lcd.setCursor(0, 1); lcd.print("h"); delay(300); lcd.print("t"); delay(300); lcd.print("t"); delay(300); lcd.print("p"); delay(300); lcd.print(":"); delay(300); lcd.print("/"); delay(300); lcd.print("/"); delay(300); lcd.print("m"); delay(300); lcd.print("y"); delay(300); lcd.print("s"); delay(300); lcd.print("k"); delay(300); lcd.print("u"); delay(300); lcd.print("."); delay(300); lcd.print("r"); delay(300); lcd.print("u"); delay(300); lcd.clear(); //очистка экрана delay(1000); lcd.setCursor(0, 0); lcd.print("Specially for"); lcd.setCursor(0, 1); lcd..clear(); //очистка экрана delay(300); lcd.setCursor(0, 0); lcd.print("Specially for"); lcd.setCursor(0, 1); lcd..clear(); //очистка экрана delay(300); lcd.setCursor(0, 0); lcd.print("Specially for"); lcd.setCursor(0, 1); lcd..clear(); } void loop() { lcd.init(); // initialize the lcd lcd.clear(); //очистка экрана // считываем и вычисляем температуру dat = (5.0 * analogRead(potPin) * 100.0) / 1024.0; lcd.backlight(); lcd.setCursor(0, 0); // устанавливаем курсор в 0-ом // столбце, 1 строке (начинается с 0) lcd.print("Temperatura"); lcd.setCursor(0, 1); lcd.print(" "); lcd.print(dat); // выводим текущую температуру lcd.print(""C"); delay(5*500); // задержка перед повторением измерений }


Слегка подсматривал
Результат:

Теперь надо проверить погрешность:


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

Зачем я все это затеял?
Хочу автоматизировать пивоварение, пока все еще в далеком проекте.

+

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

-

Цена мне кажется великовата
В китайской инструкции очень много ошибок, например урок от одного проекта, скетч совершенно от другого, а схема от третьего

Вывод:

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

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

Спасибо за внимание!

Планирую купить +307 Добавить в избранное Обзор понравился +199 +551

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

В этой серии статей мы соберем самое главное, что нужно узнать об Ардуино, чтобы начать заниматься с детьми самостоятельно. Даже если вы никогда не брали в руки паяльник и слова «контроллер» и «контроллёр» для вас имеют примерно схожий смысл, можете быть уверенными – у вас все равно все получится! Мир электроники и робототехники сегодня полон простых и очень удобных решений, позволяющих практически с нуля создавать очень интересные проекты. Наш учебник поможет вам быстро сориентироваться и сделать первые шаги.

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

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

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

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




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

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

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

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

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

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

Быстрый старт с Arduino

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

Ардуино – это…

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

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

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

Почему Ардуино?

Вся прелесть Ардуино заключается в следующих простых преимуществах:

  1. Простота. Да, да – именно простота (хотя Лего и другие игрушки, без сомнения, привычнее, но мы сравниваем не с ними). Для юных разработчиков электроники Ардуино «прячет» огромное количество разнообразных технических вопросов. Многие достаточно сложные проекты можно создавать очень быстро, без длительного погружения в детали. А это ведь очень важно для ребенка – не утратить интерес до первого полученного своими руками результата.
  2. Популярность. Ардуино крайне популярна, вы сможете без труда найти ответы на любые вопросы на многочисленных форумах или сайтах. Сообщество Ардуино обширно и дружелюбно – там относительно мало прожженных жизнью снобов-инженеров и полно любителей и начинающих, с удовольствием делящихся своей радостью от найденного и узнанного. Это, конечно, откладывает отпечаток на качество советов, но как правило, даже самые сложные вопросы могут быть быстро решены с помощью форумов и сайтов.
  3. Доступность. И сама технология, и практически весь софт выпускаются под открытыми лицензиями и вы можете свободно использовать чужие наработки, схемы, причем во многих случаях даже для коммерческого использования. Это экономит много времени и позволяет двигаться большими шагами, опираясь на опыт предыдущих исследователей.
  4. Дешевизна. Комплект для первых занятий электроникой и программированием можно купить менее чем за 500 рублей. Полноценные курсы робототехники возможны при . Никакая другая технология не позволит вам так быстро и так эффективно войти в мир реальной учебной робототехники.

С чего начать?

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

  1. с USB кабелем для подключения к компьютеру.
  2. и провода.
  3. Комплект базовых электронных компонентов и переходник для батарейки типа крона.
  4. Установленная на компьютер среда

Все оборудование продается в наборах, называемых стартовыми –

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

  1. Экраны и индикаторы.
  2. Двигатели и , реле и .
  3. Модули связи.
  4. Разнообразные дополнительные модули и (шилды)

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

Как купить Ардуино?

Прежде чем узнать что-то полезное, надо сначала купить что-то полезное. Для экспериментов с электроникой вам понадобится та сама электроника в виде конструктора или отдельных плат. Рекомендуется купить не очень дорогой отечественный набор с основными компонентами и затем уже заказать себе с Алиэкспресса датчики, двигатели, контроллеры и другие сокровища. можно найти в инернете (не только на нашем сайте). Если вы живете в большом городе, то покупка всего необходимого займет максимум два дня. Найти нужный магазин легко в интернете.

Пару слов о . Сегодня их на совершенно легальных условиях может делать любой производитель: как крупный, такой как Intel, так и мелкие noname поставщики из Китая. Надежность и удобство «китайских» и «официальных» платы Ардуино в большинстве случаев одинаковые. Поэтому незачем переплачивать – для своих учебных проектов можете смело покупать аналоги, которые легко найти в интернете.

Как отличить «оригинал» от «совместимой платы»:

  1. «Китайские» платы не имеют права ставить логотип Ардуино.
  2. «Китайские» платы стоят гораздо дешевле.
  3. «Китайские» часто используют другой чип для обслуживания соединения с компьютером, на который нужны специальные драйвера. Драйвера устанавливаются за секунду и практически никогда не вызывают каких-либо проблем.

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

Нет возможности купить?

Если вы живете в Антарктиде или у вас действительно не хватает средств даже на самые простые наборы, то не отчаивайтесь – можно начать изучение Ардуино на виртуальных тренажерах. Самый мощный, простой и популярный сегодня вариант – это онлайн сервис Tinkercad от известной компании Autodesk. Вы сможете создавать электронные схемы, подключая множество разнообразных компонентов, а затем «включать» питание и измерять все электрические показатели. В библиотеке устройств есть и плата Ардуино, и даже встроенный редактор для программирования (включая визуальный!). Вы можете найти на нашем сайте отдельную статью

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

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

Сборка сложнейших схем и соединение плат может осуществляться без паяльника, а с помощью перемычек с разъёмными соединениями «папа» и «мама». Так могут подключаться как навесные элементы, так и платы расширения, которые на лексиконе ардуинщиков зовут просто «Шилды» (shield).

Какую первую плату Arduino купить новичку?

Базовой и самой популярной платой считается . Эта плата размером напоминает кредитную карту. Довольно крупная. Большинство шилдов которые есть в продаже идеально подходят к ней. На плате для подключения внешних устройств расположены гнезда.

В отечественных магазинах на 2017 год её цена порядка 4-5 долларов. На современных моделях её сердцем является Atmega328.

Изображение платы ардуино и расшифровка функций каждого вывода, Arduino UNO pinout

Микроконтроллер на данной плате это длинна микросхема в корпусе DIP28, что говорит о том, что у него 28 ножек.

Следующая по популярности плата, стоит почти в двое дешевле предыдущей - 2-3 доллара. Это плата . Актуальные платы построены том же Atmega328, функционально они аналогичны с UNO, различия в размерах и решении согласования с USB, об этом позже подробнее. Еще одним отличием является то, что для подключения к плате устройств предусмотрены штекера, в виде иголок.

Количество пинов (ножек) этой платы совпадает, но вы можете наблюдать что микроконтроллер выполнен в более компактном корпусе TQFP32, в корпусе добавлены ADC6 и ADC7, другие две «лишних» ножки дублируют шину питания. Её размеры довольно компактные - примерно, как большой палец вашей руки.

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

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

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

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

Как подключить Arduino к компьютеру?

Arduino Uno и Nano подключаются к компьютеру по USB. При этом нет аппаратной поддержки USB порта, здесь применено схемное решение преобразования уровней, обычно называемое USB-to-Serial или USB-UART (rs-232). При этом в микроконтроллер прошит специальный Arduino загрузчик, который позволяет прошиваться по этим шинам.

В Arduino Uno реализована эта вязь на микроконтроллере с поддержкой USB - ATmega16U2 (AT16U2). Получается такая ситуация, что дополнительный микроконтроллер на плате нужен для прошивки основного микроконтроллера.

В Arduino Nano это реализовано микросхемой FT232R, или её аналогом CH340. Это не микроконтроллер — это преобразователь уровней, этот факт облегчает сборку Arduino Nano с нуля своими руками.

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

До этого я не сталкивался с таким и думал, что все USB-UART преобразователи собраны на FT232, пришлось скачать драйвера, их очень легко найти по запросу «Arduino ch340 драйвера». После простой установки - всё заработало!

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

Что делать если на моей плате нет USB?

Плата Arduino Pro Mini имеет меньшие габариты. Это достигли тем что убрали USB разъём для прошивки и тот самый USB-UART преобразователь. Поэтому его нужно докупить отдельно. Простейший преобразователь на CH340 (самый дешевый), CPL2102 и FT232R, продаётся стоит от 1 доллара.

При покупке обратите внимание на какое напряжение рассчитан этот переходник. Pro mini бывает в версиях 3.3 и 5 В, на преобразователях часто расположен джампер для переключения напряжения питания.

При прошивке Pro Mini, непосредственно перед её началом необходимо нажимать на RESET, однако в преобразователях с DTR это делать не нужно, схема подключения на рисунке ниже.

Стыкуются они специальными клеммами «Мама-Мама» (female-female).

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

Как писать программы для Arduino?

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

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

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

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

Основы программирования в Arduino IDE

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

#include biblioteka.h; // подключаем библиотеку с названием “Biblioteka.h”

#define peremennaya 1234; // Объявляем переменную со значением 1234

Команда Define дают компилятору самому выбрать тип переменной, но вы можете его задать вручную, например, целочисленный int, или с плавающей точкой float.

int led = 13; // создали переменную “led” и присвоили ей значение «13»

Программа может определять состояние пина, как 1 или 0. 1 -это логическая единица, если пин 13 равен 1, то напряжение на его физической ножке будет равняться напряжению питания микроконтроллера (для ардуино UNO и Nano - 5 В)

Запись цифрового сигнала осуществляется командой digitalWrite (пин, значение), например:

digitalWrite(led, high); //запись единицы в пин 13(мы его объявили выше) лог. Единицы.

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

digitalWrite (13, high); // устанавливаем вывод 13 в едиицу

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

delayMicroseconds() Delay (1000); //микроконтроллер будет ждать 1000 мс (1 секунду)

Настройки портов на вход и выход задаются в функции void setup{}, командой:

pinMode(NOMERPORTA, OUTPUT/INPUT); // аргументы - название переменной или номер порта, вход или выход на выбор

Понимаем первую программу «Blink»

В качестве своеобразного «Hello, world» для микроконтроллеров является программа мигания светодиодом, давайте разберем её код:

В начале командой pinMode мы сказали микроконтроллеру назначить порт со светодиодом на выход. Вы уже заметили, что в коде нет объявления переменной “LED_BUILTIN”, дело в том, что в платах Uno, Nano и других с завода к 13 выводу подключен встроенный светодиод и он распаян на плате. Он может быть использован вами для индикации в ваших проектах или для простейшей проверки ваших программ-мигалок.

Далее мы установили вывод к которому подпаян светодиод в единицу (5 В), следующая строка заставляет МК подождать 1 секунду, а затем устанавливает пин LED_BUILTIN в значение нуля, ждет секунду и программа повторяется по кругу, таким образом, когда LED_BUILTIN равен 1 - светодиод(да и любая другая нагрузка подключенная к порту) включен, когда в 0 - выключен.

Читаем значение с аналогового порта и используем прочитанные данные

Микроконтроллер AVR Atmega328 имеет встроенный 10 битный аналогово цифровой преобразователь. 10 битный АЦП позволяет считывать значение напряжение от 0 до 5 вольт, с шагом в 1/1024 от всего размаха амплитуды сигнала (5 В).

Чтобы было понятнее рассмотрим ситуацию, допустим значение напряжения на аналоговом входе 2.5 В, значит микроконтроллер прочитает значение с пина «512», если напряжение равно 0 - «0», а если 5 В - (1023). 1023 - потому что счёт идёт с 0, т.е. 0, 1, 2, 3 и т.д. до 1023 - всего 1024 значения.

Вот как это выглядит в коде, на примере стандартного скетча «analogInput»

int sensorPin = A0;

int ledPin = 13;

int sensorValue = 0;

pinMode(ledPin, OUTPUT);

sensorValue = analogRead(sensorPin);

digitalWrite(ledPin, HIGH);

delay(sensorValue);

digitalWrite(ledPin, LOW);

delay(sensorValue);

Объявляем переменные:

    Ledpin - самостоятельно назначаем пин со встроенным светодиодом на выход и даём индивидуальное имя;

    sensorPin - аналоговый вход, задаётся соответственно маркировке на плате: A0, A1, A2 и т.д.;

    sensorValue - переменная для хранения целочисленного прочитанного значения и дальнейшей работы с ним.

Код работает так: sensorValue сохраняем прочитанное с sensorPin аналоговое значение (команда analogRead). - здесь работа с аналоговым сигналом заканчивается, дальше всё как в предыдущем примере.

Записываем единицу в ledPin, светодиод включается и ждем время равное значению sensorValue, т.е. от 0 до 1023 миллисекунд. Выключаем светодиод и снова ждем этот период времени, после чего код повторяется.

Таким образом положением потенциометра мы задаем частоту миганий светодиода.

Функция map для Арудино

Не все функции для исполнительных механизмов (мне ни одной не известно) в качестве аргумента поддерживают «1023», например, сервопривод ограничен углом поворота, т.е на пол оборотоа (180 градуов) (пол оборота) сервомоторчика максимальный аргумент функции равен «180»

Теперь о синтаксисе: map (значение которое мы переводим, минимальная величина входного, максимальная величина входного, минимальная выходного, максимальная выходного значения).

В коде это выглядит так:

(map(analogRead(pot), 0, 1023, 0, 180));

Мы считываем значение с потенциометра (analogRead(pot))от 0 до 1023, а на выходе получаем числа от 0 до 180

Значения карты величин:

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

И схема подключения.

Выводы Ардуино - очень удобное средство для обучения работы с микроконтроллерами. А если использовать чистый C AVR, или как его иногда называют «Pure C» - вы значительно уменьшите вес кода, и его больше поместиться в память микроконтроллера, в результате вы получите отличную отладочную плату заводского исполнения с возможностью прошивки по USB.

Мне нравится ардуино. Жаль, что её многие опытные программисты микроконтроллеров безосновательно ругают, что она слишком упрощена. Упрощен, в принципе, только язык, но никто не заставляет пользоваться именно им, плюс вы можете прошить микроконтроллер через ICSP разъём, и залить туда тот код, который вам хочется, без всяких ненужных Вам бутлоадеров.

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

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

12 02.2017

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

Из этой статьи вы узнаете:

Доброго времени суток всем любителям техники! С вами Гридин Семён. Сегодня мы рассмотрим, при помощи какого оборудования мы начнём программировать самые распространённые платы.

Ардуино — что же ты такое?

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

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

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

Для кого это?

Кому нужен Ардуино?

  • Детям и подросткам, интересующимся робототехникой;
  • Учащимся профильных технических вузов и училищ;
  • Специалистам, желающим вспомнить старые навыки;
  • Преподавателям для обучения своих студентов;
  • Всем склонным к технике людям, желающим интересно проводить время.

Изучить программирование, тут же применяя полученные знания на практике; написать дипломный проект; создать умную систему для дома, которая позволит дистанционно управлять приборами и освещением; сконструировать робота – это далеко не полный список возможностей, которые предоставляет Ардуино. Они поистине безграничны, и все ограничивается лишь вашей фантазией! При этом система доступна даже новичкам благодаря широкому комьюнити и наличию в Сети множества уроков Ардуино, в том числе и на русском языке.

Первое знакомство. Настраиваем компьютер

Перед тем как озаботиться вопросом подключения устройства к ПК, стоит изучить вопрос о том, какой лучше купить Ардуино, ведь версий этого конструктора для гиков существует много. Самая популярная и при этом , которая стоит порядка 25-30$. Впрочем, есть и более дорогие, продвинутые версии, способные взаимодействовать со смартфонами на базе Android, устройствами на Linux, с увеличенным числом портов, более мощным “железом”, которые больше подойдут для уже искушенных в этом вопросе пользователей. Нам же с вами больше подойдет вариант Uno или схожий с ним (например, Leonardo). Пусть вас не пугают 32 килобайта памяти и процессор с частотой всего 16 мегагерц – этого с лихвой хватит для первых изысканий!

Чтобы запрограммировать платформу и видеть на дисплее все заданные действия, используется один из самых распространенных языков программирования – C++. Работа с ним осуществляется с помощью официальной оболочки Arduino IDE, она абсолютно бесплатна для использования в некоммерческих целях. Имеются и другие варианты, более сложные и изощренные, но начать лучше с рекомендованного разработчиком варианта.

Подключение и загрузка в память программ выполняется через USB-порт. Подсоединение же модулей может выполняться множеством способов – в их числе применение особой макетной доски, перемычек, проводов… Паяльник при этом использовать совсем не обязательно. Подсоединять можно почти что угодно – любой гаджет может стать полноценной частью вашей конструкции! При этом вы также можете создавать многослойные “бутерброды” из так называемых – дополнительных плат, расширяющих возможности основной микросхемы. Главное – это базовый процесс в сердце самого Uno, остальное же лишь служит для получения дополнительных возможностей. Например, это может быть подключение к Интернету или управление мощным мотором.

Используем IDE

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

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

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

С уважением, Гридин Семён