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

Уроки Ардуино — учебник для начинающих

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ардуино – это не бренд и не название поставщика конструкторов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Все оборудование продается в наборах, называемых стартовыми – на алиэкспрессе ищите по словам «starter kit».

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

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

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

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

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

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

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

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

Надежность и удобство «китайских» и «официальных» платы Ардуино в большинстве случаев одинаковые.

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

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

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

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

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

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

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

Вы можете найти на нашем сайте отдельную статью с подробной информацией о Tinkercad.

Полезные ссылки на учебники и сайты по Ардуино

Официальные сайты ардуино:

Отличные сайты с большим объемом полезной информации

И естественно, море полезной информации на Хабрхабре.

Подводим итоги урока

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

Начать создавать интересные технические проекты очень просто — для этого не обязательно быть электронщиком.

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

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

Источник: https://ArduinoMaster.ru/uroki-arduino/arduino-uroki-nachalo-raboty/

Arduino для начинающих. Часть 1

Доброго времени суток, Хабр. Запускаю цикл статей, которые помогут Вам в знакомстве с Arduino. Но это не значит, что, если Вы не новичок в этом деле – Вы не найдёте ничего для себя интересного.

Введение

Было бы не плохо начать со знакомства с Arduino. Arduino – аппаратно-программные средства для построения систем автоматики и робототехники. Главным достоинством есть то, что платформа ориентирована на непрофессиональных пользователей. То есть любой может создать своего робота вне зависимости от знаний программирования и собственных навыков.

Начало

Создание проекта на Arduino состоит из 3 главных этапов: написание кода, прототипирование (макетирование) и прошивка. Для того, чтоб написать код а потом прошить плату нам необходима среда разработки.

Читайте также:  Создаем свою библиотеку arduino и загружаем в ide

На самом деле их есть немало, но мы будем программировать в оригинальной среде – Arduino IDE. Сам код будем писать на С++, адаптированным под Arduino. Скачать можно на официальном сайте. Скетч (набросок) – программа, написанная на Arduino.

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

main(){ void setup(){ } void loop(){ }
}

Важно заметить, что обязательную в С++ функцию main() процессор Arduino создаёт сам. И результатом того, что видит программист есть:

void setup(){
}
void loop(){
}

Давайте разберёмся с двумя обязательными функциями. Функция setup() вызывается только один раз при старте микроконтроллера. Именно она выставляет все базовые настройки. Функция loop() — циклическая. Она вызывается в бесконечном цикле на протяжении всего времени работы микроконтроллера.

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

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

int Led = 13; // объявляем переменную Led на 13 пин (выход)
void setup(){ pinMode(Led, OUTPUT); // определяем переменную
}
void loop(){ digitalWrite(Led, HIGH); // подаём напряжение на 13 пин delay(1000); // ожидаем 1 секунду digitalWrite(Led, LOW); // не подаём напряжение на 13 пин delay(1000); // ожидаем 1 секунду
}

Принцип работы этой программы достаточно простой: светодиод загорается на 1 секунду и тухнет на 1 секунду. Для первого варианта нам не понадобиться собирать макет. Так как в платформе Arduino к 13 пину подключён встроенный светодиод.

Прошивка Arduino

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

Это может быть Arduino Uno, Arduino Nano, Arduino Mega, Arduino Leonardo или другие. Также в разделе «Порт» необходимо выбрать Ваш порт подключения (тот порт, к которому вы подключили Вашу платформу). После этих действий, можете загружать скетч.

Для этого нажмите на стрелочку или во вкладке «Скетч» выберете «Загрузка» (также можно воспользоваться сочетанием клавиш “Ctrl + U”). Прошивка платы завершена успешно.

Прототипирование/макетирование

Для сборки макета нам необходимы следующие элементы: светодиод, резистор, проводки (перемычки), макетная плата(Breadboard). Для того, чтоб ничего не спалить, и для того, чтоб всё успешно работало, надо разобраться со светодиодом. У него есть две «лапки». Короткая – минус, длинная – плюс.

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

Код остаётся тот же самый.

На этом у нас конец первой части. Спасибо за внимание.

Источник: https://habr.com/post/352806/

Проекты Arduino для всех

Все об ардуино и электронике ! 

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

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

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

Название платформы происходит от названия одноимённой рюмочной в Иврее, часто посещавшейся учредителями проекта, а название это в свою очередь было дано в честь короля Италии Ардуина Иврейского[2].

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

По случаю удалось раздобыть эдакую интересную «уличную» антенну  с весьма многообещающими характеристиками . Она конечно б.у , но и цена на неё была весьма заманчивая . Обошлась в 18 долларов . 

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

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

Автоматика домашних горизонтальных жалюзи на ардуино и шаговом двигателе 28byj-48 . За основу определения и контроля взят фоторезистор .

Популярная глушилка спаммер  на базе платы ESP8266 (nodemcu WEMOS ) получила вторую версию прошивки c исправлением ошибок , улучшением интерфейса и добавлением более широкого функционала . Все это собрал до кучи и решил написать пост . Так же добавил подробный ворклог с упрощенной прошивкой через FLASHER (прошивка в 3 клика )

WIFI часы с метеостанцией на ESP8266 и матричном индикаторе на MAX7219

Очень интересный и простой проект часов с веб интерфейсом на базе платы ESP8266 nodemcu и дисплея MAX7219 . Наверное лучший вариант часов и спаренной погодной станции которая получает данные с интернета ! 

Дополнительные поля

test 1:

Сборка лазерного гравировального станка — своими руками , вот что у меня получилось (С) Denis_Geek

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

Читать продолжение ….. 

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

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

Данный блок питания представляет собой аккумуляторную сборку с платой БМС , индикатор -вольтметр ,амперметр ,а так же плату пониженияповышения напряжения от 1.2 в до 27 вольт с регулировками . 

Arduino-робот Plotclock рисует рисует последовательность цифр, отображающей текущее время  в 24-часовом формате .Собрать такого робота часовщика можно самому

на базе ардуино , 3х сервоприводов и конечно нужны будут детали напечатанные на 3д принтере . 

Показано с 1 по 16 из 88 (всего 6 страниц)

Источник: http://www.electronica52.in.ua/proekty-arduino/

Как начать программировать с Arduino

Инструкция

Объектно-ориентированный язык программирования Delphi основан на языке Object Pascal. Компания Borland значительно доработала его, создала удобную среду программирования Borland Delphi. Именно эта среда и обеспечила Дельфи столь большую популярность. Начать программировать с ее помощью может даже новичок, по ходу создания программы осваивая основы языка.

Для работы вам понадобится среда программирования Borland Delphi 7, вы можете найти ее в сети. Скачайте программу, установите.

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

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

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

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

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

Удобнее всего осваивать Delphi на конкретных примерах. Здесь вы можете скачать иллюстрированный учебник для начинающих: http://gluk.webhost.ru/programs/delphi7.chm.

На этой странице вы можете посмотреть видеоролик, рассказывающий о создании на Дельфи простого текстового редактора: http://wda.3dn.ru/blog/videourok_po_borland_delphi_7_delaem_tekstovyj_redaktor_v_borland_delphi7/2011-03-17-2.

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

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

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

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

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

Источник: https://www.kakprosto.ru/kak-834668-kak-nachat-programmirovat-s-arduino

Немного по «Ардуино» ARDUINO

Что собой представляет Arduino? Как вкратце можно охарактеризовать Arduino?

Оптимально будет сказать, что это — электронный конструктор.

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

Базируется конструктор на своей аппаратной части, которая представляет собой плату ввода-вывода. Для программирования платы используются языки, которые основаны на C/C++. Они получили название, соответственно, Processing/Wiring.

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

Чтобы вы понимали легкость работы, часто говорят, что Arduino — для начинающих волшебников-конструкторов. Разобраться с платами «Ардуино» могут даже дети.

Что же из него можно сделать?

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

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

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

Как приобрести?

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

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

Читайте также:  Уроки arduino: основы управления двигателями роботов

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

Подробнее о начинке!

Плата Ардуино является простым микроконтроллером AVR , который был прошит бутлоадером и имеет минимально необходимый минимум USB-UART порт. Есть ещё важные составляющие, но в пределах статьи лучше будет остановиться только на этих двух составляющих.
Сначала о микроконтроллере, механизме, построенном на одной схеме, в которой и размещается разработанная программа.

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

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

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

Теперь немного о программировании Arduino.

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

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

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

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

— Защита от кривых рук. Довести микроконтроллер до состояния кирпича с помощью прямой прошивки довольно легко, сильно напрягаться не надо.

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

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

Какие проекты можно порекомендовать для начала?

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

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

В качестве таких первых шагов в работе с Arduino для начинающих можно посоветовать рассмотреть:

Создать мигающий светодиод, который будет работать благодаря «Ардуино».

Подключение отдельной кнопки к «Ардуино». При этом можно сделать так, чтобы кнопка могла регулировать свечение светодиода из пункта №1.

Подключение потенциометра.

Управление сервоприводом.

Подключение и работа с трехцветным светодиодом.

Подключение пьезоэлемента.

Подключение фоторезистора.

Подключение датчика движения и сигналы о его работе.

Подключение датчика влажности или температуры.

Источник: https://hcomp.ru/blog/ooo-kik/2017/02/nemnogo-po-arduino-arduino/

Почему не стоит использовать Arduino для обучения программированию

Журнал РАДИОЛОЦМАН, май 2018

Hack van de dam

Я бы мог начать статью словами «Почему Arduino – отстой» или «Почему Arduino – барахло», что привлекло бы огромный трафик к странице в Интернете. Но я не сделал этого, потому что это просто неправда.

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

Позвольте мне объяснить вам, почему.

«Arduino – это открытая платформа для прототипирования электроники, основанная на гибком, простом в использовании оборудовании и программном обеспечении. Она предназначена для новичков, профессионалов и все тех, кто заинтересован в создании интерактивных объектов или сред», – именно так представлена Arduino своими разработчиками [1].

И они правы. Для создания интерактивных объектов или сред проект Arduino подходит идеально.

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

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

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

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

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

Пять причин, почему (не в порядке важности)

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

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

Может быть, нужно преклонить колени, чтобы уговорить их сделать цветовое выделение переменных, но для начала хотя бы дайте возможность просмотра их определений. Посмотрите, как это выглядит в Code::Blocks [2] на Рисунке 1.

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

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

Рисунок 1. Опция поиска определений переменных и ихреализация в среде Code::Blocks.

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

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

Чтобы получить четкое представление о том, как это делается правильно, загляните, пожалуйста, в подробное руководство по заголовочным файлам в Си, выпущенном MIT [4] (на английском языке):

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

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

Это важно, поскольку в соблюдении Правила Одного Определения компиляторам и компоновщикам нужна помощь».

Написанию модульного кода отлично помогает возможность поиска определений и реализаций файлов.

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

(Кто сможет сказать, что на самом деле делает функция «digitalWrite»)? Изучая программирование на Си, пожалуйста, научитесь правильно использовать заголовочные файлы.

2. Плохие уровни абстракций, плохие именования

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

  1. analogWrite(int): Функция «записывает аналоговое значение (ШИМ) в порт микроконтроллера». Вы скажете: «Что? ШИМ стал аналоговым?». Он настолько же аналоговый, насколько аналоговая информация на компакт-диске. Сигнал широтно-импульсной модуляции НЕ аналоговый; частота ШИМ Arduino равна «приблизительно» 490 Гц, и нет никаких указаний касающихся того, какой должна быть комбинация RC, чтобы сделать аналоговый сигнал. Это вводит в заблуждение. Сказанного достаточно для управления светодиодом, но это не «аналоговый сигнал», который можно было бы использовать в качестве уставки для аналоговой системы управления.
  2. И конечно, если уж вы предоставили возможность генерировать сигнал ШИМ, то хотя бы позвольте установить его частоту.
     
  3. pinMode():
    Я должен признать, что ошибка уже исправлена, но некоторое время назад были доступы только значения «INPUT» и «OUTPUT». Если бы потребовалось получить вход с подтягивающим резистором, пришлось бы еще выполнить функцию digitalWrite() для порта, который только что был сделан входом. Те, кто знают архитектуру AVR, понимают, что тем самым производится запись в регистры DDRx и PORTx, но для новичков включение подтягивающего резистора записью в порт, который только что был сделан входом, выглядит очень странной. Сейчас все исправлено, но для этого потребовалось слишком много времени; функция pinMode() уже использовалась, и нуждалась только в этой дополнительной опции. Здесь не только не было абстрагирования от «железа», но эта функция создавала код, который не мог нормально переноситься на другие микроконтроллеры. (Вероятно, поэтому функция была исправлена в момент появления платы Arduino Due).
     
  4. Переменные:
    Зачем использовать все типы char, int, long и т.д.? Использование stdint (uint8_t, uint16_t, int32, …) даст более правильное понимание и более переносимый код. Тип int – это 16-битная величина для компилятора AVR-GCC, тогда как для компилятора GNU ARM – 32-битная…
     
  5. Отсутствие абстракций и свойств системы:
    progmem. Очень многие используют для отладки сроковые последовательности, которые сохраняются в ОЗУ. Фиксированные строки могут храниться во Flash-памяти и считываться из нее; эти функции присутствуют в пакете avr-libc. Поэтому я думаю, что 90% людей, сказавших «память Arduino переполнилась», были бы рады добавлению какого-нибудь ключевого слова.

3. Ужасная документация

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

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

Можно ли обращаться к таймеру из функции servo()? Будет ли отправка строки в последовательный порт блокировать выполнение программы? Будет ли функция analogWrite() влиять на другие функции времени? В руководстве по Arduino вы об этом не прочитаете.

В справочнике по Arduino также описывается её «язык программирования». В базовой структуре используются некоторые функции Си и Си++, описанные, опять же, непонятно. «Arduino» – не тот язык, который вы не постеснялись бы указать в своем резюме.

Читайте также:  Ардуино система обнаружения дыма своими руками

Чтобы считаться программистом, надо уметь программировать на Си! Сходства и различия этих функций неясны, что приводит к путанице при переходе на другие микроконтроллеры или в среды разработки ANSI-C.

Где используются классы? Где используются структуры? Я понимаю, что Arduino не хочет отпугивать новых пользователей, но как же они станут «продвинутыми» пользователями?

4. Отсутствие доступа к периферии и напрасная трата ресурсов

Я знаю, что, смешав скетч с «реальным» Си и используя регистры Atmel, вы можете получить доступ к периферии Arduino и микроконтроллера.

Но, если уж вы продвинулись так далеко, пожалуйста, доставьте себе удовольствие и напишите собственный код, где вы будете знать, какая периферия используется и каким образом. Начиная программировать микроконтроллеры, я был поражен скоростью их работы (PIC, 8 МГц).

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

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

У меня на работе многие пытаются писать на Arduino циклы управления. Используя функцию micros(), они отмечают время начала функции loop(), выполняют свои задачи, а затем снова опрашивают функцию micros() для ожидания завершения времени цикла.

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

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

5. Отсутствие «реальной» отладки

Когда в Arduino использовался ATmega328, у разработчика не было порта отладки. Теперь появилась серия плат Due, и отладочные порты имеют микроконтроллеры Microchip (Atmel) от серии tiny (DebugWire) до серии XMEGA (PDI и JTAG), однако пользователям Arduino этот мощный набор инструментов по-прежнему недоступен.

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

Несколько точек останова дают очень быструю индикацию выполняемого кода и возникающих ошибок. Меня приводят в восторг все новые наборы разработки ARM с интегрированным аппаратным отладчиком.

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

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

Я думаю, что приведенных аргументов вполне достаточно для недовольства.

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

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

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

Заключение

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

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

Для этого изучайте настоящую кулинарию; начинайте с нуля – с кипящей воды, затем кладите туда scratch, готовьте картофель с mBed и делйте суши с Atmel, чтобы в конечном итоге выйти на фристайл с отладочными платами ARM.

Ссылки

Источник: https://www.rlocman.ru/review/article.html?di=500219

Программируем Arduino с нуля

 Перевел Scrtvr для mozgochiny.ru

 Мозгокурс молодого бойца по программированию Ардуино или с чего все-таки начать знакомство с этой платформой.

Шаг 1: Начинаем с самого начала или как было бы хорошо, если бы Ардуино была бесплатной

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

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

Нужно клонировать Ардуино своими руками!

Шаг 2: Собираем все необходимое

Для ускорения процесса воспользуемся макетной платой. Как известно из технических параметров контроллера ATmega 328 IC, для его запуска в минимальной конфигурации нам потребуются:

− контролер Arduino Duemilanove (будет использован как программатор);
− микросхема ATmega 328 IC ; − кварцевый резонатор на 16 Мгц; − резисторы 100 Ом 3 шт.

; − конденсаторы 22pF 2 шт.; − светодиоды 3 шт с красным, зеленым, .

и желтым цветом свечения; − стабилизатор напряжения  на 5 Вольт например 7805; − любая 9 батарея с разъемом для подключения; − кабель USB;

− компьютер или ноутбук с установленным пакетом программ Arduino IDE;

− макетная плата и провода.

Шаг 3: Начинаем макетировать

Размещаем на макетной плате микросхему контроллера.

Шаг 4: Монтируем стабилизатор напряжения и цепи питания

Устанавливаем на плату стабилизатор напряжения L7805. Назначение выводов микросхемы 1-вход (7-20 Вольт), 2-корпус, 3-выход (5 Вольт). C помощью монтажных проводов подключаем стабилизатор к источнику питания и контроллеру, как показано на фотографиях.

Шаг 5: Подключаем питание к контроллеру

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

Совет: Монтажные провода имеют разный цвет изоляции, старайтесь использовать провода одного цвета для каждой цепи.

Шаг 6: Подключаем кварцевый резонатор

Располагаем на плате резонатор и конденсаторы колебательного контура.

Порядок монтажа следующий:

− конденсатор 22pF ставим между землёй и 9 ножкой контроллера; − конденсатор 22pF ставим между землёй и 10 ножкой контроллера; − резонатор включаем между ногами 9 и 10 контроллера;

− резистор 10 kOm включаем между 1 ногой контроллера и +5В (шунтируем сигнал «Сброс»).

Шаг 7: Добавляем индикаторы состояния контроллера

Светодиоды включаем последовательно с резисторами 100 Ом, между землёй и нашим программатором.

Шаг 7: Соединяем макет с платой программатора

Подключаем собранный макет к плате Arduino Duemilanove следующим образом:

− вывод жёлтого светодиода соединяем с 9 выводом на разъёме программатора, его пульсация покажет нам, что программатор работает;
− вывод красного светодиода соединяем с 8 выводом на разъёме программатора, он сигнализирует о возможных ошибках;
− вывод зелёного светодиода соединяем с 7 выводом на разъёме программатора, его свечение сигнализирует об обмене данными между программатором и микроконтроллером.

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

Шаг 8: Превращаем плату Arduino Duemilanove в программатор

Для того что в загрузить в микроконтроллер ATmega 328 IC бутлоадер необходимо превратить наш Arduino Duemilanove в программатор.

Подключаем нашу сборку к компьютеру с помощью USB кабеля. Открываем среду программирования AndurinoIDE, выбираем в нем скетч (программу) AndurinoISP и загружаем его в Arduino Duemilanove.

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

Шаг 9: Загружаем бутлоадер

В AndurinoISP (пункт меню «Tools») выбираем нужный нам тип контроллера (ATmega 328 IC).

Даём команду на загрузку бутлоадера «Burn bootloader».

Следим за сообщениями AndurinoIDE, после окончания загрузки бутлоадера «Done Burning bootloader» наш микроконтроллер готов к записи скетча проекта нашей новой самоделки.

Шаг 10: Возможные проблемы и их решение

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

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

(A-z Source)

Источник: http://mozgochiny.ru/bez-rubriki/programmiruem-arduino-s-nolya/

Ссылка на основную публикацию