Dla zachowania uporządkowania informacji, a także dlatego, że każdy elektronik jest ciekawy takich rzeczy, w pierwszej kolejności opiszemy budowę płytki micro:bit. Nie będziemy opisywać schematu elektrycznego, ale warto wiedzieć, że dostępny jest tu: http://bit.ly/2zqcDfP. Opiszemy jakie komponenty znajdują się na płytce micro:bit, jaki zastosowano micro:procesor oraz jakie możliwości daje ten moduł.
Budowa płytki micro:bit
Sercem modułu jest mikrokontroler nRF51822 produkcji Nordic Semiconductor, wyposażony w 32 bitowy rdzeń Cortex M0, taktowany zegarem 16 MHz. Wyposażony został w 256 kB pamięci FLASH, 16 kB pamięci RAM oraz wszystkie standardowe peryferia: przetwornik ADC, liczniki typu Timer z funkcją PWM, interfejs SPI, interfejs UART, interfejs I2C a także dekoder enkodera kwadraturowego, moduł RTC, czujnik temperatury i sprzętowy blok szyfrujący AES. Elementem, który wyróżnia ten układ jest zintegrowany transceiver na pasmo 2,4 GHz zgodny z Bluetooth low energy.
Płytka Micro:bit ma wymiary 43×52 mm. Zasilanie doprowadzane jest poprzez złącze microUSB lub poprzez złącze baterii typu JST. Do złącza baterii można doprowadzić napięcie z zakresu 2...3,6 V. Zatem optymalnym źródłem zasilania są połączone dwie baterie 1,5 V np. typu R6. Nie zaleca się zasilania płytki z akumulatorków o znamionowym napięciu 3,6 V, ponieważ napięcie takiego akumulatora, gdy jest w pełni naładowany, dochodzi do 4,2 V i może uszkodzić elementy płytki.
Wbudowany transceiver na pasmo 2,4 GHz obsługuje komunikację Bluetooth za pośrednictwem biblioteki Nordic S110 SoftDevice, która realizuje pełny stos Bluetooth low energy. Dzięki temu micro:bit może komunikować się z szeroką gamą urządzeń Bluetooth, w tym ze smartfonami i tabletami. Transceiver obsługuje także inne standardy komunikacji radiowej, w tym zastrzeżony protokół Nordic Gazell. Protokół ten zapewnia bardzo prosty interfejs radiowy do transmisji małych pakietów między innymi urządzeniami obsługującymi ten protokół. Interfejs „radiowy”, który pojawia się w wielu językach dla micro:bit, bazuje właśnie na protokole Gazell.
Do komunikacji z użytkownikiem służy matryca diod LED o organizacji 5×5, która pełni rolę wyświetlacza. Takie rozwiązanie pozwala wyświetlać symbole, proste grafiki oraz czytelny i dobrze widoczny tekst w formie przesuwanej animacji. Płytką możemy sterować poprzez dwa przyciski umieszczone po obu stronach wyświetlacza.
Na płytce znajduje się magnetometr (układ MAG3110) oraz akcelerometr (układ MMA8652), które umożliwiają pomiar przyspieszeń i pomiar natężenia pola magnetycznego. Dodatkowo umożliwiają realizację funkcji Motion Sensor, czyli pozwalają m.in. określić położenie płytki względem ziemi, pozwalają na wykrywanie zdarzeń takich jak potrząśnięcie płytki (shake), spadanie (fall detection) czy obrót (rotation).
Płytka micro:bit pozwala mierzyć temperaturę. Informacja o tym parametrze dostępna jest dzięki wbudowanemu w mikrokontroler czujnikowi temperatury. Ciekawostką jest pomiar natężenia oświetlenia - rolę czujnika pełni jedna z diod LED.
Połączenie z innymi układami elektronicznymi umożliwia złącze zrealizowane w postaci 25 styków umieszczonych na dolnej krawędzi płytki tzw. Edge Connector. Na złączu dostępne są sygnały interfejsów I2C, SPI, wejścia analogowe oraz zasilanie. Dokładny Opis wyprowadzeń pokazuje rysunek 1. Do szerokich styków można dołączyć się przy pomocy przewodów z krokodylkami, do wąskich styków można przylutować przewody lub użyć płytki przejściówki np. takiej jak na fotografii 2.
Jak zaprogramować miro:bit?
Płytka została opracowana z myślą o tym, że będzie to moduł do nauki programowania praktycznie od podstaw. Dlatego posiada wszystko co potrzebne do bezproblemowego rozpoczęcia nauki. Na płytce znajduje się złącze mikroUSB, które pełni rolę złącza zasilającego, ale jest także połączone z drugim pomocniczym mikrokontrolerem typu Freescale KL26Z. Realizuje on funkcje programatora dla układu nRF oraz realizuje funkcję mostka USB-UART. Po podłączeniu płytki do komputera PC w systemie pojawią się dwa nowe urządzenia: dysk wymienny MICROBIT oraz port szeregowy COM. Zaprogramowanie płytki micro:bit nowym programem jest niezwykle łatwe i polega na przeniesieniu pliku hex do wspomnianego dysku wymiennego. Port szeregowy może służyć do przesyłania danych pomiędzy komputerem a płytką.
Zanim zaczniemy uruchamiać własne programy warto uaktualnić firmware płytki. Najnowsza wersja oprogramowania obsługuje funkcję WebUSB, która usprawnia pracę z płytką. Pozwala programować płytkę z poziomu przeglądarki internetowej - plik hex jest pobierany bezpośrednio na dysk wymienny MICROBIT. Ponadto pozwala na prezentację danych przesyłanych z płytki w oknie przeglądarki.
Po pierwsze musimy pobrać plik najnowszej wersji firmware ze strony http://bit.ly/33ZYLaj. Następnie musimy podłączyć płytkę micro:usb przewodem USB do komputera ale przy wciśniętym przycisku reset (przycisk przy złączu USB). Płytka zostanie zainstalowana w systemie jako dysk wymienny o nazwie MAINTENANCE. Ostatnim krokiem będzie skopiowanie pliku firmware na wspomniany dysk wymienny i odczekanie kilku chwil, aż proces aktualizacji się zakończy a płytka automatycznie zrestartuje się.
Let’s Code
Micro:bit to nie tylko płytka, to przede wszystkim narzędzia do programowania. Na stronie http://bit.ly/2ZqFOdf znajdziemy dwie propozycje, pierwsza z nich to MakeCode Editor.
MakeCode to edytor graficzny działający w oknie przeglądarki. Okno edytora pokazane jest na rysunku 3. W lewej części okna znajduje panel symulatora, który pozwala na wirtualne przetestowanie działania programu. Możemy zasymulować przyciśnięcie przycisków lub przechylenie płytki, a na wirtualnym wyświetlaczu 5×5 LED zostanie zobrazowana reakcja modułu. Środkowa kolumna zawiera cały asortyment elementów i funkcji, które możemy użyć w naszym programie. Oprócz standardowych kategorii takich jak Loops czy Logic znajdują się także bardziej złożone funkcje np. Radio (umożliwia realizację komunikacji bezprzewodowej pomiędzy płytkami), Pins (funkcje dotyczące odczytu lub ustawienia stanów na wyprowadzeniach złącza krawędziowego, także odczyt analogowy i ustawienie PWM oraz odczyt i zapis poprzez interfejsy I2C i SPI), oraz Serial (umożliwia realizację komunikacji z PC poprzez port szeregowy (USB)). Do każdego elementu możemy wyświetlić Help, czyli krótki opis wraz z przykładem użycia. Dla wygodniejszej pracy z edytorem warto najpierw sparować naszą płytkę. W tym celu należy kliknąć na symbol ustawień (trybik przy logo Microsoft), następnie wybrać Pair Device i postępować zgodnie z instrukcją. Dzięki temu zabiegowi, podczas pobierania pliku programu, będzie on od razu zapisywany na płytce micro:bit.
„Pisanie” programu polega na układaniu elementów podobnych do puzzli nazwanych Blocks. Nie dość, że jest to sposób łatwy do nauki, to dodatkowo jest niesamowicie wciągający. Programując tą metodą nie musimy znać składni i reguł języka, od razu przystępujemy do poszukiwania rozwiązań danego zadania, wybierając elementy z dostępnych kategorii. MakeCode umożliwia programowanie, także w bardziej klasyczny sposób. W górnym pasku, w środkowej części znajduje się przełącznik opisany Blocks/JavaScript i umożliwia przełączenie się do trybu edytora JS. Co ciekawe, program zbudowany z klocków Blocks można w każdej chwili przekonwertować na kod JS i odwrotnie.
Drugim narzędziem polecanym do programowania płytek micro:bit jest MicroPython. Edytor dostępny jest w wersji przeglądarkowej oraz jako aplikacja do zainstalowania. Główne okno programu pokazuje rysunek 4. Python jest językiem programowania, który w ostatnim czasie zyskał na popularności, zwłaszcza wśród użytkowników komputerków typu Rasberry. Dlatego edytor MicroPython będzie dobrym wyborem dla każdego elektronika, z tym językiem na pewno jeszcze będzie miał do czynienia. Warto wiedzieć, że jest to język interpretowany czyli taki, który jest tłumaczony i wykonywany „w locie”. Maszyna, na której uruchamiany jest program musi mieć uruchomiony tzw. interpreter. Wszystkie informacje na temat programowania płytek micro:bit w języku Python można znaleźć tu: http://bit.ly/2ZvTV5a. Ważną infomacją jest to, że MicroPyhon nie obsługuje BLE. Jest to spowodowane zbyt małą ilością pamięci RAM płytek micro:bit. Komunikacja radiowa realizowana jest innymi, prostszymi metodami.
Dla tych, którzy ciągle czują niedosyt i uważają, że prawdziwe programowanie mikrokontrolerów wymaga użycia języka C, też jest propozycja. Platforma ARM MBED (http://bit.ly/2zmUTSF) posiada wsparcie dla płytek micro:bit. Po utworzeniu konta i zalogowaniu się na platformie, uruchamiamy edytor/kompilator przeglądarkowy i tam w prawym górnym rogu klikamy ikonę symbolizującą naszą aktywną platformę sprzętową. W oknie, które się pojawi klikamy na Add Board i postępujemy zgodnie z instrukcjami wyszukując, spośród wielu dostępnych typów, płytkę micro:bit (rysunek 5).
Nasz kompilator jest gotowy do programowania nowego modułu. Klikamy na New, a w okienku, które się pokaże ustawiamy:
Platform: BBC micro:bit,
Template: A blinky for the BBC micro:bit,
Program Name: PierwszyProgram
Po zatwierdzeniu zostanie wygenerowany szkielet programu podobny to tego na rysunku 6.
KS