Робот для обучения детей программированию на Arduino. Как научиться программировать ардуино


Список уроков программирования Ардуино. | Оборудование, технологии, разработки

 

Урок 1. Введение. Общие сведения об Ардуино.

Урок 2. Плата Arduino UNO R3. Описание, характеристики.

Урок 3. Установка программного обеспечения Arduino IDE, подключение платы к компьютеру.

Урок 4. Основы программирования Ардуино на языке C.

Урок 5. Первая программа. Функции управления вводом/выводом. Кнопка, светодиод.

Урок 6. Обработка дребезга контактов кнопки. Интерфейс связи между программными блоками.

Урок 7. Классы в программах Ардуино. Кнопка как объект.

Урок 8. Цифровая фильтрация сигналов в программах для Ардуино.

Урок 9. Создание библиотеки для Ардуино.

Урок 10. Прерывание по таймеру в Ардуино. Библиотека MsTimer2. Параллельные процессы.

Урок 11. Программные таймеры в Ардуино. Циклы с различными временами периода от одного таймера.

Урок 12. Последовательный порт UART в Ардуино. Библиотека Serial. Отладка программ на Ардуино.

Урок 13. Аналоговые входы платы Ардуино. Чтение аналоговых сигналов. Измерение среднего значения сигнала.

Урок 14. EEPROM в Ардуино. Контроль целостности данных.

Урок 15. Указатели в C для Ардуино. Преобразование разных типов данных в байты.

Урок 16. Повышение надежности программ для Ардуино. Сторожевой таймер.

Урок 17. Рабочий проект Ардуино. Охранная сигнализация.

Урок 18. Подключение матрицы кнопок к Ардуино. Функция tone().

Урок 19. Семисегментные светодиодные индикаторы (LED). Режимы управления, подключение к микроконтроллеру.

Урок 20. Подключение семисегментного светодиодного (LED) индикатора к Ардуино. Библиотека управления индикатором.

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

Урок 22. Работа со временем в Ардуино. Проект спортивного секундомера.

Урок 23. Подключение ЖК (LCD) индикаторов к Ардуино. Библиотека LiquidCrystal.

Урок 24. Подключение аналоговых термодатчиков к Ардуино (LM35, TMP35, TMP36, TMP37). Рабочий проект термометра.

Урок 25. Кремниевые термодатчики серии KTY81 в системе Ардино. Проект термометра-регистратора.

Урок 26. Подключение термодатчиков DS18B20 к Ардуино. Библиотека OneWire. Точный Ардуино термометр-регистратор.

Урок 27. Термопары в системе Ардуино. Проект Ардуино термометра-регистратора  для высоких температур.

Урок 28. Униполярный шаговый двигатель в системе Ардуино. Библиотека Stepper.

Урок 29. StepMotor - библиотека управления шаговыми двигателями в системе Ардуино. Библиотека прерывания по таймеру 1 TimerOne.

Урок 30. Текстовые строки в Ардуино. Конвертирование данных в строки и наоборот. Класс String.

Урок 31. Драйвер шагового двигателя на Ардуино с управлением от компьютера. Протокол обмена данными с использованием AT команд.

Урок 32. Следящий электропривод с шаговым двигателем.

Урок 33. Биполярный шаговый двигатель в системе Ардуино.

Урок 34. STEP/DIR драйверы шаговых двигателей. Основные понятия. Протокол STEP/DIR.

Урок 35. Подключение STEP/DIR драйверов шаговых двигателей к Ардуино. Библиотека StepDirDriver.

Урок 36. Разработка Ардуино-контроллера элемента Пельтье. Импульсный (ключевой) регулятор напряжения.

Урок 37. Широтно-импульсная модуляция в Ардуино.

Урок 38. Ардуино-контроллер элемента Пельтье. Структура программы. Измерение выходных параметров контроллера.

Урок 39. Разработка контроллера элемента Пельтье. Интегральный регулятор мощности.

Урок 40. ПИД регулятор. Принцип действия, математическое описание, настройка.

Урок 41. Разработка контроллера элемента Пельтье. ПИД регулятор температуры.

Урок 42. Контроллер элемента Пельтье. Реализация пользовательского интерфейса и защитных функций.

Урок 43. Разработка контроллера элемента Пельтье. Программа верхнего уровня. Проверка, настройка устройства.

Урок 44. Контроллер элемента Пельтье. Другая версия программного обеспечения. Завершение проекта.

Урок 45. Другие платы Ардуино с микроконтроллерами ATmega168/328. Плата Arduino Nano.

Урок 46. Другие платы Ардуино с микроконтроллерами ATmega168/328. Плата Arduino Pro Mini.

Урок 47. Обмен данными между платами Ардуино. Основные понятия. Терминология.

Урок 48. Обмен данными между платой Ардуино и компьютером через интерфейс UART.

Урок 49. Обмен данными между платами Ардуино через интерфейс UART.

Урок 50. Помехоустойчивость и физическая среда стандартного интерфейса UART.

Урок 51. Радиальные интерфейсы RS-232 и RS-422.

Урок 52. Интерфейс ИРПС (цифровая токовая петля). Принцип действия, параметры, схемная реализация.

Урок 53. Плата MassDuino UNO LC (MD-328D). АЦП высокого разрешения (до 16 бит), расширенные функциональные возможности, полная совместимость с Arduino UNO.

Урок 54. Специфика программирования платы MassDuino UNO LC. Установка программного обеспечения, программирование АЦП, ЦАП, дополнительных цифровых выводов.

Урок 55. Работа с инкрементальным энкодером в Ардуино. Библиотека Encod_er.h.

Урок  56. Протокол последовательной передачи данных ModBus RTU.

Урок 57. Обмен данными между платой Ардуино и компьютером через UART по протоколу ModBus. Библиотека Tiny_ModBusRTU_Slave.

Урок 58. Обмен данными между платами Ардуино через UART по протоколу ModBus. Библиотека Tiny_ModBusRTU_Master.

Урок 59. Объединение нескольких плат Ардуино в локальную сеть с топологией “Общая шина”. Преобразование UART в последовательный интерфейс с одной сигнальной линией.

Урок 60. Интерфейс RS-485.

Урок 61. Аппаратная реализация интерфейса RS-485. Объединение плат Ардуино в локальную сеть RS-485.

Урок 62. Технология клиент-сервер.

Урок 63. Локальная сеть Ethernet. Модуль ENC28J60, его подключение к плате Ардуино.

Урок 64. TCP сервер и клиент на Ардуино. Библиотека UIPEthernet.

Урок 65. Аналогово-цифровые преобразования Ардуино в фоновом режиме. Библиотека BackgroundADC.

Урок 66. OSD-генератор MAX7456. Общее описание, функциональные возможности, параметры, подключение к плате Ардуино.

Урок 67. Ардуино-библиотека OSD-генератора MAX7456. Описание библиотеки, проблемы некорректной работы, исправленный вариант.

Урок 68. Практическое программирование OSD-контроллера MAX7456 в системе Ардуино. Создание и загрузка шрифтов, вывод информации на экран.

 

 

 

 

mypractic.ru

Arduino для начинающих: пошаговые инструкции. Программирование и проекты Arduino: с чего начать?

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

Что собой представляет Arduino?

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

Базируется конструктор на своей аппаратной части, которая представляет собой плату ввода-вывода. Для программирования платы используются языки, которые основаны на C/C++. Они получили название, соответственно, Processing/Wiring. От группы С они унаследовали предельную простоту, благодаря чему осваиваются они весьма быстро любым человеком, и применять знания на практике не является довольно значительной проблемой. Чтобы вы понимали легкость работы, часто говорят, что Arduino - для начинающих волшебников-конструкторов. Разобраться с платами "Ардуино" могут даже дети.

Что на нём можно собрать?

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

Где приобрести составляющие?

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

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

Подробнее об аппаратуре

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

Сначала о микроконтроллере, механизме, построенном на одной схеме, в которой и размещается разработанная программа. На программу могут влиять нажатия кнопок, получение сигналов от составляющих творения (резисторов, транзисторов, датчиков и т. д.) и т. д. Причем датчики могут быть самые различные по своему предназначению: освещения, ускорения, температуры, расстояния, давления, препятствия и т. д. В качестве устройств индикации может вестись использование простых деталей, от светодиодов и пищалок к сложным устройствам, вроде графических дисплеев. В качестве исполнительных устройств рассматриваются моторчики, клапаны, реле, сервомашинки, электромагниты и множество других, которых перечислять очень и очень долго. С чем-то из этих списков МК работает прямо, с помощью соединительных проводов. Для некоторых механизмов нужны переходные устройства. Но если вы уж начнёте конструировать, оторваться вам будет сложно. Теперь поговорим о программировании Arduino.

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

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

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

Проекты для начала

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

  1. Создать мигающий светодиод, который будет работать благодаря "Ардуино".
  2. Подключение отдельной кнопки к "Ардуино". При этом можно сделать так, чтобы кнопка могла регулировать свечение светодиода из пункта №1.
  3. Подключение потенциометра.
  4. Управление сервоприводом.
  5. Подключение и работа с трехцветным светодиодом.
  6. Подключение пьезоэлемента.
  7. Подключение фоторезистора.
  8. Подключение датчика движения и сигналы о его работе.
  9. Подключение датчика влажности или температуры.

Проекты для будущего

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

fb.ru

Arduino для начинающих

Сегодня речь пойдет об использовании SD и micro SD карт в Arduino. Мы разберемся как можно подключить SD карты к Ардуино, как записывать и считывать информацию. Использование дополнительной памяти может быть очень полезно во многих проектах. Если вы не знаете что такое SPI, I2C и аналоговые выводы, то советую вам посмотреть прошлые уроки и разобраться с этими интерфейсами связи Ардуино.

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

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

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

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

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

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

В этом уроке мы поговорим об аналоговых входах Arduino. Аналоговые пины измеряют напряжение поступающего сигнала с точностью до 0,005 вольт. Благодаря этому мы можем подключать разнообразные датчики и резисторы (термо резисторы, фоторезисторы,).

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

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

В этом уроке мы узнаем: как подключить кнопку к ардуино, как подавить дребезг контактов, как в прошивке обработать нажатие на кнопку, как послать ШИМ сигнал, как создать свою функцию и как управлять светодиодом.

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

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

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

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

all-arduino.ru

Программирование Arduino урок 1 — первый шаг

Первое, с чего следует начать работу по освоению Arduino – это приобрести отладочную плату (хорошо бы сразу приобрести монтажную плату и т.п.). Уже описывал, какие виды плат Arduino представлены на рынке. Кто еще не читал статью Введение в курс «Программирование микроконтроллеров» советую ознакомиться. Для изучения основ выбираем стандартную плату Arduino Uno (оригинал или хорошую китайскую копию — решать вам). При первом подключении оригинальной платы проблем возникнуть не должно, а вот с «китайцем» нужно будет немного поковыряться (не переживайте – всё покажу и расскажу).

Подключаем Arduino к компьютеру USB кабелем. На плате должен засветиться светодиод «ON«. В диспетчере устройств появится новое устройство «Неизвестное устройство«. Необходимо установить драйвер. Тут внесу небольшую неясность (кот отвлек – я не запомнил, какой из драйверов решил «проблему неизвестного устройства».

Предварительно скачал и распаковал программную средy Arduino (arduino-1.6.6-windows). Затем скачал этот архив. Он самораспаковывающейся. Запустил файл Ch441SER.EXE. Выбрал установку (INSTALL). После установки появилось сообщение, нажал «Ок» (прочитать не успел).

После перешёл в свойства все еще «неизвестного устройства» и выбрал кнопку «Update Driver». Выбрал вариант «Установка из указанного места» – указал папку с разархивированной программной средой Arduino. И о чудо – всё удачно заработало…

Запускаем программу Arduino (в моём случае 1.6.6) и разрешаем доступ.

Все проекты (программы) для Arduino состоят из двух частей: void setup и void loop. void setup выполняется всего один раз, а void loop выполняется снова и снова.

Прежде чем продолжим, необходимо выполнить две обязательные операции:

— указать в программной среде Arduino, какую плату вы используете. Tool->board-> Arduino Uno. Если отметка уже стоит на нужной вам плате – это хорошо, если нет – ставим отметку.

— указать в программной среде какой последовательный порт вы используете для связи с платой. Tool->port-> COM3. Если отметка уже стоит на порте – это хорошо, если нет – ставим отметку. Если у вас в разделе порты представлен больше, чем один порт, как же узнать, какой именно используется для соединения с платой? Берём плату и отсоединяем от неё провод. Снова заходим в порты и смотрим, какой из них исчез. В моём случае вкладка «порты» вообще стала не активной.

Снова подключаем провод USB.

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

Для начала сконфигурим 13 вывод (на вход или на выход).

Для этого вводим в блок «void setup» команду pinMode, в скобках указываем параметры (13, OUTPUT) (Какой вывод задействован, Режим работы). Программная среда выделяет слова/команды соответствующим цветом шрифта.

Переходим в блок «void loop» и вводим команду digitalWrite с параметрами (13, HIGH).

Первая программа готова, теперь осталось загрузить её в микроконтроллер. Нажимаем кнопку UPLOAD.

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

Светодиод мы включили, он немного посветил, пора его выключать. Для этого видоизменим написанную нами программу. Вместо «HIGH» напишем «LOW».

Нажимаем кнопку UPLOAD. Светодиод погас.

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

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

Создаём глобальную переменную int LED_pin = 13; (тип переменной, имя переменной, присваиваемое ей значение).

Нажимаем кнопку UPLOAD. Светодиод светится. Все работает отлично.

В этом уроке, кроме включения/выключения светодиода, мы еще научимся мигать им.

Для этого вводим вторую команду «digitalWrite» с параметрами (LED_pin, LOW).

Нажимаем кнопку UPLOAD. И что мы видим? Светодиод светится «в пол наказа». Причина кроется в том, что время переключения двух состояний (HIGH и LOW) ничтожно мало и человеческий глаз не может уловить эти переключения. Необходимо увеличить время нахождения светодиода в одном из состояний. Для этого пишем команду delay с параметром (1000). Задержка в миллисекундах: 1000 миллисекунд – 1 секунда. Алгоритм программы следующий: включили светодиод – ждём 1 секунду, выключили светодиод – ждём 1 секунду и т.д.

Нажимаем кнопку UPLOAD. Светодиод начал мерцать. Все работает.

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

Нажимаем кнопку UPLOAD. Светодиод мерцает, как и мерцал.

Доработаем написанную нами программу. Задачи следующие:

  • Светодиод включен 0,2 секунды и выключен 0,8 секунды;
  • Светодиод включен 0,7 секунды и выключен 0,3 секунды.

В программе созданы 2 переменные, что отвечают за временные задержки. Одна определяет время работы включенного светодиода, а вторая – время работы выключенного светодиода.

 

Выводы по уроку:

  • подключили плату Arduino;
  • написали первую программу;
  • модернизировали её (применили теорию на практике).

Примеры написанных программ:

Спасибо за внимание. До скорой встречи!

Картотека программирования

ПОДЕЛИТЕСЬ С ДРУЗЬЯМИ!

About alexlevchenko
Ценю в людях честность и открытость. Люблю мастерить разные самоделки. Нравится переводить статьи, ведь кроме того, что узнаешь что-то новое - ещё и даришь другим возможность окунуться в мир самоделок.

mozgochiny.ru

КМБ для начинающих ардуинщиков / Arduino / RoboCraft. Роботы? Это просто!

ЗаманухаВы всю жизнь завидовали подросткам-гикам из американских фильмов, которые не напрягаясь из всякого хлама делают роботов или систему контроля доступа в комнату? Вам надоело писать программы на комп — хотите увидеть как ваш код заставит дрыгаться и ползать что-то материальное, прямо на столе? Всегда хотели научится делать что-нибудь электронное, но не знаете чем отличается транзистор от конденсатора? С недавних пор, благодаря итальянцам, ваши мечты могут несколько материализоваться. Речь пойдёт о довольно известной, и многим уже изрядно надоевшей, платформе Ардуино. Итак что же это за платформа, чем она может помочь радиоламмеру почувствовать себя гиком от электроники и почему заслужила ненависть в среде профессионалов?

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

Основа платформы – собственно плата ардуино, со своим стандартом расположения выводов, программируемая из-под своей среды (Ардуино ИДЕ) на языке Виринг (фактически С++). Благодаря простоте освоения и доступности платформа получила широкое распространение, появились клоны платы, некоторые с полезными улучшениями.

Документация и схема Arduino распространяется под лицензией Creative Commons Attribution Share-Alike и доступны на официальном сайте Arduino. Однако, само название Arduino является торговой маркой и поэтому все платы-клоны называются по другому (хотя и включают в своём названии «duino») Например, самый известный клон — Freeduino.

Функционал платы довольно широк, но всё же ограничен, добавить возможностей можно с помощью плат расширения – шилдов. Вот в этих шилдах и зарыта основная крутизна платформы. Единый стандарт на расположение выводов (у оригинальной платы и у клонов), а также растущая популярность, сделали её привлекательной для разработки сторонними производителями сотен шилдов. Нет другой подобной платформы с таким набором возможных расширений. Например, Ethernet-шилд позволяет подключить Arduino к компьютерной сети и даже работать в Интернете (клиентом или сервером).

Ещё есть Motor-шилд, Wave-шилд, GPS-шилд, GSM-шилд, Wi-Fi-шилд, LCD-шилд, — Bluetooth-шилд и т.д. И всё это даже не беря паяльник в руки! Поэтому саму плату часто сравнивают с материнкой компа, а шилды – с платами расширения – звуковухами, видюхами и пр. (не совсем корректно, конечно, но суть в целом отражает).

Любая возможность автоматизировать что-то с лёгкостью реализуется с Arduino! Выкладывать своё сердцебиение в Twitter или напоминать про полив цветов через Интернет? Пожалуйста! Зачитывать RSS-ленту, слушать музыку ветра или сигналы из муравейника через ИК-маяки – легко! Автоматизация аквариума, элементы умного дома, кодовый замок или цифровая отмычка… А какое поле деятельности для робототехники!

Поподробней про железо Сама плата ардуино — это просто микроконтроллер AVR (Atmega8/168/328 или Atmega1280/2560), прошитый бутлоадером с минимальной необходимой обвязкой и преобразователем USB-UART. Понятно? Не очень? Тогда по пунктам=)

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

С кнопками и ручкам вроде всё понятно, а вот про остальное поясню — Датчики могут быть чего угодно — температуры, давления, освещённости, присутствия, ускорения, расстояния до препятствия и пр. Интерфейсы как довольно специализированные I2C, SPI, CAN и пр. так и распространенные COM-порт, USB, Bluetooth, WiFi, Ethernet и пр. Устройства индикации от светодиодов и пищалок до графических дисплеев. Исполнительные устройства – моторчики, сервомашинки, клапана, реле, электромагниты и пр. С чем то из этого списка МК может работать напрямую (надо только два проводка, чтобы соединить МК и кнопку), а для каких-то других примочек потребуются дополнительные детали (крутить мотором напрямую не получится – нужен какой-нибудь усилитель-драйвер).

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

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

Кварцевый резонатор — задаёт тактовую частоту 16МГц для МК.

Линейный стабилизатор — обеспечивает стабильное питание для МК. На плату мы можем подавать от 7 до 12В (Например — 7-вольтовый адаптер от кассы, 9-вольтовая крона, 12в в машине.) «лишнее» напряжение стабилизатор отбросит в тепло, а на МК пойдёт ровно 5В.

Преобразователь USB-UART – чтоб МК мог общаться с компом по USB. UART у МК уже есть на борту, а USB – нету. Первые ардуины подключались к COM-порту (это и есть UART =) – требовалось лишь согласовать уровни (у компа — от -12В до +12В, у МК от 0 до +5В), потом решили что USB всё же удобней, но пришлось ставить преобразователь интерфейсов.

Светодиоды — Индикатор питания (PWR) Пользовательский (L) – им может индицировать состояние выполняемой программы RX, TX – для индикации обмена данными с компом по USBКнопка Reset – для сброса МК и, соответственно, перезапуска прошитой программы

Разьёмы — для штекера питания, USB шнурка, подключения внешнего программатора (SPI/ICSP) для соединения с внешними элементами или втыкания шилдов.

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

Следует оговорится, что любые сигналы на выводах МК не должны быть ниже 0 и не должны превышать напряжения питания (5 вольт). Если нужно проанализировать сигнал выходящий за эти пределы, то придётся его перед подачей на МК преобразовать произвольным методом и привести к этому диапазону. Цифровых сигналов всего два вида – 0 и 1 (логический ноль и логическая единица, LOW и HIGH). Причём за ноль принимается все что меньше 2 вольт (т.е 0…2 = LOW) а за единицу всё что выше 3 вольт (т.е 3…5 = HIGH) Всё что между (т.е 2…3) ни вызывает у цифровых устройств никаких эмоций – это считается помехами и игнорируется. Это если считывается внешний сигнал, а если выводится то HIGH=5В, LOW=0В.Все ноги у МК (не считая нескольких отданных под питание, тактирование, сброс, и опорное напряжение для аналоговой части) могут работать в режиме цифровых вводов/выводов. (то есть с одного и того же вывода программа может как считать внешний цифровой сигнал, так и самостоятельно выставлять 0 или 1) Ну и зачем это надо? — спросит пытливый читатель=) цифровой ввод – для кнопки или датчика (многие датчики имеют цифровой выход типа: событие наступило — 1 не наступило – 0. Например — есть препятствие на расстоянии менее 30 см. — 1, концентрация метана в атмосфере выше допустимой – 1 и т.п.) А в случае выхода можно что-нибудь включать-выключать.

Аналоговый сигнал это всё множество цифирек от 0 до 5 вольт (т.е и 1.5В и 3.136В), вот только представляется внутри МК это всё в виде цифирек (от 0 до 1023 ) и значит имеет определённую разрешающую способность – (ограниченную точность) — порядка 5мВ. (точнее 0,004883В, т.е 0,003В=0; 0,015В=3; 1В=204) Да, а ещё аналоговый сигнал оцифровывается с ограниченной скоростью – приблизительно 10000 раз в секунду (иногда не хватает=). С аналоговым выводом чуть сложнее. Он есть, но МК AVR не могут непосредственно выдать произвольное напряжение, зато он может генерить ШИМ. Подробности ниже не переключайтесь=)

Но сигналы сами по себе не интересны – надо чтоб их что-нибудь воспринимало, какой нам интерес от периодически переключающегося (то 0 то 1) вывода если он никуда не подключен? Вот если подцепить к нему светодиод то он будет моргать=) Красиво. Возможно даже информативно. А лампочку можно? А мотор? Напрямую нельзя=( Тут следует вникнуть ещё в один электрический нюанс. То, что подключается к источнику сигнала (выводу МК) называют нагрузкой. Нагрузка потребляет от источника ток — тем больший, чем меньше её сопротивление. Мощная нагрузка – низкоомная — потребляет бОльший ток, высокоомная нагрузка — маленькая — потребляет меньший ток. Закон Ома ещё кто-нибудь помнит?=)) А источник, в свою очередь, может отдать определённый ток – меньше можно, больше ни-ни! (сгорит, ну или просто просядет напряжение, но это уже нюансы=) Так, выводы Атмеги могут отдать 40 мА. Светодиодам хватит, а чем покрупнее придётся рулить через драйвера какие-нибудь. Например, чтобы покрутить моторчики для Ардуины предусмотрен Мотор-шилд. На нём, как раз и установлена микросхема-драйвер L293D задача которой – принимать управляющие сигналы от МК и согласно им подавать питание на мощный мотор. Вход у неё высокомный — от выхода МК она потребляет маааленький ток, а на мотор может подавать напряжение вообще с другого источника (можно поставить силовую батарею аж на 36В) и ток пропускает через себя до 1.2А!

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

Итак, ШИМ (Широтно-Импульсная Модуляция) или PWM – (Pulse Width Modulation). Суть метода заключается как раз в включении-выключении чего-нибудь инерционного, только ооочень быстром включении-выключении. То есть ножка МК «дергается» — 0-1-0… почти 500 раз в секунду.

Кстати последовательность 0-1-0, принято называть импульсом, а длительность нахождения вывода в состоянии HIGH (1)– шириной импульса. Причём, время в котором вывод находится в состоянии HIGH (1, т.е. «включено») и LOW (0, т.е. «выключено») можно регулировать – т.е. менять (модулировать) ширину импульса. Наша нагрузка (например мотор включенный через драйвер) будет получать (в среднем за какое-то время) больше или меньше энергии. Дёрганье происходит с очень большой частотой, поэтому толчки сглаживаются и усредняются (интегрируются), например инерцией ротора двигателя. И скорость его вращения будет уже не максимальной, а меньшей — соответствующей соотношению времени действия 1 и 0.Если подключить светодиод, то в роли интегратора выступит инерция нашего глаза – мы увидим изменение яркости свечения, а не изменения моргания. Если же на выходе не предусмотрено ничего инерционного, а очень хочется получить изменяемое напряжение, то подключают специальную интегрирующую цепочку и снимают усреднённый и совершенно аналоговый сигнал уже с неё.Программно можно организовать ШИМ на любом выводе, но это будет жрать вычислительные ресурсы, поэтому пользуются аппаратными «генераторами» закреплёнными за строго опредёлёнными ножками.

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

Итак резюмируем все данные:

Питание Постоянное напряжение 7 — 12В Либо от USB

Порты ввода/вывода: 14 цифровых вводов/выводов, (работают с напряжением 0 и 5в) 6 из которых могут выдавать ШИМ сигнал, + 6 аналоговых входов

естественно аналоговые входы тоже можно использовать как цифровые, итого выходит 20 вводов/выводов =).

Аппаратно поддерживаемые интерфейсы (программно можно ещё много всего наворотить=) USB (только с компом – определяется как USB Serial Convertor и добавляет в систему свой последовательный порт) UART I2C SPI

Память (для Atmega328) 32 Кбайт программируемой памяти (тут хранится ваша программа) 2 Кбайт ОЗУ(RAM — тут всякие промежуточные вычисления) 512 байт энергонезависимой памяти (EEPROM) (сюда можно запихивать всякие изменяемые в процессе работы настройки, чтобы они сохранялись после отключения питания)Тактовая частота Работают все ардуины на частоте 16МГц.

Arduino позволяют использовать большую часть выводов микроконтроллера во внешних схемах. То есть пару от нас всё-таки спрятали – это выводы предназначенные для подключения кварцевого резонатора. Atmega может тактироваться безо всяких внешних элементов – от внутреннего генератора, тогда эти выводы можно использовать, но внутренний генератор может раскачать МК только до 8МГц. Так что вздохнули и забыли об этих выводах – удвоение производительности важнее=)В классической ардуине(Duemilanove/UNO) МК вставлен в панельку (разъем такой, специальный, для микросхем) и можно его заменить если сожгли или захотели провести апгрейд/даунгрейд. В некоторых клонах и более современных моделях стоят впаянные атмеги, в корпусах для поверхностного монтажа (для снижения стоимости или уменьшения высоты платы). Такие корпуса весьма проблематично перепаять самостоятельно (расстояние между ножками МК менее 1мм).

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

Про программирование Программа для МК обычно называется прошивкой, а прошивают её в кристалл с помощью специальных устройств – программаторов. Для разных МК и для разных нужд существует куча программаторов – от специализированных (шьёт только AVR) до универсальных(шьёт всё), от простых (7 проводков от LPT-порта к ножкам МК) до сложных (часто и сами они построены на МК=). Общего у всех программаторов одно – их надо где-то взять (купить, взять у товарища, спаять) И тут проявляется первое свойство ардуины – ей не нужен программатор – ваш код может заливаться в неё через обычный USB шнурок. Достигается это не встроенным программатором, а специальной прошивкой – бутлоадером.

Кстати, пользовательская прошивка в ардуиновской терминологии называется скетч.Ардуиновский бутлоадер это такая специальная программа которая запускается сразу после включения МК и слушает UART ожидая спецкоманды. Если команда поступила, то следующие за ней данные будут «прошиты» в МК (будет загружен скетч). Если команды не поступило то бутлоадер передаёт управление предыдущей прошитой программе(скетчу). Т.о. процесс загрузки скетча происходит следующим образом – комп плату сбрасывает(резетит), посылает команду на прошивку, передаёт сам скетч, проверяет записанное, затем снова резет, бутлоадер ждёт команды, её естественно не поступает, начинает выполнятся свежезалитый скетч. Все этм махинации происходят самостоятельно – от юзера требуется только нажать одну кнопку=)В картинках.

Отсюда вытекают ещё несколько полезных свойств киллерфич ардуины: 1.Все манипуляции между компом и ардуиной (как обмен данными так и прошивка) происходят по одному каналу связи – USB. Не надо лишних проводов, не надо ничего вставлять – вынимать, не надо ничего нажимать на плате.

Вот поступали к вам на комп данные об активности кота в соседней комнате у миски по USB, захотелось снизить чувствительность – много лишних сработок – подправили прошивку, залили и снова получаете данные. Всё не вставая со стула. Удобно=)

2.Наличие бутлоадера защищает МК от кривых рук начинающего. Прямой прошивкой обычным программатором заблокировать контроллер до невменяемого состояния(кирпич) довольно просто, а при работе через бутлоадер до опасных настроек не добраться, и чтоб вы не делали – все ваши эксперименты через Ардуино ИДЕ будут безопасны (разумеется только с программной точки зрения=).

Кстати саму ардуину можно использовать как программатор и шить ею другие кристаллы, но это совсем другая история=) Скетчи пишутся в Ардуино ИДЕ на Виринге который фактически С++. Через неё и загружаются. Там же есть терминал для обмена данными с платой. Всё в одно месте — служба одного окна практически=) Всё программирование просто, интуитивно понятно, куча встроенных и внешних библиотек, есть масса документации, разобраться и начать работать с ардуиной можно буквально реально за один вечер!Кстати, Ардуино ИДЕ — это просто надстройка над WinAVR… но это тоже совсем другая история=)

За и против. Холивар В общем всё тёплое и пушистое =) Естественно это всё не просто так, за простоту приходится платить. Для программирования вам практически не понадобятся знания о программировании именно МК и их внутренней архитектуре. Это и плюс и минус. Происходит некоторое абстрагирование от «железа». У юзера нет понимания что происходит внутри кристалла — пишется «немикроконтроллерный» код, к тому же формируемая Ардуино ИДЕ прошивка и так не оптимальна (в силу упрощений и ограничений). Часть очень важных и полезных функций МК спрятана от пользователя — «что бы не усложнять»=) Простота и пушистость ардуины, а так же дружелюбность необозримого сообщества, резко снизила порог вхождения. Теперь программером-железячником (эмбеддером) могут себя почувствовать (а то и считать и называть) весьма далёкие от технических наук люди — и гуманитарии, и дизайнеры, и домохозяйки, и (оужос!)офисный планктон, и куда без них, школота дети. Собственно сообщество в значительной мере из таких людей и состоит, и им же развивается. Естественно появился специфический стиль программирования (копи-паст из примеров) и сборки девайсов (проводки-макетки-скотч-китайские модули) — Ардуино-стайл (Arduino-style) неизменно раздражающий более профессиональных профессионалов.

За это некоторые и невзлюбили эту, по сути, замечательную платформу. То есть любой школьник купит ардуину день-два поковыряет её, изучит, сделает какой нибудь таймер или систему жизнеобеспечения аквариума и станет говорить, что программирует контроллеры. Раздражает. Согласен. Толпы фанатов (в основном зарубежных) напоминающих эпл-гиков, пускающих по форумам восторженные слюни на своих ардуино-роботов, ардуино-таймеры, ардуино-хакерские-девайсы, и прочие ардуино-свистелки-перделки-мигалки-поделки. Притом что можно всё это сделать луче, дешевле, правильнее, изящнее. Раздражает. Согласен. Но для того чтобы делать луче, дешевле, правильнее, изящнее, что бы действительно можно было сказать, что ты программируешь контроллеры надо долго учится. А начинать с чего то надо? И ведь лучше не с моргания светодиодом, а с по-настоящему интересных устройств. А многим вообще-то и так хорошо. Работает ведь? Функции выполняет? Зачем в дебри лезть. Ну да дороже, не оптимально, не изящно. Зато здесь и сейчас.

В общем, с одной стороны вы за очень короткий срок научитесь делать законченные рабочие устройства… А надо ли смотреть на другую сторону? =) Если очень хочется дальше развиваться можно писать не на Виринге а на С (хоть на ассемблере) не в Ардуино ИДЕ а в любом компиляторе (хоть в том же WinAVRе который в папке с Ардуино ИДЕ лежит) Надоел загрузчик? Грохнуть его – есть возможность шить Ардуину через USB бит-бангом – потребуется только собрать шнурок-перемычку – и в вашем распоряжение все ресурсы кристалла и возможность шить его напрямую.

В общем, не парьтесь, приобщайтесь — это просто и прикольно=)

Вникать дальшеХоумМейд Arduino — как сделать Arduino своими руками

По теме:Ардуино что это и зачем?Почему Arduino побеждает и почему он здесь, чтобы остаться?Arduino, термины, начало работыСостав стартера (точка входа для начинающих ардуинщиков)Возможные ошибки при работе с Arduino

Купить Arduino или CraftDuino — можно в нашем Магазине.

robocraft.ru

ARDUINO - Где научиться программировать с нуля?

Привет. Если стоит задача научиться программировать именно с нуля, то не стоит сразу бросаться в изучение синтаксиса какого-то конкретного языка, а начать с основ, понять, что программирование вообще такое и как оно работает. На эту тему есть хороший онлайн-курс от гарварда (он бесплатный, есть на разных образовательных платформах типа edx, есть на рутрекере, есть на гарвардском cdn записи всех лекций/семинаров и пдф-ки с домашними заданиями). Мне в свое время он очень помог, называется CS50 introduction to computer science. По-моему, его даже на русский переводил кто-то где-то. Там расскажут о различных базовых понятиях (алгоритмах, структурах данных, кое-что об архитектуре компьютера) и будут учить писать на C. Хороший курс, рекомендую. Кроме того, есть много хороших открытых курсов от разных издателей на различную тематику на ресурсах вроде edx или udacity, в том числе по конкретным языкам программирования и технологиям. Еще для практики могут помочь такие ресурсы, как codecademy.com (разные интерактивные курсы с написанием кода прямо в браузере, много бесплатных) и codewars.com (задачки по программированию на разных языках с предварительно написанными тестами, можно смотреть решения других пользователей, сравнивать со своим и все такое). Из русскоязычных ресурсов - на ютубе можно довольно много лекций найти. Например, у Т. Ф. Хирьянова есть канал, на котором лежат записи его лекций в МФТИ, вроде. По структурам данных неплохой курс. По поводу книг, опять же, не стоит бросаться на книги вроде "изучите программирование на С++ с нуля за 21 день". Углубляться в синтаксис языка без понимания того, что этот язык делает, довольно бессмысленно. Больше времени стоит уделять практике и писать код, решать конкретные задачи. И, да, если возникает вопрос, какой язык выбрать для начала, мое мнение - любой. Подумайте, что вы хотите писать больше всего (там, сайты, андроид-приложения, десктопные приложения и тд), погуглите, какой язык для этого подходит - и вперед. И, самое главное - не надо "начинать с паскаля, потому что паскаль подходит для обучения".

community.alexgyver.ru

Робот для обучения детей программированию на Arduino / Хабр

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

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

Управляется робот платой Arduino Uno с motor shield l293d, из датчиков я ставил дальномер HC-SR04 и два датчика линии tcrt5000 (имеет как цифровой, так и аналоговый вывод).

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

Программируется робот, как и в стандартной среде Arduino IDE (дети постарше), так и в программе miniBloq (для младших групп). Для стандартной среды используется библиотека AFMotor, которая необходима для работы с шилдом драйверов двигателя. В miniBloq-е для работы необходимо выбрать в разделе оборудование робота «ta-bot v1», использующего аналогичный драйвер.

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

Занятия, которые с ним можно провести:

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

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

habr.com