సెకండరీ మార్కెట్లో రచయిత ఒక ఆసక్తికరమైన పరికరాన్ని కొనుగోలు చేయడంతో ఇదంతా ప్రారంభమైంది - స్మార్ట్ రెస్పాన్స్ XE (
ఈ పరికరాలు చాలా సంవత్సరాల క్రితం నిలిపివేయబడ్డాయి మరియు ఒక్కొక్కటి $100-$200కి కొనుగోలు చేసిన పాఠశాలలు ఇప్పుడు eBayలో $10 లేదా అంతకంటే తక్కువ ధరకు పాప్ అప్ అవుతున్నాయి. గీకీ ప్రయోగాలకు అక్కడ హార్డ్వేర్ చాలా అనుకూలంగా ఉంటుంది:
- 60 కీ కీబోర్డ్
- 384×136 రిజల్యూషన్తో డిస్ప్లే, పిక్సెల్కు 2 బిట్లు - BC, CGA లాంటివి, కానీ 4 రంగులు కాదు, ప్రకాశం యొక్క స్థాయిలు
- మైక్రోకంట్రోలర్ ATmega128RFA1 (128 kB ఫ్లాష్ మెమరీ, 4 kB ROM, 16 kB RAM, 802.15.4 ట్రాన్స్సీవర్)
- బాహ్య (మైక్రోకంట్రోలర్కు సంబంధించి, మొత్తం పరికరం కాదు) SPI ఇంటర్ఫేస్తో 1 మెగాబిట్ (128 కిలోబైట్) ఫ్లాష్ మెమరీ
- 4 AAA మూలకాల కోసం కంపార్ట్మెంట్.
మైక్రోకంట్రోలర్ పేరు నుండి ఇది AVR కుటుంబానికి చెందినదని స్పష్టమవుతుంది, అంటే పరికరాన్ని Arduino-అనుకూలంగా మార్చడం అనేది పనికిమాలిన పని కంటే ఎక్కువ...
వార్తల నుండి
కానీ రచయిత పరికరంలో ప్లే చేయకుండా, అధ్యయనం చేయడానికి అవకాశంపై ఎక్కువ ఆసక్తి కలిగి ఉన్నారు:
- సీరియల్ SPI ఇంటర్ఫేస్తో ఫ్లాష్ మెమరీ
- AVR కోసం బూట్లోడర్లు
- ప్రమాణం 802.15.4
రచయిత రాయడం ప్రారంభించాడు
Arduino బూట్లోడర్ను అప్లోడ్ చేయడానికి ఇది సరిపోతుంది, కానీ స్కెచ్ కాదు - సీరియల్ పోర్ట్ అక్కడ కనెక్ట్ చేయబడలేదు, కాబట్టి మీరు ఇప్పటికీ కేసును తెరవకుండా చేయలేరు. అలాగే, మొదటి సీరియల్ పోర్ట్ యొక్క TX0 మరియు RX0 లైన్లు కీబోర్డ్ మ్యాట్రిక్స్ యొక్క పోలింగ్ లైన్లతో కలిపి ఉంటాయి, అవి డిస్ప్లే వైపులా ఫంక్షన్ కీలను పోల్ చేసేవి. కానీ మీరు ఏమి చేయగలరు - రచయిత దీన్ని నిర్మించారు:
అతను అక్కడ JTAG లైన్లను తీసుకువచ్చాడు మరియు ఇప్పుడు బ్యాటరీ కంపార్ట్మెంట్ తెరవాల్సిన అవసరం లేదు. మరియు స్కెచ్లను అప్లోడ్ చేయడానికి, నేను రెండు సీరియల్ పోర్ట్లను ఒకే కనెక్టర్కు కనెక్ట్ చేసాను, స్విచ్ను కూడా జోడించాను, ఎందుకంటే బ్యాటరీలను ఇన్స్టాల్ చేయడంతో, పరికరాన్ని వేరే విధంగా ఆఫ్ చేయడం భౌతికంగా అసాధ్యం.
టంకం ఇనుము, యుటిలిటీ కత్తి మరియు జిగురు తుపాకీతో పని చేయడానికి కొంత సమయం పట్టింది. సాధారణంగా, "గాలిలో" స్కెచ్లను అప్లోడ్ చేయడం చాలా సౌకర్యవంతంగా ఉంటుంది; దీని కోసం మేము అత్యవసరంగా ఏదైనా కనుగొనవలసి ఉంటుంది.
Arduino IDE స్కెచ్లను అప్లోడ్ చేయడానికి ప్రోగ్రామ్ను ఉపయోగిస్తుంది
ఈ సమస్యను అధిగమించడానికి వివిధ మార్గాలను ప్రయత్నించిన తర్వాత, రచయిత ఈ క్రింది వాటిని కనుగొన్నారు. పరికరం SPI ఇంటర్ఫేస్తో 128 KB ఫ్లాష్ మెమరీని కలిగి ఉంది - మేము వైర్ల ద్వారా డేటాను స్వీకరిస్తాము (రచయిత ఇప్పటికే వైపున కనెక్టర్తో ఒక పరికరాన్ని కలిగి ఉన్నారని గుర్తుంచుకోండి), ఈ మెమరీని బఫర్గా ఉపయోగించండి మరియు డేటాను రేడియో ద్వారా పంపండి మరొక పరికరానికి ఛానెల్. Cybiko నుండి హలో.
రేడియో ఛానెల్తో పాటు ఫాంట్తో పనిచేయడానికి కోడ్ను వ్రాసిన తర్వాత, లోడర్ 4 కిలోబైట్ల కంటే ఎక్కువ పొడవుగా మారింది. కాబట్టి, HFUSE విలువను 0xDA నుండి 0xD8కి మార్చవలసి ఉంటుంది. ఇప్పుడు బూట్లోడర్ పొడవు 8 కిలోబైట్ల వరకు ఉంటుంది మరియు ప్రారంభ చిరునామా ఇప్పుడు 0x1E000. ఇది మేక్ఫైల్లో ప్రతిబింబిస్తుంది, కానీ నింపేటప్పుడు కూడా పరిగణనలోకి తీసుకోవాలి
ATmega802.15.4RFA128లోని 1 ట్రాన్స్సీవర్ వాస్తవానికి ప్రోటోకాల్ను ఉపయోగించి ఆపరేట్ చేయడానికి రూపొందించబడింది.
15 మరియు 26 ఛానెల్లు WiFi నుండి జోక్యానికి చాలా తక్కువ అవకాశం ఉందని తేలింది. రచయిత వాటిలో రెండవదాన్ని ఎంచుకున్నారు. నిరాకరణ: జిగ్బీని ఈ విధంగా సరళీకరించడానికి అనుమతించబడిందో లేదో అనువాదకుడికి తెలియదు. బహుశా మనం కొంచెం ఎక్కువ ప్రోగ్రామింగ్ చేసి పూర్తిగా అమలు చేయాలా?
మొదటి పరికరంలో, STK500 ప్రోటోకాల్ ద్వారా డేటాను ప్రసారం చేసే పరిమిత స్థితి యంత్రాన్ని అమలు చేయడం అవసరం. చాలా వరకు, ప్రసారం చేయబడిన మరియు స్వీకరించబడిన సందేశాలు స్వయం సమృద్ధిగా ఉంటాయి, అయితే కొన్ని గతంలో ఛానెల్ ద్వారా పంపబడిన వాటితో ముడిపడి ఉంటాయి. డైలాగ్ యొక్క వివరణ ఇవ్వబడింది
ఈ డైలాగ్లోని ముఖ్యమైన భాగం గమ్యస్థాన పరికరం యొక్క ఫ్లాష్ మెమరీకి వ్రాయడానికి ఉద్దేశించిన ప్యాకెట్ల ప్రసారం. AVR కుటుంబానికి చెందిన సాధారణ మైక్రోకంట్రోలర్ల కోసం, పేజీ పరిమాణం 128 బైట్లు, కానీ ATmega128RFA1 కోసం ఇది 256. మరియు SPI ప్రోటోకాల్ ద్వారా కనెక్ట్ చేయబడిన ఫ్లాష్ మెమరీకి, ఇది ఒకే విధంగా ఉంటుంది. మొదటి పరికరంలోని ప్రోగ్రామ్, స్కెచ్ను అప్లోడ్ చేస్తున్నప్పుడు, దానిని వెంటనే రెండవదానికి బదిలీ చేయదు, కానీ దానిని ఈ మెమరీకి వ్రాస్తుంది. Arduino IDE ఎంట్రీ యొక్క ఖచ్చితత్వాన్ని తనిఖీ చేసినప్పుడు, అక్కడ వ్రాయబడినది పంపబడుతుంది. ఇప్పుడు మనం అందుకున్న డేటాను రేడియో ఛానల్ ద్వారా రెండవ పరికరానికి ప్రసారం చేయాలి. అదే సమయంలో, స్వీకరించడం నుండి ప్రసారం మరియు వెనుకకు మారడం చాలా తరచుగా జరుగుతుంది. STK500 ప్రోటోకాల్ ఆలస్యం పట్ల ఉదాసీనంగా ఉంటుంది, కానీ డేటా నష్టాన్ని సహించదు (విచిత్రం, కానీ ఆలస్యం డేటా బదిలీని కూడా ప్రభావితం చేస్తుందని పైన చెప్పబడింది). మరియు వైర్లెస్ ప్రసార సమయంలో నష్టాలు అనివార్యం. ATmega128RFA1 బదిలీ యొక్క ఖచ్చితత్వంపై సందేహాలు ఉన్నప్పుడు పునరావృత అభ్యర్థనల యొక్క అంతర్నిర్మిత హార్డ్వేర్ అమలును కలిగి ఉంది, అయితే రచయిత సాఫ్ట్వేర్లో అదే అమలు చేయాలని నిర్ణయించుకున్నాడు. అతను ఒక ప్రోటోకాల్ను అభివృద్ధి చేశాడు, దీనిలో చాలా ఎక్కువ డేటా ఒక మార్గంలో మరొకటి ప్రవహిస్తుంది.
ఇది పరిపూర్ణమైనది కాదు, కానీ ఇది పనిచేస్తుంది. 256-బైట్ పేజీ నాలుగు విభాగాలుగా విభజించబడింది, వీటిలో ప్రతి ఒక్కటి ప్యాకెట్గా గాలిలో ప్రసారం చేయబడుతుంది. ఒక ప్యాకెట్ 125 బైట్ల డేటాతో పాటు ఒక బైట్ పొడవు మరియు CRC కోసం రెండు బైట్లను కలిగి ఉంటుంది. కాబట్టి పేజీ మరియు సెగ్మెంట్ సంఖ్యలతో పాటు 64 బైట్ల పొడవు గల శకలాలు (0 నుండి 3 వరకు) అక్కడ ఉంచబడ్డాయి. స్వీకరించే పరికరం వేరియబుల్ని కలిగి ఉంది, అది ఎన్ని విభాగాలు స్వీకరించబడిందో ట్రాక్ చేయడానికి అనుమతిస్తుంది మరియు నాలుగు వచ్చినప్పుడు, పంపే పరికరం మొత్తం పేజీని స్వీకరించినట్లు నిర్ధారణను పొందుతుంది. నిర్ధారణ లేదు (CRC సరిపోలలేదు) - మొత్తం పేజీని మళ్లీ పంపండి. కేబుల్ ద్వారా ప్రసారం చేసేటప్పుడు కంటే వేగం మరింత ఎక్కువగా ఉంటుంది. చూడండి:
కానీ సాధారణంగా, స్కెచ్లను అప్లోడ్ చేయడానికి మరియు దాని ద్వారా కేబుల్ను పరికరాలకు కనెక్ట్ చేయడానికి అనుకూలమైన మార్గాన్ని అందించడం అవసరం. ఉదాహరణకు, ఫోటోలో ఉన్నట్లుగా CP2102లో అటువంటి ఇంటర్ఫేస్ కన్వర్టర్లో ఉంచండి మరియు మైక్రో USB కేబుల్ను కనెక్ట్ చేసేటప్పుడు మరియు డిస్కనెక్ట్ చేసేటప్పుడు శక్తిని తట్టుకోగలిగేలా దానిని బోర్డుకి అతికించండి.
ఇది 3,3-వోల్ట్ స్టెబిలైజర్ను కూడా కలిగి ఉంది (మరియు 6-వోల్ట్ విద్యుత్ సరఫరా ఉన్న పరికరంలో దీన్ని ఎలా ఉపయోగించాలి - అదే స్టెబిలైజర్ కలిగి ఉంటే, మరియు మీరు రెండు డయోడ్లను జోడించి వాటిలో ఏది పరికరానికి శక్తిని ఇస్తుందో స్వయంచాలకంగా ఎంచుకోవచ్చు) . మూడు LED లు తప్పనిసరిగా ఇంటర్ఫేస్ కన్వర్టర్ బోర్డ్ నుండి అన్సోల్డర్ చేయబడాలి, లేకుంటే అవి వాటిపై పనిచేసేటప్పుడు అదనంగా బ్యాటరీలను లోడ్ చేస్తాయి మరియు కీబోర్డ్ పోలింగ్లో జోక్యం చేసుకుంటాయి మరియు SPI ఇంటర్ఫేస్తో ఫ్లాష్ మెమరీతో పని చేస్తాయి.
లక్ష్యాన్ని సాధించడం కంటే దాన్ని కొనసాగించడం మరింత ఆసక్తికరంగా మారింది (మరియు బస్సు గురించి ఆ జోక్ అవసరం లేదు). రచయిత AVR బూట్లోడర్లు, SPI ఫ్లాష్ మెమరీ, STK500 ప్రోటోకాల్ మరియు 802.15.4 ప్రమాణాల గురించి చాలా నేర్చుకున్నారు.
పైన వివరించిన లైబ్రరీకి అదనంగా అన్ని ఇతర కోడ్ --
మూలం: www.habr.com