Viss sÄkÄs ar to, ka autors otrreizÄjÄ tirgÅ« iegÄdÄjÄs interesantu ierÄ«ci - Smart Response XE (
Å Ä«s ierÄ«ces tika pÄrtrauktas pirms vairÄkiem gadiem, un skolas, kuras katra iegÄdÄjÄs par 100ā200 USD, tagad tiek parÄdÄ«tas eBay par USD 10 vai mazÄk. Tur esoÅ”Ä aparatÅ«ra ir ļoti piemÄrota geeky eksperimentiem:
- 60 taustiÅu tastatÅ«ra
- displejs ar izŔķirtspÄju 384Ć136, 2 biti uz pikseļu - lÄ«dzÄ«gi kÄ BC, CGA, bet 4 nevis krÄsas, bet spilgtuma gradÄcijas
- mikrokontrolleris ATmega128RFA1 (128 kB zibatmiÅa, 4 kB ROM, 16 kB RAM, 802.15.4 raiduztvÄrÄjs)
- ÄrÄjÄ (attiecÄ«bÄ pret mikrokontrolleri, nevis visu ierÄ«ci) 1 megabita (128 kilobaitu) zibatmiÅa ar SPI interfeisu
- nodalījums 4 AAA elementiem.
PÄc mikrokontrollera nosaukuma ir skaidrs, ka tas pieder AVR saimei, kas nozÄ«mÄ, ka ierÄ«ces padarÄ«Å”ana ar Arduino saderÄ«gu ir vairÄk nekÄ triviÄls uzdevums...
No ziÅÄm tÄlÄk
Bet autoru vairÄk interesÄ iespÄja nevis spÄlÄt uz ierÄ«ces, bet gan mÄcÄ«ties:
- zibatmiÅa ar seriÄlo SPI interfeisu
- bootloaders priekÅ” AVR
- standarts 802.15.4
Autors sÄka ar rakstÄ«Å”anu
Ar to pietiek, lai augÅ”upielÄdÄtu Arduino sÄknÄÅ”anas ielÄdÄtÄju, bet ne skici - seriÄlais ports tur nav savienots, tÄpÄc joprojÄm nevarat iztikt bez korpusa atvÄrÅ”anas. ArÄ« pirmÄ seriÄlÄ porta TX0 un RX0 lÄ«nijas ir apvienotas ar tastatÅ«ras matricas aptauju lÄ«nijÄm, proti, tÄm, kas aptaujÄ funkciju taustiÅus displeja sÄnos. Bet ko jÅ«s varat darÄ«t - autors izveidoja Å”o:
ViÅÅ” tur atveda JTAG lÄ«nijas, un tagad nav nepiecieÅ”ams atvÄrt akumulatora nodalÄ«jumu. Un, lai skices varÄtu augÅ”upielÄdÄt, abus seriÄlos portus pieslÄdzu vienam savienotÄjam, pievienojot arÄ« slÄdzi, jo ar ieliktÄm baterijÄm fiziski nav iespÄjams citÄdi izslÄgt ierÄ«ci.
PagÄja diezgan ilgs laiks, lai strÄdÄtu ar lodÄmuru, nazi un lÄ«mes pistoli. KopumÄ skiÄu augÅ”upielÄde āpa gaisuā ir daudz ÄrtÄka, mums steidzami kaut kas tam jÄizgudro.
Arduino IDE izmanto programmu, lai augÅ”upielÄdÄtu skices
IzmÄÄ£inÄjis dažÄdus veidus, kÄ pÄrvarÄt Å”o problÄmu, autors nÄca klajÄ ar sekojoÅ”o. IerÄ«cei ir 128 KB zibatmiÅa ar SPI interfeisu - saÅemam datus pa vadiem (atceramies, ka autoram jau ir viena ierÄ«ce ar savienotÄju sÄnos), izmantojam Å”o atmiÅu kÄ buferi, un datus nosÅ«tÄm pa radio kanÄlu uz citu ierÄ«ci. Sveiki no Cybiko.
PÄc koda rakstÄ«Å”anas darbam ar radio kanÄlu, kÄ arÄ« fontu, ielÄdÄtÄjs kļuva garÄks par 4 kilobaitiem. TÄpÄc HFUSE vÄrtÄ«ba bija jÄmaina no 0xDA uz 0xD8. Tagad sÄknÄÅ”anas ielÄdÄtÄjs var bÅ«t lÄ«dz 8 kilobaitiem garÅ”, un sÄkuma adrese tagad ir 0x1E000. Tas ir atspoguļots Makefile, taÄu tas jÄÅem vÄrÄ arÄ« aizpildot
802.15.4 raiduztvÄrÄjs ATmega128RFA1 sÄkotnÄji ir paredzÄts darbam, izmantojot protokolu
IzrÄdÄ«jÄs, ka kanÄli 15 un 26 ir vismazÄk uzÅÄmÄ«gi pret traucÄjumiem no WiFi. Autors izvÄlÄjÄs otro no tiem. Atruna: tulkotÄjs nezina, vai ir atļauts Å”Ädi vienkÄrÅ”ot ZigBee. VarbÅ«t vajadzÄtu nedaudz vairÄk programmÄt un ieviest to pilnÄ«bÄ?
PirmajÄ ierÄ«cÄ ir jÄievieÅ” ierobežota stÄvokļa maŔīna, kas pÄrsÅ«ta datus, izmantojot STK500 protokolu. LielÄkoties pÄrsÅ«tÄ«tie un saÅemtie ziÅojumi ir paÅ”pietiekami, bet daži ir saistÄ«ti ar tiem, kas tika nosÅ«tÄ«ti caur kanÄlu agrÄk. Tiek sniegts dialoga apraksts
SvarÄ«ga Ŕī dialoga sastÄvdaļa ir pakeÅ”u pÄrsÅ«tÄ«Å”ana, kas paredzÄtas ierakstÄ«Å”anai mÄrÄ·a ierÄ«ces zibatmiÅÄ. VienkÄrÅ”iem AVR saimes mikrokontrolleriem lapas izmÄrs ir 128 baiti, bet ATmega128RFA1 ā 256. Un zibatmiÅai, kas ir pieslÄgta caur SPI protokolu, tas pats. Programma pirmajÄ ierÄ«cÄ, augÅ”upielÄdÄjot skici, nekavÄjoties nepÄrsÅ«ta to uz otro, bet gan ieraksta to Å”ajÄ atmiÅÄ. Kad Arduino IDE pÄrbauda ieraksta pareizÄ«bu, tiek nosÅ«tÄ«ts tur rakstÄ«tais. Tagad mums ir jÄpÄrsÅ«ta saÅemtie dati pa radio kanÄlu uz otro ierÄ«ci. TajÄ paÅ”Ä laikÄ pÄrslÄgÅ”anÄs no saÅemÅ”anas uz pÄrraidi un atpakaļ notiek diezgan bieži. STK500 protokols ir vienaldzÄ«gs pret aizkavi, taÄu necieÅ” datu zudumu (dÄ«vaini, bet iepriekÅ” tika teikts, ka kavÄÅ”anÄs ietekmÄ arÄ« datu pÄrraidi). Un zaudÄjumi bezvadu pÄrraides laikÄ ir neizbÄgami. ATmega128RFA1 ir iebÅ«vÄta aparatÅ«ras ievieÅ”ana atkÄrtotiem pieprasÄ«jumiem, kad rodas Å”aubas par pÄrsÅ«tÄ«Å”anas pareizÄ«bu, taÄu autors nolÄma to paÅ”u ieviest programmatÅ«rÄ. ViÅÅ” izstrÄdÄja protokolu, kurÄ daudz vairÄk datu plÅ«st vienÄ virzienÄ nekÄ otrÄ.
Tas nav ideÄls, bet tas darbojas. 256 baitu lapa ir sadalÄ«ta Äetros segmentos, no kuriem katrs tiek pÄrraidÄ«ts pa gaisu kÄ pakete. Pakete var saturÄt lÄ«dz 125 baitiem datu plus viens baits garumam un divi baiti CRC. TÄtad tur tiek ievietoti 64 baitus gari fragmenti kopÄ ar lapu un segmentu numuriem (no 0 lÄ«dz 3). SaÅÄmÄjai ierÄ«cei ir mainÄ«gais, kas ļauj izsekot, cik segmentu ir saÅemti, un, kad visi Äetri pienÄk, sÅ«tÄ«tÄja ierÄ«ce saÅem apstiprinÄjumu, ka ir saÅemta visa lapa. Nav apstiprinÄjuma (CRC neatbilda) ā atkÄrtoti nosÅ«tiet visu lapu. Ätrums ir pat lielÄks nekÄ pÄrraidot pa kabeli. SkatÄ«t:
Bet vispÄr bÅ«tu nepiecieÅ”ams nodroÅ”inÄt Ärtu iespÄju savienot kabeli ar ierÄ«cÄm skiÄu augÅ”upielÄdei un caur to. PiemÄram, ievietojiet iekÅ”pusÄ Å”Ädu interfeisa pÄrveidotÄju uz CP2102, kÄ fotoattÄlÄ, un pielÄ«mÄjiet to pie tÄfeles, lai tas varÄtu izturÄt spÄku, pievienojot un atvienojot Micro USB kabeli.
Tam ir arÄ« 3,3 voltu stabilizators (un kÄ to izmantot ierÄ«cÄ ar 6 voltu baroÅ”anas avotu - ja tikai tam ir tÄds pats stabilizators, un jÅ«s varat pievienot divas diodes, lai automÄtiski atlasÄ«tu, kura no tÄm ierÄ«cei tiks darbinÄta) . VisÄm trim gaismas diodÄm jÄbÅ«t atlodÄtÄm no interfeisa pÄrveidotÄja plates, pretÄjÄ gadÄ«jumÄ, darbojoties ar tÄm, tÄs papildus noslogos baterijas, kÄ arÄ« traucÄs tastatÅ«ras aptauju un darbu ar zibatmiÅu ar SPI interfeisu.
Tiekties uz mÄrÄ·i izrÄdÄ«jÄs vÄl interesantÄk nekÄ to sasniegt (un nevajag to joku par autobusu). Autors uzzinÄja daudz par AVR bootloaderiem, SPI zibatmiÅu, STK500 protokolu un 802.15.4 standartu.
Visi pÄrÄjie kodi papildus iepriekÅ” aprakstÄ«tajai bibliotÄkai ir ā
Avots: www.habr.com