Сучасний світ важко уявити без технологій. Смартфони, «розумні» годинники, побутова техніка, автомобілі, дрони, банківські термінали, медичне обладнання — усі ці пристрої працюють за участю вбудованих систем. Часто ми навіть не замислюємось, що всередині звичних нам речей і приладів приховані маленькі «мізки» — мікроконтролери, які керують усім процесом.
Що таке вбудована система?
Вбудована система — це комбінація апаратного забезпечення (електроніка) і програмного забезпечення (програма), створена для виконання конкретного завдання, вмонтована в прилад, апарат, машину тощо. На відміну від персонального комп’ютера, який є універсальним пристроєм, вбудована система зазвичай виконує лише одну або кілька чітко визначених функцій.
Вбудовані системи оточують нас майже всюди:
-
Побутова техніка: холодильники, мікрохвильовки, кавоварки.
-
Транспорт: автомобільна електроніка, навігаційні системи, залізничні й авіаційні прилади.
-
Медицина: кардіостимулятори, діагностичні апарати.
-
Промисловість: роботи, датчики, автоматизовані лінії.
-
Розваги: ігрові консолі, «розумні» іграшки.
-
Інтернет речей (IoT): розумний дім, сенсори температури та вологості, системи безпеки.
Мікроконтролери
Головною частиною більшості вбудованих систем є мікроконтролери.
Мікроконтролер(англ. microcontroller unit, MCU) - це міні-комп’ютер, виготовлений у вигляді однієї мікросхеми (чіпа), який програмується під виконання простих і конкретних задач. MCU мають обмежені можливості, але малі розміри і високу ефективність енергоспоживання. Зараз на ринку можна знайти дуже багато різних чипів з самими різними характеристиками і цінами. Приклади чипів-мікроконтролерів зображено на рисунку:

Мікроконтролер складається з таких компонентів (поєднаних в єдиному чипі):
-
Процесор (CPU) — виконує програмні інструкції.
-
Постійний запам'ятовуючий пристрій (ПЗП, ROM) - використовується для зберігання коду програм і постійних даних.
-
Оперативна пам’ять (ОЗП, RAM) — використовується для зберігання тимчасових даних.
-
Піни, порти — виводи мікроконтролера для підключення датчиків, кнопок, світлодіодів, живлення чіпа і запису в ПЗП програмного забезпечення (прошивки).
-
Аналого-цифровий перетворювач (ADC) — дозволяє зчитувати аналогові сигнали (наприклад, з датчика температури).
-
ШІМ (PWM, Pulse Width Modulation) — широтно-імпульсний модулятор, спосіб керування потужністю або швидкістю (наприклад, для моторів).

Корпус кожного мікроконтролера має набір виводів - пінів. Вивід, або пін – це один провід на мікроконтролері, який використовується для введення-виведення сигналів інформації, живлення або завантаження прошивки в ПЗП чіпа. Через піни чіп взаємодіє з зовнішніми електронними пристроями, які забезпечують функціональність системи. Наприклад, мікроконтролер TM4C123 має 43 виводи введення/виведення.
Порт – це набір пінів, через які інформація передається за певним протоколом. Порти мають забезпечення на апаратному та/або програмному рівні. Вхідні порти дозволяють приймати інформацію про зовнішній світ у комп’ютер, вихідні надсилають інформацію і віддають команди назовні. Інтерфейсом називається сукупність портів вводу/виводу, зовнішньої електроніки, фізичних пристроїв та програмного забезпечення, які разом дозволяють комп'ютеру взаємодіяти із зовнішнім світом. Прикладом вхідного інтерфейсу є перемикач, де оператор перемикає його, а програмне забезпечення може розпізнати положення перемикача. Прикладом вихідного інтерфейсу є світлодіод (LED), де програмне забезпечення може вмикати та вимикати світло, а оператор може бачити його. Існує широкий спектр можливих входів та виходів, які можуть існувати як у цифровій, так і в аналоговій формі. Загалом, ми можемо класифікувати інтерфейси вводу/виводу на чотири категорії:
- Паралельний — двійкові дані доступні одночасно на групі пінів.
- Послідовний — двійкові дані доступні по одному біту за раз на одному піні.
- Аналоговий — дані кодуються як електрична напруга, струм або потужність.
- Часовий — дані кодуються як період, частота, ширина імпульсу або фазовий зсув.
Реальний приклад вбудованої системи
Як приклад вбудованої системи візьмемо апарат точкового зварювання (дивіться світлини нижче). Ця вбудована система має два входи-кнопки для управління і налаштування роботи апарата, вихід великої потужності - зварювальні електроди, екран і порти для зарядки акумулятора. Програмне забезпечення, яке визначає його дуже специфічне призначення, запрограмовано в ПЗП мікроконтролера.
Як було визначено раніше, мікроконтролер – це невеликий комп'ютер. Зазвичай термін "вбудований" стосується систем, які скриті і використовуються не так як типовий комп'ютер. Більшість вбудованих систем не мають клавіатури, графічного дисплея або сховища даних (диска)
Процес розробки вбудованих систем
Розробка вбудованої системи має дві основні компоненти: апаратна (електроніка, електромеханіка) і програмне забезпечення (прошивка), яке виконуючись на процесорі мікроконтролера керує апаратною частиною. Нас більше цікавить саме друга компонента, тому розглянемо детальніше процес розробки саме програм.
Код пишеться в текстовому редакторі, потім спеціальна програма-компілятор перетворює написаний код на файли в такому форматі, який читається і виконується процесором (машинний код). Далі скомпільований код завантажується на чіп. Редактор коду, компілятор, завантажувач і інші корисні інструменти для розробки зазвичай об'єднані в одну програму і такі програми називаються інтегроване середовище розробки або IDE.
Під час розробки виникає необхідність тестувати ПЗ яке ми пишемо на реальному контролері. Так як мікроконтролер не дуже зручно підключати до комп'ютеру (дуже маленькі піни треба припаювати до спеціальної плати-програматора), то існують спеціальні плати для розробки. Плата розробника - це плата з розпаяними пінами мікроконтролера, до яких підключені всі необхідні елементи для його роботи і тестування: живлення, стабілізатор напруги, інтерфейс програмування (USB), кварцовий резонатор та іноді додаткові компоненти, як-от світлодіоди чи кнопки. Такі плати підключаються до комп'ютера просто - через USB. Крім того такі плати вже мають піни портів введення-виведення, що дозволяє встановлювати їх на макетну плату і збирати електронні прототипи для тестування.
Що далі?
IDE для програмування мікроконтролерів - стаття по встановленню і налаштуванню IDE.
Світлофор на мікроконтролері - дуже простий проєкт для початківців.
