Monthly Archives: September 2007

Paypal jau Lietuvoje

Po dešimtmečio laukimo, pati populiariausia atsiskaitymo per internetą sistema jau Lietuvoje. Seniau buvo Western Union čekiai, bet jie užlinko. O paypalas neveikė Lietuvoje- matyt bijojo Lietuviškų hackerių arba mūsų bankų sistema piktybiškai tam priešinosi. Ir štai, nuo šios dienos pradeda veikti paypal atsiskaitymo sistema. Jei norite išbandyti ir man pervesti kelis piniginius vienetus prašom naudotis šiuo mygalu:

Dėkavojam už paramą!

Kalkės arba nereikia piz…inti filtriūkų

Nedidelis lyrinis nukrypimas nuo elektronikos, mikroschemų ir visokių laidelių. Darbe tenka dažnai užsukti į Aikados prekybos saloną (nors pas Vitrą kava skanesnė) ir ten pristatyta visokiausių čiaupų, kranų, maišytuvų ir kitokio santechninio gėrio. Ir pastebėjau, kad pas kai kuriuos kranus nusukti filtriukai (moksliškai- aeratoriai). Klausiu vietinių kame reikalas- sako nieko įpatingo, pavogia klientai. Šiaip tai ten ne parduotuvė, žmonių srautas nėra didelis, bet vistiek mūsų tautiečiai gviešiasi į svetimą turtą. Taigi, kad nereikėtų piz..ti filtriukų, ar šiaip, jei užkalkėjo koks nors arbatinukas (ar tiksliau sakant virdulys) reikia nusipirkti citrinos rūgšties. Tiesa, pagal paskutinė tautinės kalbos komisijos sprendimą ši rūgštis dabar vadinasi “citrinų”. T.y. daugiskaitoje. Nu į dzin, esmės nekeičia. Kaune ir manau daugelyje Lietuvos vietovių geriamas vanduo neįdealus, todėl virduliuose, maišytuvų filtriukuose, skalbimo mašinose ir kituose prietaisuose kaupiasi kalkės.

Va kaip atrodo mano namų filtriukai. Pirmas požymis, kad filtriukai užsikimšo, tai kad vandens srovė netolygi, nebėra to burbuliuotumo.

kalkes

Surenkam visus nedidelius filtriukus ar kitas detales kurios apaugo kalkių nuosedom. Sumetam viską į elektrinį virdulį, inpilam vandens (vundens arba undens – gražiai skamba) ir minėtos citrinų rūgšties. Ir užverdam…

kalkes

Po kelių minučių ir geros dozės smarvės, vanduo pasidaro geltonas, o beveik visos nuosedos ištirpsta. Užtenka arbatinuką praskalauti, o filtriukams net to nereikia.

kalkes

Tas pats galioja ir skalbimo mašinom. Tereikia karta į metus, paleisti skalbimo mašina su “virinimo” programa be skudurų ir su kokiu kilogramu citrinų rūgšties. Viskas idealiai išsivalys. Ir nereikės jokio suknisto Kalgono ar kitos baisios chemijos. Pati citrinų rūgštis yra organinės kilmės ir gražiai gamtoje suyra. O ir šiaip, ji nėra brangi. O už sutaupytus pinigėlius nuo to Kalgono galite nusipirkti ką nors sau malonaus.

Šitas straipsnis yra biški va toks kaip šito teksto fonas. Bet jis visiška teisybė. Ypač apie rūgšties poveikį.

ATMEGA USB 006 (USB+LCD)

Laikas jungti prie USB. Po keletos nesėkmingų bandymų pagaliau susiradau projektėlį kuris veikia. Gal ir kiti projektai veiktų atitinkamai juos pritaikius. Mano “testinė” plokštė yra ganėtinai universali. Kai ją projektavau, aš atsižvelgiau į keletą svetimų projektų ir pajungiau kontrolerio kojeles taip, kad su minimaliai pokyčiais būtų galima pritaikyti svetimo projekto kodą.

AVR USB LCD

Taigis, USB- universal serial bus. Tai ne tik paprastas nuoseklus interfeisas kaip RS232 ar panašūs, bet ir įvairaus lygio protokolų visuma. Dėl to ir vadinasi “universalus”. Dėl šio universalumo, USB nėra labai lengva pritaikyti. USB bibliotekos panaudotos iš http://libusb-win32.sourceforge.net projekto. Šio projekto teisės yra GPL/LGPL. Dar vienas momentas dėl USB- tai pačio įrenginio VIN (vendor identification number)/PIN (poduct identification number). Šie skaičiukai dar vadinami VID/PID pora. Šie skaičiukai nėra laisvai pasirenkami (kad nekiltu chaosas). Pats USB firmware yra panaudotas iš http://www.obdev.at/products/avrusb/index.html.

Kad pratestuoti šį projektą reikia mano testinės plokštelės ir LCD modulio.

Programos archyve yra ir mažytė programa pratestuoti kaip kas veikia. Valdančios programos “source” aš neįdėjau į archyvą, nes kažkodėl mano perkompiliuota programos versija veikė nekorektiškai palyginus su originaliu EXE failu.

20070922.zip.

ATMEGA USB 005 (I2C)

Yra labai daug mikroschemų kurios valdomos per 2 laidų arba I2C grandinę (bussą). I2C tai Philips kūdikis, bet jis naudojamas ir daugybės kitų gamintojų. Pavyzdžiui prie I2C magistralės pajungti beveik visi televizoriaus mazgai. Daugybė navarotnų muzikinių centrų, kompiuterinių kolonėlių taip pat valdomi per I2C (ar panašų) interfeisą. Prie I2C galima jungti nuo paprasčiausio mygtuko ar DTMF imtuvo iki TV tiunerio ar Dolby Digital audio procesoriaus. Pats ATMEL’IS savo ATMEGA procesoriuose turi paruoštas galimybes naudoti I2C interfeisą. Tai taip vadinamas TWI. Mano PCB plokštėje šio protokolo kontaktai stovi prie keturių šviesos diodų, su ~10K pull-up rezistoriais.

FM75

Prie šios vietos mes jungsime I2C temperatūros sensorių. Panaudosim patį populiariausią LM75 arba jo analogą ar kloną. Aš panaudojau mažą PCB plokštelę iš seno plazminio teliko. Ten ji matavo matricos temperatūrą. Ant plokštelės prilituotas FM75 čipukas, keli rezistoriai ir kondikai. FM75 tai Fairchaild gamybos LM75 klonas su išplėstu temperatūros matavimo tikslumu. Originalus LM75 rodos naudoja tik 8 bitus, o štai FM75 turi ir netik pilnai suderinamą su LM75 režimą bet ir du išplėstus režimus. Mano programulka perprogramuoją čipuką į 12 bitų rezoliuciją. Pačioje programoje temperatūros konvertavimas perskaičiuojamas netiksliai- nenorėjau (ir nemokėjau) komplikuoti programos su tikslia matematika. Todėl skaičiukai nėra tikslūs. Rekomenduoju perskaityti LM75 ir FM75 datasheetus. Ir pagalvoti kaip skaičiuoti 1/16 laipsnio ir kai parodyti šias reikšmes dešimtainėje sistemoje. Gal dar pasiskaityti kiek AD7416 mikroschemos aprašymą. Šias mikroschemas kažkada siuntinėjo Analog Devices kaip pavyzdžius.

FM75 ATMEGA16

Programoje panaudotas modulis i2c.c iš interneto. Čia pasinaudojau USB Tenki projektu. Ten buvo labai paprasta ištraukti visas I2C procedūras į nepriklausomą programą. Iš ten pat paimti ir lm75.c failiukai. LCD modulio paprogramės panaudotos iš ankstesnio posto. Jungiant savo LM75 mikroschemą prie I2C protokolo nereikia užmiršti pasitikrinti įrenginio adresą. Programos tekstuose aš pažymėjau “pasitikrinti” adreso vietas. Adresas susideda iš dviejų skaičių- bazinio adreso kurį nustatė gamintojas ir kelių bitų, kuriuos gali pakeisti vartotojas paprasčiausiai atitinkamai pajungdamas mikroschemos kojytes. Taip galima pajungti kelias vienodas mikroschemas ant to pačio laido ir matuoti temperatūrą keliose vietose.

Programa: 20070919.zip.

Su šiais geležėliais jau galima konstruoti kokį termostatą. Tik nepulkite programuoti ATMEGA termostato darbui, nes LM75/FM75 mikroschemos jau turi savyje sukonstruotą termostatą. Užtenka teisingai užprogramuoti mikroschemą ir jos išėjimo kojytė gali valdyti šildytuvą ar šaldytuvą. Lai ATMEGA atlieka tik kontrolės ir indikacijos veiksmus.

ATMEGA USB 004 (ADC)

ATMEGA16 turi savyje ADC (analog digital converter, analoginio signalo keitiklį į skaitmeninį). Su šiuo prietaisu galima išmatuoti kokio nors daviklio ar maitinimo šaltinio įtampą. ATMEGA16 turi 8 kojeles prie kurių galima prijungti skirtingus analoginius signalūs. Pats keitiklis nėra labai greitas, bet pilnai panaudojamas įvairiuose prietaisuose. Labai rekomenduoju perskaityti ATMEGOS datasheetą, nes ADC keitiklis turi daugybę įvairiausių nustatymo parametrų. Kaip pasirinkit atraminę įtampą- išorinis šaltinis, Vcc ar integruotas į kontrolerį atraminės įtampos šaltinis. Taip pat galima pasirinkti įvairiausius stiprinimo koeficientus ar net deferencialinis įėjimas.

Programa labai paprasta. Ji tiktai nuskaito ADC parodymus ir parodo rezultatą LCD modulio ekrane. Pakeitus kelias užkomentuotas eilutes galima nuskaiyti visų ADC kanalų reikšmes.

ATMEGA ADC

“Stepas” tai nieko nereiškiantis žodelis kiles nuo angliško žodelio “step”. Ten idikuojama paprasčiausio vidinio ciklo kintamojo reikšmė. Kiek pakeitus programos kodą ten indikuojasi ADC kanalo numeris. Ir beto, besikaitaliojantys skaičiukai dažnai parodo, kad programa dar veikia. Tai svarbu, kadangi LCD modulis gali rodyti kokius nors senus parodymus or procesorius buti smigęs. 🙂

Beja, kad apsaugoti programą nuo užstrigimo verta susidomėti “watchdog” taimerio panaudojimu. Šioje programoje jis nepanaudotas.

Programa: 20070918.zip.

ATMEGA USB 003 (LCD)

Iš to mirksėjimo nieko gero. Dažnai reikia parodyti kokius nors sudėtingesnius parametrus. Tam lengviausiai naudotis standartinius LCD modulius. Jų galima prisilūpinėti iš visokių senų aparatų, nusipirkti iš manęs 🙂 ar permokėjus didelius pinigus nusipirkti parduotuvėje.
Yra visokių LCD modulių, bet pat papuliairausias yra alfanumerinis modulis su HD44780 kontroleriu. Yra visokiausių LCD modulių modifikacijų. Aš savo eksperimentams panaudojau patį populiariausią- 2×16 simbolių.
Modulis paprastai turi 14 kojų, jei su pašvietimu- tai 16. Tiek daug kojų naudojama kai modulis jungiamas 8 bitų režimu. Žymiai racionaliau jungti naudojant tik 4 bitus- baitas siunciamas per du ciklus. Tačiau prie esamu mikrokontrolerių greičių, nesijaučia jokio suletėjimo. Modulis turi “self-test”- užtenka į jį paduoti maitinimą ir turi pasimatyti juodi kvadratėliai viršutinėje eilutėje. Jei nesimato, kartais reikia pareguliuoti kontrastą su vieninteliu kintamu rezistorium ant PCB.

LCD AVR

LCD valdymui panaudotas modulis iš interneto. Po keletos nesekmingų paieškų, apsistojau ties Peter Fleury programa. Ji leidžia LCD valdymo laidelius jungti prie bet kurių portų ir nėra problemų. Kitos LCD programos turėjo apribojimus. LCD modulio pajungimas aprašomas lcd.h faile. Prie lcd.c failiuko lysti nereikia. Ten galima tik pasiskaityti kokios procedūros ir funkcijos sukurtos.

Programa demostruojanti aparato veikimą yra faile test_lcd.c. Ten dar parašytos mygtuko detektavimo procedūros kurios nėra labai tobulos. Mygtukui naudojamas jumperis kuris schemoje pavadintas “firmware” 🙂

LCD AVR

Beja, jei maitinate šia schemą per USB laidą, nekreipkite dėmesio į windozės priekaištus dėl nežinomo USB įrenginio. Tuo užsiimsime žymiai vėliau. Neužmirškit, kad aš rašydamas šitą bloga pats mokinuosi apie šiuos mikrokontrolerius. Todėl čia visur gali būti kvailų klaidų.

Programos tekstas ir hex failas nekantriems: 20070917.zip.

ATMEGA USB 002 (LED mirksiukas)

Jei jau surinkom schemą, reikia ją pratestuoti. O kad pratestuoti, reikia parašyti kažkokią programą. O kad prašyti programą reikalingas kažkoks softas. Jei neturit softo, tai reikia iš interneto nusikrauti WinAVR paketą: http://winavr.sourceforge.net/
Dar gerai būtų, bet neprivaloma, nusikrauti “Programmer’s Notepad 2”. Tai kiek palengvins darbą.

Pirmoji programa tai paprasčiausias mirksiukas- paeiliui uždeginėjam šviesos diodus ant plokštės. Tai pratestuosim ar veikia procesoriukas ir ar diodai šviečia. Nieko čia stebūklingo ar svarbaus nėra. Nuotrauka daryta su ilgu išlaikymu, todėl atrodo, kad visi diodai dega. Iš tikro, pastoviai dega tik vienas diodas- tas kuris indikuoja maitinimo pajungimą. Kiti diodai skirtingu greičiu mirksi.

mirksiukas
(baisi plokštė. Mano printeriui šakės ir todėl gaunasi “kiauri” takeliai)

Programos archyvas: 20070916.zip

Programėlė labai paprasta- nustatom naudojamas kojeles išėjimui, paleidžiam amžina ciklą ir ciklo duomenis pumpuojam į portus. Realiai tai daryti nereikėtu- nes dabar programa pumpuoja visus bitus, o reikia keisti tik tuos bitus kurių kojeles norime valdyti. Bet čia programa tik ištestuoti ar veikia konstrukcija.

Keletas komentarų. Mano archyvo makefile jums garantuotai neveiks “program” užduočiai. Čia todėl, kad mano LPT1 portas nebegyvas ir aš naudoju papildoma PCI plokštę su papildomom LPT jungtim. Todėl reikia persirašyti “program” sekciją- ten kur parašyta:

program: $(PRG).hex
avreal32 -pBC00 -ab -e +$(AVREALMCU)
avreal32 -pBC00 +$(AVREALMCU) -ab -w -c $(PRG).hex -v

reikia pakeisti -pBC00 į jūsų naudojamo porto parametrus. Daugiau informacijos paleidus “avreal32 -h”. O jei naudojat kitą programatorių, tai šias eilutes reikia pakeisti iš esmės. Arba nenaudoti “make program” funkcijos.

Visiškai žaliam žmogui dar vienas paaiškinimas kurio niekas nerašo, nes tipo “visi tai žino”. Programa kompiliuojasi su komanda “make all” ar iš to Notepado, Tools->[WinAVR] Make All
Kompiuteris turi prirašyti visokių ten užrašų, kuriu dauguma nieko blogo nesako, nes make failas yra universalus. Mums esmė yra pačiam gale: > Process Exit Code: 0 ir kad niekur nebuvo ERROR.
Komanda “make clean” arba Tools->[WinAVR] Make Clean išvalo visus sukompiliuotus ir paruoštus failus. Todėl jei ką nors pakeitėt programoje, neužmirškit paleidinėti “clean”.

Nu ir paskutinė komanda ar užduotis: make program arba Tools->[WinAVR] Program užprogramuoja programą į mikrokontrolerį.

Truputis informacijos apie “security” bitus. Pas Atmelį tie bitai kiek miglotai paaiškinti, o ir daugelis interneto puslapių tai aiškina kiek kitaip (dažnai teisingai, bet dėl terminalogijos subtilybių būna sunku suprasti). Labai lengva kaitaliojant bitus “užrakinti” mikroschemą taip, kad ji nebeatsiliepinės į serial/jtag programavimą. O tada jau bus problemos, nes cipuką teks lupti lauk. Mano čipukas išluptas iš kažkokio prietaiso ir jo bitai atrodo taip:
Fuses
OSCCAL = AD, AB, A7, A8
BODLEVEL = 0
BODEN = 1
SUT = 2
CKSEL = F
BLB1 = 3
BLB0 = 3
OCDEN = 1
JTAGEN = 1
CKOPT = 1
EESAVE = 0
BOOTSZ = 3
BOOTRST = 1

Aš ju neliečiu, nes kolkas viskas veikia. 🙂 O šiaip rekomenduoju pradžiai pasiskaityti gamintojo datasheetą. Nes gamintojas stengiasi kiek galima mažiau klaidų rašyti savo dokumentacijos. Beja, tie bitai skiriasi pas skirtingus MCU. Todėl kartais perkeliant programą iš vienos šeimynos į kitą, tenka pasukti galvą.

Beja, archyve yra ir HEX failas skirtas mano plokštei. Todėl galima pratestuoti geležius be jokio kompiliavimo.

ATMEGA USB 001 (schema)

Kaip jau minėjau, prisirankiojau aš keliolika ATMEL ATMEGA16 procesoriukų. Nutariau pasinagrinėti šio mikrokontrolerio darbą ir ką nors sukonstruoti. Kadangi šis mikrokontroleris turi kiek daugiau atminties, nutariau surankioti iš interneto C kalbos paprogrames ir pritaikyti savo eksperimentams. Visos programos įdėtos į šiuos interneto puslapius bus ištestuotos ir veikiančios. Bandysim ištaisyti visas galimas klaidas- pvz. vienoje USB programoje ir draiveriuose buvo supainioti vieno baito MSB ir LSB. Tai kainavo man dvi dienas darbo 🙂 kol suradau svetimą klaidą. Kas mėgino programuoti, žino kaip sunku isijausti į svetimą programą.

AVR USB

Kadangi internete prisirankiojau visokių projektų, teko pasidaryti specialią plokštę. Jis šiek tiek universali- todėl daugumas skirtingu projektų veikia ant tos pačios hardwarės.
Projektuose bus nagrinėjama: ADC, USB komunikacija, I2C, LCD modulių pajungimas, IR imtuvas (distancinis valdymas) ir t.t.
Šiam multi projektui reikia įsigyti ATMELio ATMEGA16 (gal ir tiks ir kitos, bet aš naudosiu 16 nes daug turiu), 12MHz kvarcą, USB B lizdą (iš usb imamas ir maitinimas), keletos rezistorių ir kondensatorių ir keletos šviesos diodų ir vieno kintamo resitoriaus. Taip pat reikės kištuko programatoriui ir LCD moduliui (nors modulį galima prilituoti laideliais).
PCB plokštelė padaryta ant vienpusio folguoto tekstolito, todėl PCB lengva pasidaryti namuose. Mano lazerinis printeris višai nupušo, todėl aš stengiuosi daryti plokšteles su kiek galima storesniais takeliais. Plokštė reikalauja 8 laidelių (airwires).
LCD modulis- pats paprasčiausias 2×16 simbolių alphanumerinis indikatorius su populiariausiu HD44780 kontroleriu.

“Aparato” schema:
AVR USB
(spauskit ant paveiksliuko kad pažiūrėti smulkiau)

Spausdintos plokštės eskizas:
AVR USB

Schema ir PCB Eagle formate .

MCU programuojamas su Altera ByteBlaster MV programatorium, su AVREAL programa. Beja, turiu pranešti, kad eksperimentuodamas sudeginau savo kompiuterio motinos LPT1 portą ir dabar naudoju papildomos kortos LPT adapterius.

avreal/WIN32 - AVR controllers LPT programmer by Redchuk Alexandr
v1.25rev5 (Jan 15 2007 20:02:38) http://www.ln.com.ua/~real/avreal
bug-reports, suggestions and so on mail to avreal@real.kiev.ua

Todėl aš kiek pakeičiau “make” failą. Tiksliau jo “programavimo” dalį. Pasikoreguokite pagal savo turimą programatorių arba nenaudokit “make program” komandos.

2012.08.05
Ši PCB ir kogero schema paseno. Nuo šios datos naudojama nauja versija. This PCB is absolete, please check new one in this web blog entry.

DVB-T

Nužiūrėjau aš radiocool.lt puslapiukuose, kad galima žiūrėti su kompu Lietuvišką DVB-T televiziją, tai ir nutariau išbandyti. Minėtame puslapyje išsamiai parašyta, kaip suinstaliuoti tą programą ir kaip ten konfiguruoti. Aišku, yra ir grėblys. Pirmiausia, kai nusikraunam tą programą, reikia eiti į “filters” direktoriją ir paleisti BAT failiuką, kad susiregistruotų tie filtrai. Ir dar, jei programa perkeliama į kitą vietą, filtrus reikia perregistruoti. Kitas “grėblys”, tai kad ne pas kiekvieną žmogelį yra suinstaliuotas PowerDVD7 grojikas, todėl ir minėtų kodekų savo kompe nerasit. Aš pradžiai pabandžiau ffdshow (su h.264 palaikymu), bet jis žiauriai striginėjo. Tada panaudojau kodeką iš Nero video playerio. Jis jau geriau rodė, bet irgi laikas nuo laiko kompas strigdavo. Tada nuėjau į internetą, į DVB (tinka ir satelitų megėjų) puslapius ir ten nusikroviau warezinį kodeką: CoreAVC Professional 1.5.0.0. Šitas bent jau neužlaužia kompo.

Panaudota programa AltDVB (rumūniška), o geležis tai Leadtek WinFast DTV1000T (grynai skaitmeninis, ne toks krūts kaip pas radiocool). 🙂

Programos interfeisas:
DVB-T
(paspauskit ant vaizdelio didesniam paveikslėliui).

Matosi 10 “free” kanalų (2 ar 3 iš jų tik testinė lentelė) ir 10 mokamų, koduotų kanalų.
Kanalų kokybė gera. Tačiau, aš gaudau signalą su kambarine antena, todėl dažnai dingsta garsas ir vaizdelis pabyra kvadratėliais. Va šita ponička kokybiškai matosi…
DVB-T

O čia jau vaizdelis pabyrėjo kvadratėliais…

DVB-T

Čia du kadrai jau iš įrašyto transport stream. Jį rodo VLC playeris ir dar kažkoks free grojikas. Paspaudus ant paveikslėlių, nusikraus pilnas, nekompresuotas kadras. Deja, vieno “kadro” svoris yra nepilnas megabaitas, todėl labai jau neterorizuokit mano serverį.

DVB-TDVB-T
(Spausti ant kadriuko, kad pamatyti visą kadrą).

Manau, reikia traukti anteną ant stogo…