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 19., hétfő

Anettka (Anet A8)

Tavaly gondolkoztam, hogy kéne egy 3D nyomtató az irodámba. Egyszer a Geeetech-et be is vittem egy hétre.
Látom a folyamatos áresést. Nem tudtam tovább ellenállni a kísértésnek.. Rendeltem egy Anet A8-at a német eBay-ről. €130 volt, plusz €15 szállítás. Néhány nap alatt ideért.



Egy pár óra alatt összeraktam. Elkezdtem péntek késő délután, és befejeztem vasárnap, de a hétvégém alapvetően nem ezzel telt. Azt gondolom a nettó építési idő olyan 6-7 óra lehetett.
Itt vannak az építéssel kapcsolatos tapasztalataim. Leginkább kósza gondolatok:
  • Az világosan látszik, hogy az építési leírás amit találtam, nem pontosan ehhez a kithez való. Azt gondolom, hogy a nyomtató egy rakás revíziót megélt, ezért a leírás "kreatívan kezelendő"
  • Az egész cuccot könnyű összeszerelni, ha megbarátkozol az akril keretbe benyomott anyákkal (amik szeretnek kiesni).
  • Nem értem, a hozzá adott egyenes csavarhúzót. Egyetlen csavarba sem jó.
  • A hozzáadott bordás szíj a lehető legvackabb. Műanyag, szálerősítés nélkül.
  • A szíjak feszítése mindíg problémás. Itt szintén. Az Y tengelynél ez kezelhető a motor és az ellenoldali görgő csavarjainak meglazításával a szíjnak az Y kocsihoz való rögzítése előtt.
  • Az X tengelynél sajnos a helyzet nem olyan jó mint az Y-nál. Maga a konstrukció hibás. Nincs lehetőséged megfeszíteni a szíjat, ha mégis sikerülne akkor a Z tengely rúdjait feszíted vele keresztben (és nem az X tengelyt hosszában), ami elkerülendő erőhatást produkál. Itt jön az az egyetlen módosítás amit rögtön fel is tettem a nyomtatóra (még sok egyebet tervezek). Ezt nyomtattam:
    https://www.thingiverse.com/thing:1683070



    Szerencsére a Geeetech nyomtatóm képes volt ezt megugrani, így nem kellett az építéssel szenvednem ennélkül az alkatrész nélkül.
  • A gűrött maszkolószalag a platformon egy vicc és nem valami amire nyomtatni lehet.



  • A kábelek feliratozása tökéletes. Megkönnyíti, hogy mindent pillanatok alatt összekössünk.
  • A firmware felhasználói felülete piszkos lassú. Nem fogom, hogy mi a francnak kell egy alfanumerikus kijelzőn egy 8 bites processzorral animálni (reszkess, jön Marlin).
  • Az extruder: pro: fém a torok, nincs benne teflon betét, kontra: Nem lehet szétszedni annélkül, hogy a magasság állítás bukna. Ez gond, ha nincs automatikus magasságállítás.

Az első teszt:



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 10., szombat

"Lightronome" 1. - A világító metronom

Kaptam egy felkérést, hogy tervezzek és építsek egy elektronikus metronómot. Sok ilyesmit lehet találni a neten, de az a probléma, hogy ezek vagy hangot adnak ki, vagy klsszikus mechanikus szerkezetként viselkednek. Itt a követelmény a láthatóság volt. Hogy pontosak legyünk négy LED a 4/4-es ütemhez. Ez a doboláshoz szükséges, ahol esélyed sincs a metronóm kattogását hallani (talán csak fejhalgatón keresztül).
Tehát az elképzelés:

  • Fogjunk egy mikrovezérlőt (esetünkben egy ATTINY85)
  • Egy 3 digites LED kijelző, hogy kijelezzük a percenkénti ütésszámot
  • Két gomb a sebességbeállításhoz
  • Négy LED (én RGB LED-eket használtam, hogy állítható legyen a színe programból)
  • Tápegység és a szokásos dolgok amik egy ilyesmi áramkörhöz kellenek

Ha jobban belegondolsz, rájössz, hogy esélyed sincs a fentieket közvetlenül az ATTINY85-ről meghajtani.
Itt jön a képbe a korábban írt cikkem: http://it-pro-hu.blogspot.hu/2018/01/tm16xx-arduino-konyvtar.html
A könyvtár amit a Titan Microelectronics kijelző meghajtóihoz írtam alapvetően ehhez a projecthez készült. Tehát a fenti listához adjunk még hozzá egy TM1637-es meghajtót. Ez képes 6x8 LED szegmenst mehajtani és 2x6 gomb állapotát beolvasni. Ez több mint elég a LEDek, a kijelző és gombok kezeléséhez.
A könyvtár megírását követően a Metronóm saját programja már elég egyszerű volt.
Az első próbaverzió breadboard-on készült az ATTINY85 helyett egy Arduino UNO-val:



A sikeres teszt után megterveztem és megrendeltem a panelt.


Egy hét alatt ideért:


Elkezdtem beültetni - itt kezdőttek a gondok:

  • Rossz tokméretet választottam az ATTINY85-höz, meg kellett hajlítanom/erőszakolnom a lábait, hogy be tudjam forrqasztani.
  • A mikro USB csatoló nem lógott ki eléggé a panelről
  • A 3.5-es Jack aljzatnál hiányzott két pozicionáló furat

Ezek könnyen korrigálthatóak voltak
Itt a beültetett panel, (a kijelző nélkül):



A uC többszöri újraforrasztása után, végre le tudtam tölteni a kódot neki, de a kijelzőn és a LED-eken nem jelent meg semmi.
Vakartam a fejem. Majd bevillant, hogy az ISP csatlakozón rajta van az összes csatlakozási pont ami a TM1637 meghajtásához szükséges. Tehát rákötöttem egy külső kijelzőt:



It was working.
Elkezdtem méricskélni a panelen és azonnal kiderült, hogy mi a gond. A TM1637 GND és VCC lába fel volt cserélve. Ez hogy történhetett?
A kapcsolási rajz szerkesztőben (KiCAD) tükröztem a TM1637-et. Ezzel a GND láb a tetejére, a VCC meg az aljára került. Ezek után a táp lábakat szokásosan kötöttem be. A GND-t az aljára a VCC-t meg a tetejére. IDIÓTA!!!!!

Ezt a hibát javíthatatlannak minősítettem. Megcsináltam a szükséges tervmódosításokat: A korábban jelzett három hibát, ezt, valamint rárajzoltam a panelre az ISP csatlakozó lábkiosztását.
Új rendelés, egy hét várakozás, a panel megjött:



Építés újra.
Megjelent néhány számjegy a kijelzőn, de nem az elvárásoknak megfelelően működött. Két újabb tervezési hibát találtam:

  • A kijelző anódjai fel lettek cserélve így a számok jobbról balra olvashatóak.
  • A LED-ek nem kezdtek el világítani - El voltak forgatva 180 fokkal.

Átírtam a kódot a kijelzőhöz, kiforrasztottam a LED-eket és újakat raktam be elforgatva (ezek a LEDek nem élik túl a hőlégfúvót)
Na mostmár úgy működik, ahogy kell neki.

Közben megterveztem a 3D nyomtatott műanyag dobozt:


A rögzítő még igényel némi munkát, de az eszköz már működik:




Néhány plusz megjegyzés:
Miután a rögzítő még nincs meg, erről még írni fogok.
A két, jelenleg használt gombnak van távvezérlési lehetősége a 3.5mm-es Jack-en keresztül. A külső gombok optocsatolón keresztül vezérlik a belsőket. Ez nem galvanikusan leválasztott, a feladata csak a zajvédelem.
A panelen kialakítottam egy kvarckristály helyét. Nem tudom, hogy erre a pontosságra szükség lesz-e, de egyenlőre nem ültettem be.

Gondolkozom a cucc árusításán, ha lesz rá érdeklődés. Bróbálom ezt kideríteni. Van néhány továbbfejlesztési ötletem is. Ha van valami ötleted, javaslatod, akkor kérlek, azt tedd meg a cikk alatt a megjegyzéseknél.

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.