micro:bit:wstęp

Zamiast standardowego „hello-world”… spróbujmy zacząć od czegoś bliższego mikrokontrolerom i urządzeniom wbudowanym. Może… termometr?

  1. Otwórzcie stronę ze środowiskami programowania micro:bit: Let’s code!
  2. Wybierzcie „JavaScript Block Editor” i kliknijcie „Let’s Code”,
  3. Do elementu „Forever” dodajcie następujące bloczki:

    • Z grupy „Basic”: element „Show number” dołączcie do „Forever”
    • Z grupy „Input”: elementem „temperature” zastąpcie „0” w „Show number”
  4. Kliknijcie ikonkę „Download” i pobierzcie plik „hex” na swój komputer,
  5. Podłączcie microbit do USB, przegrajcie na niego pobrany plik hex,
  6.  Na micro:bit wciśnijcie „Reset”.
  7. Teraz wiecie, jaka temperatura panuje w Waszym pokoju:)

Zainteresowani?

Świat nie kończy się na Arduino i Raspberry Pi. W sprzedaży znajdziecie wiele podobnych płytek. Fakt, chyba żadna z nich nie ma takiego wsparcia społeczności jak te dwie. Ale micro:bit zasługuje na szczególną uwagę.

To się naprawdę wydarzyło. Każdy uczeń w Wielkiej Brytanii w wieku 11-12 dostał za darmo zestaw micro:bit. Idea była prosta: nawet jeżeli tylko część z nich się nią zainteresuje, a część z tej części pobawi się dłużej – może niektórzy złapią „bakcyla” i wyrosną na inżynierów… A ich każda współczesna gospodarka potrzebuje jak powietrza.

Od połowy 2016 roku moduł można również nabyć komercyjnie.

W plecaku…

Procesor napędzający micro:bit oparto architekturze Cortex-M0 z modułem Bluetooth LE (Low Energy). Cortex-M0 to seria niewielkich procesorów 32 bitowych – ten tutaj taktowany jest zegarem 16MHz. Wbudowano w niego 256 KB pamięci flash na programy oraz 16 KB pamięci operacyjnej RAM. Procesor micro:bit produkuje firma Nordic Semiconductors (komercyjna nazwa:  nRF51822).

Ze względu na kompletnie różne architektury kontrolerów, porównanie micro:bit do Arduino UNO nie ma wielkiego sensu, ale… Kontroler AtMega328 (napędzający UNO) to układ 8- bitowy, w UNO taktowany zegarem 16MHz (samo AtMega może pracować do 20MHz). AtMega328 ma 32kB flash i 2kB pamięci RAM.

Pozostałe peryferia na płytce:

  • Bluetooth LE – bezprzewodowa komunikacja z innymi micro:bit,00 PC czy telefonami,
  • USB OTG (chip NXp/Freescale KL26) – do komunikacji z komputerem i zasilania płytki (stabilizator 120mA),
  • akcelerometr 3-osiowy,
  • magnetometr (np. jako kompas),
  • termometr (uwaga: kilka słów o nim w podsumowaniu),
  • led informujące o stanie micro:bit, (żółta: system),
  • pole led złożone z 25 diod (matryca 5×5), które może również służyć jako czujnik światła,
  • 3 przyciski – w tym dwa dla programów użytkownika i jeden do resetu,
  • złącze 23 piny – z których 3 wyprowadzone w formie metalizowanych otworów.

micro:bit dostarcza do trzech wyjść PWM, do 17 portów GPIO, sześć wejść analogowych, sprzętowy port szeregowy, SPI i I2C.

Plastyka

Płytka ma rozmiar 43 mm × 52 mm. Z jednej strony znajduje się pole LED, dwa przyciski i czujnik światła.

Z drugiej strony płytki umieszczono całą elektronikę, port USB, przycisk reset i złącze do baterii. Tuż obok portu USB, znajdziecie żółtą diodę sygnalizującą stan płytki.

Piny wyprowadzono na jedną z dłuższych krawędzi. Dodatkowo 3 piny wyprowadzono na oczka i można się w nie wpiąć np. za pomocą krokodylków. Żeby dobrać się do reszty – będziecie potrzebowali odpowiedni adapter.

Piny micro:bit (pobrano z: strona micro:bit)

 

Fizyka

Schemat micro:bit: tutaj.

Cała logika płytki działa na 3.3v (podobnie jak np. Raspberry Pi). To ważne, bo do micro:bit nie możecie bezpośrednio podłączyć do  niczego, co wyśle do niego 5v (np. Arduino lub czujnik odległości HC-SR04). Konieczne jest obniżenie sygnałów wejściowych do max 3.3v (dzielnik napięcia, konwertery logiki itp.).

Płytkę można zasilać:

  • poprzez USB (czip KL26),
  • poprzez złącze baterii (system LED nie  świeci),
  • poprzez złącze 3v lub dwa pady na krawędzi płytki.

Standard USB posługuje się zasilaniem 5v (sygnały D+ i D- to 3.3v). Dlatego gdy zasilacie płytkę z USB, prąd musi przejść przez stabilizator napięcia. Obniża on napięcie USB do 3.3v. Stabilizator ma maksymalną wydajność 120mA.

Kolejne dwa sposoby zasilania są bardziej ryzykowne. Pin 3v jest bezpośrednio podłączony do kontrolera. Jedynie zasilanie od strony baterii (i USB) posiada diodę zabezpieczającą przed odwrotną polaryzacją.

Z dokumentacji wynika, że kontroler nRF51 napędzający micro:bit toleruje od 1.8 do 3.6v. Akcelerometr wymaga co najmniej 1.95v – i tą wartość należałoby przyjąć za dolną granicę napięcia zasilania. Absolutne maksimum to 3.9v. Przekroczenie tej wartości napięcia zasilania może doprowadzić do uszkodzenia micro:bit.

Stabilizator czipu USB może zapewnić maksymalne natężenie prądu ok. 120mA. Instrukcja wspomina, że do 30mA „pożera” sam micro:bit („najgorszy” przypadek – gdy działają wszystkie LEDy i Bluetooth) – więc 90mA pozostaje na zasilanie z pinu 3V (ten okrągły na krawędzi płytki). Więcej o poborze mocy można dowiedzieć się z tekstu micro:bit power consumption. Z doświadczeń tam przeprowadzonych wynika, że

  • Pobór mocy micro:bit zależy od napięcia zasilania – generalnie im napięcie zasilania jest wyższe tym pobór prądu jest większy,
  • Natężenie „spoczynkowe” to 1.6mA – 2.8 mA (2mA dla 3v zasilania),
  • Pobór prądu micro:bit pracującego nad generowaniem dużego zestawu losowych liczb  waha się od 4.5 – 7.4mA (6mA dla 3v),
  • Z włączonymi  wszystkimi diodami LED – pobiera od 2 do 20mA (dla 3v na wejściu – 10.5mA),

Stąd:

  • mikro:bit można zasilać z dwóch baterii alkalicznych AAA (domyślny zestaw wyposażony jest w zasobnik na takie baterie) lub dwóch AA – również z akumulatorów NiMh. Ich napięcie to 1.2v (akumulatory) do 1.5v (max 1.7v), więc nie zagrożą płytce,
  • mikro:bit można również zasilić np. z baterii pastylkowej CR2032. W sprzedaży znajdziecie rozszerzenie Mi:Power z taką właśnie baterią. Dokręca się je do płytki micro:bit. Oczywiście trzeba wtedy ostrożnie gospodarować mocą. Baterie tego typu mają do około 240mAh (dobrych firm),
  • micro:bit nie można bezpośrednio zasilać z ogniw LiPo-LiIon. Ich nominalne napięcie to 3.7v (co może jeszcze przejdzie) – ale w pełni naładowane to 4.2v. Takie napięcie może zniszczyć micro:bit. Konieczne jest obniżenie napięcia poprzez zastosowanie np. stabilizatora lub przetwornicy.

Informatyka

Jedną z zalet micro:bit jest łatwość jego programowania. Urządzonko podłączone do komputera zachowuje się podobnie jak pendrive. W systemie po prostu pokaże się wam kolejny napęd. Na niego kopiuje się plik *.hex (zbudowany obraz Waszego programu). Oprogramowanie wbudowane w płytkę ładuje plik hex z pamięci „dyskowej” i wykonuje go. Uwaga: zaraz po załadowaniu, plik hex jest usuwany z części pamięci symulującej pendrive. micro:bit robi to po to, żeby oszczędzać pamięć.

Co ciekawe – środowisko JavaScript potrafi odtworzyć z pliku hex  Wasz projekt. Wystarczy, że załadujecie taki plik hex z powrotem do edytora – i możecie kontynuować pracę nad projektem.

Podobnie jak w przypadku Arduino, projekt micro:bit składa się z rozbudowanej części metodycznej – w tym środowiska do programowania (typu IDE: integrated development environment, zintegrowane środowisko do rozwoju oprogramowania), wielu przykładów i materiałów szkoleniowych.

Do dyspozycji mamy więc:

SKO*

No dobra, fajnie, ale ile to kosztuje?! Sam moduł to koszt ok. 80 zł. Zestaw OEM z kabelkiem USB, pudełkiem na baterie i 2xAAA – to ok. 90 złotych (bez przesyłki, ze sklepu Nettigo).

Cóż, Arduino UNO można kupić w Chinach za 15 złotych – ale oryginalne to już koszt 100 złotych! Patrząc na listę peryferiów płytki micro:bit, UNO wydaje się dalekim i bardzo ubogim kuzynem.

Elegancka obudowa to koszt około 20 złotych. Mi:Power – moduł zasilania z baterii CR2032, to koszt około 25 złotych. Pierścień ZIP z zestawem diod LED to koszt około 70 złotych. Robot :move ze sterownikiem serw, napędami i szkieletem – ok 140 złotych.

*SKO: Szkolna Kasa Oszczędności… rodzaj konta dla uczniów, gdzie można było wpłacać sobie kieszonkowe… Raczej niewielu z Was to pamięta;)

Czy porzucę Arduino?!

Nie ukrywam, że na micro:bit oczekiwałem z niejaką… niecierpliwością. Ok, może 80 złotych to nie jest tak mało (w porównaniu do chińskich klonów UNO), ale i możliwości oferowane przez płytkę są dużo większe. Pierwszy kontakt bardzo pozytywny – płytka bez problemu odpaliła pod linux, prosty programik wyświetlił temperaturę w pomieszczeniu. Cóż, z Arduino nie byłoby tak łatwo – kilka gratów musiałbym doczepić (miernik temperatury, wyświetlacz).

Rozwód z Arduino?!

Po włączeniu termometr pokazał 22ºC. Ale już po chwili – temperatura zaczęła rosnąć. Zmodyfikowałem wstępny program:

Dodatkowe instrukcje generowały serię liczb losowych i wykonywały na nich jakąś operację – to żeby upewnić się, że kompilator w ramach optymalizacji kodu nie usunie całego bloku. Po chwili wskazywana temperatura wzrosła do 24ºC. Po 10 minutach było już 26ºC. Jedynie pierwszy pomiar (22ºC) był bliski rzeczywistości. Nic dziwnego, bo micro:bit tak na prawdę… nie ma wbudowanego termometru🙂 Eeee… to ma czy nie? Pomiary temperatury pochodzą z wnętrza chipu – podobnie jak „sekretny termometr Arduino” (a właściwie AtMega328). Jeżeli chip pracuje ciężej – jego temperatura rośnie. Pomiary te są precyzyjne – tzn. kolejne w serii są zbliżone do siebie i dobrze reagują na zmiany. Ale odnoszą się do temperatury samego czipu. W stosunku do temperatury zewnętrznej będą niedokładne. Jedynie gdy chip będzie zimny (ma temperaturę otoczenia), błąd będzie minimalny. Do dokładniejszych pomiarów i tak będziecie potrzebowali zewnętrzny termometr. 

Kolejne ograniczenie to brak stabilizatora na płytce. Napięcie 3.3v będzie trzeba jakoś dostarczyć za pomocą osobnego stabilizatora. Tu Arduino wygrywa – chociaż sam AMS1117 cudem nie jest (wysokie napięcie drop-out).

Będę również narzekał na brak otworów montażowych. Płytki bez dodatkowych otworów trudno przytwierdzić np. do ścianki obudowy. Kolejny zarzut to brak wyprowadzań pozostałych pinów. Podobają mi się oczka na P0, P1 i P2. Ale żeby dostać się do pozostałych portów – konieczny jest osobny adapter. Który zwiększa obrys płytki – której i tak nie ma jak przykręcić:)

Płytka jest jednak ciekawa, powstała na bazie rewelacyjnego pomysłu. Zamierzam się nią pobawić – co skrzętnie udokumentuję na łamach tego bloga. Zapraszam do śledzenia kategorii micro:bit.

Źródła

Dodaj komentarz

Proszę dodaj swój komentarz. Pamiętaj, żeby nie podawać żadnych danych osobowych.