Инструкция дистанционного занятия в off – line режиме
Образовательная программа «Инженерная мысль. Робототехника+», год обучения - 1
Тема занятия «Микроконтроллеры»
Добрый день! Сегодня мы продолжим ваше знакомство с видами микроконтроллеров ATmega.
В зависимости от того, какой микроконтроллер Ардуино вы приобрели, его характеристики будут различаться. Так, в Arduino micro pro чуть больше пинов и другой объём постоянной памяти, что позволяет подгрузить дополнительные библиотеки.
Но, в целом, любой микроконтроллер этой системы представляет собой простое AVR устройство с уже заготовленной прошивкой. Пользователю остаётся лишь добавить подходящие библиотеки или использовать уже имеющиеся. После чего можно моментально приступать к работе. На всех платах имеется USB-UART порт для упрощения работы с устройством.
Достоинствами Ардуино являются:
Библиотеки, которые создаются не только авторами платы, но и сообществом. Благодаря этому можно найти подходящий инструментарий под любую задачу. Но здесь кроется и главный недостаток. Никто не контролирует качество кода, и в результате большую часть библиотек из свободного доступа вам придётся вручную модифицировать или переписывать десятки раз. Поэтому многие предпочитают самостоятельно написать код и базовый функции, если есть такая возможность.
Небольшие размеры Ардуино микро. Это позволяет создавать профессиональные платы, не занимающие большого пространства в корпусе конечного изделия. А габариты крайне важны во всех сферах, от умного дома до создания собственной теплицы.
Большое количество модулей. На микроконтроллер Arduino вы найдёте любой необходимый модуль. Будь то датчик дыма или освещённости, и даже небольшой динамик. Помимо этого, можно и сэкономить, ведь периферию создаёт само сообщество, благодаря чему можно покупать дополнительные микроконтроллеры за копейки.
Низкий порог вхождения. Чтобы обучиться работе с Ардуино, вам потребуется парочка свободных вечеров. Даже если ранее вы не занимались радиотехникой и никогда не паяли, а программирование для вас остаётся необъяснимой магией. Дело в том, что большая часть общественных библиотек написана наподобие высокоуровневых языков программирования. Для управления системой достаточно знать английский на разговорном уровне и хоть примерно представлять, на что вообще способна Ардуино микро про.
Сам микроконтроллер строится на одной схеме, на ней присутствует несколько основных элементов, о которых мы расскажем чуть ниже. В зависимости от выбранного модуля, может различаться объём постоянной памяти и количество пинов. Последнее влияет на то, сколько устройств вы сможете подсоединить к своему микроконтроллеру. Программная часть реализована на низкоуровневом языке программирования, что позволяет с точностью управлять любыми телодвижениями платы, вплоть до малейших сигналов и написания полноценных самообучающихся нейросетей.
Вся информация с модулей и датчиков передаётся на центральный микроконтроллер, он выводит её в консоль и обрабатывает согласно заложенному скрипту.
В качестве дополнения к системе имеются не только датчики, но и разнообразные индикаторы, они необходимы для оживления системы. Например, если вы хотите услышать писк, если вдруг появится протечка в кране.
Или же, чтобы огонёк на кнопке запуска горел красным, когда устройство включено. Всё это также контролируется и настраивается на программном уровне.
Конечно, если вы никогда раньше не имели опыта с программным кодом и не знаете базовых алгоритмов – лучше пользоваться заготовленными библиотеками. А вот для программистов-инженеров на Ардуино полностью развязаны руки, о чём мы поговорим чуть ниже. Но, для начала, давайте разберём аппаратную часть.
Аппаратная часть Arduino
Для начала стоит уяснить, что собой представляет микроконтроллер. По логике, это небольшое устройство, к которому подключаются все остальные элементы системы. Ардуино должен координировать их работу при помощи прописанных в нём скриптов, выдавая соответствующие электрические сигналы. Для стандартного МК Ардуино сигналом является 5 вольт – это единичка, а отсутствие сигнала – нолик.
Именно на таком принципе построено программирование двоичным кодом. Но от такой системы мы уже давно ушли, и потому к устройству можно подключать трансформаторы переменного тока и дополнительные резисторы, ведь некоторым модулям требуется ток в 3.2-4.7 Вольт.
Соответственно, аппаратная часть Ардуино в стандартной комплектации представлена чипом с постоянной памятью, набором из резисторов и транзисторов, а также несколькими пинами. Такая простая конструкция позволяет пользователю самому навешивать «улучшения» по необходимости.
С «коробки» в микроконтроллер устанавливается стандартная прошивка, способная распознавать базовые АТ команды. Пользователь может переустановить её или перепрошить Ардуино по желанию, но стоит учитывать, что без должного опыта вы можете получить бесполезную и неработающую плату.
Как несложно догадаться, изначально Ардуино – это лишь инструмент, который позволяет координировать работу всей системы. А делает он это при помощи встроенных в него библиотек, которые можно устанавливать в систему дополнительно, по необходимости. Вплоть до того, что вы можете поставить вспомогательную карту памяти, если не хватает места. А сами же библиотеки написаны на низкоуровневом C++, который обеспечивает полный контроль над работой микроконтроллера.
Язык программирования Arduino
Ардуино полностью построен на низкоуровневом языке С++. Перед тем, как разобрать его достоинства и недостатки, стоит понять, что любой мультипарадигмальный ЯП (язык программирования, способный решать различные задачи, используя базовые парадигмы) является лишь инструментом.
Мультипарадигмальность языка. Вы можете применять как ООП, так и более сложные его вариации, и писать простейшие функции с переменными. На С++ построены все базовые алгоритмы сортировки и поиска, а соответственно, легкореализуемы.
Большое количество информации. С++ применяется во всех сферах программирования, от создания игр и программ до написания базовых прошивок для процессоров и плат. Именно последние нам и нужны на Ардуино.
Язык является крайне пластичным. В отличие от Java, поклонники которого часто критикуют отсутствие «подушек безопасности» этого ЯП, С++ даёт вам полную свободу, вплоть до контроля ресурсов, расходуемых на каждую операцию.
Главные недостатки:
Отсутствие «подушек безопасности». Другие языки всячески защищают пользователя, не давая компилятору обработать код, пока не проверят тысячи параметров. И сюда входит не только семантика языка, но и переменные, расход памяти и некоторые элементы алгоритмов. Это вынуждает подстраиваться под особенности компиляторов и делать «костыли», но вот отсутствие такой защиты заставляет вас часами выискивать ошибку в функции.
Нет нормального отображения ошибки. Даже в современных средах программирования на С++ поиск одной ошибки может занять у вас несколько часов, пока не выяснится, что по какой-то причине цикл с предусловием не захотел воспринимать «!=», как отрицание. Или вы случайно создали непрерывную рекурсию, забыв написать один «return». И когда объёмы кода увеличиваются, таких мелких ошибок накапливается масса, а вспомнить каждую функцию, написанную для библиотеки, и уж тем более найти, какая из них конфликтует с новой, не так и просто. Здесь не помогает ни хорошо организованный DOM, ни своевременные комментарии.
Что может микроконтроллер Arduino
По сути, микроконтроллер Ардуино способен лишь посылать электрические сигналы и принимать их от модулей, подсоединённых к нему. Однако, если рассматривать микроконтроллер в другой перспективе, то он способен практически на всё, достаточно заложить в него качественный код и подключить нужные датчики.
Интересные проекты на базе МК Arduino
На Ардуино уже создано тысячи проектов, а многие инженеры ведут собственные блоги или каналы на YouTube, где вы можете ознакомиться с их творчеством. Из интересных идей, стоит отметить следующие:
Умный дом. Практически каждый элемент умного дома можно создать собственными руками. От автоматических штор и дверей до сигнализаций и регулируемого освещения.
Кодовые замки. Проект простой, и подойдёт для новичков. Достаточно использовать любой датчик и сделать замки, реагирующие на определённый ритм постукиваний или же на приближение вашего смартфона.
Автоматизированные теплицы.