Hemî bi kirîna nivîskarê amûrek balkêş li ser bazara duyemîn dest pê kir - Smart Response XE (
Van amûran çend sal berê hatin sekinandin, û dibistanên ku her yek bi $100-$200 kirîn niha li ser eBay bi $10 an kêmtir derdikeve. Hardware li wir ji bo ceribandinên geeky pir maqûl e:
- Klavyeya 60
- dîmendera bi çareseriya 384×136, 2 bit per pixel - dişibihe BC, CGA, lê 4 ne reng, lê dereceyên ronahiyê
- mîkrokontroller ATmega128RFA1 (128 kB bîra flash, 4 kB ROM, 16 kB RAM, 802.15.4 transceiver)
- derve (li gorî mîkrokontrolerê, ne bi tevahî cîhazê) 1 megabit (128 kilobyte) bîra flash bi navgîniya SPI
- beşa ji bo 4 hêmanên AAA.
Ji navê mîkrokontroller diyar e ku ew ji malbata AVR-ê ye, ku tê vê wateyê ku çêkirina amûrê bi Arduino-hevhatî karekî pirtir e…
Ji nûçeyê li ser
Lê nivîskar bêtir bi fersendê re eleqedar e ku ne li ser cîhazê bilîze, lê bixwîne:
- bîra flash bi serial SPI interface
- bootloaders ji bo AVR
- standard 802.15.4
Nivîskar bi nivîsandinê dest pê kir
Ev bes e ji bo barkirina bootloader Arduino, lê ne xêzik - porta serial li wir ne girêdayî ye, ji ber vê yekê hûn hîn jî nikarin bêyî vekirina dozê bikin. Di heman demê de, xetên TX0 û RX0 yên porta serial a yekem bi xêzên dengdanê yên matrixa klavyeyê re, ango yên ku bişkokên fonksiyonê yên li aliyên dîmenderê dipirsin, têne hev kirin. Lê hûn dikarin çi bikin - nivîskar ev ava kir:
Wî xetên JTAG anîn wir, û naha ne hewce ye ku cîhê pîlê vekin. Û ji bo ku kêşan bêne barkirin, min her du portên serial bi heman girêdanê ve girêda, di heman demê de veguhezek jî lê zêde kir, ji ber ku bi bataryayên sazkirî re, ji hêla fîzîkî ve ne gengaz e ku amûrê bi rengek din were qut kirin.
Demek dem girt ku meriv bi hesinek lêdanê, kêrek bikêr û çekek benîşt bixebite. Bi gelemperî, barkirina skişan "li ser hewayê" pir hêsantir e ku em bi lezgînî ji bo vê yekê îcad bikin.
Arduino IDE bernameyê ji bo barkirina kêşan bikar tîne
Piştî ceribandina awayên cûda yên ji bo derbaskirina vê pirsgirêkê, nivîskar bi jêrîn derket. Amûrê bi navgînek SPI-yê 128 KB bîranînek flashê heye - em daneyan li ser têlan werdigirin (ji bîr mekin ku nivîskar berê xwedan yek amûrek bi girêdanek li kêlekê ye), vê bîranînê wekî tampon bikar bînin, û daneyan bi radyoyê re bişînin. kanalek ji bo amûrek din. Silav ji Cybiko.
Piştî nivîsandina koda xebata bi kanala radyoyê û her weha fontê, barker ji 4 kilobyte dirêjtir bû. Ji ber vê yekê, pêdivî bû ku nirxa HFUSE ji 0xDA berbi 0xD8 were guheztin. Niha bootloader dikare heta 8 kilobytes dirêj be, û navnîşana destpêkê niha 0x1E000 e. Ev di Makefile de tê xuyang kirin, lê divê dema dagirtin jî were hesibandin
Transceiver 802.15.4 di ATmega128RFA1 de bi eslê xwe ji bo xebitandina protokolê hatî çêkirin.
Derket holê ku kanalên 15 û 26 herî kêm ji destwerdana WiFi re têkildar in Nivîskar ji wan duyemîn hilbijart. Daxuyanî: werger nizane ka destûr heye ku ZigBee bi vî rengî hêsan bike. Dibe ku em hinekî bêtir bernamekirinê bikin û bi tevahî bicîh bikin?
Di cîhaza yekem de, pêdivî ye ku meriv makîneyek dewleta bêdawî bicîh bike ku daneyan bi protokola STK500 veguhezîne. Bi piranî, peyamên hatine veguheztin û wergirtin bixwe têra xwe ne, lê hin bi yên ku berê di kanalê re derbas bûne ve girêdayî ne. Danasîna diyalogê tê dayîn
Parçeyek girîng a vê diyalogê veguheztina pakêtan e ku ji bo bîranîna flash a cîhaza armancê têne nivîsandin. Ji bo mîkrokontrolerên hêsan ên malbata AVR, mezinahiya rûpelê 128 byte ye, lê ji bo ATmega128RFA1 ew 256 e. Û ji bo bîranîna flash ya ku bi protokola SPI ve girêdayî ye, ew heman e. Bernameya di cîhaza yekem de, dema ku xêzek bar dike, tavilê naguhezîne ya duyemîn, lê li vê bîranînê dinivîse. Dema ku Arduino IDE rastbûna têketinê kontrol dike, tiştê ku li wir hatî nivîsandin tê şandin. Naha pêdivî ye ku em daneyên wergirtî bi kanala radyoyê veguhezînin cîhaza duyemîn. Di heman demê de, guheztina ji wergirtinê ber bi veguheztinê û vegerandinê pir caran pêk tê. Protokola STK500 ji derengbûnê re xemsar e, lê windabûna daneyê tehemûl nake (ecêb, lê li jor hate gotin ku dereng bandorê li veguheztina daneyê jî dike). Û windahiyên di dema veguheztina wireless de neçar in. ATmega128RFA1 xwedan pêkanînek nermalava hundurîn a daxwazên dubare hene dema ku di derheqê rastbûna veguheztinê de guman hene, lê nivîskar biryar da ku heman tiştî di nermalavê de bi xwe de bicîh bike. Wî protokolek pêşxist ku tê de gelek bêtir dane yek rê ji ya din diherike.
Ew ne bêkêmasî ye, lê ew dixebite. Rûpelê 256-byte li çar beşan tê dabeş kirin, ku her yek ji wan li ser hewayê wekî pakêtek tê şandin. Paketek dikare heya 125 bayt daneyan û yek bayt ji bo dirêjiyê û du bayt jî ji bo CRC bigire. Ji ber vê yekê perçeyên 64 byte dirêj digel hejmarên rûpel û beşan (ji 0 heta 3) li wir têne danîn. Amûra wergir xwedan guhêrbarek e ku dihêle ew bişopîne ka çend beş hatine wergirtin, û dema ku her çar gihîştin, cîhaza dişîne erêkirinê distîne ku tevahiya rûpel hatiye wergirtin. Na pejirandin (CRC hev nagire) - tevahiya rûpelê ji nû ve bişîne. Leza ji dema ku bi kabloyê veguhezîne hîn mezintir e. Dîtin:
Lê bi gelemperî, pêdivî ye ku meriv rêyek hêsan peyda bike da ku kabloyê bi cîhazên ji bo barkirina xêz û bi navgîniya wê ve girêbide. Mînakî, wekî di wêneyê de, li hundurê veguhezkarek navbeynkar a wusa li ser CP2102-ê bixin, û wê bi panelê ve girêdin da ku ew di dema girêdan û qutkirina kabloya Micro USB de li ber hêzê bisekinin.
Di heman demê de stabîlîzkerek 3,3-volt jî heye (û meriv wê çawa di amûrek bi dabînkirina hêzê ya 6-volt de bikar tîne - heke tenê heman stabîlîzker hebe, û hûn dikarin du diodan lê zêde bikin da ku bixweber hilbijêrin ka kîjan ji wan dê cîhazê hêzdar bike) . Pêdivî ye ku her sê LED ji panela veguherînerê navbeynkar neyên zeliqandin, wekî din ew ê dema ku li ser wan dixebitin bataryayên din jî bar bikin, û di heman demê de dengdana klavyeyê jî tevlihev bikin û bi navgîniya SPI re bi bîranîna flash-ê re bixebitin.
Peydakirina armancekê ji bi destxistina wê hê balkêştir derket (û ne hewceyî wê henekê li ser otobusê ye). Nivîskar di derbarê bootloaders AVR, bîra flash SPI, protokola STK500 û standarda 802.15.4 de gelek tişt fêr bû.
Hemî kodên din ji bilî pirtûkxaneya ku li jor hatî destnîşan kirin - e
Source: www.habr.com