Данные уроки ориентированы на программирование микроконтроллеров, поэтому разберёмся, что это такое и чем микроконтроллер отличается от процессора.
Микроконтроллер #
Микроконтроллер, МК (Microcontroller Unit, MCU, MC, UC, μC) - программируемая цифровая микросхема, состоящая из процессора и широкого набора периферийных блоков. Если проводить аналогию с компьютером, то процессор - это просто процессор, а микроконтроллер - это весь компьютер целиком. Точнее, его системный блок. В одном корпусе могут умещаться в различных сочетаниях и количествах:
- Процессор со всеми своими блоками
- Постоянная память (ROM, Flash)
- Оперативная память (RAM, SRAM, DRAM)
- Энергонезависимая память (EEPROM)
- Тактовый генератор
- Сторожевой таймер (Watchdog timer)
- Контроллер широтно-импульсной модуляции (ШИМ, PWM)
- Многофункциональный таймер
- Часы реального времени
- Аналогово-цифровой преобразователь (АЦП, ADC)
- Цифро-аналоговый преобразователь (ЦАП, DAC)
- Компаратор
- Источник опорного напряжения
- Универсальные цифровые порты ввода-вывода (GPIO)
- Интерфейсы ввода-вывода (UART, I²C, SPI, CAN, USB...)
- Контроллеры сенсорных кнопок
- Контроллеры бесколлекторных и шаговых двигателей
- Контроллеры дисплеев, камер и клавиатур
Процессору для работы нужна дополнительная периферия (память, устройства ввода-вывода, и т.д.), микроконтроллер же работает самостоятельно - у него всё это есть внутри, включая процессор
Существует огромное разнообразие производителей и моделей МК, от простых и дешёвых до навороченных и дорогих. По-хорошему, микроконтроллер подбирается под задачу, так как если это серийное производство - важен каждый цент, а за каждую "фичу" и байт памяти приходится платить.

Блок-схема ESP32 - одного из самых навороченных МК (SoC) с WiFi и Bluetooth
Благодаря такому разнообразию встроенного оборудования и возможности программироваться, один МК может заменить собой огромную и очень сложную электронную схему. Более того, практически любые доработки, изменения и исправления ошибок производятся в программе очень быстро и просто по сравнению с изменением электронной схемы. В то же время, МК по сути умеет выполнять по заданной программе всего несколько элементарных действий:
- Производить вычисления
- Измерять напряжение на выводах
- Управлять логическими уровнями на цифровых выводах
Но этого достаточно для того, чтобы подключать к нему любые другие микросхемы, электронные компоненты и прочие железки. МК может быть мозгом и сердцем электронных устройств разной степени сложности, от светодиодной мигалки до шагающего робота с камерой и распознаванием лиц нейросетью.
Устройства на основе МК окружают нас повсюду: это компоненты умного дома, стиральные машины, микроволновки, станки с ЧПУ, принтеры, компьютерные клавиатуры и мыши, электронные игрушки... Такие устройства попадают под понятие встраиваемых систем (embedded system) - система на основе МК или другого микропроцессора, которая работает непосредственно в устройстве, т.е. "встроена" в него. Также все вот эти поделки на Arduino - это embedded.
SoC #
Система на кристалле (System-on-a-Chip, SoC) - микросхема, объединяющая на одном кристалле большинство блоков вычислительной системы. Микроконтроллер сам является одним из видов SoC, но термином SoC часто называют более сложные системы с несколькими процессорными ядрами, контроллерами памяти, графическими, сигнальными, криптографическими и радиочастотными блоками. Такая SoC может запускать Linux и использоваться, например, в смартфоне или Wi-Fi-роутере. Антенна и оперативная память при этом не обязаны находиться на том же кристалле или даже в той же микросхеме.
Программирование МК #
Большинство МК программируют на C/C++ с использованием компилятора для конкретной архитектуры. Код пишут в редакторе, собирают вместе с библиотеками, а затем загружают в память МК. Способ загрузки зависит от семейства и платы: иногда требуется внешний программатор или отладчик, а иногда достаточно встроенного USB-интерфейса или загрузчика. На компьютере процессом управляет специальная утилита для загрузки. МК с Wi-Fi или другим каналом связи могут поддерживать беспроводное обновление прошивки (Over The Air, OTA).
Бинарник также называют прошивкой (firmware). В то же время "прошивка", как глагол - процесс загрузки бинарника в память МК. Прошивка прошивки, такие дела
Загрузчик #
Прошивку можно загружать напрямую через программатор или при помощи загрузчика (bootloader). Программатор обращается к интерфейсу программирования МК и обычно позволяет записывать, читать и стирать его память. Загрузчик - небольшая программа, уже находящаяся в памяти МК. Она принимает и записывает основную прошивку, например через USB, UART, сеть или с SD-карты. Возможности и расположение загрузчика зависят от конкретного МК.
IDE #
Таким образом, для работы с МК обычно понадобятся:
- Сам МК
- Программатор, отладчик или загрузчик с подходящим интерфейсом
- Редактор кода
- Компилятор
- Утилита для загрузки
По сути можно писать код хоть в блокноте, затем компилировать его и загружать при помощи внешней утилиты, но в современном мире всё это объединяется в IDE - интегрированной среде разработки (Integrated Development Environment). Это специальная программа, в которой есть и удобный редактор, и компилятор со всеми утилитами уже туда встроен. Почти у каждого производителя МК есть своя IDE под его продукцию (CUBE IDE, Microchip Studio, ESP-IDF), но также существуют и универсальные IDE, которые поддерживают МК от разных производителей и с разными архитектурами (Arduino IDE, VS Code, Eclipse IDE).
В данном разделе уроков мы рассматриваем только общие понятия, в других разделах по разным семействам МК есть более подробная информация по работе с конкретными IDE
Отладочная плата #
Популярные модели МК можно встретить в виде отладочной платы (development board, dev board) - это печатная плата, на которой распаян МК со всей необходимой обвязкой для питания и стабильной работы, могут присутствовать кнопки и светодиоды для отладки, дисплеи, камеры и другие устройства. Ножки микросхемы МК выведены на пины по краям платы для удобного подключения и сборки макетов, а также на плате может находиться USB порт и программатор для загрузки прошивки. Именно в таком виде удобнее всего собирать прототипы или просто изучать работу с МК.

Отладочные платы. Цветные, красивые и очень удобные
Дополнительно #
Дополнительный контент доступен владельцам набора GyverKIT и по подписке, подробнее читай здесь. Блок содержит:
- Тезисы, Вопросы
Полезные страницы #
- Набор GyverKIT – наш большой стартовый набор Arduino, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту (alex@alexgyver.ru)
- Поддержать автора за работу над уроками




