Kilenc hónap. Ma napra pontosan kilenc hónappal ezelőtt írtam utoljára a GP-IB adapteremről (http://it-pro-hu.blogspot.com/2019/07/gp-ib-3.html). Nehéz szülés volt.
Büszkén jelentem be, mint apa a működő GP-IB interfész szoftverem. Még nőnie és tanulnia kell. A tudásából még hiányoznak képességek, mint a device üzemmód és a USBTMC.
Mind az apa:
Elkezdtem állványt építeni a retró Akai cuccomnak. Én kicsi vagyok. Amikor az állványt el kezdtem tervezni, arra jutottam, hogy helyet veszítek, ha a lemezjátszót a tetejére teszem (ez esetben nem lehet magasabb 120-130 centinél). Ha egy 170 magas állványt építek és a lemezjátszót a közepére rakom, akkor is helyet veszítek, miután hely kell, hogy kinyithassam a tetőt.
Mi lenne, ha építenék egy kihúzható polcot és a lemezjátszót arra tenném? Ez esetben nem veszítenék helyet. Gondoljuk ezt picit tovább: adjunk egy motort a polchoz.
Rendben, de hogyan vezéreljük a polcot?
Mi lenne, ha egy aluminium profilt tennék a polc elejére, és érintő szenzorként használom?
Íme az eredmény:
A jelenlegi vezérlő elektronika egy Arduino UNO-t, egy CNC Shield-et, egy DRV8825-ös léptetőmotor vezérlőt és egy próbapanelen néhány plusz alkatrészt tartalmaz.
Ez nem a végleges megoldás. Azt tervezem, hogy saját elektronikát építek hozzá. A motor vezérlőt is le akarom cserélni egy Trinamic-ra, hogy halkabb legyen a szerkezet.
Az utazó elektronikás táskámban tartok egy AVR tranzisztor tesztert. Ezt itt:
Van vele pár problémám:
A lézervágott akril dobozát nem vágták pontosan, tehát, ha összerakom, a gomb állandóan megnyomott állapotban van.
Az LCD és a háttérvilágítása nincs megfelelően összeragasztva, így szétesik
Nem csak a fenti okokból vettem egy másik modellt, színes kijelzővel. Ezt itt:
Jó sokáig a fiókban hagytem. Nem érdekelt, hogy megépítsem. Karácsony körül végül is összeraktam, és akkor ért a meglepetés:
Oroszt kaptam belőle:
11 év Orosz nyelv tanulás nem volt elég, hogy használni tudjam.
Úgy döntöttem, hogy nyelvet cserélek benne.
Sajnos a menüből nem megy. újra kell fordítanom a programot és feltöltenem.
Elkezdtem kicsit nyomozni. Itt van a project web oldala: https://www.mikrocontroller.net/articles/AVR_Transistortester
A kód nem Arduino alapú, eredetileg linuxon fordították, és sajnos hiányzik egy értelmezhető dokumentáció a fordítási folyamatról (mégha ez nem is túl bonyolult)
Az eredeti panelen nincs ISP csatlakozó, tehát a procinak valahol máshol kell lennie a a feltöltéshez. (nincs Arduino bootloader, tehát az UNO panel magában kevés ehhez).
Tehát az Arduino UNO-t megfejeltem egy USBTiny programozóval.
A lépések:
1. Tegyünk fel pár csomagot az Ubuntura: apt-get install avr-libc avrdude gcc-avr make git
2. Töltsük le a kódot a repóból. git clone https://github.com/svn2github/transistortester
3. Másoljuk át a makefile-t az lcd könyvtárából a defaultba (lehet, hogy nem kell és az eredeti helyén is lefordul) cp transistortester/Software/trunk/ST7735/Makefile transistortester/Software/trunk/default/
4. Menjunk a default könyvtárba cd transistortester/Software/trunk/default
5. Szerkesszük meg a makefile-t, írjuk át benne a programozóra vonatkozó sort: PROGRAMMER=usbtiny
6. Fordítsuk le és töltsük fel: make make upload
A feltöltés után visszaraktam a procit a helyére, úgy néz ki, mostmár működik:
Szép sorban le fogom írni a szavazásra bocsáljtott projectekről, hogy mi micsoda. A házautomatizálás központ után jöjjön a
Bőr (Leather) vizsgáló mikroszkóp és nem a Bőr (Skin) vizsgáló mikroszkóp.
Ez a project a feleségemtől jött.
Van egy speciális mikroszkóp a piacon, aminek a tárgyasztala fűthető. Ez régi tárgyak restaurálás előtti vizsgálatához használható. Esetünkben bőrtárgyakról beszélünk, de másra is használható.
Az a cél, hogy meghatározzuk azt a pontos hőmérsékletet amikor bizonyos változások végbemennek a mintában.
Ez egy időigényes feladat és a jelenleg használt eszköz elég öreg, valamint korlátos a használhatósága.
Úgy döntöttem, hogy tervezek és építek egy újat.
"Ha az egyetlen szerszámod egy kalapács, akkor hajlamos vagy minden problémát szögnek nézni."
Tehát építsünk egy 3D nyomtatót!!!
A terv a következő:
Hardver (nagyrészt):
Építek egy fűtött platformot, amit egy Marlin firmware-el ellátott Arduino Mega-ról fogok vezérelni, a Marlin PID vezérlését használva, külső MOSFET-tel és a szokásos 100k-s NTC-vel mérve (aktuálisan Anettka eredeti MK8 fejéből szedtem ki)
Változtatható intenzitású világítás alulról (a Marlin doboz világítása)
Z tengely menetes szárral, Nema 17-es léptetőmotorral, DRV8825-ös vezérlővel, végálláskapcsolókkal. Erre felszerelve egy mikroszkópkamera. A tengely mozgása vezérli a fókuszt
A kamera és az Arduino egy PC-re kötve USB-n keresztül
Szoftver:
A következőt tervezem C#-ban megírni:
A fűtés vezérlése gcode-al, a megfelelő fűtési görbe elérése érdekében (A PID hangolása is közrejátszik)
A kamera képének rögzítése az időbélyeggel és a hőmérséklettel együtt
Az értékek (idő, hőmérséklet) beágyazása a kamera képébe
A Z tengely manuális vezérlése a gépről.
Később:
Autofókusz a kamera képe alapján, konvoluciós mátrix és hasonló "computer vision" vuduk felhasználásával.
A video és kamera kezeléshez az aforge.net könyvtárat tervezem használni, amit már korábban is használtam.
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.
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:
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.
A történet nagyjából két éve kezdődődik.
Ahogy a fiam egyre nagyobb lesz (most 8 éves), azon gondolkozom, hogyan lehetne elektronikát, programozást, vagy mindkettőt tanítani neki. Ahogy körülnéztem megláttam valamit a Kickstarteren amit LightUp-nak hívnak.
Azonnal beleugrottam, remélve, hogy 2013 karácsonyára kezembe kaphatom a készletet.
Ez nem történt meg. Hosszú várakozás után tavaly ősszel végre a kezembe kaptam. Így 2014-es karácsonyi ajándék lett belőle.
A fiam el kezdett játszani az elektronikai részével, de a mikrovezérlő nem került a látókörébe. Elérte azt a pontot, hogy minden feladatot megcsinált ami az iOS app-ban benne volt (ez sajnos nem túl sok), ezek után megpróbáltam beüzemelni a mikrovezérlőt.
Ez kb. két hónapja történt és egy masszív bukás lett belőle. Két bajom volt a cuccal. Az egyik elméleti. Nem hiszem, hogy a legjobb tanuló programozási nyelv egy 8 évesnek a C++, mégha egy olyan egyszerüsített verzióról is van szó, mint az Arduino-é. A második a meghajtó program.
A LightUp szoros partnerséget ápol a codebender-rel, hogy a kithez fejlesztőkörnyezetet nyújtson. A Codebender semmi más mint egy online Arduino IDE. Ők adnak egy meghajtó készletet ami kb. minden létező Arduino kompatibilis eszközhöz tartalmaz meghajtót. De ez a csomag nem működik azzal a LightUp-es vezérlővel ami az asztalomon van.
Ezen a ponton félreraktam az egészet.
Egy pár napja láttam, hogy a fiam újra el kezdett játszani a készlettel. Ez egy jó indikátor volt számomra, hogy újra némi munkát rakjak a dolog összerakásába.Felmentem a codebender oldalára, letöltöttem a meghajtót, feltelepítettem, és az eredmény ugyanaz lett mint két hónapja:
Ezúttal nem álltam meg itt:
Megnézetm az eszközazonosítót.
Kicsomagoltam a LightUp "meghajtót" (ez csak egy inf és egy cat fájl) a Codebender telepítőjéből (7-Zip a legjubb barátom).
Siker!
Végül felmentem a CodeBender oldalára, hogy kipróbáljam. Amikor elindítottam az IDE-t a LightUp-hoz, a következő LED villogtató progi jött fel:
Egyszerűen csak letöltöttem az eszközbe és elkezdett működni:
Tanulság:
Amit a LightUp-ról látok: Ez egy befejezetlen valami. A jó kezdés után, elvesztették a lendületüket. Az ötlet, hogy a kamerával lehet ellenőrizni, hogy egy áramkör jól működik-e, remek, de nincs semmi egyebük. A nagymennyiségű példaáramkör és egy gyerekbarát fejlesztőkörnyezet nagyon hiányzik.
Ezen túl, azt látom, hogy tonnányi sokkal jobb kit érhető el a piacon (pl. a littlebits), ami gyerekbarát és adja a továbbfejlődés lehetőségét. Ez nem.
Újabb találkozás az Arduino IDE-vel. A téma nem változott. A Marlin firmware.
Az IDE újra bebizonyította hihetetlen használhatóságát. És ha nekem több fájlom van mint ami egy képernyőre kifér?
3D Printer Marlin firmaware egy 1920x1200-as monitoron (részlet):
Szeretnék megnyitni valamit! Igen, jól látod, ott let sőt lejebb!
Az IDE-ről alkotott véleményem Erich Styger tökéletesen megfogalmazza itt:
"Maybe it is just me: I respect the ‘Arduino way of programming’, but it is just not the way I think development should be done. I need full control of the hardware which includes deep inspection (debugging) of the application. Because in my experience the hard problems (and there are many!) of embedded development can only be solved with good debugging tools."