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.

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