Nagsugod ang tanan sa pagpalit sa tagsulat usa ka makapaikag nga aparato sa sekondaryang merkado - Smart Response XE (
Kini nga mga himan gihunong pipila ka tuig ang milabay, ug kung unsa ang gipalit sa mga eskwelahan sa $100-$200 matag usa karon nag-pop up sa eBay sa $10 o mas ubos. Ang hardware didto angayan kaayo alang sa geeky nga mga eksperimento:
- 60 key nga keyboard
- display nga adunay resolusyon nga 384 Γ 136, 2 bits kada pixel - susama sa BC, CGA, apan 4 dili mga kolor, apan gradations sa kahayag
- microcontroller ATmega128RFA1 (128 kB flash memory, 4 kB ROM, 16 kB RAM, 802.15.4 transceiver)
- eksternal (nga may kalabutan sa microcontroller, dili ang tibuok device) 1 megabit (128 kilobyte) flash memory uban sa SPI interface
- compartment alang sa 4 AAA nga mga elemento.
Gikan sa ngalan sa microcontroller klaro nga kini iya sa pamilyang AVR, nga nagpasabot nga ang paghimo sa device nga Arduino-compatible usa ka labaw pa sa walay hinungdan nga buluhaton ...
Gikan sa balita sa
Apan ang tagsulat mas interesado sa oportunidad nga dili magdula sa device, apan magtuon:
- flash memory nga adunay serial SPI interface
- mga bootloader alang sa AVR
- sumbanan 802.15.4
Ang tagsulat nagsugod pinaagi sa pagsulat
Igo na kini aron ma-upload ang Arduino bootloader, apan dili ang sketch - ang serial port dili konektado didto, mao nga dili nimo mahimo kung wala gibuksan ang kaso. Usab, ang mga linya sa TX0 ug RX0 sa unang serial port gihiusa sa mga linya sa botohan sa keyboard matrix, nga mao kadtong nag-poll sa mga function key sa mga kilid sa display. Apan unsa ang imong mahimo - ang tagsulat naghimo niini:
Gidala niya ang mga linya sa JTAG didto, ug karon dili na kinahanglan nga ablihan ang kompartamento sa baterya. Ug aron ma-upload ang mga sketch, gikonektar nako ang duha ka serial port sa parehas nga konektor, nagdugang usab usa ka switch, tungod kay sa pag-install sa mga baterya, imposible nga mapalong ang aparato sa bisan unsang paagi.
Nagkinahanglan kini og taas nga panahon sa pagtrabaho gamit ang usa ka soldering iron, usa ka utility nga kutsilyo ug usa ka glue gun. Sa kinatibuk-an, ang pag-upload sa mga sketch "sa hangin" labi ka kombenyente; kinahanglan namon nga mag-imbento og usa ka butang alang niini.
Gigamit sa Arduino IDE ang programa sa pag-upload sa mga sketch
Human sa pagsulay sa lain-laing mga paagi sa pagbuntog niini nga problema, ang tagsulat miabut uban sa mosunod. Ang device adunay 128 KB flash memory nga adunay SPI interface - nakadawat kami og data sa mga wire (hinumdomi nga ang tagsulat adunay usa ka device nga adunay connector sa kilid), gamita kini nga memorya isip buffer, ug ipadala ang data sa radyo channel sa laing device. Hello gikan sa Cybiko.
Human sa pagsulat sa code sa pagtrabaho uban sa channel sa radyo, ingon man usab sa font, ang loader nahimong mas taas pa kay sa 4 kilobytes. Busa, ang kantidad sa HFUSE kinahanglang usbon gikan sa 0xDA ngadto sa 0xD8. Karon ang bootloader mahimong hangtod sa 8 kilobytes ang gitas-on, ug ang pagsugod nga adres karon 0x1E000. Gipakita kini sa Makefile, apan kinahanglan usab nga tagdon kung pun-on
Ang 802.15.4 transceiver sa ATmega128RFA1 orihinal nga gidisenyo sa pag-operate gamit ang protocol
Nahibal-an nga ang mga channel 15 ug 26 labing gamay nga daling maapektuhan sa WiFi. Gipili sa tagsulat ang ikaduha niini. Disclaimer: wala mahibal-an sa maghuhubad kung gitugotan ba nga pasimplehon ang ZigBee niining paagiha. Tingali kinahanglan naton nga maghimo usa ka gamay nga pagprograma ug ipatuman kini sa hingpit?
Sa una nga aparato, kinahanglan nga ipatuman ang usa ka limitado nga makina sa estado nga nagpadala sa datos pinaagi sa protocol sa STK500. Sa kadaghanan nga bahin, ang mga mensahe nga gipasa ug nadawat igo ra sa kaugalingon, apan ang uban nahigot sa mga nakaagi sa channel kaniadto. Deskripsyon sa dayalogo gihatag
Usa ka importante nga bahin niini nga dayalogo mao ang pagpasa sa mga pakete nga gituyo nga isulat sa flash memory sa destinasyon nga device. Alang sa yano nga mga microcontroller sa pamilyang AVR, ang gidak-on sa panid 128 bytes, apan alang sa ATmega128RFA1 kini 256. Ug alang sa flash memory nga konektado pinaagi sa SPI protocol, parehas kini. Ang programa sa una nga aparato, kung mag-upload sa usa ka sketch, dili dayon ibalhin kini sa ikaduha, apan isulat kini sa kini nga panumduman. Kung gisusi sa Arduino IDE ang pagkahusto sa entry, gipadala kung unsa ang gisulat didto. Karon kinahanglan namong ipadala ang nadawat nga datos pinaagi sa channel sa radyo ngadto sa ikaduhang device. Sa samang higayon, ang pagbalhin gikan sa pagdawat ngadto sa pagpasa ug pagbalik mahitabo kanunay. Ang protocol sa STK500 walay pagtagad sa mga paglangan, apan dili motugot sa pagkawala sa datos (katingad-an, apan giingon sa ibabaw nga ang mga paglangan makaapekto usab sa pagbalhin sa datos). Ug ang mga pagkawala sa panahon sa wireless transmission dili malikayan. Ang ATmega128RFA1 adunay built-in nga hardware nga pagpatuman sa gibalikbalik nga mga hangyo kung adunay mga pagduhaduha bahin sa pagkahusto sa pagbalhin, apan ang tagsulat nakahukom nga ipatuman ang parehas sa software mismo. Naghimo siya usa ka protocol diin daghang mga datos ang nag-agay sa usa ka paagi kaysa sa lain.
Dili kini perpekto, apan kini molihok. Ang 256-byte nga panid gibahin sa upat ka mga bahin, ang matag usa niini gipasa sa hangin ingon usa ka pakete. Ang usa ka pakete mahimong magkupot ug hangtod sa 125 ka byte sa datos ug usa ka byte alang sa gitas-on ug duha ka byte alang sa CRC. Busa ang mga tipik nga 64 bytes ang gitas-on uban sa mga numero sa panid ug bahin (gikan sa 0 ngadto sa 3) gibutang didto. Ang tigdawat nga himan adunay usa ka variable nga nagtugot niini sa pagsubay kung pila ang mga bahin nga nadawat, ug kung ang tanan nga upat moabut, ang nagpadala nga aparato makadawat kumpirmasyon nga ang tibuuk nga panid nadawat. Walay kumpirmasyon (CRC wala motakdo) - ipadala pag-usab ang tibuok panid. Ang katulin mas dako pa kaysa sa pagpadala pinaagi sa cable. Tan-awa:
Apan sa kinatibuk-an, kinahanglan nga maghatag usa ka kombenyente nga paagi aron makonektar ang cable sa mga aparato alang sa pag-upload sa mga sketch ug pinaagi niini. Pananglitan, ibutang sa sulod sa ingon nga interface converter sa CP2102, sama sa litrato, ug ipapilit kini sa board aron kini makasugakod sa puwersa sa dihang magkonektar ug magdiskonekta sa Micro USB cable.
Adunay usab kini usa ka 3,3-volt stabilizer (ug kung giunsa kini gamiton sa usa ka aparato nga adunay 6-volt nga suplay sa kuryente - kung kini adunay parehas nga stabilizer, ug mahimo nimong idugang ang duha ka mga diode aron awtomatiko nga mapili kung kinsa sa kanila ang mogahom sa aparato) . Ang tanan nga tulo ka mga LED kinahanglan nga dili mabaligya gikan sa interface converter board, kung dili, dugangan nila ang pagkarga sa mga baterya kung mag-operate niini, ug makabalda usab sa polling sa keyboard ug magtrabaho uban ang flash memory nga adunay interface sa SPI.
Ang pagpadayon sa usa ka katuyoan nahimo nga labi ka makapaikag kaysa pagkab-ot niini (ug dili kinahanglan kana nga komedya bahin sa bus). Daghan ang nakat-unan sa tagsulat bahin sa AVR bootloaders, SPI flash memory, ang STK500 protocol ug ang 802.15.4 standard.
Ang tanan nga ubang code dugang sa librarya nga gihulagway sa ibabaw mao ang β
Source: www.habr.com