2018. április 14., szombat

Miért NEM fogok bizonyos termékeket megvenni.

Na szóval. Kéne nekem valami kereskedelmi tűzfal. Fizetnék érte.
Hogy miért? Mert nincs időm kitökölni és saját magam összerakni egy hibatűrő megoldást, ami mondjuk túlmegy a linux beépített Netfilter tudásán.
Elkezdtem keresgélni, az első ami szembejött a Smoothwall.
Ok. Nézzük meg mibe kerül. Ár sehol, ha akarok valamit, írjak nekik.
Nem írok.
Megpróbálok egy árat találni a neten. Belefutok egy tűzfalárösszehasonlító valamibe. Megadom a cégméretet, next. Kér egy e-mailt, hogy elküldje az összehasonlítást. Nem adom meg, hanem kihúzom a Smoothwall-t a listámról.

Hogy miért?
Nagyon egyszerű oka van.
Az időm árucikk. Abból élek, hogy eladom, tehát számomra és a megbízóim számára pénzt ér.
Ha írok a SmoothWall-nak, vagy megadom a címem az árösszehasonlító portálon, akkor jönnek az e-mail-ek, a telefonok a nyakamon lihegő kereskedőktől. Időt kell töltsek vele akkor is, ha végül mást választok. Az időm pedig pénz.
ÉBRESZTŐŐŐŐŐ!!!!
NEM VAGYOK HAJLANDÓ AZÉRT FIZETNI, HOGY MEGTUDJAM ANNAK A TERMÉKNEK AZ ÁRÁT, AMIT TE AKARSZ ELADNI NEKEM!!!!!

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.

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.