Programowanie płytki BBC micro:bit
Jednym z pierwszych pytań jakie zazwyczaj pada przy okazji prezentacji platformy BBC micro:bit jest: "a w czym można to zaprogramować?". Nasza krótka zwyczajowa odpowiedź brzmi: "praktycznie we wszystkim: bloczki, Scratch, Python, C, C++, Forth, Pascal, Ada, Sniff, Lisp...".
Dłuższą odpowiedź na to pytanie znajdziesz w tej sekcji. Zbieramy i opisujemy tu linki do najpopularniejszych metod, edytorów, bibliotek dedykowanych dla BBC micro:bit.
W tym zadaniu posiłkujemy się listą Awesome micro:bit tworzoną wspólnym wysiłkiem kilkunastu osób z całego świata.
Spis Treści
- Edytory blokowe i wizualne
- Python
- JavaScript i MakeCode
- C/C++
- Pozostałe języki programowania
- Interakcja z innymi językami
Programowanie - edytory blokowe
- Microsoft MakeCode - podstawowy edytor blokowy. Działa z poziomu przegląarki www. Posiada wbudowany emulator umożliwiający programowanie bez posiadania płytki BBC micro:bit. Edytor generuje kod JavaScript (TypeScript). Pierwotnie edytor nazywał się PXT. Na chwilę obecną edytor nie ma domyślnie polskiego języka, jednakże ten można wymusić dodając w adresie beta?liveforcelang=pl. Edytor występuje także w formie aplikacji dla systemu Windows 10. Łączy elementy wielu poprzedników w jedną spójną całość.
- Open Roberta Lab - blokowe środowisko programowania służące dedykowane robotom. Wspiera BBC micro:bit - generuje kod w MicroPythonie.
- EduBlocks - ciekawe środowisko blokowe, które pozwala w łatwy sposób przejść z bloczków do Pythona.
- [wsparcie zakończono] Microsoft Blocks - edytor blokowy od Microsoft. Edytor nie jest już rozwijany. Jeżeli zaczynasz przygodę z BBC micro:bit zalecamy skorzystanie z MakeCode.
- [wsparcie zakończono] Code Kingdoms - graficzny edytor podobny do MakeCode. Podobnie jak Microsoft Blocks nie jest już rozwijany.
- Rozszerzenie ScratchX micro:bit - pozwala na bezprzewodową kontrolę micro:bita z użyciem Scratcha
- Scratch S2Bot dla BBC micro:bit - poradnik jak używać micro:bita ze Scratchem i S2Bot jako kontrolera Bluetooth (wymagane posiadanie BLED112 Bluetooth dongle)
- s2m - program w Pythonie pełniący funkcję mostku pomiędzy lokalną wersją Scratch 2 a micro:bitem podłączonym przez USB.
Programowanie - Python
Programowanie w Pythonie pozwala wycisnąć z BBC micro:bit ostatnie soki. Jeżeli środowiska graficzne i blokowe są dla Ciebie ograniczeniem, to programując w Pythonie rozwiniesz skrzydła.
- MicroPython - polska dokumentacja portu MicroPythona na płytkę BBC micro:bit. Jest to implementacja Python 3 dla mikrokontrolerów. Nie wszystko jest jeszcze przetłumaczone, ale tłumaczenie sukcesywnie posuwa się do przodu.
Programowanie - MicroPython - Edytory
- Edytor od microbit.org - oficjalny "wężowy" edytor dostępny na stronie Funcacji micro:bit
- Edytor od microbit.co.uk - pierwszy edytor Pyton od microbit.co.uk. Zbudowany w oparciu o starszą wersję Pythona.
- Mu - "micro" edytor MicroPythona dla BBC micro:bita. Dużo micro naraz :) Można pobrać, zainstalować i używać bez dostępu do internetu. Daje radę!
- create.withcode.uk - eydtor Pythona z wbudowanym emulatorem obsługujący BBC micro:bit (instrukcja)
- Atom rozszerzenie - paczka z rozszerzeniem pozwalającym na obsługę BBC micro:bit z poziomu tego popularnego edytora dla programistów.
- Thonny micro:bit - Wtyczka do edytora Thonny. Dobre środowisko Python IDE dla początkujących.
- Wtyczka JetBrains IDEA/PyCharm IDE - wparcie dla urządzeń MicroPython w IntelliJ IDEA i PyCharm.
- uPyCraft - MicroPython IDE dla systemów Windows i Mac, wspierające micro:bita. Wyróżnia się czystym i przejrzystym interfejsem.
- CodeSpace - MicroPython IDE dostępny z poziomu przeglądarki. Działa z micro:bitem. Posiada wbudowaną pomoc i materiały edukacyjne.
Programowanie - MicroPython - Biblioteki
Potęga MicroPytona drzemie nie tylko w samej składni tego języka. Ogromnym atutem jest pokaźna ilość gotowych do wykorzystania bibliotek obsługujących najpopularniejsze komponenty.
- Servo - Prosta klasa do obsługi serwomechanizmów za pomocą sygnałów PWM.
- PCA9685 - Klasa umożliwiająca obsługę 16-kanałowego 12-bitowego sterownika PWM. Dzięki niemu obsłużysz do 16 serwomechanizmów za pośrednictwem magistrali I2C. Przydatne gdy budujesz skomplikowanego robota, hexapoda czy mechaniczne cymbałki.
- MAX7219 7-segment - Moduł pozwalający na obsługę wyświetlacza 7-segmentowego sterowanego przez układ MAX7219 za pośrednictem magistrali SPI
- MAX7219 matrix - Moduł pozwalający na obsługę matrycy LED 8x8 sterowanej przez układ MAX7219 za pośrednictem magistrali SPI.
- SSD1306 - Biblioteka do obsługi popularnych wyświetlaczy OLED 128x64 pikseli bazujących na sterowniku SSD1306 podłączonym po magistrali I2C
- SSD1306 7seg - Biblioteka pozwalająca na użycie wyświetlacza OLED jako wyświetlacza 7-segmentowego.
- SSD1306 SPI - Biblioteka do obsługi popularnych wyświetlaczy OLED 128x64 pikseli bazujących na sterowniku SSD1306 podłączonym po magistrali SPI.
- HT16K33 - Biblioteka do obsługi sterownika matryc LED HT16K33 LED. Pozwala na różne konfiguracje: 16x8, 8x8 lub8x8x2
- HC-SR04 - Prosta biblioteka do obsługi ultradźwiękowego czujnika odległości HC-SR04. Używa sprzętowego SPI micro:bita.
- US-100 - Prosta biblioteka do odczytu odległości z ultradźwiękowego czujnika US-100. Działa za pośrednictwem UART.
- KY038 - Bibliotego MicroPython pozwalająca na kablibrację i używanie popularnego czujnika dźwięku KY038. Biblioteka posiada wbudowany licznik klaśnięć.
- Nokia 5110 PCD8544 LCD - Szybki sterownik ekranów od Nokia 5110.
- MPL115A1 - MicroPythonowa klasa do odczytu ciśnienia i temperatury z sensora NXP MPL115A1. Działa na magistrali SPI.
- 24LCxxx EEPROM - Przykładowe funkcje do obsługi odczytu i zapisu układów EEPROM firmy Microchip. Działa na magistrali I2C.
- ULN2003 - Przykład kodu do obsługi silników krokowych z wykorzystaniem układu ULN2003 zawierającego 7 par tranzystorów w układzie darlingtona.
- Bosch BME280 - Biblioteka do obsługi czujnikla Bosch BME280. Pozwala na odczyt ciśnienia, temperatury i wilgotności. Działa na magistrali I2C.
- Pixy - Moduł obsługujący PixyCam
- MB1013 - Moduł do obsługi ultradźwiękowych czujników odległości MaxBotix MB1013. Działa przez UART.
- MY9221 - Biblioteka do sterownika 10-segmentowego wyświetlacza LED pracującego pod kontrolą układu MY9221.
- AM2320 - Biblioteka do czujnika Aosong AM2320. Pozwala na odczyt temperatury i wilgotności. Działa na magistrali I2C.
- DHT12 - Biblioteka do czujnika Aosong DHT12. Pozwala na odczyt temperatury i wilgotności. Działa na magistrali I2C.
- TM1637 - Biblioteka do poczwórnego 7-segmentowego wyświetlacza LED sterowanego układem TM1637.
- micro:bit MIDI - Moduł pozwalający na komunikację micro:bita z urządzeniami MIDI.
Programowanie - Python - Biblioteki
- MicroPeri - Pozwala na uruchomienie na komputerze programów Pythona z API MicroPythona i wykorzystanie micro:bita jako czujnika lub urządzenia zewnętrznego.
- microbit_stub - Paczka Pythona pozwalająca na emulację micro:bita i wykorzystanie MicroPython API.
- bluezero - Pacza Pythona pozwalająca na współpracę z urządzeniami Bluetooth. Zawiera przykłady dla BBC micro:bit.
- bitio - Pythonowa biblioteka I/O BBC micro:bit. Pozwala na uruchomienie kodu (Windows, Mac, Linux i Raspberry Pi) i bezpośrednią interakcję z micro:bitem.
Programowanie - Python - Narzędzia programistyczne
- uFlash - Narzędzie do flashowania micro:bita za pomocą skryptów Pythona i środowiska MicroPython.
- MicroFs - Proste narzędzie do interakcji z systemem plików tworzonym przez MicroPythona na BBC micro:bit.
- Jupyter kernel for the micro:bit - Paczka pozwalająca na użycie interfejsów Jupyter i odpalenie kodu MicroPythona bezpośrednio na micro:bicie.
Programowanie - JavaScript i MakeCode
MakeCode jest obecnie podstawowym edytorem blokowym dedykowanym dla BBC micro:bit. Opiekę nad nim sprawuje Microsoft. Programowanie jest łatwe i przyjemne. Z poziomu przeglądarki www układamy bloki, które są graficzną reprezentacją kodu JavaScript (TypeScript).
W starszych artykułach i dokumentacji można napotkać go pod nazwą PXT. Jest tak dlatego, że tak właśnie pierwotnie nazywał się ten edytor.
Na chwilę obecną edytor nie ma możliwości wyboru języka polskiego bezpośrednio z menu. Jednakże polskie tłumaczenie można wymusić dodając w adresie beta?liveforcelang=pl.
Edytor występuje także w formie aplikacji dla systemu Windows 10.
MakoCode nie jeste jedynym edytorem JavaScript, z którego można korzystać przy pracy z micro:bit. Warto wspomnieć o środowisku Espruino JavaScript. Jest to interpreter języka JavaScript dedykowany mikrokontrolerom. Oferuje webowe IDE zarówno do kodu pisanego jak i bloków. Nie jest to projekt napisany z myślą o micro:bicie, a jedynie na niego sportowany.
Programowanie - MakeCode - Pakiety
Edytor MakeCode pozwala w prosty sposób na rozszerzenie funkcjonalności. Rozwijając menu "Zaawansowane" na samym dole widnieje opcja "Dodaj pakiet". Opcja pozwala na przeszukanie biblioteki pakietów lub wpisanie adresu URL repozytorium z pakietem, który nas interesuje. Lista oficjalnie zatwierdzonych pakietów znajduje się na stronie makecode.microbit.org/packages. Poniżej umieściliśmy interesujące pakiety, do których linki trzeba dodać ręcznie.
- BlueDot - Pakiet dodający obsługę aplikacji BlueDot.
- Kitronik Servo Lite - Bloczki obsługujące sterownik serwomechanizmów Kitronik Servo:Lite używanego m.in. w robocie Kitronik :MOVE.
- Kitronik I2C 16 Servo - Bloczki do obsługi sterownika 16 serwomechanizmów od firmy Kitronik. Sterownik został oparty o układ PCA9685, który komunikuje się po I2C.
- Kitronik motor driver - Blocki do obsługi sterownika silników od Kitronika. Sterownik oparty jest o układ DRV8833.
- Lego Power Functions - Bloczki pozwalające na kontrolę silników LEGO® Power Functions z wykorzystaniem diody podczerwonej.
- Invent robot - Pakiet do obsługi robota Invent.
- ubirch NB-IoT - Pakiet pozwalający na wysyłanie podisanych wiadomości do siebi ubirch.
- CCS811 - Pakiet dodający wsparcie dla czujnika jakości powietrza CCS811.
- DS1307 - Pakiet pozwalający na skorzystanie z zegara czasu rzeczywistego (RTC) DS1307.
- HT16K33 - Pakiet dodający obsługę sterownika matryc LED opartego o układ HT16K33 działający po I2C.
- HoneyBit - Pakiet obsługujący zestawy Honeycomb.
- Bluetooth beacons - Pakiet pozwalający micro:bitowi na rozgłaszanie wiadomości po Bleutooth. Wspierane są iBeacon i AltBeacon.
- LumexOLED - Pakiet obsługujący ekran Lumex OLED.
- MakerBit - Pakiet kombo dodający bloczki do obsługi MakerBita stworzonego przez Roger Wagnera. Paczka zawiera m.in. obsługę odtarzacza MP3, ekranu LCD po I2C oraz czujników ultradźwiękowych
- I2C LCD1602 - Biblioteka do obsługi wyświetlacza LCD 2x16, korzystającego konwertera bazującego na PCF8574 lub PCF8574A. Należy pamiętać, że adres I2C podajemy w formie dziesiątkowej (nie szesnastkowej). Dla PCF8574 będzie to 39 (0x27), zaś dla PCF8574A wpisujemy wartość 63 (0x3F). Jedyny problem to słaba widoczność napisów, gdy korzystamy z zasilania 3,3V. W tym wypadku przydatny będzie konwerter poziomów logicznych.
- Użytkownik githuba agregujący wiele paczek dla MakeCode. Wszystko w jednym miejscu.
Programowanie - JavaScript - Biblioteki
- node-bbc-microbit - Biblioteka Node.js do obsługi micro:bita z użyciem BLE (Bluetooth Low Energy)
- node-bbc-microbit-io - Biblioteka Node.js do obsługi micro:bita w frameworku Johnny-Five.
- microBit.js - Przeglądarkowa biblioteka JavaScript pozwalająca na interakcję w micro:bitem za pośrednictwem web bluetooth API.
- MakeCode Command Line Tool (PXT CLI) - Zestaw narzędzi pozwalających na programowanie micro:bita z użyciem MakeCode Javascript. Pozwala również na uruchomienie lokalnej wersji edytora MakeCode.
Programowanie - C/C++
- C/C++ runtime - Wprowadzenie do programowania BBC micro:bit z użyciem języka C/C++. Zawiera pełną dokumentację API, sterowników, itp.
- Arduino nRF5 - Arduino Core dedykowany dla płytek bazujących na układzie Nordic Semiconductor nRF5. Jak łatwo się domyślić BBC micro:bit jest jedną z takich płytek.
Programowanie - C/C++ - Edytory
- Micro:Pi - edytor C/C++ dedykowany micro:bitowi. Zawiera monitor portu szerewgowego i kilka przydatnych funkcji. Napisany w Pythonie z instalatorem dla systemów Linux.
Programowanie - C/C++ - Biblioteki
- OneWire - Biblioteka OneWire. Bazuje na dziele Erik Oliemana - mbed DS1820 lib. Pozwala na podłączanie urządzeń działających na magistrali OneWire, np: DS18B20
- neopixel - Biblioteka do kontrolowania adresowalnych diod RGB.
- micro:bit Screen - Arduino LED Screen library for micro:bit.
- Adafruit Arduino micro:bit library - Biblioteka - wrapper - do Arduino IDE pozwalająca na programowanie micro:bita.
- RTCC MCP7941X - Program Mbed do obsługi zegara czasu rzeczywistego z obsługą kalendarza - MCP79410 RTCC.
- AS-289R2 - Biblioteka Mbed do obsługi drukarki termicznej AS-289R2 z poziomu micro:bita.
Programowanie - Pozostałe języki programowania
Pozostałe języski programowania, w których można bezprośrednio zaprogramować płytkę BBC micro:bit.
- Touch Develop - Interaktywne środowisko programowania z wbudowanym symulatorem płytki BBC micro:bit.
- Rust - Artykuł pokazujący jak odpalić kod w języku Rust na micro:bicie.
- Forth - Opis jak opalić Forth na BBC micro:bit. Zastanawiasz się pewnie czym ów język jest. Żeby było zabawnie Forth to tzw. asemblerowy język programowania wysokiego poziomu... Do tej pory myśleliśmy, że "asemblerowy" i "wyskokiego poziomu" to pojęcia, które wzajemnie się wykluczają.
- Pascal - Kompilator Free Pascala, który pozwala na kompilację binarek dla platformy ARM embedded. Jak łatwo się domyślić, obsługuje również micro:bita.
- Ada - Instrukcja jak odpalić środowisko Ada na micro:bicie. Ada pojawiła się w 1980 roku i jako wieloparadygmatowy język programowania ma wielu zwolenników na całym świecie. Trudno się dziwić, gdyż składnia języka została zaprojektowana tak, aby popełnienie trudnego do wykrycia błędu było jak najmniejsze.
- Sniff - Sniff jest językiem programowania podobnym do Scratcha. Został on zaprojektowany tak aby pomóc użytkownikom Scratcha przenieść się na inne, bardziej konwencjonalne języki programowania.
- Lisp - Interpreter Lisp dla BBC micro:bit. Lisp powstał w 1958 roku i jest bardzo często kojarzony z "tym czymś", czego się używa do budowy sztucznej inteligencji. Jeżeli kojarzysz nazwę tego języka, zapewne wiesz co można w nim zrobić :)
Programowanie - interakcja z innymi językami
W poniższych językach programowania co prawda nie można zaprogramować samej płytki BBC micro:bit, ale mogą być użyte do stworzenia programów komunikujących się z micro:bitem.
- Kodu Controller - Enables interacting with the micro:bit from Kodu Game Lab.
- Simulink Coder Support Package - Package that enables you to create Simulink models and automatically generate and deploy code on the micro:bit.
- micro:bit for Dyalog APL on the Pi - Tools for using the micro:bit (via MicroPython serial connection) with the Dyalog APL programming language on the Raspberry Pi.
- Gobot - Framework for the Go programming language to program devices in the real world. It can now the micro:bit via Bluetooth LE.
- Microbit-Unity - Unity scripts to allow the BBC Microbit to be used as a Unity Controller.
- Haxe node BBC micro:bit - Control a BBC micro:bit from Node.js using BLE and the Haxe programming language.
- App Inventor + IoT - Control a micro:bit via Bluetooth with App Inventor, a visual programming environment for Android applications.
- BlockyTalkyBLE - MakeCode and App Inventor extension that makes it easy to connect AppInventor mobile phone apps with the BBC micro:bit wirelessly over Bluetooth.
- DroidScript micro:bit Plugin - Allows you you to control the BBC micro:bit remotely from your own DroidScript apps (Android apps written in JavaScript).
- CBMicroBit (C++/Objective C) - CoreBluetooth wrapper in C++ that connects a micro:bit to a computer running OSX using BLE and outputs over OSC (can be used standalone, or as a C++ or Objective C library).
- Swift - An application programming interface written in Swift for use with the micro:bit. It allows programs written for Apple devices to communicate with the micro:bit using BLE.