Микроконтроллеры Ардуино для чайников

Ардуино – один из популярнейших микроконтроллеров для создания разнообразных автоматизированных систем. Благодаря множеству библиотек и вспомогательных модулей на любой вкус, будь то датчик движения или wi-fi адаптер, плата стала любимцем конструкторов.

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

Характеристики МК Arduino

В зависимости от того, какой микроконтроллер Ардуино вы приобрели, его характеристики будут различаться. Так, в Arduino micro pro чуть больше пинов и другой объём постоянной памяти, что позволяет подгрузить дополнительные библиотеки.

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

Достоинствами Ардуино являются:

  1. Библиотеки, которые создаются не только авторами платы, но и сообществом. Благодаря этому можно найти подходящий инструментарий под любую задачу. Но здесь кроется и главный недостаток. Никто не контролирует качество кода, и в результате большую часть библиотек из свободного доступа вам придётся вручную модифицировать или переписывать десятки раз. Поэтому многие предпочитают самостоятельно написать код и базовый функции, если есть такая возможность.
  2. Небольшие размеры Ардуино микро. Это позволяет создавать профессиональные платы, не занимающие большого пространства в корпусе конечного изделия. А габариты крайне важны во всех сферах, от умного дома до создания собственной теплицы.
  3. Большое количество модулей. На микроконтроллер Arduino вы найдёте любой необходимый модуль. Будь то датчик дыма или освещённости, и даже небольшой динамик. Помимо этого, можно и сэкономить, ведь периферию создаёт само сообщество, благодаря чему можно покупать дополнительные микроконтроллеры за копейки.
  4. Низкий порог вхождения. Чтобы обучиться работе с Ардуино, вам потребуется парочка свободных вечеров. Даже если ранее вы не занимались радиотехникой и никогда не паяли, а программирование для вас остаётся необъяснимой магией. Дело в том, что большая часть общественных библиотек написана наподобие высокоуровневых языков программирования. Для управления системой достаточно знать английский на разговорном уровне и хоть примерно представлять, на что вообще способна Ардуино микро про.

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

Плата Ардуино pro mini и сенсор расстояния
Плата Ардуино pro mini и сенсор расстояния

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

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

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

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

Аппаратная часть Arduino

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

Именно на таком принципе построено программирование двоичным кодом. Но от такой системы мы уже давно ушли, и потому к устройству можно подключать трансформаторы переменного тока и дополнительные резисторы, ведь некоторым модулям требуется ток в 3.2-4.7 Вольт.

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

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

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

Язык программирования Arduino

Ардуино полностью построен на низкоуровневом языке С++, у которого имеются как свои почитатели, так и ненавистники. Перед тем, как разобрать его достоинства и недостатки, стоит понять, что любой мультипарадигмальный ЯП (язык программирования, способный решать различные задачи, используя базовые парадигмы) является лишь инструментом.

Даже самый неудобный и кривой ЯП в руках хорошего специалиста способен на всё, чему существуют тысячи подтверждений. Но если рассматривать плюсы С++, то мы получим:

  1. Мультипарадигмальность языка. Вы можете применять как ООП, так и более сложные его вариации, и писать простейшие функции с переменными. На С++ построены все базовые алгоритмы сортировки и поиска, а соответственно, легкореализуемы.
  2. Большое количество информации. С++ применяется во всех сферах программирования, от создания игр и программ до написания базовых прошивок для процессоров и плат. Именно последние нам и нужны на Ардуино.
  3. Язык является крайне пластичным. В отличие от Java, поклонники которого часто критикуют отсутствие «подушек безопасности» этого ЯП, С++ даёт вам полную свободу, вплоть до контроля ресурсов, расходуемых на каждую операцию.

Из его главных достоинств выплывают и некоторые недостатки:

  1. Отсутствие «подушек безопасности». Другие языки всячески защищают пользователя, не давая компилятору обработать код, пока не проверят тысячи параметров. И сюда входит не только семантика языка, но и переменные, расход памяти и некоторые элементы алгоритмов. Это вынуждает подстраиваться под особенности компиляторов и делать «костыли», но вот отсутствие такой защиты заставляет вас часами выискивать ошибку в функции.
  2. Нет нормального отображения ошибки. Даже в современных средах программирования на С++ поиск одной ошибки может занять у вас несколько часов, пока не выяснится, что по какой-то причине цикл с предусловием не захотел воспринимать «!=», как отрицание. Или вы случайно создали непрерывную рекурсию, забыв написать один «return». И когда объёмы кода увеличиваются, таких мелких ошибок накапливается масса, а вспомнить каждую функцию, написанную для библиотеки, и уж тем более найти, какая из них конфликтует с новой, не так и просто. Здесь не помогает ни хорошо организованный DOM, ни своевременные комментарии.

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

Что может микроконтроллер Arduino

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

Интересные проекты на базе МК Arduino

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

  1. Умный дом. Практически каждый элемент умного дома можно создать собственными руками. От автоматических штор и дверей до сигнализаций и регулируемого освещения.
  2. Кодовые замки. Проект простой, и подойдёт для новичков. Достаточно использовать любой датчик и сделать замки, реагирующие на определённый ритм постукиваний или же на приближение вашего смартфона.
  3. Автоматизированные теплицы.

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