A következő címkéjű bejegyzések mutatása: micro:bit. Összes bejegyzés megjelenítése
A következő címkéjű bejegyzések mutatása: micro:bit. Összes bejegyzés megjelenítése

2018. február 20., kedd

Micro:bit - hosztoljuk magunk!

Ha a Micro:bit-et akarod programozni, ehhez a microbit.org által kínált online  szerkesztőt használhatod:
https://makecode.microbit.org/#
Ennek van néhány hátulütője:
Az oldalon nincs bejelentkezés. Tehát nincs saját online környezeted.
A projectjeidet a saját gépeden tárolja (tulajdonképpen fogalmam sincs, hogy hol - leírást nem találtam róla). Én három különböző gépen dolgozom. Ez a megoldás nagyjából lehetetlenné teszi számomra, hogy mozgassam a gépek között, vagy biztonságos helyen tároljam a projecteket (git szerver).
Vannak helyzetek amikor internettől elzárva kell dolgozni.
Bárhogy is, a fenti kérdésekre van megoldás. Futtathatjuk az egészet a saját gépünkön (a telepítéshez kell internet):
  1. Telepítsünk egy NodeJS-t. Innen lehet letölteni: https://nodejs.org/en/
    Az aktuális LTS verzió teljesen megfelel.
  2. Hozzunk létre egy mappát a saját gépünkön a projectek és a környezet tárolására, pl.  c:\microbit
  3. Nyissunk meg egy parancssort és adjuk ki a következő parancsokat:
    npm install -g pxt
    npm install

    Csukjuk be a parancssort (ahhoz szükséges, hogy a környezeti változók a helyükre kerüljenek)
  4. Nyissunk meg egy parancssort és benne nyissuk ki a korábban készült mappát:
    c:
    cd microbit
  5. Adjuk ki a következő parancsot:
    pxt target microbit
Ezzel a környezetünk előállt. A következő paranccsal indíthatjuk el:
pxt serve
Legközelebb amikor el akarjuk indítani, már csak erre a parancsra van szükségünk.
Amikor elindult két dolgot vehetünk észre:

  • A parancssorban a következő üzenet dől ezerszámra:
    "Error: ENOENT: no such file or directory, open 'C:\microbit\node_modules\pxt-microbit\targetconfig.json'"
  • Nem találunk telepíthető kiegészítőt az "add packages" alatt, a beépíthetőkön kívül:

Ez azt jelenti, hogy nem tudunk semmilyen kiegészítőt telepíteni.
A hiányzó fájl (amire a hibaüzenet utal) pont a kiegészítők leírófájlja. Egy minta letölthető innen:
https://github.com/Microsoft/pxt-microbit/blob/master/targetconfig.json
Ha most leállítjuk a szervert (Ctrl-C), letölthetjük ez a fájlt a hibaüzenetben jelölt mappába, majd újraindíthatjuk a szervert (pxt serve). A hibaüzenet eltűnik és mi láthatjuk a kiegészítőket:


Ez a fájl a saját kiegészítőink telepítésére is használható. Ha találunk valamit az interneten, akkor ebbe a fájlba bejegyezve, megjelenik a kiegészítők listáján.

2018. február 15., csütörtök

Micro:bit - Előadás

Image may contain: phone

Ma, többszöri halasztás után, végre megtartottam a BBC Micro:bit-ről szóló előadásomat.
Úgy alkult, hogy lesz még második része is. Ennek megfelelően kicsit beletúrtam a prezentációba (kiszedtem belőle a következő előadás anyagát, az úgy is alakul még), és kiteszem ide, hátha érdekel valakit:
https://drive.google.com/file/d/1tlR3tGLLbtkGQTwdla7-N9dYVOny6Ism/view?usp=sharing
A videofelvétel itt tekinthető meg (lehet, hogy a csoportba fel kell vetetned magad hozzá):

2018. február 3., szombat

BBC micro:bit és az ő sebessége

ENGLISH VERSION

A BBC micro:bit-el kísérletezem mostanában. Ezt oktatási segédeszköznek tervezték gyerekek részére. A microbit.org szándékai szerint Block szerkesztőben, JavaScriptben és Pythonban programozható.
Megjelenése óta a maker közösség és különböző cégek nagy energiát tettek bele, így mamár rengeteg környezetből használható.
Az eredeti fejlesztőeszközök megfelelőek a tanuláshoz, de nem alkalmasak professzionális felhasználásra. Ha valaki ilyesmit akar tanulni, tovább kell lépnie. Hogy miért ennek sok aspektusa van. Ezzel kapcsolatban két dolgot szeretnék megmutatni:

  • A micro:bit hardvere nem korlátoz bennünket a továbblépésben
  • Sokkal nagyobb működési sebesség érhető el ezekben a környezetekben

Magáról a micro:bit panelről:
A micro:bit központi egysége egy 16MHz-es ARM Cortex-M0 alapú, bluetooth képes Nordic Semiconductor mikrokontroller. Ez ugyanolyan mint amik a piacon található készülékekben is előfordul. A panelen ezen túl még található egy NXP Kinetis eszköz is. Ennek a második mikrokontrollernak a feladata a kommunikáció azzal a számítógéppel, ahonnan programozzuk az elsődleges processzort.
Ez a második mikrokontroller a belépőjegyünk a professzionális programozói környezetekbe.
Ha már használtad a micro:bit-et a Block szerkesztőből, akkor tudod, hogy az eszköz a számítógépre dugva egy lemezmeghajtóként jelentkezik. Erre a meghajtóra tudjuk rádobni a lefordított programunkat. Ezt a lemezmeghajtót az NXP processzor szimulálja a számítógépünk részére.
De ennél többet is nyújt. Hibakereső eszközként (debig probe) is működik. Lehetővé teszi a programunk utasításonkénti végrehajtását, a Nordic mikrokontroller belső regisztereinek olvasását, stb. Ezzel, a megfelelő fejlesztőkörnyezetben hatékony hibakeresési eszköz kerül a kezünkbe.
Ezen túl, akár még választhatunk is, két különböző megoldás közül. A micro:bit egy DAPLink (CMSIS-DAP) nevű megoldással érkezik, de ez egy egyszerű programletöltéssel lecserélhető a Segger J-Link eszközére, ha erre van szükségünk

Most a sebességről. Egy egyszerű tesztet használtam arra, hogy összehasonlítsam a különböző környezeteket. A program semmi mást sem csinál mint egy Be/Kimeneti port értékét változtatja 0 és 1 között amilyen gyorsan csak lehet.
Három környezetet használtam a demonstrációra:

Block szerkesztő/Javascript - Az eredeti környezet
Arduino - A makerek, hobbisták elsődleges eszköze, szerte a világon
Segger Embedded Studio - A professzionális eszközök egyike (Azért ezt választottam, mert ezt tudtam a legkönnyebben, leggyorsabban munkára fogni. A telepítés után az első próbálkozásra működött)

Első próba - Ezt eredetileg JavaScript-ben írtam és nem a Block szerkesztőben, miután ez utóbbi nem rendelkezik XOR funkcióval. Azt mutatja, hogy mi történik, ha a "forever" blokkban kapcsolgatjuk a kimenetet:


Így néz ki a Block szerkesztőben:


A kimenetet rákötöttem egy oszcilloszkópra, hogy megmérjem a frekvenciát és megmutassam a hullámformát:


20.8Hz - Ez fájt. Ez azt jelenti, hogy a programunk a forever blokkban összesen kb. 40-szer kerül végrehajtásra másodpercenként.
Ez extrém lassú. Azt saccolom, hogy ez a micro:bit operációs rendszer taszk kezelésének következménye.

Csináljunk egy másik tesztet ebben a környezetben. De ebben az esetben saját ciklust használva a kimenet kapcsolgatására.
Ez a Block szerkesztőben készült, miután nem volt olyan kódrészlet amihez a Javascript kellett volna:


Csak hogy lássuk JavaScriptben is:


És az eredmény:


84.7kHz - sokkal jobb, de még mindíg 189 órajelciklus kell a ciklusunk futtatásához (a 16MHz-es belső órajelből számoltam)

Lépjünk kicsit tovább. Az Arduino környezet ezek alapján rakható össze:
https://learn.adafruit.com/use-micro-bit-with-arduino/install-board-and-blink

Először itt is a környezet belső ciklusát használtam:


Az eredmény az oszcilloszkópról:


214kHz, sokkal jobb ez kb. 75 órajelciklust jelent.

Nézzük meg ezt saját ciklusból:


Kicsit jobb, de nem jelentősen:


272kHz - 59 órajelciklus

És végül a Segger Embedded Studio - Mint látható itt a processzor inicializációja is a mi kezünkben van:


És az eredmény:


943kHz - 17 órajelciklus. Ha ennél jobb eredményt akarunk elérni akkor le kell menni assembly szintre, ami most nem célom.

A fentiekből talán látható a kép egy pici szelete.

2018. január 6., szombat

micro:bit - homokfutó

Készülve az előadásomra, felvetettem magam mindenféle kapcsolódó Facebook csoportba, hogy lássam mi történik, hogy információt gyűjtsek.
Itt beleakadtam ebbe:
https://www.facebook.com/groups/1194017457408416/permalink/1220151044795057/
Azonnal tudtam, hogy kell nekem egy ilyen. Sajnos a bemutatott homokfutó platformmal nem rendelkezem, valamint az egyik a kódra mutató link is sérült a bejegyzésben, így az elején kellett kezdenem.
Volt két áttételes motorom (egy korábban tervezett és meg nem épített homokfutóból), vettem hozzá egy bútorgörgőt harmadik keréknek.
Az alaplemezt egy nyomtatott áramköri alaplemezből vágtam/fúrtam, majd festettem.
Nem volt hozzá kerekem, így terveztem:


A micro:bit, a motor vezérlő, és az elemtarttók megvoltak. Nem akartam ceruzaelemet használni, hanem inkább akkumulátort. Miután a Ni-Mh akkumulátorok cellafeszültsége 1,2V az alkáli elemek 1,5V-jával szemben, így 4 helyett 5 AA elemhez szükséges elemtartót használtam (3+2) hogy elérjem a 6V-os tápfeszültséget.
A motoroknak mindkét oldalon hosszú tengelye volt. Ezeket mindkét motor egy-egy oldalán flexxel rövidre vágtam.
Kinyomtattam a kerekeket, ezzel össze is álltak a szükséges alkatrészek:


Majd össze is raktam a szerkezetet:


Ezek után a távirányító készült el. Ebbe már csak két akkumulátor került, mert 3,6V fülé nem mehet a tápfeszültsége:


Ebben az elemtartó, egy 3D nyomtatott kis lap, a micro:bit és néhány csavar van összesen.

Miután a szükséges program nem volt meg így összeraktam egy újat és módosítottam a távirányító-ét, hogy ki és be is lehessen kapcsolni vele a homokfutót és ne csak irányítani.
A homokfutó kódja:
https://makecode.microbit.org/_PC1c6k4WRTwW


És a távirányító kódja:
https://makecode.microbit.org/_WT0F8bWVbc68


És végül az elkészült mű, működés közben:




BBC micro:bit


Nemrégiben megkértek rá, hogy tartsak egy előadást a BBC micro:bit eszközről tanároknak.
Részemről a szerkezetet nem ismerem, így kicsit bele kell ásnom magam. Rendeltem egy pár dolgot, hogy neki tudjak kezdeni.

Ezeket szedtem össze:

micro:bit:
https://hqelektronika.hu/termekek/kit-microbit-microbit-fejleszto-keszlet

breakout panel (sajnos a micro:bit élcsatlakozója nem a kedvencem):
http://hu.farnell.com/webapp/wcs/stores/servlet/ProductDisplay?catalogId=10001&langId=36&urlRequestType=Base&partNumber=2563844&storeId=10162

motor vezérlő:
http://hu.farnell.com/webapp/wcs/stores/servlet/ProductDisplay?catalogId=10001&langId=36&urlRequestType=Base&partNumber=2563846&storeId=10162

Ezekből próbálok valamit összehozni.

Első lépések:
Körülnézve, kiderült, hogy számos fejlesztőkörnyezet létezik az eszközhöz. Nagyjából ezeket a lehetőségeket találtam:

Microsoft Makecode - Ez egy scratch/javascript online környezet. Kifejezetten gyerekek részére
MicroPython - A Python nyelv mikrovezérlőkre optimalizált verziója, itt megfejelve egy kifejezetten a micro:bit-hez készült online felülettel.
Arduino - Az Adafruit készített egy leírást, hogyan integrálható a micro:bit az Arduino ökoszisztémába
MBed - Az ARM (a micro:bit-en lévő processzor magjának tervezője) saját online fejlesztőkörnyezete

Ezeken túl alapvetően bármilyen mikorkontroller fejlesztőkörnyezet használható ami támogatja a Nordic Semiconductor nRF51822 processzorát (nRFgo, Keil uVision, IAR, stb.).

Egyenlőre ugyan a Makecode-ban fogok valamit összerakni, de a profeszionális eszközök (amik, ha időm engedik elő fognak kerülni) igénylik, pl. a hibakeresés lehetőségét, ezért a micro:bit saját DAPLink firmware-ét lecseréltem egy Segger J-Link firmware-re, ezek alapján:
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/bbc-microbit-j-link-upgrade/
Ez a Makecode-ból vagy MicroPython-ból való programozhatóságot nem befolyásolja.
folyt köv...