Назад до Робототехніка
БазовийРобототехніка

micro:bit: від основ до перших проєктів

Кишеньковий компʼютер BBC micro:bit: будова й датчики, MakeCode і MicroPython, перші програми та чотири готові проєкти – від грального кубика до робота, що їде по лінії.

Що таке micro:bit

BBC micro:bit – це мініатюрний програмований компʼютер розміром із пів банківської картки, створений спеціально для навчання програмуванню й робототехніці. Попри крихітні розміри, плата містить процесор, памʼять, набір вбудованих датчиків, світлодіодний дисплей, кнопки й засоби бездротового звʼязку. Для робототехніки micro:bit цінний тим, що поєднує два світи. З одного боку – це повноцінне середовище для вивчення алгоритміки. З іншого – фізичний пристрій, який реагує на навколишній світ через датчики й керує зовнішніми компонентами через піни. Саме цей місток між кодом і реальністю робить навчання захопливим: програма перестає бути абстракцією на екрані й стає світлом, звуком і рухом. Важливо для школи: плата не потребує паяння, її складно зіпсувати, а перший результат учень бачить уже за кілька хвилин.

Що «вміє» micro:bit

Усі ці компоненти вже є на платі – нічого докуповувати не потрібно:

  • 🔴 Матриця 5×5 (25 світлодіодів) – дисплей для тексту, чисел і зображень
  • 🔘 Кнопки A та B – дві програмовані кнопки для керування й ігор
  • 👆 Дотиковий логотип – сенсорна зона зверху, третя «кнопка» без механіки (v2)
  • 📐 Акселерометр – датчик руху й нахилу: крокомір, гральний кубик, рівень
  • 🧭 Компас (магнітометр) – датчик магнітного поля: цифровий компас, металошукач
  • 🌡️ Датчик температури – термометр у класі
  • 💡 Датчик світла – працює через матрицю: нічник, охоронець кімнати
  • 🎤 Мікрофон – вимірює рівень звуку: шумомір, реакція на оплески (v2)
  • 🔊 Динамік – відтворює звук і музику: сигналізація, мелодії (v2)
  • 📡 Радіо та Bluetooth – бездротовий обмін даними між платами
  • 🔌 Піни (25-контактний розʼєм) – входи й виходи для серво, моторів, датчиків

micro:bit v1 і v2: що змінилося

💡

Актуальна версія – micro:bit v2 (з 2020 року). Порівняно з v1 вона має вбудований мікрофон, динамік, сенсорний логотип, потужніший процесор і більше памʼяті. Більшість прикладів нижче працюють і на v1 – окрім тих, що використовують звук і дотик логотипа. Орієнтовна вартість: сама плата – близько 600–900 грн, стартовий набір (плата, батарейний відсік, USB-кабель, крокодильчики) – близько 1000–1300 грн. Це дешевше за більшість конструкторів, тож клас можна обладнати навіть з обмеженим бюджетом, працюючи в парах.

Два середовища: MakeCode і MicroPython

MakeCode (makecode.microbit.org) – безкоштовний онлайн-редактор, у якому програма складається з кольорових блоків, що зчіплюються, наче конструктор. Блоковий підхід знімає головний барʼєр початківця – синтаксичні помилки: учень зосереджується на логіці, а не на крапках із комою. При цьому MakeCode не «іграшковий»: у ньому є змінні, цикли, функції, масиви й робота з усіма датчиками. Велика перевага MakeCode – вбудований симулятор. Зліва на екрані відображається віртуальна плата, на якій програма виконується одразу, ще до завантаження на реальний пристрій. Можна натискати віртуальні кнопки, «нахиляти» плату, змінювати рівень світла. Це дозволяє вивчати micro:bit навіть тоді, коли фізичних плат на всіх не вистачає. MicroPython – спеціальна версія Python для мікроконтролерів, для старших учнів і поглибленого вивчення. Працювати з нею можна в python.microbit.org або в застосунку Mu Editor. У MakeCode будь-якої миті можна перемкнутися з блоків на текстовий код і назад – так блокове програмування стає природним містком до «дорослих» мов. Приклади нижче наведено мовою MicroPython: їх можна копіювати й одразу запускати.

Як завантажити програму на плату

Процедура однакова для MakeCode і для Python-редактора:

  • Крок 1: Підключіть micro:bit до компʼютера USB-кабелем – плата зʼявиться в системі як флешка з назвою MICROBIT.
  • Крок 2: Складіть програму в MakeCode (блоки) або в Python-редакторі (текст).
  • Крок 3: Натисніть «Download» або «Flash». Файл .hex збережеться або одразу запишеться на плату.
  • Крок 4: Якщо файл .hex завантажився в теку «Завантаження», перетягніть його на диск MICROBIT.
  • Крок 5: Жовтий світлодіод поряд із USB блимає під час запису. Коли він перестав блимати – програма стартує автоматично.

Перша програма: сердечко на екрані

Приклад

Класичний «Hello, world!» апаратного світу. Будь-яка програма для micro:bit мовою MicroPython починається з підключення модуля microbit: from microbit import * # Найпростіша програма: показати сердечко display.show(Image.HEART) Зверніть увагу на структуру: спочатку імпорт модуля, далі команди, що виконуються згори донизу. Спробуйте замінити Image.HEART на Image.HAPPY або Image.YES.

Матриця 5×5: текст, зображення, анімація

Приклад

Матриця з 25 світлодіодів – найпростіший спосіб «спілкування» micro:bit з людиною. За вивід відповідає обʼєкт display: from microbit import * display.scroll("Привіт!") # прокрутити текст display.show(Image.HAPPY) # показати усмішку sleep(1000) # пауза 1 секунда display.show("5") # показати символ sleep(1000) display.clear() # очистити екран display.show() показує символ або зображення, display.scroll() плавно прокручує рядок – зручно для тексту, що не вміщається на 25 світлодіодів. sleep() робить паузу в мілісекундах і керує швидкістю анімації.

Власне зображення і цикл while True

Приклад

micro:bit має десятки готових зображень, але справжня творчість починається з власних. Зображення задається пʼятьма рядками по пʼять цифр, де кожна цифра від 0 до 9 означає яскравість світлодіода (0 – вимкнено, 9 – максимум): from microbit import * serce = Image("09090:" "99999:" "99999:" "09990:" "00900") # Анімація: серце, що "бʼється" while True: display.show(serce) sleep(400) display.clear() sleep(400) Конструкція while True: означає «повторювати вічно». Це основа майже кожної програми для micro:bit: пристрій постійно щось робить, доки увімкнений. Усе, що має повторюватися, розміщують усередині цього циклу з відступом.

Кнопки A і B: пристрій стає інтерактивним

Приклад

Найпростіші засоби введення – дві кнопки: A (ліворуч) і B (праворуч). Програма перевіряє, чи натиснута кнопка, і виконує різні дії. Так зʼявляється розгалуження – одна з фундаментальних конструкцій програмування: from microbit import * lichylnyk = 0 while True: if button_a.was_pressed(): lichylnyk = lichylnyk + 1 display.show(str(lichylnyk)) if pin_logo.is_touched(): # дотик до логотипа (v2) lichylnyk = 0 display.show("0") is_pressed() перевіряє «зараз натиснута», was_pressed() – «була натиснута з минулої перевірки», get_presses() рахує кількість натискань. Саме was_pressed() потрібен для лічильників, щоб одне натискання не зарахувалося десятки разів.

Змінні, цикли та умови на практиці

Приклад

Три поняття, на яких тримається будь-яка програма: змінні (комірки для даних), цикли (повторення) та умови (розгалуження). На micro:bit кожну з них видно «наживо»: from microbit import * import random # Цикл for: відлік від 3 до 1 for i in range(3, 0, -1): display.show(str(i)) sleep(700) display.show(Image.YES) # сигнал "почали" # Змінна для підрахунку натискань rahunok = 0 while rahunok < 5: if button_a.was_pressed(): rahunok = rahunok + 1 display.show(str(rahunok)) display.scroll("OK") Важливо: у Python відступи (зазвичай 4 пробіли) не косметика, а частина синтаксису – саме вони показують, що належить до циклу чи умови. Привчайте учнів до акуратних відступів від самого початку.

Проєкт 1: електронний гральний кубик

Приклад

Перший завершений пристрій, яким можна користуватися. Обʼєднує все вивчене: вивід на матрицю, реакцію на подію і нове поняття – випадковість. from microbit import * import random while True: # Кинути кубик струшуванням плати if accelerometer.was_gesture("shake"): chyslo = random.randint(1, 6) display.show(chyslo) random.randint(1, 6) повертає випадкове ціле число від 1 до 6. Ускладнення для учнів: замість цифр вивести «класичні» зображення граней кубика з крапками, а другою кнопкою перемикати режим «монетка» (орел/решка).

Акселерометр: micro:bit відчуває рух

Приклад

Акселерометр – той самий датчик, що в смартфоні повертає екран. Він вимірює сили по трьох осях: X (нахил ліворуч-праворуч), Y (нахил вперед-назад), Z (вгору-вниз). На основі цих даних плата розпізнає жести: from microbit import * while True: gesture = accelerometer.current_gesture() if gesture == "shake": display.show(Image.CONFUSED) elif gesture == "up": display.show(Image.ARROW_N) elif gesture == "down": display.show(Image.ARROW_S) else: display.show(Image.HAPPY) Доступні жести: "shake", "up", "down", "left", "right", "face up", "face down" і навіть "freefall" (вільне падіння). Для точніших задач зчитуйте конкретні значення осей: accelerometer.get_x(), get_y(), get_z().

Датчики світла, температури і звуку

Ще три вбудовані датчики, які не потребують жодного дроту:

  • 💡 Освітленість: display.read_light_level() повертає значення 0–255. Світлодіодна матриця працює тут і як дисплей, і як датчик. Проєкти: автоматичний нічник, «охоронець» шухляди.
  • 🌡️ Температура: temperature() повертає градуси Цельсія. Насправді вимірюється температура процесора, тож показник трохи вищий за кімнатний – це чудова нагода обговорити з учнями похибку вимірювання.
  • 🎤 Рівень звуку (v2): microphone.sound_level() повертає 0–255. Проєкти: шумомір для класу, реакція на оплеск.

Піни: вихід у фізичний світ

Усе найцікавіше в робототехніці починається тоді, коли micro:bit виходить за межі власної плати й керує зовнішніми компонентами. Для цього слугує крайовий розʼєм із 25 контактів. Три великі піни – 0, 1, 2 – та живлення (3V) і земля (GND) мають отвори, до яких зручно підʼєднувати крокодильчики без паяння. Саме з них варто починати в школі. Піни працюють у двох режимах. Цифровий розрізняє лише два стани: 0 (вимкнено, 0 В) і 1 (увімкнено, 3 В) – команди pin0.write_digital(1) та read_digital(). Аналоговий працює з діапазоном: write_analog() задає значення від 0 до 1023 (наприклад, яскравість світлодіода), read_analog() зчитує напругу від 0 до 1023 (наприклад, із потенціометра). Розуміння різниці між цифровим і аналоговим сигналом – ключове для роботи з будь-якими датчиками.

⚠️ Безпека при роботі з пінами

💡

Підключаючи зовнішній світлодіод, послідовно з ним обовʼязково ставте резистор (приблизно 100–220 Ом), щоб обмежити струм і не пошкодити ні світлодіод, ні пін плати. Дотримуйтесь полярності: довша ніжка світлодіода – плюс. Ніколи не зʼєднуйте напряму 3V і GND – це коротке замикання. Збирайте схему при відключеному USB і показуйте її вчителю перед увімкненням. Мотори до пінів напряму не підключають – їм потрібен окремий драйвер.

Проєкт 2: світлофор на трьох світлодіодах

Приклад

Підключіть три світлодіоди (червоний, жовтий, зелений) до пінів 0, 1 і 2 – кожен через власний резистор, короткі ніжки на спільний GND. from microbit import * while True: # червоний pin0.write_digital(1) pin1.write_digital(0) pin2.write_digital(0) sleep(3000) # червоний + жовтий pin1.write_digital(1) sleep(1000) # зелений pin0.write_digital(0) pin1.write_digital(0) pin2.write_digital(1) sleep(3000) # жовтий pin2.write_digital(0) pin1.write_digital(1) sleep(1000) pin1.write_digital(0) Ускладнення: додайте кнопку для пішоходів, яка достроково перемикає сигнал. Обговоріть з учнями, де ще працюють такі автомати за розкладом.

Радіозвʼязок: дві плати розмовляють

Приклад

Вбудоване радіо дозволяє платам обмінюватися повідомленнями без жодних кабелів. Щоб плати «чули» одна одну, вони мають бути на одному каналі – групі. Це як налаштувати рації на одну частоту. # ПЕРЕДАВАЧ (пульт) from microbit import * import radio radio.on() radio.config(group=7) # спільний канал while True: if button_a.was_pressed(): radio.send("heart") if button_b.was_pressed(): radio.send("clear") # ПРИЙМАЧ from microbit import * import radio radio.on() radio.config(group=7) # той самий канал while True: msg = radio.receive() if msg == "heart": display.show(Image.HEART) elif msg == "clear": display.clear() Порада для класу: коли плат багато, усі вони можуть випадково «чути» одна одну. Призначте кожній парі власний номер групи – наприклад, за номером парти.

Від плати до робота: драйвер і готові набори

Сама по собі micro:bit не може напряму керувати двигунами – їм потрібен більший струм, ніж здатні дати піни. Тому між платою й моторами ставлять драйвер двигунів (моторну плату). Найпростіший шлях для школи – готові робототехнічні набори на базі micro:bit, у яких драйвер, мотори, колеса й датчики вже зібрані. Найпопулярніші – DFRobot Maqueen та Kitronik :MOVE mini. Учневі залишається вставити micro:bit у розʼєм і програмувати рух. Maqueen компактний і недорогий, з датчиками лінії та ультразвуком «з коробки»; :MOVE mini учні частково збирають самі, що додає інженерної складової. Кожен набір має власне розширення для MakeCode з готовими блоками «їхати вперед», «повернути», «зупинитися».

Як керувати роботом двома моторами

Принцип простий і важливий для розуміння: робот із двома моторами керується різницею їхніх швидкостей.

  • Обидва вперед → робот їде прямо
  • Лівий стоп, правий вперед → плавний поворот ліворуч
  • Лівий вперед, правий стоп → плавний поворот праворуч
  • Лівий вперед, правий назад → обертання на місці праворуч
  • Обидва стоп → зупинка

Проєкт 3: робот, що їде по лінії

Приклад

Класичне завдання шкільної робототехніки. Інфрачервоні датчики, спрямовані вниз, розрізняють темну лінію й світлу поверхню. Логіка проста й елегантна: # Логіка руху по лінії (псевдокод) while True: livyy = read_line_sensor_left() pravyy = read_line_sensor_right() if livyy == 0 and pravyy == 0: rukh_vpered() # обидва на білому - прямо elif livyy == 1 and pravyy == 0: povernuty_livoruch() # ліва лінія - коригуємо elif livyy == 0 and pravyy == 1: povernuty_pravoruch() # права лінія - коригуємо else: stop() # перехрестя або кінець Конкретні команди залежать від набору – у MakeCode це готові блоки розширення. Траса – звичайна ізолента на підлозі. Цей проєкт цінний методично: він наочно показує зворотний звʼязок – фундаментальний принцип усієї автоматики. Робот безперервно зчитує дані, порівнює їх із бажаним станом і коригує поведінку. Той самий принцип працює в термостаті, автопілоті й живих організмах.

Проєкт 4: уникнення перешкод

Приклад

Другий класичний проєкт – робот, що вільно рухається й самостійно обʼїжджає перешкоди за допомогою ультразвукового датчика. Логіка теж побудована на зворотному звʼязку: 1. Робот їде вперед і безперервно вимірює відстань попереду. 2. Коли перешкода ближча за заданий поріг (наприклад, 15 см) – зупиняється. 3. Відʼїжджає трохи назад, повертає в інший бік. 4. Продовжує рух і знову вимірює. Поєднавши рух по лінії й уникнення перешкод, учні створюють по-справжньому «розумну» машину. Гарне завершення теми – міні-перегони: чий робот швидше пройде трасу.

Що далі

💡

Ти пройшов шлях від першої програми з сердечком до робота, який сам приймає рішення. Головне, що варто винести: micro:bit – це не про «вивчити команди», а про звичку перевіряти ідею на практиці. Не працює – читаємо, що показує плата, і шукаємо причину. Куди рухатися далі: додати серводвигун і зробити рухому «голову» роботу; передавати показники датчиків по радіо на другу плату й будувати графік; спробувати MicroPython замість блоків, коли з блоками стане тісно. І обовʼязково – показати проєкт іншим: пояснити свою програму вголос корисніше, ніж написати ще десять.