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 28., vasárnap

TM16XX Arduino Könyvtár

Itt van nálam egy pár kijelző modul (meg még egy pár, valamint vezérlő ICk magukban):


Ezekben egy dolog közös - mind a Titan Microelectronics TM16xx szériájába tartozó meghajtókat használnak. Az interneten találtam mindenféle forráskódokat hozzájuk. Én egy TM1637-es ICt akartam használni az egyik projectemben. Azt az ICt amit a 4 számjegyes kijelző használ. Ehhez létezik ugyan Arduino könyvtár, de hiányzik belőle a gombok kezelése (mert ugye a kész modulon nincsenek gombok). A nagyobbakhoz van gomb kezelés a könyvtárban, de azok TM1638-at használnak aminek más a uC interface-e.
Miután nem találtam a céljaimnak megfelelő könyvtárat, tehát írtam egyet.
A könyvtár itt található: https://github.com/sufzoli/TM16XX
Ma a következő IC-ket támogatja:

  • TM1636
  • TM1637
  • TM1638

A következő kész modulokat támogatja:


A repoban jelenleg az a Visual Studio solution található amit a fejlesztéshez használok, szóval jelenleg nem a legjobban szervezett. A dokumentáció teljesen hiányzik.
De ez csak a kezdet. Tovább akarom fejleszteni a könyvtárat.
Mi az ami jön:
  • Kód kommentek és dokumentáció
  • Telepíthető könyvtár
  • Hexadecimális kijelzés (most még csak decimális)
  • Több kijelző, és IC támogatása

A jövőben talán:

  • 14 digites kijelző
  • LED Matrix
  • oszlop grafika
  • ASCII kijelző

Ha valakinek van kedve kipróbálni, várom a javaslatokat, kéréseket.

2018. január 27., szombat

Nyák gyártás 5.

Sajnos az ALLPCB befejezte az $5-os akcióját. Az ingyen DHL maradt, de a 10 darabos 100x100-as panel ára mostmár $29. Amit kínálnak, sok esetben még mindíg az egyik legjobb ajánlat, de érdemes utánanézni a többi gyártónak is.
Ez pl. még mindíg az ALLPCB-től jött:


Ez egy 70x40-es panel, 10db-ot rendeltem belőle $16-ért.
Ez a SeeedStudio-nál $13.19 lett volna, viszont az 5-6 nap helyett, minimum 3 hét mire ideér.
Ahhoz, hogy megtaláljuk a legjobb lehetőséget érdemes a PCBSHOPPER oldalát megnézni, ahol az aktuális projectünkhöz összehasonlíthatjuk a lehetőségeket.

2018. január 26., péntek

Fake RF-ID 3. - Konkluzió

Amikor ez az ügy történt, úgy gondoltam, nem fogom annyiban hagyni.
Vártam pár hónapot, és újra megrendeltem a kérdéses modulokat a Hestore-tól. Ez november végén történt.
A csomagot ma kaptam kézkez (azt fedje homály, hogy mi tartott ezen két hónapig - ez nem kizárólag a Hestore hibája).



A teszt felállás november óta itt kallódott az asztalomon.


Végigpróbáltam a kontroll eszközt, valamint mindkét ma érkezett modult, az új modulokhoz kapot négy RF-ID taggel. Tökéletesen működik mind.
Ezek szerint, a Hestore kérésemre lecserélte a raktárkészletet. Ezt tekintem korrekt működésnek.
Ezzel az ügy lezárva.

2018. január 7., vasárnap

VESA Monitor álvány

Van egy Philips monitor a műhelyemben. Sajnos az eredeti talpával együtt túl magas. Ez azt jelenti, hogy nem tudok hozzáférni a mögötte/fölötte lévő polchoz rendesen. Valahogy lejjebb kellett raknom, de az eredeti talp nem állítható. Igen tudom, hogy lehet venni monitort állítható talppal, de az többe kerül, ez a monitor meg már itt van.
Tehát terveztem és építettem egy új talpat.

Az eredeti állapot:

A terv:

(A szürke darabok U alakú aluminum idomok)

Az alkatrészek:

Igen, jól látod, az a karika súlyzóra való tárcsa. :-D

Összeszerelve:

A monitorral:

A helyén:

Na mostmár tudom használni azt a polcot.
Ha valakinek kell, itt vannak a fájlok: https://www.thingiverse.com/thing:2749210

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...