Проект Arduino IDE
Содержание
- 1. История возникновения программного пакета Arduino IDE
- 2. Краткий обзор основных и поддерживаемых устройств.
- 3. Принцип построения программ.
- 4. Собственные проекты
- Список источников
1. История возникновения программного пакета Arduino IDE
Arduino – торговая марка аппаратно-программных средств для построения простых систем автоматики и робототехники, ориентированная на непрофессиональных пользователей. Программная часть состоит из бесплатной программной оболочки (IDE) для написания программ, их компиляции и программирования аппаратуры. Аппаратная часть представляет собой набор смонтированных печатных плат, продающихся как официальным производителем, так и сторонними производителями. Полностью открытая архитектура системы позволяет свободно копировать или дополнять линейку продукции Arduino.
Название платформы происходит от названия одноимённой рюмочной в Иврее, часто посещавшейся учредителями проекта, а название это в свою очередь было дано в честь короля Италии Ардуина Иврейского.
Arduino может использоваться как для создания автономных объектов автоматики, так и подключаться к программному обеспечению на компьютере через стандартные проводные и беспроводные интерфейсы.[1]
С 2008 года в компании-разработчике начался раскол, выразившийся в существовании двух независимых ветвей развития и продаж под одной торговой маркой: одна на сайте arduino.cc, другая на arduino.org. Докризисные изделия на обоих сайтах продаются под одинаковыми названиями. Набор новых изделий на сайтах различается. На сайтах некоторое время были две разных ветви Arduino IDE с поддержкой разного набора плат и библиотек. Одинаковые названия и пересекающиеся номера версий IDE вносили путаницу. Но, начиная с версии 1.8.0 (от 2016.12.20), оба сайта объединили ветки IDE в одну. Тем не менее, говоря об Ардуино, обычно подразумевают первоначальную ветвь проекта на сайте arduino.cc.
2. Краткий обзор основных и поддерживаемых устройств
По сути, Arduino IDE является лишь оболочкой, облегчающая постижение программирования микроконтроллеров людям далеких от этого, в этом и заключается основное достоинство данного пакета. Это достигается за счет загрузки в микроконтроллер т.н. загрузчика, поскольку архитектура у каждого микроконтроллера разная то и загрузчик должен быть свой. Таким образом Arduino IDE поддерживает большое количество различных микроконтроллеров. Естественно, что основными и наиболее популярными устройствами являются устройства линейки Arduino. Большинство плат с микроконтроллером снабжены минимально необходимым набором обвязки для нормальной работы микроконтроллера (стабилизатор питания, кварцевый резонатор, цепочки сброса и т. п.). Внешний вид платы Arduino Uno представлен на рисунке 1.
Данная линейка устройств позволяет разработчику проектировать рабочее устройство буквально «на коленке» в кратчайшие сроки. Так как Arduino имеет открытые исходники, сообщество Arduino привносит в развитие проекта свои идеи и реализации. Так, например, некоторыми энтузиастами были разработаны и добавлены в поддержку загрузчики для различных микроконтроллеров, таких как:
- AVR;
- ARM Cortex M;
- ESP8266;
- И т.п.;
3. Принцип построения программ
Программирование осуществляется через собственную программную оболочку, бесплатно доступную на сайте Arduino. В этой оболочке имеется текстовый редактор, менеджер проектов, компилятор и инструменты для загрузки программы в микроконтроллер. Оболочка написана на Java.
Язык программирования Arduino является стандартным C++ с некоторыми особенностями, облегчающими новичкам написание первой работающей программы.
Программы, написанные в Arduino называются скетчи и сохраняются в файлах с расширением ino. Также существует возможность создавать и подключать к проекту стандартные файлы C++.
Для работы скетча необходимы две обязательные для Arduino функции setup() и loop(). Первая вызывается однократно при старте, вторая выполняется в бесконечном цикле.
Одна из простейших программ на Arduino – это управление светодиодом, расположенным в аппаратной части большинства плат серии Arduino. Для её реализации достаточно всего семи строчек кода.Вот так выглядит полный текст простейшей программы мигания светодиодом, подключенного к 13 выводу Arduino, с периодом 2 секунды:
void setup () {
pinMode (13, OUTPUT);
}
void loop () {
digitalWrite (13, HIGH);
delay (1000);
digitalWrite (13, LOW);
delay (1000);
}
Все используемые в примере функции являются библиотечными. В пакете Arduino IDE имеется множество примеров программ. Благодаря популярности данного пакета существует множество переводов документации по Arduino на русский язык.
4. Собственные проекты
За время знакомства с пакетом Arduino IDE мною было написано множество различных по сложности и функционалу программ таких как:
- Термометр;
- Барометр;
- Робот-балансир;
- Радиоуправляемая машинка;
- И т.п.;
Основным и более сложным, был проект робота-балансира, который я готовил как дипломный проект, будучи бакалавром. Внешний вид робота и его конструкция представленны на рисунках 2 и 3 соответственно.
В конструкцию этого робота входит:
- Плата Arduino Nano;
- В роли датчика – трёхосевой гироскоп и акселерометр MPU-6050;
- Два мотора;
- Драйвер двигателя на базе микросхемы TB6612FNG;
- Понижающий преобразователь напряжения;
- Три li-ion аккумуляторные батареи формата 18650;
Основной задачей робота было удержание вертикального положения, балансируя на двух колесах. Самым сложным в этом проекте было получение фильтрованных данных от датчика, поскольку при балансировке за счет вращения моторов вибрация передавалась на датчик, тем самым вызывая помехи. Использование простых фильтров не дало особых результатов, и данные получались очень зашумленными. Решить данную задачу помог фильтр Калмана[2]. С его помощью удалось добиться приемлемых данных от датчика. Также в алгоритме робота был реализован ПИ-регулятор. С поставленной задачей он справляется, но для более качественной отработки данных с датчика в таких системах желательно использовать линейно квадратичный регулятор. Его реализация является одним из моих планов в недалеком будущем.
Одним из не менее интересных проектов я считаю проект по созданию управляемой посредством Bluetooth машинки. За основу была взята радиоуправляемая машинка с утерянным пультом управления. Данная машинка имела очень интересные технические свойства, она обладала системой поворотов, а также имела дифференциал, как у настоящего авто. Для реализации угла поворота использовался сервопривод, благодаря которому стал возможным поворот колес на определенный градус (в оригинале поворот осуществлялся от центра до крайнего правого и крайнего левого положения). Передатчиком служит модильный телефон с установленным приложением[4].Внешний вид машинки представлени на рисунке 4.
Также были добавлены следующие функции:
- Гудок;
- Функция, предотвращающая столкновение. В качестве датчика дистанции использовался ультразвуковой датчик HC-SR04;
В конструкцию данной радиоуправляемой машинки входит:
- Arduino Pro Micro;
- Ультразвуковой датчик HC-SR04;
- Bluetooth модуль HC-06;
- Микро-сервопривод SG09;
- Драйвер двигателя на базе микросхемы L298n;
- Buzzer;
- Понижающий преобразователь напряжения;
- Три li-ion аккумуляторные батареи формата 18650;
В данный момент ведется разработка системы беспроводного управления для дипломного проекта.
Список источников
1. Arduino. Статья на Википедии.
2. Фильтр Калмана. Статья на Википедии.
3. Русскоязычное сообщество Arduino.
4. Bluetooth контроллер на платформе Android.
5. GitHub.
6. Аналогичная тема студента выпускника Павлия Александра.
7. Аналогичная тема студента выпускника Горина Николая.