Мунун баары автордун экинчилик рынокто кызыктуу аппаратты сатып алуусу менен башталды - Smart Response XE (
Бул аппараттар бир нече жыл мурун токтотулган жана ар бири 100-200 долларга сатылып алынган мектептер азыр eBayде 10 долларга же андан азыраак баада пайда болууда. Ал жердеги жабдыктар геэки эксперименттер үчүн абдан ылайыктуу:
- 60 баскычтуу клавиатура
- 384×136 резолюциядагы дисплей, бир пикселге 2 бит - BC, CGA сыяктуу, бирок 4 түс эмес, жарыктык градациялары
- микроконтроллер ATmega128RFA1 (128 кБ флеш эс, 4 кБ ROM, 16 кБ оперативдүү эс, 802.15.4 трансивер)
- тышкы (микроконтроллерге карата, бүт түзмөк эмес) SPI интерфейси менен 1 мегабит (128 килобайт) флеш эс
- 4 AAA элементтери үчүн бөлүм.
Микроконтроллердин атынан анын AVR үй-бүлөсүнө таандык экени айкын көрүнүп турат, демек Arduino шайкеш келүүчү аппаратты жасоо анча деле маанилүү эмес...
Жаңылыктардан
Бирок авторду аспапта ойноо эмес, изилдөө мүмкүнчүлүгү көбүрөөк кызыктырат:
- сериялык SPI интерфейси менен флеш эс
- AVR үчүн жүктөөчүлөр
- 802.15.4 стандарты
Автор жазуу менен баштады
Бул Arduino жүктөгүчтү жүктөө үчүн жетиштүү, бирок эскиз эмес - сериялык порт ал жерде туташкан эмес, андыктан корпусту ачпай туруп деле кыла албайсыз. Ошондой эле, биринчи сериялык порттун TX0 жана RX0 сызыктары клавиатура матрицасынын, тактап айтканда, дисплейдин капталындагы функция баскычтарын сурамжылоонун сызыктары менен айкалыштырылган. Бирок сиз эмне кыла аласыз - автор муну курган:
Ал жерге ЖТАГ линияларын алып келди, эми аккумулятордук бөлүмдү ачуунун кереги жок. Эскиздерди жүктөө үчүн, мен эки сериялык портту бир туташтыргычка туташтырдым, ошондой эле которгучту коштум, анткени орнотулган батареялар менен аппаратты башка жол менен өчүрүү физикалык жактан мүмкүн эмес.
Бир паяльник, бычак жана желим тапанча менен иштөө үчүн бир топ убакыт кетти. Жалпысынан алганда, эскиздерди "аба аркылуу" жүктөө алда канча ыңгайлуу, биз бул үчүн тез арада бир нерсе ойлоп табышыбыз керек.
Arduino IDE эскиздерди жүктөө үчүн программаны колдонот
Бул көйгөйдү чечүүнүн ар кандай жолдорун сынап көргөндөн кийин, автор төмөнкүдөй жыйынтыкка келген. Түзмөктө SPI интерфейси бар 128 КБ флеш эс тутуму бар - биз маалыматтарды зымдар аркылуу алабыз (автордун капталында туташтыргычы бар бир түзмөк бар экенин унутпаңыз), бул эстутум буфер катары колдонуп, маалыматты радио аркылуу жөнөтөбүз башка түзмөккө канал. Cybikoдон салам.
Радиоканал менен иштөө үчүн кодду, ошондой эле шрифти жазгандан кийин жүктөгүч 4 килобайттан узун болуп калды. Ошондуктан, HFUSE маанисин 0xDAдан 0xD8ге өзгөртүү керек болчу. Эми жүктөгүчтүн узундугу 8 килобайтка чейин болушу мүмкүн, ал эми баштапкы дареги азыр 0x1E000. Бул Makefileде чагылдырылган, бирок аны толтурууда да эске алуу керек
ATmega802.15.4RFA128деги 1 трансивери алгач протоколду колдонуу үчүн иштелип чыккан
Көрсө, 15 жана 26-каналдар WiFi аркылуу кийлигишүүгө эң аз дуушар болуп, автор алардын экинчисин тандап алган. Жоопкерчиликтен баш тартуу: котормочу ZigBee-ди ушундай жол менен жөнөкөйлөштүрүүгө уруксат бар-жогун билбейт. Балким, биз дагы бир аз программалап, аны толугу менен ишке ашырышыбыз керек?
Биринчи түзмөктө STK500 протоколу аркылуу маалыматтарды өткөрүүчү чектүү мамлекеттик машинаны ишке ашыруу керек. Көпчүлүк учурда, жөнөтүлгөн жана кабыл алынган билдирүүлөр өзүн-өзү камсыз кылат, бирок кээ бирлери мурда канал аркылуу өткөндөр менен байланышкан. Диалогдун сүрөттөлүшү берилет
Бул диалогдун маанилүү компоненти болуп, көздөгөн түзүлүштүн флеш эсине жазуу үчүн арналган пакеттерди берүү саналат. AVR үй-бүлөсүнүн жөнөкөй микроконтроллерлери үчүн барактын көлөмү 128 байт, ал эми ATmega128RFA1 үчүн 256. Ал эми SPI протоколу аркылуу туташтырылган флеш эс тутуму үчүн бул бирдей. Биринчи түзүлүштөгү программа эскизди жүктөөдө аны дароо экинчисине өткөрбөй, аны ушул эс тутумга жазат. Arduino IDE жазуунун тууралыгын текшергенде, ал жерде жазылгандар жөнөтүлөт. Эми биз радиоканал аркылуу алынган маалыматтарды экинчи аппаратка өткөрүп беришибиз керек. Ошол эле учурда кабыл алуудан өткөрүп берүүгө жана кайра кайтарууга өтүү көп кездешет. STK500 протоколу кечигүүлөргө кайдыгер мамиле кылат, бирок маалыматтардын жоголушуна чыдабайт (кызык, бирок жогоруда кечигүү да маалыматтарды берүү таасирин тийгизет деп айтылган). Ал эми зымсыз берүү учурунда жоготуулар сөзсүз болот. ATmega128RFA1 өткөрүп берүүнүн тууралыгына шектенүү пайда болгондо кайталанма суроо-талаптарды ишке ашырууга орнотулган аппараттык камсыздоого ээ, бирок автор аны программалык камсыздоодо өзү ишке ашырууну чечти. Ал протоколду иштеп чыкты, анда бир тарапка караганда көбүрөөк маалымат агып турат.
Бул идеалдуу эмес, бирок ал иштейт. 256 байттык барак төрт сегментке бөлүнөт, алардын ар бири пакет катары аба аркылуу берилет. Бир пакетке 125 байт маалымат жана узундугу боюнча бир байт жана CRC үчүн эки байт чейин сакталышы мүмкүн. Ошентип, ал жерде 64 байт узундуктагы фрагменттер барактын жана сегменттин номерлери (0дөн 3кө чейин) жайгаштырылат. Кабыл алуучу түзүлүштө канча сегмент кабыл алынганын көзөмөлдөөгө мүмкүндүк берген өзгөрмө бар жана төртөө тең келгенде, жөнөтүүчү аппарат бүт беттин кабыл алынгандыгы тууралуу тастыктоо алат. Ырастоо жок (CRC дал келген жок) - бүт баракты кайра жөнөтүү. Кабель аркылуу өткөрүү ылдамдыгы андан да чоң. Караңыз:
Бирок, жалпысынан, эскиздерди жана ал аркылуу жүктөө үчүн түзмөктөргө кабелди туташтыруу үчүн ыңгайлуу жол менен камсыз кылуу зарыл болмок. Мисалы, сүрөттөгүдөй CP2102 интерфейсинин конвертеринин ичине орнотуп, Micro USB кабелин туташтырууда жана ажыратууда күчкө туруштук бере тургандай кылып тактага чаптаңыз.
Ошондой эле анын 3,3 вольттук стабилизатору бар (жана аны 6 вольттук электр булагы бар түзмөктө кантип колдонуу керек - эгер анда бир эле стабилизатор болсо жана алардын кайсынысы аппаратты кубаттай турганын автоматтык түрдө тандоо үчүн эки диодду кошо аласыз) . Үч светодиод тең интерфейстин конвертер тактасынан ажыратылышы керек, антпесе алар иштегенде батарейкаларды кошумча жүктөйт, ошондой эле клавиатураны сурамжылоого жана SPI интерфейси менен флеш эс тутумга тоскоол болот.
Максатка умтулуу ага жетүүдөн да кызыктуураак болуп чыкты (жана автобус тууралуу тамашанын кереги жок). Автор AVR жүктөгүчтөрү, SPI флеш эс тутуму, STK500 протоколу жана 802.15.4 стандарты жөнүндө көп нерселерди үйрөнгөн.
Жогоруда сүрөттөлгөн китепканадан башка бардык коддор -
Source: www.habr.com