Kollox beda bl-awtur jixtri apparat interessanti fis-suq sekondarju - Smart Response XE (
Dawn l-apparati twaqqfu bosta snin ilu, u dak l-iskejjel mixtrija għal $100-$200 kull wieħed issa qed jitfaċċa fuq eBay għal $10 jew inqas. Il-ħardwer hemm huwa adattat ħafna għal esperimenti geeky:
- 60 keyboard
- wiri b'riżoluzzjoni ta '384 × 136, 2 bits għal kull pixel - simili għal BC, CGA, iżda 4 mhux kuluri, iżda gradazzjonijiet ta' luminożità
- mikrokontrollur ATmega128RFA1 (memorja flash 128 kB, ROM 4 kB, RAM 16 kB, transceiver 802.15.4)
- esterna (b'relazzjoni mal-mikrokontrollur, mhux l-apparat kollu) 1 megabit (128 kilobyte) memorja flash b'interface SPI
- kompartiment għal 4 elementi AAA.
Mill-isem tal-mikrokontrollur huwa ċar li jappartjeni għall-familja AVR, li jfisser li tagħmel l-apparat kompatibbli ma 'Arduino huwa kompitu aktar minn trivjali...
Mill-aħbarijiet fuq
Iżda l-awtur huwa aktar interessat fl-opportunità li ma jilgħabx fuq l-apparat, iżda li jistudja:
- memorja flash b'interface SPI tas-serje
- bootloaders għall-AVR
- standard 802.15.4
L-awtur beda bil-miktub
Dan huwa biżżejjed biex ittella 'l-Arduino bootloader, iżda mhux l-iskeċċ - il-port tas-serje mhuwiex konness hemm, għalhekk xorta ma tistax tagħmel mingħajr ma tiftaħ il-każ. Ukoll, il-linji TX0 u RX0 tal-ewwel port tas-serje huma kkombinati mal-linji tal-votazzjoni tal-matriċi tat-tastiera, jiġifieri dawk li jivvutaw it-tasti tal-funzjoni fuq il-ġnub tal-wiri. Imma x'tista 'tagħmel - l-awtur bena dan:
Huwa ġab il-linji JTAG hemm, u issa m'hemmx bżonn li tiftaħ il-kompartiment tal-batterija. U sabiex ikunu jistgħu jittellgħu abbozzi, qabbad iż-żewġ portijiet tas-serje ma 'l-istess konnettur, u żidt ukoll swiċċ, għax bil-batteriji installati, huwa fiżikament impossibbli li titfi l-apparat b'xi mod ieħor.
Ħadet żmien mhux ħażin biex taħdem b'ħadida tal-issaldjar, sikkina ta 'utilità u pistola tal-kolla. B'mod ġenerali, it-tlugħ ta' skeċċijiet "fuq l-arja" huwa ħafna aktar konvenjenti; għandna bżonn urġenti li nivvintaw xi ħaġa għal dan.
Arduino IDE juża l-programm biex ittella skeċċijiet
Wara li pprova modi differenti biex tegħleb din il-problema, l-awtur ħareġ b'dan li ġej. L-apparat għandu memorja flash ta '128 KB b'interface SPI - nirċievu data fuq il-wajers (ftakar li l-awtur diġà għandu apparat wieħed b'konnettur fuq il-ġenb), uża din il-memorja bħala buffer, u tibgħat id-data fuq ir-radju kanal għal apparat ieħor. Hello minn Cybiko.
Wara li kitbet il-kodiċi biex taħdem mal-kanal tar-radju, kif ukoll it-tipa, il-loader sar itwal minn 4 kilobytes. Għalhekk, il-valur HFUSE kellu jinbidel minn 0xDA għal 0xD8. Issa l-bootloader jista 'jkun twil sa 8 kilobytes, u l-indirizz tal-bidu issa huwa 0x1E000. Dan huwa rifless fil-Makefile, iżda għandu jitqies ukoll meta timla
It-transceiver 802.15.4 fl-ATmega128RFA1 huwa oriġinarjament iddisinjat biex jaħdem bl-użu tal-protokoll
Irriżulta li l-kanali 15 u 26 huma l-inqas suxxettibbli għall-interferenza mill-WiFi. L-awtur għażel it-tieni wieħed minnhom. Ċaħda ta 'responsabbiltà: it-traduttur ma jafx jekk huwiex permess li jissimplifika ZigBee b'dan il-mod. Forsi għandna nagħmlu ftit aktar programmazzjoni u nimplimentawha kompletament?
Fuq l-ewwel apparat, huwa meħtieġ li tiġi implimentata magna ta 'stat finit li tittrasmetti data permezz tal-protokoll STK500. Fil-biċċa l-kbira, il-messaġġi trażmessi u riċevuti huma awtosuffiċjenti, iżda xi wħud huma marbuta ma 'dawk li għaddew mill-kanal qabel. Tingħata deskrizzjoni tad-djalogu
Komponent importanti ta' dan id-djalogu huwa t-trażmissjoni ta' pakketti maħsuba biex jinkitbu fil-memorja flash tal-apparat tad-destinazzjoni. Għal mikrokontrolluri sempliċi tal-familja AVR, id-daqs tal-paġna huwa 128 bytes, iżda għall-ATmega128RFA1 huwa 256. U għall-memorja flash li hija konnessa permezz tal-protokoll SPI, huwa l-istess. Il-programm fl-ewwel apparat, meta jtella' skeċċ, ma jittrasferihx immedjatament għat-tieni, iżda jikteb f'din il-memorja. Meta l-Arduino IDE jiċċekkja l-korrettezza tad-dħul, jintbagħat dak li kien miktub hemmhekk. Issa rridu nittrasmettu d-data riċevuta permezz tal-kanal tar-radju għat-tieni apparat. Fl-istess ħin, il-bidla minn riċeviment għal trażmissjoni u lura sseħħ pjuttost ta 'spiss. Il-protokoll STK500 huwa indifferenti għad-dewmien, iżda ma jittollerax it-telf tad-dejta (stramba, iżda ntqal hawn fuq li d-dewmien jaffettwa wkoll it-trasferiment tad-dejta). U t-telf waqt it-trasmissjoni bla fili huwa inevitabbli. L-ATmega128RFA1 għandu implimentazzjoni ta 'hardware integrata ta' talbiet ripetuti meta jkun hemm dubji dwar il-korrettezza tat-trasferiment, iżda l-awtur iddeċieda li jimplimenta l-istess fis-softwer huwa stess. Huwa żviluppa protokoll li fih ħafna aktar dejta tiċċirkola b'mod mill-ieħor.
Mhuwiex perfett, iżda jaħdem. Il-paġna ta’ 256 byte hija maqsuma f’erba’ segmenti, li kull wieħed minnhom jiġi trażmess fl-ajru bħala pakkett. Pakkett jista 'jżomm sa 125 bytes ta' data flimkien ma 'byte wieħed għat-tul u żewġ bytes għal CRC. Allura frammenti 64 bytes twal flimkien man-numri tal-paġna u tas-segmenti (minn 0 sa 3) jitqiegħdu hemmhekk. L-apparat li jirċievi għandu varjabbli li jippermettilu jsegwi kemm ġew riċevuti segmenti, u meta jaslu l-erbgħa kollha, l-apparat li jibgħat jirċievi konferma li l-paġna kollha ġiet riċevuta. L-ebda konferma (CRC ma qabbilx) - ibgħat mill-ġdid il-paġna kollha. Il-veloċità hija saħansitra akbar minn meta tittrasmetti permezz tal-kejbil. Ara:
Iżda b'mod ġenerali, ikun meħtieġ li jiġi pprovdut mod konvenjenti biex tikkonnettja l-kejbil mal-apparati għat-tlugħ ta 'skeċċi u permezz tiegħu. Pereżempju, poġġi ġewwa tali konvertitur tal-interface fuq il-CP2102, bħal fir-ritratt, u waħħalha mal-bord sabiex tkun tista 'tiflaħ il-forza meta tikkonnettja u skonnettja l-kejbil Mikro USB.
Għandu wkoll stabilizzatur ta '3,3 volts (u kif tużah f'apparat b'provvista ta' enerġija ta '6 volts - jekk biss ikollu l-istess stabilizzatur, u tista' żżid żewġ dajowds biex tagħżel awtomatikament liema minnhom se jħaddem l-apparat) . It-tliet LEDs għandhom ikunu mhux issaldjati mill-bord tal-konvertitur tal-interface, inkella se jgħabbu l-batteriji addizzjonalment meta joperaw fuqhom, u jinterferixxu wkoll mal-votazzjoni tat-tastiera u jaħdmu b'memorja flash b'interface SPI.
Li ssegwi għan irriżulta li kien saħansitra aktar interessanti milli jintlaħaq (u m'għandekx bżonn dik iċ-ċajta dwar ix-xarabank). L-awtur tgħallem ħafna dwar bootloaders AVR, memorja flash SPI, protokoll STK500 u standard 802.15.4.
Il-kodiċi l-ieħor kollu minbarra l-librerija deskritta hawn fuq huwa -
Sors: www.habr.com