Éta sadayana dimimitian ku panulis mésér alat anu pikaresepeun dina pasar sekundér - Smart Response XE (
Alat-alat ieu dileungitkeun sababaraha taun ka pengker, sareng naon anu dipésér ku sakola pikeun $ 100- $ 200 masing-masing ayeuna muncul dina eBay pikeun $ 10 atanapi kirang. Hardware aya cocog pisan pikeun percobaan geeky:
- 60 keyboard konci
- tampilan kalawan resolusi 384 × 136, 2 bit per piksel - sarupa SM, CGA, tapi 4 teu kelir, tapi gradasi kacaangan
- mikrokontroler ATmega128RFA1 (memori flash 128 kB, 4 kB ROM, 16 kB RAM, 802.15.4 transceiver)
- éksternal (dina hubungan jeung mikrokontroler, teu sakabéh alat) 1 megabit (128 kilobyte) memori flash kalawan panganteur SPI
- kompartemen pikeun 4 elemen AAA.
Tina nami mikrokontroler jelas yén éta milik kulawarga AVR, anu hartosna ngajantenkeun alat anu cocog sareng Arduino mangrupikeun tugas anu langkung sepele ...
Ti béja
Tapi panulis leuwih museurkeun kasempetan teu maén dina alat, tapi diajar:
- memori flash kalawan panganteur SPI serial
- bootloaders pikeun AVR
- standar 802.15.4
Pangarang dimimitian ku tulisan
Ieu cukup pikeun unggah bootloader Arduino, tapi teu sketsa - port serial teu disambungkeun di dinya, jadi Anjeun masih teu bisa ngalakukeun tanpa muka kasus. Ogé, garis TX0 sareng RX0 tina port serial munggaran digabungkeun sareng garis polling tina matriks keyboard, nyaéta anu polling tombol fungsi dina sisi tampilan. Tapi naon anu anjeun tiasa laksanakeun - panulis ngawangun ieu:
Anjeunna nyandak jalur JTAG ka dinya, sareng ayeuna henteu kedah muka kompartemen batré. Sareng supados sketsa tiasa diunggah, kuring nyambungkeun dua palabuhan serial kana konektor anu sami, ogé nambihan saklar, sabab ku batré dipasang, sacara fisik teu mungkin mareuman alat ku cara anu sanés.
Butuh waktu rada lila pikeun digawekeun ku beusi soldering, péso utiliti sarta gun lem. Sacara umum, unggah sketsa "leuwih hawa" langkung merenah, urang kedah urgently invent hal pikeun ieu.
Arduino IDE ngagunakeun program pikeun unggah sketsa
Saatos nyobian sababaraha cara pikeun ngungkulan masalah ieu, panulis datang sareng ieu di handap. Alatna ngagaduhan mémori flash 128 KB kalayan antarmuka SPI - kami nampi data dina kabel (inget yén panulis parantos ngagaduhan hiji alat anu aya konektor di sisi), nganggo mémori ieu salaku panyangga, sareng ngirim data kana radio. saluran ka alat sejen. Salam ti Cybiko.
Saatos nyerat kode pikeun dianggo sareng saluran radio, ogé font, loader janten langkung panjang ti 4 kilobyte. Ku alatan éta, nilai HFUSE kudu dirobah tina 0xDA ka 0xD8. Ayeuna bootloader tiasa dugi ka 8 kilobytes, sareng alamat awal ayeuna 0x1E000. Ieu reflected dina Makefile, tapi ogé kudu dibawa kana akun nalika ngeusian
Transceiver 802.15.4 dina ATmega128RFA1 asalna dirancang pikeun beroperasi nganggo protokol
Tétéla yén saluran 15 sareng 26 sahenteuna rentan ka gangguan tina WiFi.Panulis milih anu kadua. Bantahan: penerjemah henteu terang naha éta diidinan nyederhanakeun ZigBee ku cara ieu. Panginten urang kedah ngalakukeun pemrograman langkung sakedik sareng ngalaksanakeunana lengkep?
Dina alat munggaran, perlu pikeun nerapkeun mesin kaayaan terhingga anu ngirimkeun data ngaliwatan protokol STK500. Sabagéan ageung, pesen anu dikirimkeun sareng ditampi cekap mandiri, tapi sawaréh aya hubunganana sareng anu ngalangkungan saluran tadi. Pedaran ngeunaan dialog dirumuskeun
Komponén penting tina dialog ieu nyaéta pangiriman pakét anu dimaksudkeun pikeun ditulis kana mémori lampu kilat alat tujuan. Pikeun mikrokontroler basajan tina kulawarga AVR, ukuran kaca 128 bait, tapi pikeun ATmega128RFA1 256. Jeung memori flash disambungkeun via protokol SPI sarua. Program dina alat kahiji, nalika unggah sketsa, teu langsung mindahkeun ka kadua, tapi nulis dina mémori ieu. Nalika Arduino IDE mariksa kabeneran éntri, dikirimkeun naon anu diserat di dinya. Ayeuna urang kedah ngirimkeun data anu ditampi liwat saluran radio ka alat anu kadua. Dina waktos anu sami, gentos tina nampi kana ngirimkeun sareng mundur sering sering. Protokol STK500 acuh ka reureuh, tapi teu sabar leungitna data (aneh, tapi ieu ceuk luhur yén reureuh ogé mangaruhan mindahkeun data). Sareng karugian salami pangiriman nirkabel teu tiasa dihindari. ATmega128RFA1 gaduh palaksanaan hardware anu diwangun dina pamundut-terusan nalika aya mamang ngeunaan kabeneran transferna, tapi panulis mutuskeun pikeun nerapkeun anu sami dina parangkat lunak nyalira. Anjeunna ngembangkeun protokol dimana langkung seueur data ngalir dina hiji arah tibatan anu sanés.
Teu sampurna, tapi jalan. Kaca 256-bait dibagi kana opat bagéan, nu masing-masing dikirimkeun ngaliwatan hawa salaku pakét a. Hiji pakét tiasa nahan dugi ka 125 bait data ditambah hiji bait pikeun panjangna sareng dua bait pikeun CRC. Jadi fragmen 64 bait panjangna babarengan jeung nomer kaca jeung ruas (ti 0 nepi ka 3) disimpen di dinya. Alat panampa boga variabel anu ngamungkinkeun pikeun ngalacak sabaraha bagéan anu ditampi, sareng nalika sadayana opat sumping, alat pangirim nampi konfirmasi yén sadaya halaman parantos nampi. Taya konfirmasi (CRC teu cocog) - resend sakabéh kaca. Lajuna langkung ageung tibatan nalika ngirimkeun kabel. Tingali:
Tapi sacara umum, perlu nyadiakeun cara merenah pikeun nyambungkeun kabel ka alat-alat pikeun unggah sketsa tur ngaliwatan eta. Contona, nempatkeun di jero hiji panganteur converter on CP2102, sakumaha dina poto, sarta lem ka dewan meh bisa tahan gaya nalika nyambungkeun jeung megatkeun sambungan kabel Micro USB.
Éta ogé gaduh penstabil 3,3 volt (sareng kumaha cara ngagunakeunana dina alat anu nganggo catu daya 6 volt - upami ngan gaduh penstabil anu sami, sareng anjeun tiasa nambihan dua dioda pikeun otomatis milih anu mana anu bakal ngawasa alat) . Katiluna LEDs kudu unsoldered ti dewan converter panganteur, disebutkeun aranjeunna Sajaba bakal ngamuat accu nalika operasi on aranjeunna, sarta ogé ngaganggu polling keyboard sarta gawé bareng memori flash kalawan panganteur SPI.
Ngudag tujuan tétéla jadi malah leuwih metot ti achieving eta (jeung teu perlu lulucon éta ngeunaan beus). Panulis diajar seueur ngeunaan bootloader AVR, mémori flash SPI, protokol STK500 sareng standar 802.15.4.
Sadaya kode sanésna salian ti perpustakaan anu dijelaskeun di luhur nyaéta −
sumber: www.habr.com