EMããªã³ã«ãŒããšãã¥ã¬ãŒã¿ãŒ

確ãã«ããããŸã§æ®éã®ãªãã£ã¹ã«è¡ã£ãããšã®ããç§ãã¡äžäººäžäººã¯ããããã®éæ¥è§Šãã¹ãã©ã®ããã«æ©èœãããã«èå³ãæã£ãŠããŸããããã®èšäºã§ã¯ãéæ¥è§Šã«ãŒãã®åäœåçãæ±ããæåéã3ã€ã®ç¡ç·ã³ã³ããŒãã³ããããšãã¥ã¬ãŒã¿ãŒãäœæããŸãã
RFIDãã¯ãããžãŒ

RFIDã¿ã°
RFIDïŒè±èªã®ç¡ç·åšæ³¢æ°èå¥ãç¡ç·åšæ³¢æ°èå¥ïŒã®å€èгã¯ãããªãåºãåšæ³¢æ°ç¯å²ãšããã®ãã¯ãããžãŒã«äœããã®åœ¢ã§é©çšã§ããããªã倿°ã®ç°ãªãæšæºãåããŠããŸããåèïŒäœ¿çšããåšæ³¢æ°ã¯ã125ã135 kHzã400 kHzã6.78 MHzã13.56 MHzïŒã¡ããã«ãŒãããã³ãã³ã¯ã«ãŒãïŒã27.125 MHzã40.68 MHzã433.29 MHzã869 MHzã915 MHzã2.45 GHzã5.8 GHzã24.125GHzã§ããã芧ã®ãšãããåšæ³¢æ°ç¯å²ã¯éåžžã«åºãã§ãã
125 kHzã®åšæ³¢æ°ç¯å²ã§æãæ®åããæãä¿è·ãããŠããªãã«ãŒãã«ã€ããŠèª¬æããŸããç§ãæãããç¥ã£ãŠããã®ã¯ãEM Marine4102æšæºãåæããããšã§ãããã ãããšãã¥ã¬ãŒã¿ã³ãŒãã䜿çšãããšã125kHzã§åäœããä»ã®æšæºã䜿çšã§ããŸãã
çè«ãããã«æãäžããããšãã§ããããã«ãRFIDãã©ã®ããã«æ©èœãããã«ã€ããŠããã€ãã®èšèãèšãå¿ èŠããããŸããããã«æ¬æã§ã¯ã125 kHz EM MarineèŠæ Œã«é¢é£ããæ å ±ãæäŸãããä»ã®RFIDãœãªã¥ãŒã·ã§ã³ãåæ§ã®æ¹æ³ã§é 眮ãããŸãã

ãªãŒããŒã¯ãæ å ±äº€æã«å ããŠãé»åãäŸçµŠããŸããã¿ã°ã¯é»ç£çãååæºãšããROMã§ãããé»åãäŸçµŠããåŸãèšé²ãããæ å ±ãæäŸããã ãã§ãã

ãã®å³ã¯ãéä¿¡æ©ãšåä¿¡æ©ãã©ã®ããã«é 眮ãããŠããããæç¢ºã«ç€ºããŠããŸããäž¡æ¹ã®æ¯ååè·¯ã¯å ±æ¯ã«èª¿æŽãããŠãããããŒã¿éä¿¡ãšãšãã«ã®ãŒéä¿¡ã«äœ¿çšãããã«ãŒãã§ããããã·ãã¿ã°ã«é»åãäŸçµŠããŸãã
åäœåçã®è©³çްã«ã€ããŠã¯ã[1]ãåç §ããŠãã ããã

åè§£ãããã«ãŒãã®å éšã«ãŒã
ãåè§£ãããšãã³ã€ã«ã®åœ¢ãããã¢ã³ãããšãROMãš75pFã®ã³ã³ãã³ãµãŒãå«ãååç©ã§æºããããããããèŠããŸãã
EM4102ãããã³ã«ã®èª¬æ
å ã«é²ãåã«ããšãã¥ã¬ãŒãããEM4102æšæºã«ã€ããŠçè§£ããŸããããEM4102æºæ ã®RFIDã¿ã°ã«ã¯ã64ãããã®èªã¿åãå°çšã¡ã¢ãªãå«ãŸããŠããŸããå®éãããã¯ROMã§ããã€ãŸããROMããæ å ±ãèªã¿åãããšã¯ã§ããŸããã倿Žãããæžã蟌ãã ãããããšã¯ã§ããŸãããã€ãŸãããã®ãããã¯å·¥å Žã§1åãã©ãã·ã¥ãããŸããã¿ã°ã®ã¡ã¢ãªæ§é ãæ¬¡ã®å³ã«ç€ºããŸãã

ã¿ã°ãRFIDãªãŒããŒããæŸåºãããé»ç£çã«å ¥ããšããã®é»ç£çãããšãã«ã®ãŒïŒé»åïŒãåãåããããŒã¿ã®éä¿¡ãéå§ããŸããæåã®9ãããã¯è«ççãªãã®ã§ãããããã®ãããã¯ãéä¿¡ã®éå§ã瀺ãããŒã¯ã³ã®ã·ãŒã±ã³ã¹ãšããŠäœ¿çšãããŸããä»ã®ãã¹ãŠã®ããŒã¿ã¯ããªãã£ã䜿çšããããããã®9ãããã®ã·ãŒã±ã³ã¹ã¯ä»ã®å Žæã§ã¯çºçããªããªããŸããæ¬¡ã«ãåã°ã«ãŒãã«4ã€ã®ããŒã¿ããããš1ã€ã®ããªãã£ããããããªã10ã®ã°ã«ãŒãããããŸããæåŸã«ããã§ãã¯ãµã ã®4ããããšæåŸã®ã¹ããããããããããåžžã«ãŒãã§ãã
ã¿ã°ã¯ãé»åãäŸçµŠããããŸã§ããŒã¿éä¿¡ãµã€ã¯ã«ãç¹°ãè¿ããŸãããããã£ãŠããªãŒããŒã§ã¿ã°ãåžžã«èªã¿åãããŠããããšã確èªããŸãã
çªå·0x06ã®ã©ãã«ã«ãã£ãŠéä¿¡ãããããŒã¿ã®äŸã瀺ããŸããã¯ããŒãžã§ã³çªå·ã0x001259E3ã¯ããŒã¿ã§ãã

ã¡ãªã¿ã«ãã«ãŒãã«å°å·ãããŠããçªå·ã¯ãèªè ãåãåã16鲿°ã«å€æããããšãã§ããŸããããšãã°ãçªå·ã¯ã«ãŒãã«æžãããŠããŸãïŒ116,23152
- 10é²è¡šèšã®116ã¯16é²è¡šèšã®0x74ã§ãã
- 10鲿°ã®23152ã¯16鲿°ã®0x5A70ã§ãã
ããããçµã¿åãããããšã«ããããªãŒããŒããæäŸãããã«ãŒãã®ã·ãªã¢ã«çªå·0x00745A70ãååŸããŸãã
ä¿¡å·å€èª¿
ã¿ã°ãããªãŒããŒãžã®ããŒã¿éä¿¡ã¯ããªãŒããŒã®ãã£ãªã¢ä¿¡å·ïŒãã®å Žåããã£ãªã¢åšæ³¢æ°ã¯125 kHzïŒãå€èª¿ããããšã«ãã£ãŠå®è¡ãããŸããé»åã¯ãã®ãã£ãªã¢åšæ³¢æ°ããäŸçµŠãããä¿¡å·ã¯ããã«ãã£ãŠå€èª¿ãããããšã«æ³šæããŠãã ããããŸãããªãŒããŒãšã¿ã°ã®éã®çžäºäœçšã®åçŽåãããã¹ããŒã ãèããŠã¿ãŸãããããã®åçãèŠããŠãããŠãã ãããåŸã§åç §ããŸãã

ã芧ã®ãšãããã¿ã°ã«ã¯ãLCæ¯ååè·¯ã亀æµé»æµãæŽæµãããã€ãªãŒãããªããã«ãå¹³æ»åããããã®ã³ã³ãã³ãµïŒããã¯ã¿ã°ã®é»æºã®äžéšã§ãïŒãããã³ä¿¡å·ãå€èª¿ã§ãããã®ãå¶åŸ¡ããããšã«ãããã©ã³ãžã¹ã¿ããããŸãããªãŒããŒã§ã¯ãããã¯ã³ã€ã«ãæµãã黿µã®å€åã«åæ ãããŸããç°¡åã«èšãã°ãã¿ã°ã¯ãªãŒããŒã®ãã£ãŒã«ãã«å ¥ããšé»æµãïŒã»ãŒäžå®ã«ïŒæ¶è²»ããæ å ±ãéä¿¡ãããšãã«ãã©ã³ãžã¹ã¿ãæ¶è²»ãã黿µã®å€ã倿ŽããããããªãŒããŒã¯æ¶è²»é»åãæž¬å®ããããšã§ä¿¡å·ãåä¿¡ã§ããŸãã
ãªãŒããŒã¯ãå€èª¿åšãšã³ã€ã«ã䜿çšããŠç£å Žãçæããå€èª¿ãããä¿¡å·ãååŸããŠãããã³ãŒãããŸãã

ãã£ãªã¢ä¿¡å·ã®å€èª¿ã®äŸ
å®å šã«æ··ä¹±ããŠããªãå Žåã¯ãããã«é²ãã§ã¿ãŸããããããŒã¿ãéä¿¡ããã«ã¯ãä¿¡å·ãå€èª¿ããå¿ èŠããããŸããã€ãŸããéä¿¡ãããæ å ±ã®ãããããã£ãªã¢åšæ³¢æ°ã«éãåãããŸãã
RFIDèŠæ Œã«ãããšã3ã€ã®äžè¬çãªå€èª¿æ¹åŒããããŸãã
- ãã³ãã§ã¹ã¿ãŒã³ãŒã
- äºçžãã³ãã§ã¹ã¿ãŒã³ãŒã
- äœçžã·ããã³ãŒãã£ã³ã°
EM4102èŠæ Œã¯ãã³ãã§ã¹ã¿ãŒã³ãŒãã£ã³ã°ã¹ããŒã ã䜿çšããŠãããããæ€èšããŸããEM4102ãããã³ã«çšã«å€èª¿ããå Žåã1ãããã®éä¿¡æéã¯ãã£ãªã¢åšæ³¢æ°ïŒ125 kHzïŒã®64ã32ããŸãã¯16åšæã«ããããšãã§ããŸãã

ãã®ã³ãŒãã£ã³ã°ã«ãããããŒã¯ã¯1ãããã®éä¿¡æéã®ã¡ããã©çãäžã§ä¿¡å·éä¿¡ã¬ãã«ã倿ŽããŸãããããã®ç¬éã®äœã¬ãã«ããé«ã¬ãã«ãžã®é·ç§»ã¯è«çã1ãã®ç¶æ ãæå³ããé«ã¬ãã«ããäœã¬ãã«ãžã®é·ç§»ã¯è«çã0ãã®ç¶æ ã衚ããŸãã

ãªãŒããŒã®ã³ã€ã«ã§ãã£ããã£ãããå®éã®å€èª¿ä¿¡å·ã
RFIDãšãã¥ã¬ãŒã¿ãŒã®äœæ
ããŠãããªãããŸã ããã«ããŠããã®ãããªèšç®ã§é ãè «ããŠããªããã°ã2ã€ã®éšåããRFIDãšãã¥ã¬ãŒã¿ãŒãäœãæãæ¥ãŸããã倩æã¯ãã®åçŽãã«ãããŸããMicah Dowtyããã¢ã€ãã¢ãšã³ãŒããåããŠãããã€ã¹ãçµã¿ç«ãŠãŸãããåçã¯ç§ã®ãã®ã§ãã

ããã¯ã
ãããžã§ã¯ããµã€ãã¿ã°ããšãã¥ã¬ãŒãããå¯èœæ§ã®ãããããã¥ã¢ã³ãã¯ããŒãã§ããã³ãŒãã¯éåžžã«è峿·±ããã®ã§ãè¯éºã§ç°¡æœã ãšèšãããããããŸããïŒã¢ã»ã³ãã©ãŒã䜿çšãããŸãïŒã詳现ã«èŠãŠãããŸããããåæããŸããããã§ã³ãŒããèŠãããšãã§ããŸãã
ãŸãããããäžè¬çã«ã©ã®ããã«æ©èœããããçè§£ããŸãããããã ããéåžžã®ãã€ã¯ãããã»ããµã®é ç·å³ãšççŸãããããå®çŸ©äžã¯æ©èœããªãã¯ãã§ããããã€ã¹å³ã¯ãœãŒã¹ã³ãŒãããååŸãããŸãã

çŽ1ÎŒHã®ã€ã³ãã¯ã¿ãŒãšATtiny85ãã€ã¯ãã³ã³ãã¥ãŒã¿ãŒ
ããã¯ããååžã®çæ§ãæ©åšã®æäœã®ç¹åŸŽãçè§£ããŠããã¬ãã«ã§ãã¡ãŒã«ãŒã瀺ãå¶éãè¶ ããæè¡ãœãªã¥ãŒã·ã§ã³ãäœæã§ããå Žåãæ¬åœã®ãããã³ã°ã§ãããããŠãããã¯å人çã«æ€èšŒãããŠæ©èœããŸããããã¯ãããã«ãŒããšããèšèã®æ¬åœã®æå³ã§ããããããã³ã°ãçé£ã«é¢ãããã®ã§ã¯ãããŸããã
å°æ¥çã«ã¯ããã®ã³ã€ã«ã§ã¯éåžžã®åäœã«ã¯äžååã§ãããéåžžã®ã¢ã³ãããäœæãã黿ºã³ã³ãã³ãµãšå ±æ¯ã³ã³ãã³ãµãåæããå¿ èŠããããŸãããããããä»äºã®ååã瀺ãããã«ã¯ãããã¯éåžžã«é©ããŠããŸãã
ããã¯ã©ã®ããã«æ©èœããŸããïŒ
ãã®ãšãã¥ã¬ãŒã¿ãŒã®ã³ãŒããè§£æããåã«ãéåžžã®ã¢ã³ããã«ããŸããçŸåšã®åè·¯ã䜿ã£ãç§ã®å®éšã§ã¯ããã®åäœã極端ã«äžå®å®ã§ããããšãæããã«ãªããŸãããããã¯èªè ã®éåžžã«è¿ãã§ã®ã¿æ©èœããããã§ãåžžã«ã§ã¯ãããŸããããã®ãããæåã¯ã³ã³ãããŒã©ãŒã®ãã¯ãŒã¬ãã°ã«0.1 uFã®ã³ã³ãã³ãµãŒãã¯ãã ä»ãããæ¬¡ã«å®éã®ã©ãã«ã®ããã«ãå®éã®å€§ããªæ¯ååè·¯ãäœæããããšã«ããŸããã
- AVR /. /, . , . , . , . , . , .
- AVR. , , , ( 0,1 ). AVR. , , 125!
- . ATtiny85 2,5 . 1,8 . AVR , ...
- , ! , , . Clock ! 125 , RFID. , !
- ? -, . . EM4102 32 . HID FSK 4 . RFID- . « » , RFID -.

æåã®å€æŽã¯ã黿ºçšã®0.1uFã³ã³ãã³ãµã§ãã
ã¢ã³ããã®äœæ
ã³ã€ã«ã¢ã³ãããäœæããã³ãã¯ãããŸããããããã§ãããã¥ã¡ã³ãã«ç²Ÿéããããã»ã¹ã®ç©çåŠãçè§£ããå¿ èŠããããŸã...ããã¯é£ãããªããç·åçåŸã§ããããåŠçã§ããŸããå°ãã®å¿èãšå¿èãå¿ èŠã§ãã[1]ã®
åçã®ããã«ãã¢ã³ããã®çµã¿ç«ãŠãšæ§æã¯éåžžã«ç°¡åã§ãã

ã¢ã³ãããèšç®ããã«ã¯ãå°ãçè«ãèŠããŠããå¿ èŠããããŸãã125kHzã®åšæ³¢æ°ã«èª¿æŽãããçºæ¯åè·¯ãäœãå¿ èŠããããŸãã黿°å·¥åŠã®çè«çåºç€ã®ã³ãŒã¹ãéããŠãçºæ¯åè·¯ãšã¯äœããèªãã§ã¿ãŸãããã
æ¯ååè·¯ã黿°æ¯åãå±èµ·ã§ããã€ã³ãã¯ã¿ãšã³ã³ãã³ãµãå«ã黿°åè·¯ã

äžŠåæ¯ååè·¯
ãã¹ãŠã®æ°åŠãé¢ããŠãã€ã³ãã«è¡ããšãæ¯ååè·¯ã«ã¯ãåŒã«ãã£ãŠæ±ºå®ãããå ±æ¯åšæ³¢æ°ãªã©ã®ãã©ã¡ãŒã¿ããããŸãã
ããã§ãfã¯çºæ¯åšæ³¢æ°ãLã¯ã³ã€ã«ã®ã€ã³ãã¯ã¿ã³ã¹ãCã¯ã³ã³ãã³ãµã®å®¹éã§ãã
ãã®å Žåãåºå®ãã©ã¡ãŒã¿ïŒåšæ³¢æ°ïŒãããã容éãšã€ã³ãã¯ã¿ã³ã¹ã§éã¶ããšãã§ããŸããã³ã€ã«ãèšç®ããããã«ãããã¥ã¡ã³ã[2]ã䜿çšããŸããã©ããããããïŒä»»æã®åšæ³¢æ°ã®ïŒRFIDã¿ã°çšã®ã¢ã³ãããäœæããããšããŠãã人ã¯èª°ã§ããããã«ç²ŸéããŠããå¿ èŠããããŸãïŒ
å€ãã®è·äººã¯ãèªè ãšãšãã¥ã¬ãŒã¿ãŒã®äž¡æ¹ïŒæ¬è³ªã¯éèŠã§ã¯ãããŸããïŒã®ããã«ãäžžãã³ã€ã«ãäœããŸããã«ãŠã³ããšè£œé ã¯ç°¡åã§ããã倧ããªæ¬ ç¹ããããŸããçŽç·å¯žæ³ãã«ãŒãããã倧ããããã§ããæšæºã®ã«ãŒãã®å¯žæ³ãããçŽç·ã®å¯žæ³ãå°ãããçµæãšããŠåŸãããããã€ã¹ãæšæºã®RFIDã«ãŒãã®ãµã€ãºã«ãªãããã«ãé·æ¹åœ¢ã®åœ¢ç¶ã®ã€ã³ãã¯ã¿ãäœæããããšæããŸãããã®çµæãå°æ¥ã®ã€ã³ãã¯ã¿ãŒã®ãµã€ãºã¯ãçŸåšã®ããŒã¯ãšã»ãŒåããã€ãŸãçŽ70x40mmãéžæããŸãã..ãã³ã³ãã³ãµã10nFã«éžæãããŠããå Žåãã³ã€ã«ã®ã€ã³ãã¯ã¿ã³ã¹ïŒäžèšã®åŒããïŒã¯162ÎŒHã«ãªããŸããæ¬¡ã«ãé·æ¹åœ¢ã³ã€ã«ãèšç®ããããã®ããã¥ã¡ã³ããèŠãŠã¿ãŸããããã³ã€ã«ã®å·»ãæ¹ã¯ãæé¢ç©0.2mmã®ã¯ã€ã€ãŒãéžã³ãŸããããã®çµæãããã¥ã¡ã³ãã®å¯Ÿå¿ããã»ã¯ã·ã§ã³ãéããæ¬¡ã®çŽ æŽãããåŒãç§ãã¡ã®ç®ã«æç€ºãããŸãã

ã芧ã®ãšãããã³ã€ã«ã®å€ªããšå¹ ã®ãã©ã¡ãŒã¿ã¯äžæã§å¯å€ã§ãïŒã¯ã€ã€ã®å€ªã0.2 mmã«äŸåããŸãïŒããäžè¬çãªèŠç©ããã§ã¯42ã¿ãŒã³ã®æ°å€ãåŸãããŸãããäœåºŠãç¹°ãè¿ããŠãç°¡åã§æ£ç¢ºãªèšç®ãè¡ãããšã¯å¯èœã§ãããç§ãã¡ã®å Žåã¯ããããŸãã
ãã®åŸãã³ã€ã«ãå·»ãããã®ãã¬ãŒã ã70x40mmã«ããå¿ èŠããããŸããPCBã§äœã£ãŠã³ã€ã«ãå·»ããã

PCBãã¬ãŒã


å·»ããŠå®æããã³ã€ã«
æ®å¿µãªãããç§ã¯ã€ã³ãã¯ã¿ã³ã¹ã¡ãŒã¿ãŒãæã£ãŠããªãã®ã§ãç§åŠçãªããŒã¯æ³ã䜿çšããŠããã«å ã«é²ãå¿ èŠããããŸãããèšç®ãã³ã€ã«å·»ãã®å·»ãæ°ãééããã®ã§ãããããç®ã§èŠãŠãæåã§å ±æ¯å®¹éãéžæããããšã«ããŸããããããè¡ãããã«ãç§ã¯ã«ãŒããªãŒããŒã«ã³ã€ã«ãåºå®ãããã®äž¡ç«¯ããã¬ããããŒãïŒã穎ã®ãããããã¬ã¹ãïŒã«çªãåºãããªã·ãã¹ã³ãŒãã«ä¿¡å·ãèšé²ããªãããã³ã³ããã1ã€ãã€æ¥ç¶ãå§ããŸããã

å ±æ¯ã³ã³ãã³ãµã®äœ¿çšãéå§ãã
æåã«ãå ±æ¯ããã¯ãã®10nFã³ã³ãã³ãµã確èªããŸãããããããä¿¡å·æ¯å¹ ã¯ç©ºã®ã³ã€ã«ãšæ¯èŒããŠããã«äœäžããŸãããããããç§ã¯ããå°ããªã³ã³ãã³ãµãŒãåããŸãããããã§ãç§ã¯å ±é³ŽãæããããŸã§ã³ã³ãã³ãµãŒãéãæããŸããããããã£ãŠãã³ã³ãã³ãµã®å ±æ¯å®¹éã¯3.2nFã§ããã

ã³ã³ãã³ãµãªãã®ä¿¡å·ã空ã®ã³ã€ã«

10nFä¿¡å·

1 nFã2 nF

3 nFã4 nFã2.2 nF

3.2 nF
ããŸããŸãªãªãã·ã§ã³ã詊ãããšãããæå€§å€ã3ã4 nFã®éã«ããããšãããããçµæã¯3.2 nFã®ã³ã³ãã³ãµãŒïŒ2ã€ã®ã³ã³ãã³ãµãŒã䞊åã«ãªã£ãŠããïŒã§ãããããã§ããªãŒã«ã¯ããã«å®éšããæºåãæŽããŸããã
äžè¬çã«ãã³ã€ã«ã¯äžè¬ã«ããªã³ãåè·¯åºæ¿äžã®ãã©ãã¯ã®åœ¢ã§äœæã§ããããšã«æ³šæãããã®ã§ãããå°æ°ã®è£œåã§ã¯ãããè¡ãå¿ èŠããããŸããããã¯ã AlexanderGuthmannã®125kHzã§ã®ãã®ãããªããŒãã®äŸã§ããæ®å¿µãªããããµã€ãã¯äºå®äžæ¶æ» ããŠãããäœè ã¯é·ãéé£çµ¡ãåãåã£ãŠããªãã®ã§ãç§ãã¡ã¯ç§ã®åçã ãã§æºè¶³ããŠããŸãã誰ãããããèŠã€ããã®ãæäŒã£ãŠããããªããç§ã¯æè¬ããã§ãããïŒåœŒã«äœãèµ·ãã£ãã®ãããããŸããã

ãããã£ãŠããšãã¥ã¬ãŒã¿ãããã«ããªã³ãåè·¯åºæ¿ã®åœ¢ã«ããããšã¯åé¡ãããŸãããããã¥ã¢ã«[2]ãããã°ã14æ³ã®ãã€ã人ã®ç·åçåŸãèšç®ã§ããã®ã§ãèªåã§èšç®ã§ãããšæããŸãã
ã³ãŒããèŠãŠã¿ãŸããã
ããã§ èŠãããšãã§ããã³ãŒããç°¡åã«èŠãŠã¿ãŸãããã2çš®é¡ã®ã«ãŒãã®ãšãã¥ã¬ãŒã·ã§ã³ã®äŸããããŸããEM4102ã®ã¿ãåæããŸãã
ãŸããã³ãŒãã瀺ãããã«ããã€ã¯ãã³ã³ãããŒã©ãŒããã©ãã·ã¥ãããšãã¯ããã¥ãŒãºãããã0xC0ã®å€lfuseã«ãã©ãã·ã¥ããå¿ èŠããããŸããããã«ãããã³ã³ãããŒã©ãŒã¯å€éšãžã§ãã¬ãŒã¿ãŒããã¯ããã¯ãããŸããå€éšãžã§ãã¬ãŒã¿ãŒããã®çæã§ãã¥ãŒãºããããèšå®ããŠãããããã³ã³ãããŒã©ãŒã®ç¹æ» ã¯å€éšãœãŒã¹ããã®ã¯ããã¯ãå¿ èŠã«ãªããšããäºå®ã«é¢é£ããŠããããšã«æ³šæããŠãã ããã
ãã¹ãŠã®ã³ãŒãã¯ãã¯ãã«åºã¥ããŠããŸãããã¯ããšã¯äœããã€ãŸãã³ã³ãã€ã«çšã®ã³ãŒããæºåããããã°ã©ã ã§ããããšãæãåºãããŠãã ãããç§ãã¡ã®ããã°ã©ã ã¯ãrjmpãcallïŒ2ã¯ããã¯ïŒãnopãldiãoutãretïŒãã¹ãŠ1ã¯ããã¯ïŒã®ã¢ã»ã³ãã©ãŒåœä»€ã§æ§æãããŠããŸãããã¹ãŠãæ®ãã®ãã¹ãŠã®ã³ãŒãã¯ãã·ãªã¢ã«çªå·ãã¯ãïŒå®çŸ©ïŒã«å¿ãããã¯ãã«ãã£ãŠåœ¢æãããŸããäœæ¥ã®ç¹åŸŽã¯ãéåžžã®äœæ¥ã«ååãªæ°ã®ã¯ããã¯ãµã€ã¯ã«ãããããšã§ããAVRã³ã³ãããŒã©ãŒã®ãžã£ã³ãåœä»€ã«ã¯2ã¯ããã¯ãµã€ã¯ã«ãããããšãèæ ®ããŠã32ã¯ããã¯ãµã€ã¯ã«ã§äœããå®è¡ããŠã¿ãŠãã ããããããã£ãŠããã¹ãŠã®ã³ãŒãã¯IDã«ãŒãã«å¿ããŠãã¯ãã«ãã£ãŠçæãããŸãã
#define FORMAT_IS_EM4102
#define EM4102_MFR_ID 0x12
#define EM4102_UNIQUE_ID 0x3456789A
ãšãã¥ã¬ãŒãããã«ãŒãã®çš®é¡ãå®çŸ©ããIDã«ãŒããèšå®ããŸããããã¯ã¡ã€ã³ãã¯ãã§ãããããã«åºã¥ããŠæ®ãã®ã³ãŒãã圢æãããŸãããããŠãã¿ãã ã圌ã®åšå³ã®ãããã¯ãã
.macro delay cycles
.if \cycles > 1
rjmp .+0
delay (\cycles - 2)
.elseif \cycles > 0
nop
delay (\cycles - 1)
.endif
.endm
é å»¶ãã¯ããé å»¶ãã£ãã¯ã®æ°ãå ¥åãšããŠåãå ¥ããŸããããªãæçœãªååž°ãã¯ãã§ãããnopã³ãã³ãïŒæäœãªãã1ã¯ããã¯ãµã€ã¯ã«ïŒãšrjmpã+ 0ã³ãã³ãïŒæ¬¡ã®è¡ã«ç§»åã2ã¯ããã¯ãµã€ã¯ã«ïŒã䜿çšããŠé å»¶ãå®è¡ããŸãããããã®ã³ãã³ããçµã¿åãããããšã§ãå¿ èŠãªé·ãã®å°ç¯ã®é å»¶ãäœæã§ããŸããå®éãã³ãŒãã¯äœãããŸããããã·ã³ã®æéãç¡é§ã«ããã ãã§ãã
ããªãããŸã èããŠãããªããç§ã¯ããªãã®è³ãå®å šã«ã¬ã€ãããŸãããããã³ãŒãã¯ããªããèããªããã°ãªããªãã»ã©ç¬åµçã§ãã
ãã³ãã§ã¹ã¿ãŒã³ãŒãã«ããååž°çãã¯ããšã³ã³ãŒãã£ã³ã°ã
.macro manchester bit, count=1
.if \count
manchester (\bit >> 1), (\count - 1)
.if \bit & 1
baseband_1
baseband_0
.else
baseband_0
baseband_1
.endif
.endif
.endm
.macro stop_bit
baseband_0
baseband_1_last
.endm
å®éããã¹ãŠã®ããžãã¯ã¯ããã«å®è£ ãããŠããŸããå ¥åãšããŠããããã¹ã¯ãšãããã«ãŠã³ã¿ãŒãåãå ¥ããŸããã«ãŠã³ã¿ãŒããŒãã§ãªãå Žåã¯ãã«ãŠã³ã¿ãŒããã¯ãªã¡ã³ãããŠãããäžåºŠèªåèªèº«ãåŒã³åºããŸãïŒååž°ãã¯ããããïŒãããã«ãæ¬äœèªäœã«ã¯ãbaseband_0ãbaseband_1ãããã³baseband_1_lastãã¯ããžã®åŒã³åºãããããŸããã1ããŸãã¯ã0ãã®ãããã«å¿ããŠããã³ãã§ã¹ã¿ãŒã³ãŒãä¿¡å·ã0ãã1ãŸãã¯1ãã0ã«å€èª¿ããŸãã
äžèšã®èšäºã§ãã«ãŒãã®å 容ãã©ã®ããã«ãšã³ã³ãŒããããŠããããããªãã£ããããã©ãã«ããããæåŸã«ã¹ãããããããèšèŒãããŠããããšãæãåºããŠãã ããããããã£ãŠãç§ãã¡ã®ã¿ã¹ã¯ã¯ããã®ã¡ãœããã§IDã¿ã°ããšã³ã³ãŒãããããšã§ããããã«ã¯ã2ã€ã®ãã¯ãããããŸãã
#define ROW_PARITY(n) ( (((n) & 0xF) << 1) | \
(((n) ^ ((n) >> 1) ^ ((n) >> 2) ^ ((n) >> 3)) & 1) )
#define COLUMN_PARITY ( (EM4102_MFR_ID >> 4) ^ \
(EM4102_MFR_ID) ^ \
(EM4102_UNIQUE_ID >> 28) ^ \
(EM4102_UNIQUE_ID >> 24) ^ \
(EM4102_UNIQUE_ID >> 20) ^ \
(EM4102_UNIQUE_ID >> 16) ^ \
(EM4102_UNIQUE_ID >> 12) ^ \
(EM4102_UNIQUE_ID >> 8) ^ \
(EM4102_UNIQUE_ID >> 4) ^ \
(EM4102_UNIQUE_ID) )
ROW_PARITY-4ãããæååã®ããªãã£ããããèšç®ããŸããCOLUMN_PARITY-ã¡ãã»ãŒãžå šäœã®ãã§ãã¯ãµã ãèšç®ããŸãã
ç§ãã¡ã®ä»äºã®ãã¹ãŠã®ããžãã¯ã¯ã.mainã®ãã¯ãã§èª¬æãããŠããŸã
header
manchester ROW_PARITY(EM4102_MFR_ID >> 4), 5
manchester ROW_PARITY(EM4102_MFR_ID >> 0), 5
manchester ROW_PARITY(EM4102_UNIQUE_ID >> 28), 5
manchester ROW_PARITY(EM4102_UNIQUE_ID >> 24), 5
manchester ROW_PARITY(EM4102_UNIQUE_ID >> 20), 5
manchester ROW_PARITY(EM4102_UNIQUE_ID >> 16), 5
manchester ROW_PARITY(EM4102_UNIQUE_ID >> 12), 5
manchester ROW_PARITY(EM4102_UNIQUE_ID >> 8), 5
manchester ROW_PARITY(EM4102_UNIQUE_ID >> 4), 5
manchester ROW_PARITY(EM4102_UNIQUE_ID >> 0), 5
manchester COLUMN_PARITY, 4
stop_bit
ã€ãŸããããããŒãåãæ¹æ³ã§9ããã転éããæ¬¡ã«ãã³ãã§ã¹ã¿ãŒã³ãŒãã£ã³ã°ãè¡ãã4ãããããšã«ããªãã£ããããèšç®ããæåŸã«ãã§ãã¯ãµã ãšã¹ããããããã転éããŸãã
ããŒã¹ãã³ããäœã§ããããçè§£ããããšã¯æ®ã£ãŠããŸãããã®ããã«ããã1ã€ã®ã©ãããŒãã¯ãããããŸãïŒã¯ããããã€å¯èœã§ããïŒïŒã
.macro baseband_0
rcall baseband30_0
rjmp .+0
.endm
.macro baseband_1
rcall baseband30_1
rjmp .+0
.endm
.macro baseband_1_last
rcall baseband30_1
rjmp main
.endm
.macro header
manchester 0x1FF, 9
.endm
ããŒã¹ãã³ã*ãã¯ã-ã¢ã»ã³ããªã³ãŒããå®è¡ããŸããé©åãªé¢æ°ãåŒã³åºããŠãããå¥ã®åœä»€ã«ç§»è¡ããŸãã baseband_1_lastãã¯ãã¯baseband_1ãã¯ãã«äŒŒãŠããŸããã以äžã®ã³ãã³ãã§ã¯ãªããmain颿°ã®å é ã«ç¡æ¡ä»¶ã§ãžã£ã³ãããç¹ãç°ãªããŸãããã¯ãããããŒ-1ã«çããåãã¿ã€ãã®9ãããã®ããããŒã衚瀺ããã®ã«åœ¹ç«ã¡ãéä¿¡ããããããæ°ãšæ°ã®éä¿¡ã§ãã³ãã§ã¹ã¿ãŒãã¯ããåŒã³åºããŸãã
æåŸã«è§£æããå¿ èŠãããã®ã¯ãbaseband30_0颿°ãšbaseband30_1颿°ã§ãããããã¯æ¬¡ã®ã³ãŒãã§èšè¿°ãããŸãã
baseband30_0:
ldi r16, OUT_PINS // 1
rjmp baseband30 // 2
/*
* Emit a 1 at the baseband layer.
* Takes a total of 30 clock cycles, including call overhead.
*/
baseband30_1:
ldi r16, 0 // 1
rjmp baseband30 // 2
/*
* Internal routine for baseband32_0 and _1. Must use
* a total of 24 clock cycles. (32 - 1 ldi - 2 rjmp - 3 rcall)
*/
baseband30:
out _SFR_IO_ADDR(DDRB), r16 // 1
delay 19 // 19
ret // 4
baseband30_0ãŸãã¯baseband30_1ãšåŒã°ãã颿°ã«å¿ããŠãI / Oãã³ã«ããã¹ãå€ãã¬ãžã¹ã¿r16ïŒ1ãŸãã¯0ã«æžã蟌ãŸããŸãããã®åŸãbaseband30ã«ç¡æ¡ä»¶ã«é·ç§»ããåºåãå®è¡ããã19ã¯ããã¯ãµã€ã¯ã«ã®é å»¶ãçºçããŸãããã®åŸãæ»ããŸãã
ãã®ã³ãŒãã®æå€§ã®éæ³ã¯ãåã¯ããã¯ãµã€ã¯ã«ã®çŽåã«èšç®ãããããšã§ãããã³ãã§ã¹ã¿ãŒã³ãŒãã®éä¿¡ã®åã¯ããã¯ã¯ãæšæºã§èš±å¯ãããŠããã®ãšãŸã£ããåãåšæãã€ãŸã32ããã»ããµã¯ããã¯ãµã€ã¯ã«ãèŠããŸããããã¯çŽ æŽãããç¬åµçã§ããåã³ãã³ãã«å¿ èŠãªããŒã®æ°ãèŠããŠããå¿ èŠããããŸãã
ããããããã³ã³ãã€ã«ããŠããããã©ã®ããã«èŠããããããããã¹ãŠã®ãã¯ããã©ã®ããã«å±éããããèŠãŠã¿ãŸãããã ïŒavr-gccãã€ã³ã¹ããŒã«ããåŸïŒmakeã³ãã³ãã䜿çšããŠã³ã³ãã€ã«ããçµæã®elfãã¡ã€ã«ãéã¢ã»ã³ãã«ããŸãã
00000000 __vectors:
0: 0e c0 rjmp .+28 ; 0x1e __ctors_end
2: 15 c0 rjmp .+42 ; 0x2e __bad_interrupt
...
ãŸããå²ã蟌ã¿ãã¯ãã«ããããŸãããé¢å¿ãããã®ã¯æåã®ãžã£ã³ãã ãã§ããæ®ãã®ãã¯ãã«ã¯ã©ãã«ãéããªãã®ã§ã
0000001e __ctors_end:
1e: 11 24 eor r1, r1
20: 1f be out 0x3f, r1 ; 63
22: cf e5 ldi r28, 0x5F ; 95
24: d2 e0 ldi r29, 0x02 ; 2
26: de bf out 0x3e, r29 ; 62
28: cd bf out 0x3d, r28 ; 61
2a: 02 d0 rcall .+4 ; 0x30 main
2c: 11 c1 rjmp .+546 ; 0x250 _exit
ããã§ã¯ãI / OããŒããèšå®ããmain颿°ãåŒã³åºããŸããã¡ã€ã³ã¯ãbaseband30 *ãšãžã£ã³ã颿°ãžã®éåžžã«å€ãã®åŒã³åºãã§æ§æãããŠããŸãïŒããã¯ããã¯ãã®å°çã®ãããªãµãŒã«ã¹ãå±éãããæ¹æ³ã§ãïŒã
00000030 main:
30: 01 d1 rcall .+514 ; 0x234 baseband30_1
32: 00 c0 rjmp .+0 ; 0x34 main+0x4
34: fd d0 rcall .+506 ; 0x230 baseband30_0
36: 00 c0 rjmp .+0 ; 0x38 main+0x8
38: fd d0 rcall .+506 ; 0x234 baseband30_1
3a: 00 c0 rjmp .+0 ; 0x3c main+0xc
3c: f9 d0 rcall .+498 ; 0x230 baseband30_0
3e: 00 c0 rjmp .+0 ; 0x40 main+0x10
40: f9 d0 rcall .+498 ; 0x234 baseband30_1
42: 00 c0 rjmp .+0 ; 0x44 main+0x14
44: f5 d0 rcall .+490 ; 0x230 baseband30_0
46: 00 c0 rjmp .+0 ; 0x48 main+0x18
48: f5 d0 rcall .+490 ; 0x234 baseband30_1
4a: 00 c0 rjmp .+0 ; 0x4c main+0x1c
4c: f1 d0 rcall .+482 ; 0x230 baseband30_0
...
22e: 00 cf rjmp .-512 ; 0x30 main
ãªã©...ã¡ã€ã³ã«æ»ããŸã§
ãããŒã¹ãã³ãã¢ãžã¥ãŒã«ãã©ã®ããã«èŠãããèŠãŠã¿ãŸãããã
00000230 baseband30_0:
230: 08 e1 ldi r16, 0x18 ; 24
232: 02 c0 rjmp .+4 ; 0x238 baseband30
00000234 baseband30_1:
234: 00 e0 ldi r16, 0x00 ; 0
236: 00 c0 rjmp .+0 ; 0x238 baseband30
00000238 baseband30:
238: 07 bb out 0x17, r16 ; 23
23a: 00 c0 rjmp .+0 ; 0x23c baseband30+0x4
23c: 00 c0 rjmp .+0 ; 0x23e baseband30+0x6
23e: 00 c0 rjmp .+0 ; 0x240 baseband30+0x8
240: 00 c0 rjmp .+0 ; 0x242 baseband30+0xa
242: 00 c0 rjmp .+0 ; 0x244 baseband30+0xc
244: 00 c0 rjmp .+0 ; 0x246 baseband30+0xe
246: 00 c0 rjmp .+0 ; 0x248 baseband30+0x10
248: 00 c0 rjmp .+0 ; 0x24a baseband30+0x12
24a: 00 c0 rjmp .+0 ; 0x24c baseband30+0x14
24c: 00 00 nop
24e: 08 95 ret
æåŸã«ãé å»¶ãã©ã®ããã«é å»¶ã®ãžã£ã³ããšããŒã®ãªã¹ãã«æ¡åŒµããããã確èªã§ããŸããããã¯ãšãŠãçŸããéæ³ã§ãã
ããŠãç§ãã¡ã¯ã³ãŒããçè§£ããŸãããè³ããæåºãããè³ãåéãããã¹ãã«é²ã¿ãŸãã
ãã¹ã
åŸããããã¹ãŠã®ç¥èãå¿çšãããã¹ãã宿œããŸãããã¡ãŒã ãŠã§ã¢ãã³ã³ãã€ã«ããã³ã³ãããŒã©ãŒããã©ãã·ã¥ãããã¥ãŒãºããããæ£ããèšå®ããããšãå¿ããªãã§ãã ããã

ãã¡ãŒã ãŠã§ã¢ã¹ã«ãŒã
æ¯ååè·¯ãæ¥ç¶ããå®éã®ç£æ¥çšãªãŒããŒã§ãã¹ãããŸããååã®å¯Ÿçã¯ãªããå ¬æ£ãªæŠéæ¡ä»¶ã§ãã

ãã¹ãã¹ã¿ã³ã
ãããŠãèŠãïŒããã¯åäœããæ£ããèªã¿åããã«ãŒãã§æ£ããIDãæäŸããŸãïŒå€éšé»æºãªãããã£ãŒã«ãæäœã®ã¿ãããããã¹ãŠãæŽçããŠãå®éã®RFIDã¿ã°ãäœæããå¿ èŠããããŸãã

ã©ãã«ã®æçµçãªãã©ãããŒããããŒãžã§ã³
åèš
ç§ã¯ãããããŸããããšã¯å®å šã«ã¯ä¿¡ããŠããªãã£ãããšãæ£çŽã«èªããããšãã§ããŸãããã£ãŒã«ãããã®é»æºãã³ã³ãããŒã©ãŒã®éæšæºåäœã¢ãŒãã¯ãã¯ããã¯ãµã€ã¯ã«ãèªå®¶è£œã€ã³ãã¯ã¿ãŒã«åŸã£ãŠå³å¯ã«åäœããŸããããã«ãRFIDèªäœã®äœæ¥ããããŠä»ãããã¥ã¡ã³ããèªãã§å ±åãè¡ãæ°ãæéãäºçްãªäœæ¥ãåºãã£ãŠããããã«èŠããŸããããããããã¯æ©èœãããã®ããšã¯æ¬åœã«çŽ æŽãããã§ããã ããã¿ããªããã®çš®ã®ããšã¯æ¬åœã®ãããã³ã°ã§ããé 匵ãïŒ
宿é¡
ããªãã¯ãŸã ãã®ã¯ãŒã«ãªèšäºãèªãã§ããã®ã§ãç§ã¯ãããæžãã詊ãããããŸãããä»åºŠã¯ããªããäœããããããšããæãæ¥ãŸããããšãã¥ã¬ãŒã¿ã³ãŒãã«ã¯ãäœçžã·ãããšã³ã³ãŒãã£ã³ã°ã䜿çšããŠHIDãããã·ããã£ã«ãŒãããšãã¥ã¬ãŒãããã»ã¯ã·ã§ã³ãå«ãŸããŠããŸããæ¥œãããããè¯ãååã®ããã«ãHIDæšæºãšãã®ã³ãŒãã£ã³ã°ãçè§£ããå¿ èŠããããŸããã³ã¡ã³ãã§è§£æ±ºçãéä¿¡ããŸãã幞éãã
æžèª
