Et huet alles ugefaang mam Auteur en interessanten Apparat um Secondaire Maart ze kafen - Smart Response XE (
Dës Geräter goufen virun e puer Joer gestoppt, a wat Schoule fir $ 100- $ 200 all kaaft hunn, erschéngen elo op eBay fir $ 10 oder manner. D'Hardware do ass ganz gëeegent fir geeky Experimenter:
- 60 Schlëssel Keyboard
- Display mat enger Resolutioun vun 384 × 136, 2 Bits pro Pixel - ähnlech wéi BC, CGA, awer 4 net Faarwen, awer Hellegkeetsgradatiounen
- Mikrokontroller ATmega128RFA1 (128 kB Flash Memory, 4 kB ROM, 16 kB RAM, 802.15.4 Transceiver)
- extern (a Relatioun mam Mikrokontroller, net de ganzen Apparat) 1 megabit (128 kilobyte) Flash Memory mat SPI Interface
- Fach fir 4 AAA Elementer.
Vum Numm vum Mikrokontroller ass et kloer datt et zu der AVR Famill gehéiert, wat heescht datt den Apparat Arduino-kompatibel ass eng méi wéi trivial Aufgab ...
Vun den Neiegkeeten un
Mä den Auteur ass méi interesséiert d'Méiglechkeet net um Apparat ze spillen, mä ze studéieren:
- Flash Erënnerung mat Serien SPI Interface
- Bootloader fir AVR
- Standard 802.15.4
Den Auteur huet ugefaang mam Schreiwen
Dëst ass genuch fir den Arduino Bootloader eropzelueden, awer net d'Skizz - de Serienhafen ass net do ugeschloss, sou datt Dir nach ëmmer net maache kënnt ouni de Fall opzemaachen. Och d'TX0 an RX0 Linnen vum éischte Serien Hafen sinn kombinéiert mat de Pollinglinnen vun der Tastaturmatrix, nämlech déi, déi d'Funktiounsschlësselen op de Säiten vum Display pollen. Awer wat kënnt Dir maachen - den Auteur huet dëst gebaut:
Hien huet d'JTAG Linnen dohinner bruecht, an elo ass et net néideg d'Batterieraum opzemaachen. A fir datt Skizzen eropgeluede kënne ginn, hunn ech béid Serienhäfen op deeselwechte Connector verbonnen, och e Schalter bäigefüügt, well mat de Batterien installéiert ass et kierperlech onméiglech den Apparat op eng aner Manéier auszeschalten.
Et huet zimmlech Zäit gedauert fir mat engem Lötstéck, engem Utilitymesser an enger Pechpistoul ze schaffen. Allgemeng ass d'Eroplueden vun Skizzen "iwwer d'Loft" vill méi bequem, mir mussen dréngend eppes dofir erfannen.
Arduino IDE benotzt de Programm fir Skizzen eropzelueden
Nodeems Dir verschidde Weeër probéiert huet fir dëse Problem ze iwwerwannen, ass den Auteur mat de folgende komm. Den Apparat huet en 128 KB Flash Memory mat engem SPI Interface - mir kréien Daten iwwer d'Drähten (erënnert datt den Auteur schonn en Apparat mat engem Connector op der Säit huet), benotzt dës Erënnerung als Puffer, a schécken d'Donnéeën iwwer de Radio Kanal op en aneren Apparat. Moien vum Cybiko.
Nodeem de Code geschriwwen huet fir mam Radiokanal ze schaffen, wéi och d'Schrëft, gouf de Loader méi wéi 4 Kilobytes. Dofir muss den HFUSE-Wäert vun 0xDA op 0xD8 geännert ginn. Elo kann de Bootloader bis zu 8 kilobytes laang sinn, an d'Startadress ass elo 0x1E000. Dëst spigelt sech am Makefile, awer sollt och berücksichtegt ginn beim Ausfëllen
Den 802.15.4 Transceiver am ATmega128RFA1 ass ursprénglech entwéckelt fir mam Protokoll ze bedreiwen
Et huet sech erausgestallt, datt d'Kanäl 15 an 26 am mannsten ufälleg sinn fir Stéierunge vu WiFi, den Auteur huet déi zweet gewielt. Verzichterklärung: den Iwwersetzer weess net ob et erlaabt ass ZigBee esou ze vereinfachen. Vläicht sollte mir e bësse méi programméieren a komplett ëmsetzen?
Um éischten Apparat ass et néideg eng endlech Staatsmaschinn ëmzesetzen déi Daten iwwer de STK500 Protokoll iwwerdréit. Fir de gréissten Deel sinn d'Messagen iwwerdroen a kritt selbstänneg, awer e puer sinn un déi gebonnen, déi virdru duerch de Kanal passéiert sinn. Beschreiwung vum Dialog gëtt uginn
E wichtege Bestanddeel vun dësem Dialog ass d'Iwwerdroung vu Pakete geduecht fir an d'Flash Memory vum Destinatiounsapparat geschriwwe ze ginn. Fir einfache Mikrokontroller vun der AVR-Famill ass d'Säitgréisst 128 Bytes, awer fir den ATmega128RFA1 ass et 256. A fir de Flash-Speicher, deen iwwer de SPI-Protokoll verbonne gëtt, ass et d'selwecht. De Programm am éischten Apparat, wann Dir eng Skizz eropluet, transferéiert se net direkt op den zweeten, awer schreift se an dës Erënnerung. Wann d'Arduino IDE d'Korrektheet vun der Entrée kontrolléiert, gëtt et geschéckt wat do geschriwwe gouf. Elo musse mir déi erhalen Daten iwwer Radiokanal op den zweeten Apparat iwwerdroen. Zur selwechter Zäit ass de Wiessel vum Empfang op Iwwerdroung an zréck zimmlech dacks geschitt. De STK500 Protokoll ass indifferent zu Verspéidungen, awer toleréiert net Datenverloscht (komesch, awer et gouf uewen gesot datt Verspéidungen och den Datentransfer beaflossen). A Verloschter während der drahtloser Iwwerdroung sinn inévitabel. Den ATmega128RFA1 huet eng agebaute Hardware-Implementatioun vu widderholl Ufroen wann et Zweifel iwwer d'Richtegkeet vum Transfert gëtt, awer den Auteur huet decidéiert datselwecht an der Software selwer ëmzesetzen. Hien huet e Protokoll entwéckelt an deem vill méi Daten op eng Manéier fléissen wéi déi aner.
Et ass net perfekt, awer et funktionnéiert. D'256-Byte Säit ass a véier Segmenter opgedeelt, déi all iwwer d'Loft als Paket iwwerdroen ginn. E Paket kann bis zu 125 Bytes vun Daten plus ee Byte fir Längt an zwee Bytes fir CRC halen. Also Fragmenter 64 Bytes laang zesumme mat Säit- a Segmentnummeren (vun 0 bis 3) ginn do plazéiert. Den Empfangsapparat huet eng Variabel déi et erlaabt ze verfolgen wéivill Segmenter kritt goufen, a wann all véier ukommen, kritt de Sender Apparat Bestätegung datt déi ganz Säit kritt gouf. Keng Bestätegung (CRC huet net gepasst) - schéckt déi ganz Säit nei. D'Geschwindegkeet ass nach méi grouss wéi beim Iwwerdroung iwwer Kabel. Kuckt:
Awer am Allgemengen wier et néideg fir e praktesche Wee ze bidden fir de Kabel mat den Apparater ze verbannen fir Skizzen eropzelueden an duerch et. Zum Beispill, Plaz bannen esou engem Interface Converter op der CP2102, wéi an der Foto, a gekollt et op de Bord sou datt et d'Kraaft widderstoen kann wann de Mikro USB Kabel Verbindung an trennt.
Et huet och en 3,3-Volt Stabilisator (a wéi et an engem Apparat mat enger 6-Volt Energieversuergung benotzt gëtt - wann et nëmmen dee selwechte Stabilisator huet, an Dir kënnt zwee Dioden addéieren fir automatesch ze wielen, wéi eng vun hinnen den Apparat dréit) . All dräi LEDs musse vun der Interface Converter Verwaltungsrot unsoldered ginn, soss wäerten se zousätzlech Batterie opbauen wann se operéieren, an och mat Keyboard Pollen Amëschung an Aarbecht mat Flash Erënnerung mat engem SPI Interface.
E Goal verfollegen huet sech nach méi interessant gewisen wéi et z'erreechen (a brauch dee Witz iwwer de Bus net). Den Auteur huet vill iwwer AVR Bootloader, SPI Flash Memory, de STK500 Protokoll an den 802.15.4 Standard geléiert.
All anere Code zousätzlech zu der uewe beschriwwen Bibliothéik ass -
Source: will.com