NFC

2018ǯ04·î04Æü

ÅÅÇÈˡŬ¹ç¤Î NFC ¥â¥¸¥å¡¼¥ë¤Ç°Â²Á¤Ê NFC ¥¿¥°¤òÍøÍѤ¹¤ë

¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿

¤Ï¤¸¤á¤Ë

Åö¥Ö¥í¥°¤Îµ­»ö¡ÖNFC ¥¿¥°¤ÇÈëÌ©¾ðÊó¤ò°ÂÁ´¤Ë·È¹Ô¤¹¤ë»î¤ß¡×¤Ç¤Ï MIFARE Ultralight ½àµò¤Î NXP À½¡ÖNTAG21x¡×¥·¥ê¡¼¥º¤ËÌܤò¸þ¤±¤Þ¤·¤¿¡£¤½¤³¤Ç¤Ï»Ô¾ì¤Ç¸½ºß¼çή¤Î¤³¤Î NFC ¥¿¥°À½Éʤε¡Ç½Ì̤Ǥαü¤Î¿¼¤µ¤ò Android ¥Ç¥Ð¥¤¥¹¤ò»È¤Ã¤Æ»î¤·¤Æ¤ß¤Þ¤·¤¿¤¬¡¢ÃÍÃʤâ°Â¤¯¤¹¤Ã¤«¤êµ¤¤ËÆþ¤Ã¤¿ NTAG21x ¤ò¼«ºî¤ÎÁõÃ֤ǤâÍøÍѤ·¤¿¤¤¤È¹Í¤¨¤Þ¤·¤¿¡£·ÈÂÓüËö¤Î²ÄÈÂÀ­¡¢¿ø¤¨ÃÖ¤­·¿ÁõÃ֤γÈÄ¥À­¡¢¤É¤Á¤é¤âÆü¾ïÀ¸³è¤Ç¤Î NFC ¤Î¼ÂÍÑÀ­¤ò»Ù¤¨¤Æ¤¤¤ëÅÚÂæŪ¤ÊÍ×ÁǤǤ¹¤Í¡£

NFC ¥ê¡¼¥À/¥é¥¤¥¿¥â¥¸¥å¡¼¥ëÀ½Éʤòõ¤¹

¤½¤ó¤Ê¤ï¤±¤Ç¤Þ¤º¤ÏÅŻҹ©ºî¸þ¤­¤Î NFC ¥ê¡¼¥À/¥é¥¤¥¿¥â¥¸¥å¡¼¥ë¤òõ¤¹¤³¤È¤«¤é»Ï¤á¤Þ¤·¤¿¡£¥Í¥Ã¥È¤ò¸«ÅϤ·¤Æ¤ß¤ë¤ÈÍÍ¡¹¤Ê¤â¤Î¤¬½Ð²ó¤Ã¤Æ¤ª¤ê¡¢°Ê²¼¤ÎÀ½Éʤʤɤ¬ÌܤˤȤޤê¤Þ¤·¤¿¡£¤¤¤º¤ì¤â¤Ê¤«¤Ê¤«Îɤµ¤½¤¦¤Ç¤¹¡£

¹ñ³°¤Î¥á¡¼¥«¡¼¤Ë¤è¤ë¤³¤ì¤é¤Î¥â¥¸¥å¡¼¥ë¤Ï¸Ä¿Í¤Ç¤â´Êñ¤Ë¹ØÆþ¤¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£°ìÊý¡¢¹ñÆâ¥á¡¼¥«¡¼¤ÎÀ½ÉʾðÊó¤òõ¤·¤¿¤È¤³¤í¤Ç¤Ï¡¢¤¤¤¯¤Ä¤â¤Î´ë¶È¤¬ NFC ¥ê¡¼¥À/¥é¥¤¥¿¥â¥¸¥å¡¼¥ë¤ÎÀ½Â¤¡¦ÈÎÇä¤ò¹Ô¤Ã¤Æ¤Ï¤¤¤ë¤â¤Î¤Î¤½¤Î¤Û¤È¤ó¤É¤¬Ë¡¿Í¸þ¤±¤ÎÁȤ߹þ¤ßÍѤǤ¢¤ë¤³¤È¤òÃΤê¤Þ¤·¤¿¡£ ¤½¤ÎÃæ¤Ç¡¢»ä¼«¿È¤¬º£²óÄ´¤Ù¤¿ÈϰϤǤϡ¢2018ǯ3·î»þÅÀ¤Ç¸Ä¿Í¤¬°ìÈ̤Υǥ£¥¹¥È¥ê¥Ó¥å¡¼¥¿¤«¤éÆþ¼ê²Äǽ¤Ê¹ñÆâÀ½Éʤϥ½¥Ë¡¼³ô¼°²ñ¼ÒÍͤˤè¤ë¡ÖRC-S620/S¡×¤Î¤ß¤Ç¤·¤¿¡£¤â¤·Â¾¤Ë¤âÆþ¼ê¤·¤ä¤¹¤¤¹ñÆâÀ½Éʤ¬¤¢¤ì¤Ð¤¼¤Ò¤´¶µ¼¨²¼¤µ¤¤¡£

¤µ¤Æ¡¢¤³¤³¤Çµ¤¤Ë¤Ê¤ë¤Î¤¬¤³¤ì¤é¤ÎÀ½ÉʤÈÅÅÇÈË¡¤È¤Î´Ø·¸¤Ç¤¹¡£

ÅÅÇÈË¡¤È NFC ¥â¥¸¥å¡¼¥ë¤È¤Î´Ø·¸¤Ë¤Ä¤¤¤Æ

¤´¾µÃΤΤ褦¤Ë¡¢ÆüËܹñÆâ¤Ç¡Öµ»Å¬¥Þ¡¼¥¯¡×¤Î¤Ê¤¤ÌµÀþµ¡¤ò»ÈÍѤ¹¤ë¤ÈÅÅÇÈË¡°ãÈ¿¤È¤Ê¤ë²ÄǽÀ­¤¬¤¢¤ê¡¢³°¹ñÀ½¤Îµ¡´ï¤ò»È¤¤¤¿¤¤¾ì¹ç¤Ê¤É¤Ë¤Ï¤³¤Î¤³¤È¤¬ºÇ½é¤Ë³Îǧ¤¹¤Ù¤­¥Ý¥¤¥ó¥È¤È¤Ê¤ê¤Þ¤¹¡£¤Ç¤Ï¡¢¤ä¤Ï¤êÅż§ÇȤòȯÀ¸¤µ¤»¤ë NFC ¥ê¡¼¥À/¥é¥¤¥¿¤ÏÅÅÇÈË¡¤Ë¤ª¤¤¤Æ¤É¤Î¤è¤¦¤Ë°·¤ï¤ì¤Æ¤¤¤ë¤Î¤Ç¤·¤ç¤¦¡£µ»Å¬¾ÚÌÀ¤¬É¬ÍפʤΤ«¡¢¤½¤ì¤È¤â¼þ°Ï¤Ø¤Î±Æ¶Á¤¬Èù¼å¤Ç¤¢¤ë¤¿¤áÆä˵¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤¤Î¤«¡£¤³¤ÎÅÀ¤Ë¤Ä¤¤¤ÆÄ´¤Ù¤Æ¤ß¤Þ¤·¤¿¡£

¤Þ¤È¤á

·ëÏÀ¤È¤·¤Æ¡¢ÅÅÇÈË¡¤Ë¤Ï NFC ¥ê¡¼¥À/¥é¥¤¥¿¤Ë´Ø¤¹¤ëÌÀ³Î¤Êµ¬Ä꤬¤¢¤ê¡¢¤½¤ì¤ËŬ¹ç¤·¤Ê¤¤À½ÉʤÎÆüËܹñÆâ¤Ç¤Î»ÈÍÑ¤Ï NG ¤Ç¤¢¤ë¤³¤È¤òÃΤê¤Þ¤·¤¿¡£Í×ÅÀ¤òÀ°Íý¤·¤Æ¤ß¤Þ¤¹¡£

  • ¤¤¤ï¤æ¤ëµ»Å¬¾ÚÌÀ¤ÏÆÃÄê̵ÀþÀßÈ÷¤òÂоݤȤ¹¤ë¤â¤Î¤À¤¬¡¢NFC ¥ê¡¼¥À/¥é¥¤¥¿¤ÏÅÅÇÈË¡¤Ë¤ª¤¤¤ÆÆÃÄê̵ÀþÀßÈ÷¤Ë¤Ï¤¢¤¿¤é¤º¡Ö¹â¼þÇÈÍøÍÑÀßÈ÷¡×¤Ë³ºÅö¤·¡¢¤½¤³¤Ë´Þ¤Þ¤ì¤ë¡ÖͶƳ¼°Æɤ߽ñ¤­ÄÌ¿®ÀßÈ÷¡×¤ËʬÎव¤ì¤ë
    • ¤Ä¤Þ¤ê NFC ¥ê¡¼¥À/¥é¥¤¥¿¤Ïµ»Å¬¥Þ¡¼¥¯¤È¤Ï´Ø·¸¤¬¤Ê¤¤
  • ͶƳ¼°Æɤ߽ñ¤­ÄÌ¿®ÀßÈ÷¤Ï¡¢¤½¤ÎÅų¦¶¯ÅÙ¤¬½êÄê¤Î¾ò·ï¤òËþ¤¿¤·¤Æ¤¤¤ë¾ì¹ç¡¢¤Þ¤¿¤Ï¡¢Áí̳Âç¿Ã¤Ë¤è¤ë·¿¼°»ØÄê¤ò¼õ¤±¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¸ÄÊ̤εö²Ä¤Ê¤·¤ËÀßÃÖ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë
    • ·¿¼°»ØÄê¤Î¿½ÀÁ¼Ô¤ÏÆüËܿͤޤ¿¤ÏÆüËܹñÆâ¤ÎË¡¿Í¤Ç¤¢¤ê¤«¤ÄÀ½Â¤¶È¼Ô¤Þ¤¿¤ÏÍ¢Æþ¶È¼Ô¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤
  • Åų¦¶¯ÅÙ¾ò·ï¤È¤ÎÀ°¹çÀ­¤Î³Îǧ¤Ë¤â·¿¼°»ØÄê¤ò¼õ¤±¤ë¤Ë¤âŬÀµ¤ÊÊýË¡¤Ç¤ÎÀ­Ç½»î¸³¤¬É¬¿Ü

¾ÜºÙ

·¿¼°»ØÄêɽ¼¨¤Î¼ÂÎã

¼ê¸µ¤Ë¤¢¤ë¤Õ¤¿¤Ä¤ÎÀ½ÉʤǤη¿¼°»ØÄêɽ¼¨¤È¸ø¼°¥µ¥¤¥È¤«¤é¤Î°úÍѤò¼¨¤·¤Þ¤¹¡£Á°·Ç¤Î RC-S620/S ¤Ë¤â¤·¤Ã¤«¤ê°õºþ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ¡¡¢¨¥¯¥ê¥Ã¥¯¤ÇÂ礭¤¯É½¼¨

RC-S620/S ¤Ë¤Ä¤¤¤Æ

µ®½Å¤ÊÁªÂò»è¤È¤·¤Æ

º£²ó¼ê¸µ¤ÇÄ´¤Ù¤¿ÈϰϤǤϡ¢ÆüËܤÎÅÅÇÈË¡¤Ë½à¤¸¤¿·¿¼°»ØÄêɽ¼¨¤Î¤¢¤ë¹ñ³°¥á¡¼¥«¡¼¤Î NFC ¥â¥¸¥å¡¼¥ë¤Ï¸«Åö¤¿¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡¢¤Þ¤¿¡¢¡Ö£³m¤Îµ÷Î¥¤Ë¤ª¤¤¤ÆÅų¦¶¯ÅÙ¤¬500¦ÌV/m¡×¤Ê¤É¤È¤¤¤¦À­Ç½¾ðÊó¤òÌܤˤ¹¤ë¤³¤È¤â¤¢¤ê¤Þ¤»¤ó¡£ ¤½¤Î¤¿¤á¡¢¤¤¤Þ¤Î»þÅÀ¤Ç¼ê¶á¤Ê¼Â¸³¤äÅŻҹ©ºî¤òŬˡ¤Ë¹Ô¤¦¤¿¤á¤Ë¤ÏÆþ¼ê¤¬ÍưפÇÅÅÇÈˡŬ¹ç¤Î RC-S620/S ¤Ïµ®½Å¤ÊÁªÂò»è¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£

¸Ä¿ÍŪ¤Ë¤Ï¡¢ÅÅÇÈË¡¤ÎɬÁ³À­¤È½ÅÍ×À­¤ò½½Ê¬¤ËÍý²ò¡¦Ç¼ÆÀ¤·¤Ê¤¬¤é¤â¡¢°ìÊý¤Ç¡¢¤È¤ê¤ï¤± IoT ÊýÌ̤Ǥιñ³°¥á¡¼¥«¡¼¤Ë¤è¤ë¹ñºÝŪ¤Ë¥á¥¸¥ã¡¼¤ÊÀ½Éʤò¸øÁ³¤È»î¤¹¤³¤È¤Î¤Ç¤­¤Ê¤¤¥±¡¼¥¹¤¬È¯À¸¤¹¤ë¤³¤È¤ò¤â¤É¤«¤·¤¯»×¤¦¤³¤È¤â¤¢¤ê¤Þ¤¹¡£¼ê¶á¤Ê¼Â¸³¤ä»îºî¤Î¤¿¤á¤Ë¤ï¤¶¤ï¤¶ÅÅÇȰż¼¤ò¼Ú¤ê¤¿¤êÅϹҤ·¤¿¤ê¤¹¤ë¤ï¤±¤Ë¤â¤¤¤­¤Þ¤»¤ó¤·¤Í¡£¡£ ¡Ê^^¡¨
¤µ¤Ã¤½¤¯¥¹¥¤¥Ã¥Á¥µ¥¤¥¨¥ó¥¹ÍͤΥµ¥¤¥È¤«¤é RC-S620/S ¤ò¹ØÆþ¤·¤Þ¤·¤¿¡£ ËÜÍèÁȤ߹þ¤ßÍÑÅӤΤ³¤Î¥â¥¸¥å¡¼¥ë¤ÎÆþ½ÐÎÏü»Ò¤Ï FFC ¥³¥Í¥¯¥¿¤Ç°ìÈÌŪ¤ÊÅŻҹ©ºî¤Ç¤Ï²¿¤«¤È¼è¤ê²ó¤·¤Ë¤¯¤¤¤Î¤Ç¤¹¤¬¡¢Æ±¼Ò¥ª¥ê¥¸¥Ê¥ë¤Î¥Ö¥ì¡¼¥¯¥¢¥¦¥È´ðÈĤÈÀìÍÑ¥±¡¼¥Ö¥ë¤Î¥»¥Ã¥È¤¬¤¢¤ï¤»¤ÆÈÎÇ䤵¤ì¤Æ¤¤¤ë¤¿¤á¤È¤Æ¤â½õ¤«¤ê¤Þ¤¹¡£

ÍøÍѼԸþ¤±¤Î¸ø¼°¥ê¥½¡¼¥¹

ÍøÍѼԸþ¤±¤Ë°Ê²¼¤Î¥ê¥½¡¼¥¹¤¬¸ø¼°¥µ¥¤¥È¤Ç¸ø³«¤µ¤ì¤Æ¤¤¤Þ¤¹¡£³Æ¥À¥¦¥ó¥í¡¼¥É¥Ú¡¼¥¸¤Ëµ­ºÜ¤µ¤ì¤¿µ¬Ì󡦻ÈÍѵöÂú·ÀÌó¤ÎÆâÍƤò½½Ê¬¤Ë³Îǧ¤·¤¿¾å¤Ç¤³¤ì¤é¤òÍøÍѤ·¤Þ¤¹¡£

  • Sony Japan | FeliCa | Ë¡¿Í¤Î¤ªµÒÍÍ | ¥À¥¦¥ó¥í¡¼¥É
    • RC-S620/SÀ½ÉÊ»ÅÍͽñ¡ã´Ê°×ÈÇ¡ä
    • RC-S620/S¥³¥Þ¥ó¥É¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë¡ã´Ê°×ÈÇ¡ä
      µ¬Ìó
             :
      Âè3¾ò¡Ê»ÈÍѸ¢¡Ë

      1. ¥½¥Ë¡¼¤Ï¡¢ÍøÍѼԤËÂФ·¤Æ¡¢ÍøÍѼԤ¬ÂоÝʸ½ñ¤ò»ÈÍÑÌÜŪ¤Î¤¿¤á¤ËËÜ¥¦¥§¥Ö¥µ¥¤¥È¤«¤éÊ£À½¤¹¤ë¤³¤È¤¬¤Ç¤­¤ëÈóÆÈÀêŪ¤Ê¸¢Íø¤ò̵½þ¤Ë¤ÆÍøÍѼԤ˵öÂú¤·¤Þ¤¹¡£
      2. ÍøÍѼԤϡ¢ÂоÝʸ½ñ¤ÎÁ´Éô¤Þ¤¿¤Ï°ìÉô¤ò¡¢¤µ¤é¤ËÊ£À½¤·¤¿¤ê¡¢¤³¤ì¤ËÂФ¹¤ë½¤Àµ¡¢ÄɲÃÅù¤Î²þÊѤò¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£¤Þ¤¿¡¢ÂоÝʸ½ñ¤ª¤è¤Ó¤½¤ÎÊ£À½Êª¤ò¡¢Âè»°¼Ô¤ËÈÒÉÛ¤·¤¿¤ê¡¢¥¦¥§¥Ö¥µ¥¤¥È¤Ë¥¢¥Ã¥×¥í¡¼¥É¤¹¤ë¤Ê¤É¤·¤ÆÂè»°¼Ô¤¬¼èÆÀ²Äǽ¤Ê¾õÂ֤ˤ·¤Ê¤¤¤â¤Î¤È¤·¤Þ¤¹¡£
             :
  • Arduino¸þ¤±RC-S620/SÀ©¸æ¥é¥¤¥Ö¥é¥ê¤ÎÄó¶¡
    • ¡ÖArduino¸þ¤±RC-S620/SÀ©¸æ¥é¥¤¥Ö¥é¥ê¡×¥À¥¦¥ó¥í¡¼¥É¥Ú¡¼¥¸
      RC-S620/SÀ©¸æ¥é¥¤¥Ö¥é¥ê »ÈÍѵöÂú·ÀÌó
             :
      Âè1¾ò¡ÊÁí§¡Ë
      ¡¡1.¥½¥Ë¡¼¤Ï¡¢Ëܵ¬Ìó¤ËÄê¤á¤ë³Æ¾ò¹à¤Ë½¾¤¤¡¢ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó´ØÏ¢»ñÎÁ¤Ë´Ø¤¹¤ëÈóÆÈÀêŪ¤«¤Ä¾ùÅÏÉÔǽ¤Ê¼¡¤Î¸¢Íø¡Ê⤷Æõö¸¢¤Ï½ü¤¯¡£°Ê²¼¡Ö»ÈÍѸ¢¡×¤È¤·¤Þ¤¹¡Ë¤ò¡¢¤ªµÒÍͤ˵öÂú¤·¤Þ¤¹¡£
      ¡¡¡¡(1)¤ªµÒÍͤ¬¡¢¥½¥Õ¥È¥¦¥§¥¢»ÈÍѼԤò¤·¤Æ¡¢ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó´ØÏ¢»ñÎÁ¤ÎÁ´Éô¤â¤·¤¯¤Ï°ìÉô¤ò»ÈÍÑ¡¢Ê£À½¡¢Ê£¼Ì¤Þ¤¿¤Ï²þÊѤ·¤Æ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥½¥Õ¥È¥¦¥§¥¢¤ò³«È¯¤¹¤ë¸¢Íø¡£ ¤Ê¤ª¡¢Ëܵ¬Ìó¤Ë¤ª¤¤¤Æ¡¢¥½¥Õ¥È¥¦¥§¥¢»ÈÍѼԤª¤è¤Ó¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥½¥Õ¥È¥¦¥§¥¢¤È¤Ï¡¢¤½¤ì¤¾¤ì¡¢¼¡¤Î°ÕÌ£¤òÍ­¤·¤Þ¤¹¡£
      ¡¡¡¡¡¡­¡¥½¥Õ¥È¥¦¥§¥¢»ÈÍѼԡ§ËÜ¥½¥Õ¥È¥¦¥§¥¢¤òÆþ¼ê夤¤¿¤ªµÒÍÍ1̾¤ÎÊý¡£
      ¡¡¡¡¡¡­¢¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥½¥Õ¥È¥¦¥§¥¢¡§¥½¥Ë¡¼À½ÈóÀÜ¿¨IC¥«¡¼¥É¥ê¡¼¥À¡¿¥é¥¤¥¿¡¼À½ÉÊ¡ÖRC-S620/S¡×¤òÀ©¸æ¤¹¤ë¤¿¤á¤Î¥½¥Õ¥È¥¦¥§¥¢¥×¥í¥°¥é¥à¡£
      ¡¡¡¡(2)¤ªµÒÍͤ¬¡¢ËܹàÂè1¹æ¤Ë´ð¤Å¤­³«È¯¤µ¤ì¤¿¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥½¥Õ¥È¥¦¥§¥¢¤òÊ£À½¤·¤¿¤¦¤¨¡¢¥½¡¼¥¹¥³¡¼¥É·Á¼°¤Þ¤¿¤Ï¥Ð¥¤¥Ê¥ê·Á¼°¤Ë¤Æ¡¢Âè»°¼Ô¤ËÈÒÉÛ¤¹¤ë¸¢Íø¡£
      ¡¡2.¤ªµÒÍͤϡ¢Á°¹à¤ÇÄê¤á¤ë¾ì¹ç¤ò½ü¤­¡¢ËÜ¥½¥Õ¥È¥¦¥§¥¢¤ª¤è¤Ó´ØÏ¢»ñÎÁ¤ÎÁ´Éô¤â¤·¤¯¤Ï°ìÉô¤ò»ÈÍÑ¡¢Ê£À½¡¢Ê£¼Ì¤Þ¤¿¤Ï²þÊѤ·¤Æ¤Ï¤Ê¤é¤Ê¤¤¤â¤Î¤È¤·¤Þ¤¹¡£
             :

¸ø¼°¥ê¥½¡¼¥¹¤Î¥«¥Ð¡¼¤¹¤ëÈÏ°Ï

¤³¤Î¤è¤¦¤Ë¥É¥­¥å¥á¥ó¥È¤Ë²Ã¤¨¥µ¥ó¥×¥ë¥³¡¼¥É¤¬¸ø¼°¤ËÄ󶡤µ¤ì¤Æ¤¤¤ë¤³¤È¤ÏÍøÍѼԤˤȤäƤȤƤâ´ò¤·¤¤ÇÛθ¤Ç¤¹¤¬¡¢¤³¤ì¤é¤Î»²¾È¡¦»ÈÍѤ˺ݤ·¤Æ¤Ï°Ê²¼¤Î»ö¾ð¤ò¤¢¤é¤«¤¸¤áÍý²ò¤·¤Æ¤ª¤¯É¬Íפ¬¤¢¤ë¤Ç¤·¤ç¤¦¡£

  • RC-S620/S ¤Ï¤¢¤¯¤Þ¤Ç¤âÁȤ߹þ¤ßÍÑÀ½ÉʤǤ¢¤êËÜÍè¤Î¸ÜµÒ¤ÏË¡¿Í¤Ç¤¢¤ë
  • ³Æ»ÅÍͽñ¤ÏËÁƬ¤Î¥Ú¡¼¥¸¤ÎÃí¼á¤Î¤È¤ª¤ê¡ÖÄ´ºº¡¢»îºî¤ª¤è¤Óɾ²Á¡×¤òÌÜŪ¤È¤¹¤ë¡Ö´Ê°×ÈǡפǤ¢¤ê¡¢¡Ö¾¦ÍѸþ¤±¡×¤ÎÈǤϸܵҤ¬¡ÖÀµ¼°¤Ë RC-S620/S ¤òƳÆþ¡×¤¹¤ë¾ì¹ç¤ËÄ󶡤µ¤ì¤ë
  • ¡ÖÀ½ÉÊ»ÅÍͽñ¡ã´Ê°×ÈÇ¡ä¡× 1, 2 ¹à¤Ëµ­ºÜ¤Î¤¢¤ë¤è¤¦¤Ë RC-S620/S ¤Ï FeliCa ¤Ë²Ã¤¨ ISO/IEC 14443 ¡ÊType A, Type B¡Ë ¤Ë¤âÂбþ¤·¤Æ¤¤¤ë¤¬¡¢¼ç´ã¤Ï¤¢¤¯¤Þ¤Ç¤âÁ°¼Ô¤Ç¤¢¤ë
  • ³Æ»ÅÍͽñ¤ª¤è¤Ó¥µ¥ó¥×¥ë¥³¡¼¥É¤Ï FeliCa ¤Þ¤ï¤ê¤Î°ìÉô¤Îµ¡Ç½¤ËÆò½¤·¤¿ÆâÍƤǤ¢¤ë

»×¤¤¤¬¤±¤Ê¤¤±ç·³¤Î¸ºß

¤µ¤Æ¡¢ËÁƬ¤Ç¿¨¤ì¤¿¤è¤¦¤Ë¼ê¸µ¤Ç¼Â¸½¤·¤¿¤¤¤Î¤Ï MIFARE Ultralight NTAG21x ¤Ø¤Î¥¢¥¯¥»¥¹¤Ç¤¹¡£RC-S620/S ¤¬ ISO/IEC 14443 Type A¡ÊMIFARE¡Ë¤ËÂбþ¤·¤Æ¤¤¤ë¤³¤È¤Ï¾åµ­¤ÎÄ̤ê»ÅÍͽñ¤ËÌÀµ­¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤Î¡¢¸ø¼°¤Î¥ê¥½¡¼¥¹¤Ç¤Ï¤½¤Î¤¿¤á¤Î¶ñÂÎŪ¤ÊÊýË¡¤ä¼ê½ç¤¬¤ï¤«¤ê¤Þ¤»¤ó¡£

¤Þ¤º¤½¤â¤½¤â MIFARE ¤Î¶áÀܤò¸¡ÃΤ¹¤ë¤Ë¤Ï¤É¤¦¤¹¤ì¤Ð¤¤¤¤¤Î¤«¡£¡ÖArduino¸þ¤±RC-S620/SÀ©¸æ¥é¥¤¥Ö¥é¥ê¡×¤Î polling() ´Ø¿ô¤Ï FeliCa ¤ò¸¡ÃΤ¹¤ë¤¿¤á¤Ë¡Ö¥³¥Þ¥ó¥É¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë¡ã´Ê°×ÈÇ¡ä¡×¤Ëµ­ºÜ¤µ¤ì¤Æ¤¤¤ë¡ÖInListPassiveTarget¡×¤È¤¤¤¦¥³¥Þ¥ó¥É¤ò¸Æ¤Ó½Ð¤·¤Æ¤¤¤Þ¤¹¡£
¤¿¤á¤·¤Ë¡ÖInListPassiveTarget ISO/IEC 14443 Type A¡×¤Î¥­¡¼¥ï¡¼¥É¤Ç¾ðÊó¤ò¸¡º÷¤·¤¿¤È¤³¤í¼¡¤Î¶½Ì£¿¼¤¤»ñÎÁ¤¬ÌܤˤȤޤê¤Þ¤·¤¿¡£

¡ÖPN532¡×¤Ï NXP ¤Ë¤è¤ë NFC ¥â¥¸¥å¡¼¥ë¤Ç¤¹¡£¤³¤Î»ñÎÁ¤ÎÃæ¤Î InListPassiveTarget ¤Îµ­½Ò²Õ½ê¤òõ¤¹¤È Page 115 ¡Ê¾å¿Þ¡Ë¤Ë¤½¤Î¤â¤Î¤º¤Ð¤ê¤Î¥³¥Þ¥ó¥ÉÀâÌÀ¤¬¤¢¤ê¤Þ¤·¤¿¡£

¡ÖRC-S620/S¥³¥Þ¥ó¥É¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë¡ã´Ê°×ÈÇ¡ä Version 2.11¡× Page 80 ¤Î InListPassiveTarget ¤ÎÀâÌÀ¤ÈÆɤ߹ç¤ï¤»¤Æ¤ß¤ë¤È¡¢¥¿¡¼¥²¥Ã¥È¤¬ FeliCa ¤Î¾ì¹ç¤Î¥Ñ¥é¥á¡¼¥¿ÀâÌÀ¤Ï°ìÃפ·¤Æ¤ª¤ê¡¢¤µ¤é¤Ë¡Ö´Ê°×Èǡפˤϵ­ºÜ¤µ¤ì¤Æ¤¤¤Ê¤¤ ISO/IEC 14443 Type A, B ¤Ø¤ÎÂбþÊýË¡¤ò´Þ¤á 7 ¥Ú¡¼¥¸¤ËÅϤê¾Ü¤·¤¤ÀâÌÀ¤¬·ÇºÜ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤½¤Î¾¤Î¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¤âƱÍͤǡ¢CommunicateThruEx ¤Ê¤É RC-S620/S ¦¤Î¤ß¤Ë¸ºß¤¹¤ë¤¤¤¯¤Ä¤«¤Î¥³¥Þ¥ó¥É¤Ï¤¢¤ë¤â¤Î¤Î¡¢Á´ÂΤȤ·¤Æ¤Ï¤¤¤ï¤Ð¥¹¡¼¥Ñ¡¼¥»¥Ã¥È¤Î¥Þ¥Ë¥å¥¢¥ë¤Î¤è¤¦¤Ë¸«¼õ¤±¤é¤ì¤Þ¤·¤¿¡£¼ÂºÝ¤Ë¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ëź¤Ã¤Æ¡ÖArduino¸þ¤±RC-S620/SÀ©¸æ¥é¥¤¥Ö¥é¥ê¡×¤Î polling() ´Ø¿ô¤ò°Ê²¼¤ÎÍ×ÎΤǽñ¤­´¹¤¨¤Æ¤ß¤ë¤È ISO/IEC 14443 Type A ¤Î¶áÀܤò¸¡ÃΤ¹¤ë¤³¤È¤¬¤Ç¤­¤Þ¤·¤¿¡£

FeliCa Âбþ¤Î¥ª¥ê¥¸¥Ê¥ë¥³¡¼¥É

/* InListPassiveTarget */
memcpy(buf, "\xd4\x4a\x01\x01\x00\xff\xff\x00\x00", 9);
buf[5] = (uint8_t)((systemCode >> 8) & 0xff);
buf[6] = (uint8_t)((systemCode >> 0) & 0xff);

ret = rwCommand(buf, 9, response, &responseLen);

ISO/IEC 14443 Type A ÍÑ

ret = rwCommand((const uint8_t *)"\xd4\x4a\x01\x00", 4,
                 response, &responseLen);

¤³¤Î¤è¤¦¤Ë¡¢¥á¡¼¥«¡¼¤Î°Û¤Ê¤ë RC-S620/S ¤È PN532 ¤È¤Î´Ö¤Ë¥³¥Þ¥ó¥É¥ì¥Ù¥ë¤Ç¤Î¶¦ÄÌÀ­¤¬¤¢¤ëÍýͳ¤Ï NFC ¥Õ¥©¡¼¥é¥à»ÅÍͤΤɤ³¤«¤Ë¤¢¤ë¤Î¤«¤âÃΤì¤Þ¤»¤ó¤¬¼ê¸µ¤Ç¤Ïº£¤Î¤È¤³¤í³ºÅö¤¹¤ë¾ðÊó¤ÎÆÃÄê¤Ë»ê¤Ã¤Æ¤¤¤Þ¤»¤ó¡£ ¤¢¤ë¤¤¤Ï¡¢Î¾¼Ò¤¬¤È¤â¤Ë¡Ö¥Ç¥Ð¥¤¥¹¤ä¥µ¡¼¥Ó¥¹´Ö¤Î¿·µ¡Ç½¤È¸ß´¹À­¤ò¼Â¸½¤¹¤ë¤¿¤á¤Îµ¬³ÊºöÄê¡×¤ò¥ß¥Ã¥·¥ç¥ó¤Î¤Ò¤È¤Ä¤È¤¹¤ë NFC ¥Õ¥©¡¼¥é¥à¤Î¥³¥¢¥á¥ó¥Ð¡¼¤Ç¤¢¤ë¤³¤È¤Ë´Ø·¸¤¬¤¢¤ë¤Î¤«¤âÃΤì¤Þ¤»¤ó¡£¤¤¤º¤ì¤Ë¤»¤è PN532 ¤Î¥Þ¥Ë¥å¥¢¥ë¤Î¤ª¤«¤²¤ÇÀ褬¸«¤¨¤Æ¤­¤Þ¤·¤¿¡£

NTAG21x ¥Í¥¤¥Æ¥£¥Ö¥³¥Þ¥ó¥É¤Îȯ¹Ô¤Ë¤Ä¤¤¤Æ

ÀèÈ̤ε­»ö¤Ç¤Ï¡¢NTAG21x ¤Î¥á¥â¥ê¥¢¥¯¥»¥¹¤ËɬÍפʼ¡¤Î¤è¤Ã¤Ä¤Î¥Í¥¤¥Æ¥£¥Ö¥³¥Þ¥ó¥É¤òµó¤²¤Þ¤·¤¿¡£

  • GET_VERSION
    NTAG À½ÉʤΥС¼¥¸¥ç¥ó,¥¹¥È¥ì¡¼¥¸¥µ¥¤¥ºÅù¤òÆÀ¤ë
  • READ
    ½êÄê¤Î¥Ú¡¼¥¸¥¢¥É¥ì¥¹¤«¤é»Ï¤Þ¤ë 4 ¥Ú¡¼¥¸Ê¬¡Ê16 ¥Ð¥¤¥È¡Ë¤Î¥Ç¡¼¥¿¤òÆÀ¤ë
  • WRITE
    ½êÄê¤Î¥Ú¡¼¥¸¥¢¥É¥ì¥¹¤Ø 1 ¥Ú¡¼¥¸Ê¬¡Ê4 ¥Ð¥¤¥È¡Ë¤Î¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤à
  • PWD_AUTH
    ¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ì¤¿Îΰè¤Ø¤Î¥¢¥¯¥»¥¹Í×µá¤ËÀè¹Ô¤·¤Æ¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú¤òÍ׵᤹¤ë

¤³¤ì¤é¤ò RC-S620/S ·Ðͳ¤Ç¥¿¡¼¥²¥Ã¥È¤ØÁ÷½Ð¤·¤Æ¤ä¤ì¤Ð NTAG21x ¤Î¥á¥â¥ê¤ò¼«Í³¤ËÁàºî¤Ç¤­¤ë¤Ï¤º¤Ç¤¹¡£

RC-S620/S ¤Ë¤Ï¤³¤Î¤è¤¦¤Ë¥¿¡¼¥²¥Ã¥È¤È¤¹¤ë PICC ¸ÇÍ­¤Î¥³¥Þ¥ó¥É¤òȯ¹Ô¤¹¤ë¤¿¤á¤Î CommunicateThruEX ¥³¥Þ¥ó¥É¤¬ÍÑ°Õ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤¿¤À¤·¡¢¡Ö¥³¥Þ¥ó¥É¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë¡ã´Ê°×ÈÇ¡ä Version 2.11¡× Page 71 ¤Î¡ÖËÜ¥³¥Þ¥ó¥É¤Ï 212/424 kbps ¤Î RF ¥Ñ¥±¥Ã¥È¤ÎÁ÷¼õ¿®¤ò¹Ô¤¤¤Þ¤¹¡×¤Îµ­½Ò¤Î¤È¤ª¤ê¤³¤Î¥³¥Þ¥ó¥É¤Ï FeliCa ÀìÍѤǡ¢ÄÌ¿®Â®ÅÙ 106 kbps ¤Î ISO/IEC 14443 ¸þ¤±¤Ë¤Ï»È¤¨¤Þ¤»¤ó¡£

°ìÊý¡¢¡ÖPN532 User Manual Rev.02¡×¤Ë¤Ï¤½¤ì¤ÈƱÍͤε¡Ç½¤ÇÈÆÍÑÀ­¤Î¤¢¤ë InDataExchange, InCommunicateThru ¤Î¤Õ¤¿¤Ä¤Î¥³¥Þ¥ó¥É¤Î¾ðÊ󤬷Ǻܤµ¤ì¤Æ¤¤¤Þ¤¹¡£Æ±¥Þ¥Ë¥å¥¢¥ë¤Î InListPassiveTarget ¥³¥Þ¥ó¥É¤Î¥Ú¡¼¥¸¤Ë¤Ï MaxTg ¥Õ¥£¡¼¥ë¥É¤Ë¤Ä¤¤¤Æ¡ÖThe PN532 is capable of handling 2 targets maximum at once, so this field should not exceed 0x02.¡×¤Èµ­½Ò¤µ¤ì¤Æ¤ª¤ê¡¢InDataExchange ¤Ë¤ª¤¤¤Æ¤Ï target ¡ÊTg¡Ë ¤òÌÀ¼¨Åª¤Ë»ØÄꤹ¤ë¤Î¤ËÂФ·¡¢InCommunicateThru¤Ç¤Ï¡Öit is assumed that a target has been first activated.¡×¤È¤¤¤¦°ã¤¤¤¬¤¢¤ê¤Þ¤¹¡£

  • PN532 User Manual Rev.02 - 7.3.5 InListPassiveTarget
  • PN532 User Manual Rev.02 - 7.3.8 InDataExchange
  • PN532 User Manual Rev.02 - 7.3.9 InCommunicateThru

¤Õ¤¿¤¿¤Ó RC-S620/S ¦¤ËÌܤò¸þ¤±¤ë¤È¡¢¡Ö¥³¥Þ¥ó¥É¥ê¥Õ¥¡¥ì¥ó¥¹¥Þ¥Ë¥å¥¢¥ë¡ã´Ê°×ÈÇ¡ä Version 2.11¡× Page 50 ¤Î InListPassiveTarget ¥³¥Þ¥ó¥ÉÀâÌÀ¤Ç MaxTg ¥Õ¥£¡¼¥ë¥É¤Ë¤Ä¤¤¤Æ¤Ï¡ÖTarget ID ¤ò¼èÆÀ¤¹¤ë Target ¤ÎºÇÂç¿ô. 01h ¤ò»ØÄꤷ¤Æ¤¯¤À¤µ¤¤¡×¤Èµ­½Ò¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¤Ä¤Þ¤ê¤³¤ÎÉôʬ¤Î»ÅÍÍ¤Ï PN532 ¤È°Û¤Ê¤ëÍͻҤǤ¢¤ê¡¢¤³¤ÎÍ×ÁǤαƶÁ¤ò¼õ¤±¤ë InDataExchange, InCommunicateThru ¤ÎµóÆ°¤Ï¡¢Î¾¥³¥Þ¥ó¥É¤Î¸ºß̵ͭ¤Î³Îǧ¤ò´Þ¤á RC-S620/S ¾å¤Ç¼ÂºÝ¤Ë»î¤·¤Æ¤ß¤ëɬÍפ¬¤¢¤ê¤½¤¦¤Ç¤¹¡£

Á°·Ç¤Î¤è¤Ã¤Ä¤Î NTAG21x ¥Í¥¤¥Æ¥£¥Ö¥³¥Þ¥ó¥É¤Îȯ¹Ô¤ò RC-S620/S ·Ðͳ¤Ç»î¤ß¤¿¤È¤³¤í¡¢InListPassiveTarget ¤Ë¤è¤ë¥¿¡¼¥²¥Ã¥È¤ÎÊ᪸å¤Ë°Ê²¼¤ÎÁȤ߹ç¤ï¤»¤¬Í­¸ú¤Ç¤¢¤ë¤³¤È¤ò¼ê¸µ¤Ç³Îǧ¤·¤Þ¤·¤¿¡£¤Þ¤¿¡¢¤³¤Î·ë²Ì¤«¤é RC-S620/S ¤Ë¤ª¤¤¤Æ¤â InDataExchange, InCommunicateThru ¤Îξ¥³¥Þ¥ó¥É¤òÍøÍѲÄǽ¤Ç¤¢¤ë¤³¤È¤¬ÌÀ¤é¤«¤Ë¤Ê¤ê¤Þ¤·¤¿¡£

  • NTAG: GET_VERSION ¥³¥Þ¥ó¥É ¡Ê0x60¡Ë
    • InCommunicateThru ¥³¥Þ¥ó¥É¡Ê0x42¡Ë·Ðͳ¤Ç¤Îȯ¹Ô¤Î¤ßÍ­¸ú
      • rwCommand((const uint8_t*)"\xd4\x42\x60", 3, response, &responseLen); ¤ÎÍ×ÎÎ
  • NTAG: READ ¥³¥Þ¥ó¥É ¡Ê0x30¡Ë
    • InDataExchange ¥³¥Þ¥ó¥É¡Ê0x40¡Ë¡¢InCommunicateThru ¥³¥Þ¥ó¥É¡Ê0x42¡Ë¤¤¤º¤ì¤ò·Ðͳ¤·¤Æ¤âÍ­¸ú
      • rwCommand((const uint8_t*)"\xd4\x40\x01\x30[³«»Ï¥Ú¡¼¥¸ÈÖ¹æ 1byte]", 5, response, &responseLen); ¤ÎÍ×ÎÎ
      • rwCommand((const uint8_t*)"\xd4\x42\x30[³«»Ï¥Ú¡¼¥¸ÈÖ¹æ 1byte]", 4, response, &responseLen); ¤ÎÍ×ÎÎ
  • NTAG: WRITE ¥³¥Þ¥ó¥É ¡Ê0xA2¡Ë
    • InDataExchange ¥³¥Þ¥ó¥É¡Ê0x40¡Ë·Ðͳ¤Ç¤Îȯ¹Ô¤Î¤ßÍ­¸ú
      • rwCommand((const uint8_t*)"\xd4\x40\x01\xA2[Âоݥڡ¼¥¸ÈÖ¹æ 1byte][½ñ¤­¹þ¤ß¥Ç¡¼¥¿ 4byte]", 9, response, &responseLen); ¤ÎÍ×ÎÎ
  • NTAG: PWD_AUTH ¥³¥Þ¥ó¥É ¡Ê0x1B¡Ë
    • InCommunicateThru ¥³¥Þ¥ó¥É¡Ê0x42¡Ë·Ðͳ¤Ç¤Îȯ¹Ô¤Î¤ßÍ­¸ú
      • rwCommand((const uint8_t*)"\xd4\x42\x1b[¥Ñ¥¹¥ï¡¼¥É 4byte]", 7, response, &responseLen); ¤ÎÍ×ÎÎ

¥é¥¤¥Ö¥é¥ê¤Ø¤Î²ÃÉ®¤È¥Æ¥¹¥È¥×¥í¥°¥é¥à¤ÎºîÀ®

¤³¤³¤Þ¤Ç¤Î·Ð°Þ¤Ç¤ª¤ª¤à¤ÍºàÎÁ¤¬Â·¤Ã¤¿¤È¤³¤í¤Ç¡¢¡ÖArduino¸þ¤±RC-S620/SÀ©¸æ¥é¥¤¥Ö¥é¥ê¡×¤Ø¼«Ê¬¤Î¤Û¤·¤«¤Ã¤¿µ¡Ç½¤òÄɲä·¡¢¤¢¤ï¤»¤ÆÆ°ºî³ÎǧÍѤ˥ƥ¹¥È¥×¥í¥°¥é¥à¤ÎºîÀ®¤ò¹Ô¤¤¤Þ¤¹¡£

ÁÛÄꤷ¤¿ÆâÍÆ

°Ê²¼¤ÎÆâÍƤòÁÛÄꤷ¤Þ¤·¤¿¡£NDEF ¥á¥Ã¥»¡¼¥¸¤Î²ò¼á¤ä ISO/IEC 14443 Type B ¤Î ID ¼èÆÀ¤Ê¤É¼ã´³¤ÎÍ×ÁǤòÄɲ䷤Ƥ¤¤Þ¤¹¡£¤µ¤·¤¢¤¿¤ê¼ê¸µ¤ÇÍÑÅӤΤʤ«¤Ã¤¿ NTAG21x ¥Í¥¤¥Æ¥£¥Ö¤Î WRITE, PWD_AUTH ¥³¥Þ¥ó¥É¤Ïº£²ó¤ÏÍøÍѤ·¤Æ¤¤¤Þ¤»¤ó¡£º£¸åɬÍפˤʤ俤Ȥ­¤Ë¼ÂÁõ¤òÄɲ䷤褦¤È»×¤¤¤Þ¤¹¡£

  • ¥é¥¤¥Ö¥é¥ê¤ØÄɲ乤ë´Ø¿ô¤Î¥¤¥á¡¼¥¸
    • ISO/IEC 14443 Type A ¤Î¶áÀܸ¡ÃÎ¤È ID ¤Î¼èÆÀ
    • ISO/IEC 14443 Type B ¤Î¶áÀܸ¡ÃÎ¤È ID ¤Î¼èÆÀ
    • NTAG21x ÀìÍÑ¡§ ¥á¥â¥ê¤ÎÁí¥Ú¡¼¥¸¿ô¤ò¼èÆÀ
    • MIFARE Ultralight ÍÑ¡§ ½êÄê¤Î¥á¥â¥ê¥Ú¡¼¥¸¤ÎÆâÍƤòÆɤ߽Ф¹
  • ¥Æ¥¹¥È¥×¥í¥°¥é¥à¤Î¥¤¥á¡¼¥¸
    • ¥¿¡¼¥²¥Ã¥È¤¬ ISO/IEC 14443 Type A (MIFARE) ¤Î¾ì¹ç
      • ID ¤ò¼èÆÀ¤·¥·¥ê¥¢¥ë¤Ø½ÐÎÏ
        • MIFARE Ultralight ¤Î¾ì¹ç
          • ¥á¥â¥êÆâÍƤΥÀ¥ó¥×¤ò¥·¥ê¥¢¥ë¤Ø½ÐÎÏ
            • NDEF ¥á¥Ã¥»¡¼¥¸¤¬µ­Ï¿¤µ¤ì¤Æ¤¤¤ë¾ì¹ç
              • NDEF ¥ì¥³¡¼¥ÉÆâÍƤò½ç¼¡¼èÆÀ¤·¥·¥ê¥¢¥ë¤Ø½ÐÎÏ
    • ¥¿¡¼¥²¥Ã¥È¤¬ ISO/IEC 14443 Type B ¤Î¾ì¹ç
      • µ¼»÷ ID ¤Ç¤¢¤ë PUPI (Pseudo-Unique PICC Identifier) ¤ò¼èÆÀ¤·¥·¥ê¥¢¥ë¤Ø½ÐÎÏ
    • ¥¿¡¼¥²¥Ã¥È¤¬ FeliCa (Standard / Lite / Lite-S) ¤Î¾ì¹ç
      • IDm ¤ò¼èÆÀ¤·¥·¥ê¥¢¥ë¤Ø½ÐÎÏ

µ¡´ï¤ÎÀܳ

¼ê¸µ¤Ç¤Ï¤³¤ì¤Þ¤Ç Arduino IDE ¤òÍøÍѤ¹¤ëµ¡²ñ¤Ï¤¢¤ê¤Þ¤·¤¿¤¬ Arduino ¼Âµ¡¤ò°·¤¦¤Î¤Ïº£²ó¤¬½é¤á¤Æ¤Ç¤·¤¿¡£

RC-S620/S ¤È Arduino UNO ¤ò¥·¥ê¥¢¥ëÀܳ¤·¤ÆÀ©¸æ¤ò¹Ô¤¤¡¢¾åµ­¤Î¤è¤¦¤Ë½èÍý¾õ¶·¤ò UNO ¤«¤é USB ·Ðͳ¤Ç PC ¾å¤Î¥·¥ê¥¢¥ë¥¿¡¼¥ß¥Ê¥ë¤Ø¿ï»þ½ÐÎϤ¹¤ë¤³¤È¤òÁÛÄꤷ¤Æ¤¤¤¿¤Î¤Ç¤¹¤¬¡¢UNO ¤Î¥Ï¡¼¥É¥¦¥§¥¢¥·¥ê¥¢¥ë¤¬°ì·ÏÅý¤Î¤ß¤Ç¤¢¤ë¤³¤È¤òÃΤꡢÊÌΩ¤Æ¤Î USB ¥·¥ê¥¢¥ëÊÑ´¹¥â¥¸¥å¡¼¥ë¡ÊFT231X¡Ë¤È Arduino ɸ½à¤Î SoftwareSerial ¥é¥¤¥Ö¥é¥ê¤òÊ»ÍѤ¹¤ë¤³¤È¤Ë¤·¤Þ¤·¤¿¡£

Ʊ¤¸Íýͳ¤Ç¡¢Arduino IDE ¤«¤é UNO ËÜÂΤΠUSB ¥·¥ê¥¢¥ë·Ðͳ¤Ç¥×¥í¥°¥é¥à¤ò½ñ¤­¹þ¤àºÝ¤Ë¤Ï [RC-S620/S ¦ TXD] <--> [RX ¥Ô¥ó] ¤Î·ëÀþ¤ò³°¤·¤ÆÇÓ¾¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£¤³¤Î¤¢¤¿¤ê¤Î»ö¾ð¤Ï Arduino ¥æ¡¼¥¶¤Ë¤ÏÅöÁ³¤Î¤³¤È¤Ê¤Î¤Ç¤·¤ç¤¦¤¬¥Ó¥®¥Ê¡¼¤Ë¤Ï¤Á¤ç¤Ã¤È¿·Á¯¤Ç¤·¤¿¡£

  

¥½¡¼¥¹¥³¡¼¥É

Æ°ºî¤ÎÍÍ»Ò

Æ°²è¡§3ʬ19ÉÃ

  


(tanabe)
klab_gijutsu2 at 08:38¡Ã¤³¤Îµ­»ö¤ÎURL¨¢Comments(0)
2017ǯ12·î27Æü

°Â²Á¤Ê NFC ¥¿¥°¤ÇÈëÌ©¾ðÊó¤ò°ÂÁ´¤Ë·È¹Ô¤¹¤ë»î¤ß

¤Ï¤Æ¤Ê¥Ö¥Ã¥¯¥Þ¡¼¥¯¤ËÅÐÏ¿

¤Ï¤¸¤á¤Ë

ºÇ¶á NFC ¤Þ¤ï¤ê¤ÎÄ´ºº¤È¼Â¸³¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£ÀÚ¤ê¸ý¤¬Â¿¤¯±ü¤Î¿¼¤¤µ»½Ñ¤Ç¤¹¤¬¡¢NFC ¥¿¥°À½ÉʤˤĤ¤¤ÆÄ´¤Ù¤Æ¤¤¤ë²áÄø¤Ç¸½ºß¤â¤Ã¤È¤â¹­¤¯½Ð²ó¤Ã¤Æ¤¤¤ë NXP Semiconductors À½¤Î¡ÖNTAG21x¡×¥·¥ê¡¼¥º ¡ÊISO/IEC 14443 Type A: MIFARE Ultralight¡Ë ¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¶½Ì£¿¼¤¤¥¢¥¯¥»¥¹À©¸æµ¡¹½¤òÃΤê¤Þ¤·¤¿¡£

NFC ¥¿¥°¤Î°ìÈÌŪ¤Ê¡Ö¼ê·Ú¤µ¡×¤È¤Ï΢ʢ¤Ë¡¢°·¤¤¤ò¸í¤ë¤È¥¿¥°¤¬¤¢¤Ã¤µ¤ê»ÈÍÑÉÔǽ¤Ë¤Ê¤ë¥ê¥¹¥¯¤ÈÇØÃæ¹ç¤ï¤»¤Ç¤¢¤ë¤¿¤á¤«º£¤Î¤È¤³¤í¤³¤Îµ¡¹½¤Ë¸ÀµÚ¤·¤¿µ­»ö¤ä¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ï¤¢¤Þ¤ê¸«¤«¤±¤Þ¤»¤ó¡£¤·¤«¤·¡¢»ÅÍͤòÍý²ò¤·¤¿¾å¤ÇŬÀڤ˼è¤ê²ó¤»¤Ð¤³¤Î°Â²Á¤Ê¥¿¥°À½ÉʤλÈÅÓ¤òÂ礭¤¯³È¤²¤ë¤³¤È¤¬¤Ç¤­¤ë¤Ç¤·¤ç¤¦¡£

  • ÇÞÂΤ¬¾®¤µ¤¯·ÚÇö¤Ç¿óÄ¥¤é¤Ê¤¤
  • ÈóÀÜ¿¨·¿¤Ç¤¢¤ë¤¿¤áϪ½Ð¤ÎɬÍפ¬¤Ê¤¯Ç¦¤Ð¤»¤ä¤¹¤¤
  • ¶ÛµÞ»þ¤Ë¤Ï´Êñ¤ËÇ˲õ¡¦ÇË´þ¤Ç¤­¤ë

¼ê¸µ¤Ç¤Ï¤³¤¦¤¤¤Ã¤¿ÊªÍýŪ¤ÊÆÃŤˤâÃíÌܤ·¡¢NTAG21x ¤òÈëÌ©¾ðÊó¤Î³ÊǼ¤ËÍøÍѤ¹¤ë¥¢¥¤¥Ç¥£¥¢¤ò·Á¤Ë¤·¤Æ¤ß¤Þ¤·¤¿¡£¥Ç¡¼¥¿°µ½Ì¤ÈÊ£¿ô¥¿¥°¤Ø¤Îʬ³ä³ÊǼ¤Ë¤âÂбþ¤·¤Æ¤¤¤Þ¤¹¡£º£²ó¤Ï¤³¤Î NTAG21x ¤Î¥¢¥¯¥»¥¹À©¸æµ¡¹½¤Ë´Ø¤¹¤ë¾ðÊó¤ÎÀ°Íý¤ò¹Ô¤¤¡¢»îºî¤·¤¿ Android ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ÎÆâÍƤò¾Ò²ð¤·¤Þ¤¹¡£

¤Á¤Ê¤ß¤Ë¼ê¸µ¤Ç¤Ï¼Â¸³ÍÑ¤Ë NTAG213 ¤ò·× 110 Ëç¡¢NTAG216 ¤ò·× 25 ËçĴ㤷¤Þ¤·¤¿¡£¤É¤Á¤é¤â¤Þ¤º Amazon ¤Ç¾¯Î̤ò¹ØÆþ¤·ÍͻҸ«¤ò·Ð¤Æ¸å¸Ü¤ÎÍ«¤¤¤Ê¤¯»È¤¤ÄÙ¤»¤ë¤è¤¦¤Ë¤è¤ê°Â¤¯Æþ¼ê¤Ç¤­¤ë Aliexpress ¤ÇÇ㤤­¤·¤ò¹Ô¤¤¤Þ¤·¤¿¡£»²¹Í¤Ë¹ØÆþ¸µ¤È¹ØÆþ»þ¤Î²Á³Ê¤ò·ÇºÜ¤·¤Þ¤¹¡£¡Ê¸Ä¿ÍŪ¤Ë¤Ï¸½»þÅÀ¤Ç Aliexpress ¤òÍøÍѤ¹¤ëºÝ¤Ë¤ÏËü°ì¤Î»ö¸Î¤ËÈ÷¤¨¤Æ¤ÎÁ¼ÃÖ¤ò¤È¤Ã¤Æ¤¤¤Þ¤¹¡Ë

NTAG213¡Ê¥æ¡¼¥¶¥á¥â¥êÍÆÎÌ 144 ¥Ð¥¤¥È¡Ë

NTAG216¡Ê¥æ¡¼¥¶¥á¥â¥êÍÆÎÌ 888 ¥Ð¥¤¥È¡Ë

¤Ê¤ª¡¢Ëܵ­»ö¤Ë¤ª¤¤¤Æ¤Ï NTAG ¥á¥â¥êÆâÍƤλ²¾È¤Ë NXP ½ãÀµ¤Î¼¡¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ò»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£

1. NTAG21x ¤Î¥¢¥¯¥»¥¹À©¸æµ¡¹½¤È¥Í¥¤¥Æ¥£¥Ö¥³¥Þ¥ó¥É

¥Ç¡¼¥¿¥·¡¼¥È

¥¢¥¯¥»¥¹À©¸æµ¡¹½¤Î³µÍפȴÊñ¤Ê¥Ç¥â

  • NTAG21x ¥á¥â¥ê¾å¤ÎǤ°Õ¤Î¥Ú¡¼¥¸¡Ê1 ¥Ú¡¼¥¸ = 4 ¥Ð¥¤¥È¡Ë°Ê¹ß¤Ø¤Î¥¢¥¯¥»¥¹Í×µá¤ËÂФ·Åö³º¥¿¥°¤ò¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤Ã¤ÆÊݸî¤Ç¤­¤ë
  • ¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤ëÊݸî¤Ï Write Í×µá¤Î¤ß¤Ê¤é¤º Read Í×µá¤ËÂФ·¤Æ¤âÀßÄê²Äǽ
  • ¥Ñ¥¹¥ï¡¼¥Éǧ¾ÚϢ³»î¹Ô²ó¿ô¤Î¾å¸ÂÃͤòÀßÄꤹ¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ê¡¢¤³¤Î²ó¿ô¤òĶ²á¤¹¤ë¤ÈÅö³º¥¿¥°¤Îǧ¾Úµ¡Ç½¤Ï±Êµ×¤ËÉõº¿¤µ¤ì¥Ñ¥¹¥ï¡¼¥ÉÀµÈݤˤ«¤«¤ï¤é¤ºÇ§¾ÚÄ̲áÉÔǽ¤È¤Ê¤ë

    ¥Ç¥â 1¡§ »îºî¥¢¥×¥ê¤«¤é NTAG213 ¤Ë¥Ç¡¼¥¿¤Î½ñ¤­¹þ¤ß¤ò¹Ô¤¤Á´¥Ú¡¼¥¸¤ÎÆɤ߽ñ¤­¤ò¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ë ¡ÊÆ°²è 1ʬ39ÉáË

    ¥Ç¥â 2¡§ ¾åµ­¥Ç¥â 1 ¤Ç¤Î¥Ñ¥¹¥ï¡¼¥ÉÀßÄê»þ¤ËÊ»¤»¤ÆÀßÄꤷ¤¿Ç§¾Ú»î¹Ô¾å¸Â²ó¿ô¤òĶ²á¤¹¤ëÁàºî¤ò¹Ô¤Ã¤¿·ë²Ì¥¿¥°¤¬¼«Çú¤¹¤ëÍÍ»Ò ¡ÊÆ°²è 1ʬ2ÉáË

¥¢¥¯¥»¥¹À©¸æµ¡¹½¤Î¾ÜºÙ

  • ¥Ç¡¼¥¿¥·¡¼¥ÈÃæ¤Îµ­»ö
    • "1. General description"
    • "8.5 Memory organization"
    • "8.6 NFC counter function"
    • "8.8 Password verification protection"
  • Í×ÅÀ¤Î¤Þ¤È¤á
    • NTAG213 ¤Î EEPROM ¥á¥â¥ê¤ÎÁí¥Ú¡¼¥¸¿ô¤Ï 45¡Ê0h¡Á2Ch¡Ë¡£NTAG215 ¤Ï 135 ¥Ú¡¼¥¸, NTAG216 ¤Ï 231 ¥Ú¡¼¥¸¤Ç¤¢¤ê¡¢¤¤¤º¤ì¤âËöÈø¤Î 4 ¥Ú¡¼¥¸¤¬ Configuration Pages ¤Ç¤¢¤ë¡£²¼¿Þ¤Î NTAG213 ¤Î¥á¥â¥ê¥ì¥¤¥¢¥¦¥È¤ò»²¾È¤Î¤³¤È¡£¤Ê¤ª 1 ¥Ú¡¼¥¸ = 4 ¥Ð¥¤¥È
    • Configuration Âè 1 ¥Ú¡¼¥¸¤ÎÂè 4 ¥Ð¥¤¥È¡ÖAUTH0¡×¤Ë¤Ï¥Ñ¥¹¥ï¡¼¥ÉÊݸîÂоݤȤ¹¤ë³«»Ï¥Ú¡¼¥¸¤Î¥¢¥É¥ì¥¹¤ò»ØÄꤹ¤ë¡£¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ë¼Âºß¥Ú¡¼¥¸¤ÎÈϰϤòĶ¤¨¤ë¥¢¥É¥ì¥¹¤¬³ÊǼ¤µ¤ì¤¿¾õÂ֤Ǥϥѥ¹¥ï¡¼¥ÉÊݸî¤Ï̵¸ú¡£½Ð²Ù»þ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï 0xFF
    • Configuration Âè 2 ¥Ú¡¼¥¸¤ÎÂè 1 ¥Ð¥¤¥È¡ÖACCESS¡×¤Î PROT ¥Ó¥Ã¥È¤¬ 0 ¤Ê¤é¥Ñ¥¹¥ï¡¼¥ÉÊݸî¤ÎÂÐ¾Ý¤Ï Write Í×µá¤Î¤ß¡£Æ±¥Ó¥Ã¥È¤¬ 1 ¤Ê¤é Read, Write Í×µá¤ÎξÊý¤¬ÂоݤȤʤë
    • ¥Ñ¥¹¥ï¡¼¥É¡ÊPWD¡Ë¤Ï 4¥Ð¥¤¥È¸ÇÄê¡£Configuration Âè 3 ¥Ú¡¼¥¸¤Ø³ÊǼ¡£½Ð²Ù»þ¤Î PWD ¤Î¥Ç¥Õ¥©¥ë¥È¤Ï 0xFFFFFFFF
      • PWD ¤Ï²ÄÆÉʸ»úÎó¤Ç¤Ê¤¯¤Æ¤âµöÍƤµ¤ì¤ë¤¿¤á¥Ð¥ê¥¨¡¼¥·¥ç¥ó¤Ï 4 ¥Ð¥¤¥È¤Ç 256^4 ¤Ç¤¢¤êÍÑÅӤˤè¤Ã¤Æ¤Ï°Õ¿ÞŪ¤ËÈó ASCII ¥Ç¡¼¥¿¤òŬÍѤ¹¤ëÁªÂò¤â¤¢¤êÆÀ¤ë¤À¤í¤¦
      • ¡ÖACCESS¡×¤Î AUTHLIM ¤Ë¤Ï¥Ö¥ë¡¼¥È¥Õ¥©¡¼¥¹¹¶·âÂкöÍѤ˥ѥ¹¥ï¡¼¥Éǧ¾ÚÍ×µá¡ÊPWD_AUTH¡§¸å½Ð¡Ë»î¹Ô²ó¿ô¾å¸Â¤òÀßÄê²Äǽ¡£Ç§¾ÚϢ³¼ºÇÔ²ó¿ô¤¬¤³¤ÎÃͤòĶ¤¨¤ë¤È°Ê¹ß¤Î PWD_AUTH ¤Ï¥Ñ¥¹¥ï¡¼¥É¤ÎÀµÈݤˤ«¤«¤ï¤é¤º±Êµ×¤Ë̵¸ú¤È¤Ê¤ë¡£»î¹Ô²Äǽ²ó¿ô¤ÎÈÏ°Ï¤Ç PWD_AUTH ¤¬À®¸ù¤¹¤ë¤È¼ºÇÔ²ó¿ô¤òÊÝ»ý¤¹¤ëÆâÉô¥«¥¦¥ó¥¿¤Ï¥ê¥»¥Ã¥È¤µ¤ì¤ë¡£AUTHLIM ¤Î½é´üÃͤÏÅö³ºµ¡Ç½¤Î̵¸ú¤ò¼¨¤¹ 000b
    • Configuration Âè 4 ¥Ú¡¼¥¸¤ÎÀèƬ 16 ¥Ó¥Ã¥È¤Î Password Acknowledge¡ÊPACK¡Ë¤Ï¥Ñ¥¹¥ï¡¼¥Éǧ¾ÚÄ̲á»þ¤Î¹ÎÄê±þÅúÃÍ¡£¥Ç¥Õ¥©¥ë¥È¤Ï 0x0000
    • ¥Ñ¥¹¥ï¡¼¥ÉÊݸͭ¸ú¤Ê¥á¥â¥êÎΰè¤ÎÆɤ߽ñ¤­¤Ï¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú¤òÄ̲ᤷ PACK ¤òÆÀ¤¿¸å¤Ë²Äǽ¤È¤Ê¤ë
    • PWD ¤ª¤è¤Ó PACK ¤ÎÆɤ߽Ф·¤ÏÉÔ²Äǽ¡£Î¾¥Õ¥£¡¼¥ë¥É¤Ø¤Î READ Í×µá¤ËÂФ· NTAG ¤Ï¾ï¤Ë 0x00 ¤òÊÖ¤¹
    • NTAG21x ¤Î¥Ñ¥¹¥ï¡¼¥ÉÊݸ¹½¤ÏÉÔÀµ¤Ê¥á¥â¥ê¥¢¥¯¥»¥¹¤ÎËɻߤËÆò½¤·¤¿¤â¤Î¤Ç¤¢¤ê¥Ç¡¼¥¿°Å¹æ²½Åù¤Ï¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¦¤ÎÍ×·ï
    • Configuration Pages ¤ò±Ê³Ū¤Ë¥í¥Ã¥¯¤¹¤ë CFGLCK µ¡¹½¤Ë¤âÍ×Ãí°Õ
  • ¥Õ¥£¡¼¥ë¥É¤ÎÀ°Íý
    ¡Ê¢¨¥Ç¡¼¥¿¥·¡¼¥È¤«¤é°úÍѤ·¤¿¿Þ¡¦É½¤òÀâÌÀ¤Î¤¿¤á¤ËºÆ¹½À®¤·¤Æ¤¤¤Þ¤¹¡Ë


  • ¡Ê»²¹Í¡ËNTAG213 ½é´ü¾õÂ֤Υá¥â¥ê¥À¥ó¥×¡§¥Ú¡¼¥¸ 29h °Ê¹ß¤¬ Configuration Pages
    ¢¨ NXP Ä󶡤ΠAndroid ¥¢¥×¥ê TagInfo ¤Ç¤Îɽ¼¨
     

´ØÏ¢¤¹¤ë NTAG ¥³¥Þ¥ó¥É

¾åµ­¥¢¥¯¥»¥¹À©¸æµ¡¹½¤òÍøÍѤ¹¤ë¾å¤ÇºÇÄã¸ÂɬÍ×¤Ê NTAG21x ¥Í¥¤¥Æ¥£¥Ö¥³¥Þ¥ó¥É¤ª¤è¤Ó´ØÏ¢¾ðÊó¤ò¼¨¤¹¡£

  • ¥Ç¡¼¥¿¥·¡¼¥ÈÃæ¤Îµ­»ö
    • "9. Command overview"
  • Í×ÅÀ¤Î¤Þ¤È¤á
    • NTAG ¥³¥Þ¥ó¥É¤ËÂФ¹¤ëºÇû¤Î¥ì¥¹¥Ý¥ó¥¹¤Ï 4¥Ó¥Ã¥È¤Î ACK or NACK ¤Ç¤¢¤ë
      • Ah¡§ Acknowledge (ACK)
      • 0h¡§ NAK for invalid argument (i.e. invalid page address)
      • 1h¡§ NAK for parity or CRC error
      • 4h¡§ NAK for invalid authentication counter overflow
      • 5h¡§ NAK for EEPROM write error
    • ¥³¥Þ¥ó¥É¤ËÉÕÍ¿¤¹¤ë CRC ÃÍ¤Ï ISO/IEC 14443 ¤Îµ¬Ìó¤Ë½àµò¤Î¤³¤È ¡Ê¼ÂÁõÎã¡Ë

    • GET_VERSION ¥³¥Þ¥ó¥É
      NTAG À½ÉʤΥС¼¥¸¥ç¥ó,¥¹¥È¥ì¡¼¥¸¥µ¥¤¥ºÅù¤òÆÀ¤ë¡£Configuration Pages ¤Î¥¢¥É¥ì¥¹¼èÆÀ¤ËɬÍ×
      • ¥ê¥¯¥¨¥¹¥È
        • ¥³¥Þ¥ó¥É 1 ¥Ð¥¤¥È¡Ê60h¡Ë ¡Ü CRC 2 ¥Ð¥¤¥È
      • ¥ì¥¹¥Ý¥ó¥¹
        • OK¡§ ¥Ç¡¼¥¿ 8 ¥Ð¥¤¥È¡Ü CRC 2 ¥Ð¥¤¥È
        • NG¡§ NAK ³ÆÃÍ
      NTAG 21x GET_VERSION ¥ì¥¹¥Ý¥ó¥¹¥Ç¡¼¥¿¤ÎÆâÍÆ
      
      Byte no. Description       NTAG213 NTAG215 NTAG216  Interpretation
            0  fixed Header          00h     00h     00h
            1  vendor ID             04h     04h     04h  NXP Semiconductors
            2  product type          04h     04h     04h  NTAG
            3  product subtype       02h     02h     02h  50 pF
            4  major product version 01h     01h     01h  1
            5  minor product version 00h     00h     00h  V0
            6  storage size          0Fh     11h     13h  see following information
            7  protocol type         03h     03h     03h  ISO/IEC 14443-3 compliant
      

      NTAG À½Éʤμ±ÊÌÊýË¡

      storage size ¤Î¾å°Ì 7¥Ó¥Ã¥È¤òÉä¹æ¤Ê¤·À°¿ôÃÍ n ¤È¤·¤Æ²ò¼á¤¹¤ë¡£»ÈÍѲÄǽ¤Ê¥æ¡¼¥¶¡¼¥á¥â¥ê¤Î¹ç·×¥µ¥¤¥º¤Ï¡¢ºÇ²¼°Ì¥Ó¥Ã¥È¤¬ 0 ¤Î¾ì¹ç¤Ë¤Ï 2^n ¤Ç¤¢¤êºÇ²¼°Ì¥Ó¥Ã¥È¤¬ 1 ¤Î¾ì¹ç¤Ë¤Ï 2^n ¡Á 2^(n+1) ¤Ç¤¢¤ë¡£¤³¤ì¤ò¼±Ê̤ËÍøÍѤ¹¤ë¡£

      NTAG213 ¤Ç¤Î GET_VERSION ¥ì¥¹¥Ý¥ó¥¹¼ÂÎã

      HEX: 00 04 04 02 01 00 0F 03

      --> 0x0F = BIN: 00001111 --> BIN: 0000111 = 0x07 --> 2^7 = 128, 2^(7+1) = 256

      ¢¨ 128¡Á256 ¥Ð¥¤¥È¤Î¥æ¡¼¥¶¡¼¥á¥â¥ê¶õ´Ö¤ò»ý¤ÄÀ½ÉÊ¤Ï NTAG213¡Ê144 ¥Ð¥¤¥È¡Ë

      NTAG216 ¤Ç¤Î GET_VERSION ¥ì¥¹¥Ý¥ó¥¹¼ÂÎã

      HEX: 00 04 04 02 01 00 13 03

      --> 0x13 = BIN: 00010011 --> BIN: 0001001 = 0x09 --> 2^9 = 512, 2^(9+1) = 1024

      ¢¨ 512¡Á1024 ¥Ð¥¤¥È¤Î¥æ¡¼¥¶¡¼¥á¥â¥ê¶õ´Ö¤ò»ý¤ÄÀ½ÉÊ¤Ï NTAG216¡Ê888 ¥Ð¥¤¥È¡Ë

    • READ ¥³¥Þ¥ó¥É
      ½êÄê¤Î¥Ú¡¼¥¸¥¢¥É¥ì¥¹¤«¤é»Ï¤Þ¤ë 4 ¥Ú¡¼¥¸Ê¬¡Ê16 ¥Ð¥¤¥È¡Ë¤Î¥Ç¡¼¥¿¤òÆÀ¤ë
      • ¥ê¥¯¥¨¥¹¥È
        • ¥³¥Þ¥ó¥É 1 ¥Ð¥¤¥È¡Ê30h¡Ë¡Ü ³«»Ï¥¢¥É¥ì¥¹ 1 ¥Ð¥¤¥È ¡Ü CRC 2 ¥Ð¥¤¥È
      • ¥ì¥¹¥Ý¥ó¥¹
        • OK¡§ ¥Ç¡¼¥¿ 16 ¥Ð¥¤¥È¡Ü CRC 2 ¥Ð¥¤¥È
        • NG¡§ NAK ³ÆÃÍ
    • WRITE ¥³¥Þ¥ó¥É
      ½êÄê¤Î¥Ú¡¼¥¸¥¢¥É¥ì¥¹¤Ø 1 ¥Ú¡¼¥¸Ê¬¡Ê4 ¥Ð¥¤¥È¡Ë¤Î¥Ç¡¼¥¿¤ò½ñ¤­¹þ¤à
      • ¥ê¥¯¥¨¥¹¥È
        • ¥³¥Þ¥ó¥É 1¥Ð¥¤¥È¡ÊA2h¡Ë¡Ü Âоݥ¢¥É¥ì¥¹ 1 ¥Ð¥¤¥È ¡Ü ¥Ç¡¼¥¿ 4 ¥Ð¥¤¥È ¡Ü CRC 2 ¥Ð¥¤¥È
      • ¥ì¥¹¥Ý¥ó¥¹
        • OK¡§ ACK
        • NG¡§ NAK ³ÆÃÍ
    • PWD_AUTH ¥³¥Þ¥ó¥É
      ¥Ñ¥¹¥ï¡¼¥É¤ÇÊݸ¤ì¤¿Îΰè¤Ø¤Î¥¢¥¯¥»¥¹Í×µá¤ËÀè¹Ô¤·¤Æ¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú¤òÍ׵᤹¤ë¡£¤³¤³¤Ç¹ÎÄê±þÅú¤Ç¤¢¤ë PACK ¤¬ÆÀ¤é¤ì¤ì¤Ð½êÄê¤Î¥¢¥¯¥»¥¹¤¬²Äǽ¤È¤Ê¤ë¡ÊPACK ¤ÎÃͤϥǥե©¥ë¥È 0x0000 ¡£Êѹ¹²Ä¡Ë
      • ¥ê¥¯¥¨¥¹¥È
        • ¥³¥Þ¥ó¥É 1 ¥Ð¥¤¥È¡Ê1Bh¡Ë¡Ü ¥Ñ¥¹¥ï¡¼¥É 4 ¥Ð¥¤¥È ¡Ü CRC 2 ¥Ð¥¤¥È
      • ¥ì¥¹¥Ý¥ó¥¹
        • OK¡§ PACK 2 ¥Ð¥¤¥È
        • NG¡§ NAK ³ÆÃÍ

2. Android API ¤Ë¤è¤ë NTAG21x ¤Î¥Ï¥ó¥É¥ê¥ó¥°¤Ë¤Ä¤¤¤Æ

¼ê½çÅù

  • NTAG21x ¤Ï ISO/IEC 14443 Type A ¤Ç¤¢¤ë¤¿¤á Android ¤Ç¥¢¥¯¥»¥¹À©¸æµ¡¹½¤òÍøÍѤ¹¤ëºÝ¤Ë¤Ïɸ½à¤Î NfcA ¥¯¥é¥¹¤ò»ÈÍѤ¹¤ë¡£¤Ê¤ª MIFARE Ultralight ¤ËÆò½¤·¤¿ MifareUltralight ¥¯¥é¥¹¤â¸ºß¤¹¤ë¤¬¤³¤³¤Ç¤ÏÁ°·Ç¤Î¥Í¥¤¥Æ¥£¥Ö¥³¥Þ¥ó¥ÉÁàºî¤¬½èÍý¤ÎÃæ¿´¤Ç¤¢¤ë¤¿¤á¤¢¤¨¤ÆƱ¥¯¥é¥¹¤òÍøÍѤ¹¤ëɬÁ³À­¤Ï¤Ê¤¤
  • ½êÄê¤Î¥¿¥°¤Î¶áÀܤò¸¡ÃΤ·¤¿¤é¤Þ¤º Tag ¥¯¥é¥¹¤Î getTechList ¥á¥½¥Ã¥É¤Ë¤è¤êÅö³º¥¿¥°¤Î TagTechnology ʸ»úÎó¥ê¥¹¥È¤ò¼èÆÀ¡£¥ê¥¹¥È¤Ë "android.nfc.tech.NfcA" ¤¬´Þ¤Þ¤ì¤Æ¤¤¤ì¤Ð NfcA ¥¯¥é¥¹¤Î get ¥á¥½¥Ã¥É¤Ç NfcA ¥ª¥Ö¥¸¥§¥¯¥È¤ò¼èÆÀ¤· transceive ¥á¥½¥Ã¥É¤Ë¤è¤êŬµ¹ NTAG ¥³¥Þ¥ó¥É¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤ÇÀ½Éʤμ±Ê̤ÈɬÍפʽèÍý¤ò¹Ô¤¦¡£¥¿¡¼¥²¥Ã¥È¤¬ NTAG21x ¤È¼±Ê̤µ¤ì¤Ê¤¤¾ì¹ç¤Ï¸å³½èÍý¤ò¥­¥ã¥ó¥»¥ë
  • NfcA - API level 10
    public final class NfcA

    Provides access to NFC-A (ISO 14443-3A) properties and I/O operations on a Tag.

    Acquire a NfcA object using get(Tag).

    The primary NFC-A I/O operation is transceive(byte[]). Applications must implement their own protocol stack on top of transceive(byte[]).
    • get - API level 10
      NfcA get (Tag tag)

      Get an instance of NfcA for the given tag.

      Returns null if NfcA was not enumerated in getTechList(). This indicates the tag does not support NFC-A.

      Parameters
      • tag Tag: an NFC-A compatible tag
      Returns
      • NfcA NFC-A object
    • transceive - API level 10
      byte[] transceive (byte[] data)

      Get an instance of NfcA for the given tag.

      Send raw NFC-A commands to the tag and receive the response.

      Applications must not append the EoD (CRC) to the payload, it will be automatically calculated.


      Applications must only send commands that are complete bytes, for example a SENS_REQ is not possible (these are used to manage tag polling and initialization).

      Use getMaxTransceiveLength() to retrieve the maximum number of bytes that can be sent with transceive(byte[]).

      This is an I/O operation and will block until complete. It must not be called from the main application thread. A blocked call will be canceled with IOException if close() is called from another thread.

      Parameters
      • data byte: bytes to send
      Returns
      • byte[] bytes received in response
      Throws
      • IOException if there is an I/O failure, or this operation is cance

¥³¡¼¥É¤ò½ñ¤¤¤Æ»î¤¹

  1. ¥Ñ¥¹¥ï¡¼¥É¤òÀßÄꤹ¤ë¡Êwrite Í׵ᤫ¤é¤ÎÊݸî¡Ë
    • NTAG21x ¼ïÊ̤ò³Îǧ
    • ¥Ñ¥¹¥ï¡¼¥É¤È¤·¤Æ "0000" ¤òÀßÄê
    • ¥Ú¡¼¥¸ 04h °Ê¹ß¤òÊݸîÂоݤȤ¹¤ë
              :
      
          if (isNfcA) {
            int ntagMaxPage = -1, ntagConfPage0;
            NfcA nfca = NfcA.get(tag);
            try {
              nfca.connect();
            } catch (IOException e) {
              Log.d(TAG, "NfcA.connect() err: " + e.toString());
              return;
            }
            // NTAG ¼ïÊ̼èÆÀ
            try {
              byte[] res = nfca.transceive(new byte[]{
                (byte) 0x60, // GET_VERSION
              });
              Log.d(TAG, "GET_VERSION reslen=" + res.length + " res=" + bytesToHexString(res));
              if (res.length == 8) {
                if (res[0] == 0x00 && res[1] == 0x04 &&
                    res[2] == 0x04 && res[3] == 0x02) {
                  byte ntagStorageSize = res[6];
                  if (ntagStorageSize == 0x0F) {
                    ntagMaxPage = 45; // 0x2D = NTAG213
                  } else if (ntagStorageSize == 0x11) {
                    ntagMaxPage = 135; // 0x87 = NTAG215
                  } else if (ntagStorageSize == 0x13) {
                    ntagMaxPage = 231; // 0xE7 = NTAG216
                  }
                }
              }
            } catch (IOException e) {
              Log.d(TAG, "GET_VERSION err:" + e.toString());
            }
            if (ntagMaxPage == -1) {
              Log.d(TAG, "is not NTAG21x");
              if (nfca.isConnected()) {
                try {
                  nfca.close();
                } catch (IOException e) {
                  Log.d(TAG, "NfcA.close() err: " + e.toString());
                }
              }
              return;
            }
            // Congiguration Pages ³«»Ï°ÌÃÖ
            ntagConfPage0 = ntagMaxPage - 4;
      
            try {
              // ¥Ñ¥¹¥ï¡¼¥É¤òÀßÄê
              int page = ntagConfPage0 + 2; // config page 2
              byte[] res = nfca.transceive(
                  new byte[]{
                      (byte) 0xA2, // WRITE
                      (byte) page,
                      '0', '0', '0', '0'
                  }
              );
              Log.d(TAG, "WRITE p" + page + " reslen=" + res.length + " res=" + bytesToHexString(res));
      
              // Êݸ»Ï¥Ú¡¼¥¸¤òÀßÄê
              page = ntagConfPage0; // config page 0
              res = nfca.transceive(
                  new byte[]{
                      (byte) 0xA2, // WRITE
                      (byte) page,
                      (byte) 0x04,
                      (byte) 0x00,
                      (byte) 0x00,
                      (byte) 0x04 // Êݸ»Ï¥Ú¡¼¥¸
                  }
              );
              Log.d(TAG, "WRITE p" + page + " reslen=" + res.length + " res=" + bytesToHexString(res));
            } catch (IOException e) {
              Log.d(TAG, "WRITE err:" + e.toString());
            }
      
            if (nfca.isConnected()) {
              try {
                nfca.close();
              } catch (IOException e) {
                e.printStackTrace();
              }
            }
          }
              :
      
    • ¾å¤Î¥³¡¼¥É¤Ë¤è¤ê NTAG213 ¤Î¥Ú¡¼¥¸ 04h °Ê¹ß¤Ø¤Î½ñ¤­¹þ¤ß¤Ë¥Ñ¥¹¥ï¡¼¥Éǧ¾ÚÄ̲᤬ɬ¿Ü¤È¤Ê¤Ã¤¿¾õ¶·
      AUTH0 ¤ËÊݸ»Ï¥Ú¡¼¥¸»ØÄê
      PROT ¥Ó¥Ã¥È¤Ï¥Ç¥Õ¥©¥ë¥È¤Î 0 ¤Î¤Þ¤Þ
         
  2. ¥Ñ¥¹¥ï¡¼¥É¤òÀßÄꤹ¤ë¡Êread / write Í׵ᤫ¤é¤ÎÊݸî¡Ë

    NTAG21x ¤Ç¤Ï write Í×µá¤Î¤ß¤Ê¤é¤º read Í×µá¤ËÂФ·¤Æ¤â¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤ëÊݸ²Äǽ¡£¤¿¤À¤·¥Ñ¥¹¥ï¡¼¥É¤Ïξ¼Ô¶¦ÄÌ

    • NTAG21x ¼ïÊ̤ò³Îǧ
    • ¥Ñ¥¹¥ï¡¼¥É¤È¤·¤Æ "0000" ¤òÀßÄê
    • ¥Ú¡¼¥¸ 04h °Ê¹ß¤òÊݸîÂоݤȤ¹¤ë
    • PROT ¥Ó¥Ã¥È¤òΩ¤Æ read Í׵ᤫ¤é¤ÎÊݸî¤âÍ­¸ú¤Ë
              :
      
          if (isNfcA) {
            int ntagMaxPage = -1, ntagConfPage0;
            NfcA nfca = NfcA.get(tag);
            try {
              nfca.connect();
            } catch (IOException e) {
              Log.d(TAG, "NfcA.connect() err: " + e.toString());
              return;
            }
            // NTAG ¼ïÊ̼èÆÀ
            try {
              byte[] res = nfca.transceive(new byte[]{
                (byte) 0x60, // GET_VERSION
              });
              Log.d(TAG, "GET_VERSION reslen=" + res.length + " res=" + bytesToHexString(res));
              if (res.length == 8) {
                if (res[0] == 0x00 && res[1] == 0x04 &&
                    res[2] == 0x04 && res[3] == 0x02) {
                  byte ntagStorageSize = res[6];
                  if (ntagStorageSize == 0x0F) {
                    ntagMaxPage = 45; // 0x2D = NTAG213
                  } else if (ntagStorageSize == 0x11) {
                    ntagMaxPage = 135; // 0x87 = NTAG215
                  } else if (ntagStorageSize == 0x13) {
                    ntagMaxPage = 231; // 0xE7 = NTAG216
                  }
                }
              }
            } catch (IOException e) {
              Log.d(TAG, "GET_VERSION err:" + e.toString());
            }
            if (ntagMaxPage == -1) {
              Log.d(TAG, "is not NTAG21x");
              if (nfca.isConnected()) {
                try {
                  nfca.close();
                } catch (IOException e) {
                  Log.d(TAG, "NfcA.close() err: " + e.toString());
                }
              }
              return;
            }
            // Congiguration Pages ³«»Ï°ÌÃÖ
            ntagConfPage0 = ntagMaxPage - 4;
      
            try {
              // ¥Ñ¥¹¥ï¡¼¥É¤òÀßÄê
              int page = ntagConfPage0 + 2; // config page 2
              byte[] res = nfca.transceive(
                  new byte[]{
                      (byte) 0xA2, // WRITE
                      (byte) page,
                      '0', '0', '0', '0'
                  }
              );
              Log.d(TAG, "WRITE p" + page + " reslen=" + res.length + " res=" + bytesToHexString(res));
      
              // Êݸ»Ï¥Ú¡¼¥¸¤òÀßÄê
              page = ntagConfPage0; // config page 0
              res = nfca.transceive(
                  new byte[]{
                      (byte) 0xA2, // WRITE
                      (byte) page,
                      (byte) 0x04,
                      (byte) 0x00,
                      (byte) 0x00,
                      (byte) 0x04 // Êݸ»Ï¥Ú¡¼¥¸
                  }
              );
              Log.d(TAG, "WRITE p" + page + " reslen=" + res.length + " res=" + bytesToHexString(res));
      
              // read Í׵ᤫ¤é¤ÎÊݸî¤âÍ­¸ú¤Ë
              page = ntagConfPage0 + 1; // config page 1
              res = nfca.transceive(
                  new byte[]{
                      (byte) 0xA2, // WRITE
                      (byte) page,
                      (byte) 0x80, // read,write protect
                      (byte) 0x05,
                      (byte) 0x00,
                      (byte) 0x00
                  }
              );
              Log.d(TAG, "WRITE p" + page + " reslen=" + res.length + " res=" + bytesToHexString(res));
            } catch (IOException e) {
              Log.d(TAG, "WRITE err:" + e.toString());
            }
      
            if (nfca.isConnected()) {
              try {
                nfca.close();
              } catch (IOException e) {
                e.printStackTrace();
              }
            }
          }
              :
      
    • ¾å¤Î¥³¡¼¥É¤Ë¤è¤ê NTAG213 ¤Î¥Ú¡¼¥¸ 04h °Ê¹ß¤ÎÆɤ߽ñ¤­¤Ë¥Ñ¥¹¥ï¡¼¥Éǧ¾ÚÄ̲᤬ɬ¿Ü¤È¤Ê¤Ã¤¿¾õ¶·
         
  3. ¥Ñ¥¹¥ï¡¼¥É¤ò²ò½ü¤¹¤ë
    • NTAG21x ¼ïÊ̤ò³Îǧ
    • PWD_AUTH ¥³¥Þ¥ó¥É¤Ç¥Ñ¥¹¥ï¡¼¥É "0000" ¤òÄ󼨤·Ç§¾ÚÍ×µá
    • AUTH0 ¤ËÍ­¸úÈϰϳ°¤Î¥Ú¡¼¥¸ÈÖ¹æ FFh ¤ò½ñ¤­¹þ¤à¤³¤È¤Ç¥Ñ¥¹¥ï¡¼¥ÉÊݸî¤ò̵¸ú²½¤¹¤ë
              :
      
          if (isNfcA) {
            int ntagMaxPage = -1, ntagConfPage0;
            NfcA nfca = NfcA.get(tag);
            try {
              nfca.connect();
            } catch (IOException e) {
              Log.d(TAG, "NfcA.connect() err: " + e.toString());
              return;
            }
            // NTAG ¼ïÊ̼èÆÀ
            try {
              byte[] res = nfca.transceive(new byte[]{
                (byte) 0x60, // GET_VERSION
              });
              Log.d(TAG, "GET_VERSION reslen=" + res.length + " res=" + bytesToHexString(res));
              if (res.length == 8) {
                if (res[0] == 0x00 && res[1] == 0x04 &&
                    res[2] == 0x04 && res[3] == 0x02) {
                  byte ntagStorageSize = res[6];
                  if (ntagStorageSize == 0x0F) {
                    ntagMaxPage = 45; // 0x2D = NTAG213
                  } else if (ntagStorageSize == 0x11) {
                    ntagMaxPage = 135; // 0x87 = NTAG215
                  } else if (ntagStorageSize == 0x13) {
                    ntagMaxPage = 231; // 0xE7 = NTAG216
                  }
                }
              }
            } catch (IOException e) {
              Log.d(TAG, "GET_VERSION err:" + e.toString());
            }
            if (ntagMaxPage == -1) {
              Log.d(TAG, "is not NTAG21x");
              if (nfca.isConnected()) {
                try {
                  nfca.close();
                } catch (IOException e) {
                  Log.d(TAG, "NfcA.close() err: " + e.toString());
                }
              }
              return;
            }
            // Congiguration Pages ³«»Ï°ÌÃÖ
            ntagConfPage0 = ntagMaxPage - 4;
      
            // ¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú
            // Ä̲᤹¤ì¤Ð close ¤¹¤ë¤Þ¤Ç¸¢¸Â¤¬»ý³
            boolean authOk = false;
            try {
              byte[] res = nfca.transceive(
                  new byte[]{
                      (byte) 0x1b, // PWD_AUTH
                      '0', '0', '0', '0'
                  }
              );
              Log.d(TAG, "PWD_AUTH reslen=" + res.length + " res=" + bytesToHexString(res));
              if (res.length == 2) {
                authOk = true;
              }
            } catch (IOException e) {
              Log.d(TAG, "PWD_AUTH err:" + e.toString());
            }
      
            if (authOk) {
              // ¥Ñ¥¹¥ï¡¼¥ÉÊݸî¤ò²ò½ü
              try {
                int page = ntagConfPage0; // config page 0
                byte[] res = nfca.transceive(
                    new byte[]{
                        (byte) 0xA2, // WRITE
                        (byte) page,
                        (byte) 0x04,
                        (byte) 0x00,
                        (byte) 0x00,
                        (byte) 0xFF // Í­¸úÈÏ°ÏĶ¤Î¥Ú¡¼¥¸»ØÄê¤ÇÊݸî¤Ï̵¸ú¤Ë
                    }
                );
                Log.d(TAG, "WRITE p" + page + " reslen=" + res.length + " res=" + bytesToHexString(res));
              } catch (IOException e) {
                Log.d(TAG, "PWD WRITE err:" + e.toString());
              }
            }
      
            if (nfca.isConnected()) {
              try {
                nfca.close();
              } catch (IOException e) {
                Log.d(TAG, "NfcA.close() err: " + e.toString());
              }
            }
          }
              :
      
    • ¾å¤Î¥³¡¼¥É¤Ë¤è¤êÁ°·Ç 2.¤Î¥³¡¼¥É¤Ë¤è¤ë¥Ñ¥¹¥ï¡¼¥ÉÊݸî¤ò¤³¤Î¥³¡¼¥É¤Ç²ò½ü¤·¤¿¾õ¶·
      ¤³¤³¤Ç¤Ï PWD ¼«ÂΤˤϼê¤ò¤Ä¤±¤Æ¤ª¤é¤º PROT ¥Ó¥Ã¥È¤â 1 ¤Î¤Þ¤Þ¤À¤¬¡¢AUTH0 = FFh ¤Ë¤Ä¤­¥æ¡¼¥¶Îΰè¤ò¼«Í³¤ËÆɤ߽ñ¤­²Äǽ¤Ê¾õÂÖ¤ËÌá¤Ã¤Æ¤¤¤ë
         

3. »îºî¤·¤¿ Android ¥¢¥×¥ê¤Ë¤Ä¤¤¤Æ

NTAG ¤ÇÈëÌ©¾ðÊó¤ò°·¤¦¤È¤¤¤¦¹Í¤¨Êý

¤³¤³¤Þ¤Ç¸«¤Æ¤­¤¿¤è¤¦¤Ë NTAG21x ¤Ï¥Ñ¥¹¥ï¡¼¥ÉÀßÄê¤Ë¤è¤ê Write Í×µá¤Î¤ß¤Ê¤é¤º Read Í×µá¤òÃƤ¯¤³¤È¤â²Äǽ¤Ç¤¹¡£¤³¤ì¤Ï¶½Ì£¿¼¤¤µ¡Ç½¤Ç¤¹¤¬¡¢Î¾¼Ô¤Î¥Ñ¥¹¥ï¡¼¥É¤¬¶¦Ä̤Ǥ¢¤ë¤¿¤á¤¿¤È¤¨¤Ð¼¡¤Î¤è¤¦¤Ê¼è¤ê²ó¤·¤Ï¤Ç¤­¤Þ¤»¤ó¡£

  • Éô³°¼Ô¡§ ¥¿¥°¥Ç¡¼¥¿¤Ø¤Î¥¢¥¯¥»¥¹ÉÔ²Ä
  • ÍøÍѼԡ§ Read ¥Ñ¥¹¥ï¡¼¥É¤Ë¤è¤ê¥¿¥°¥Ç¡¼¥¿¤ÎÆɤ߽Ф·¤¬²Äǽ
  • ´ÉÍý¼Ô¡§ Æɤ߽Ф·¤Ë²Ã¤¨ Write ¥Ñ¥¹¥ï¡¼¥É¤Ç¥¿¥°¥Ç¡¼¥¿¤Î½ñ¤­´¹¤¨¤¬²Äǽ

¤³¤Î¤è¤¦¤ËÊ£¿ô¤Î¥í¡¼¥ë¤Ç¥¿¥°¤ò¶¦ÍѤ·¤¿¤¤¾ì¹ç¤Ç¤Ï¤Ê¤¯¡¢½êÄê¤Î¥¿¥°¤òÆÈÀêŪ¡¦ÇÓ¾Ū¤Ë°·¤¤¤¿¤¤¾ì¹ç¤Ë¤³¤½¤³¤Îµ¡Ç½¤ÏÍ­ÍѤǤ·¤ç¤¦¡£¤½¤Îŵ·¿Åª¤Ê»ÈÍÑÎã¤È¤·¤ÆÈëÌ©¾ðÊó¤Î³ÊǼ¤òÁÛµ¯¤·¤Þ¤·¤¿¡£°Ê²¼¤ÎȯÁۤˤè¤ë¤â¤Î¤Ç¤¹¡£

  • ¥Ç¥Ð¥¤¥¹¤Î¥¹¥È¥ì¡¼¥¸¤â¸ø¶¦¤Î¥Í¥Ã¥È¥ï¡¼¥¯¤â»ÈÍѤ·¤Ê¤¤¤¿¤á¾ðÊóϳ±Ì¤Î¥ê¥¹¥¯¤¬¶Ë¤á¤Æ¾®¤µ¤¤
  • Çö¤¯¤Æ¾®¤µ¤¯Æð¼å¤ÊÇÞÂΤǤ¢¤ë¤¿¤á¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ÎÊݸ¤Ë¤ÏÉÔ¸þ¤­¤À¤¬¡¢µÕ¤Ë¥Ç¡¼¥¿¤Î¥³¥Ô¡¼¤ò·È¹Ô¤¹¤ëÌÜŪ¤Ë¤Ï¹¥Å¬¤Ç¤¢¤ê¡¢¤½¤Î¾õ¶·²¼¤Ç¤Ï´Êñ¤ËÇÞÂΤòÇ˲õ¡¦ÇË´þ¤Ç¤­¤ë¤³¤È¤¬ÍøÅÀ¤Ë¤â¤Ê¤ë
  • NFC ¤ÎÆÃÀ­¾åɽÌ̤òʤ¤Ã¤Æ¤âÆɤ߽ñ¤­¤¬¤Ç¤­¤ë¤¿¤á¼ê¶á¤Ê¤â¤Î¤ËǦ¤Ð¤»¤ë¤³¤È¤âÍÆ°×
  • ¥Ñ¥¹¥ï¡¼¥É¤ÇÂÐ Read Êݸî¤òÀßÄꤷ¤Æ¤ª¤±¤Ð¾¼Ô¤Î¼ê¤ËÅϤäƤâ°ìÈÌŪ¤Ê¥ê¡¼¥À¡¼¤ä¥¢¥×¥ê¤Ç¤Ï¥Ç¡¼¥¿¤òÆɤ߽Ф»¤Ê¤¤¡£²¾¤Ë NTAG ¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú¤ò»î¤ß¤é¤ì¤¿¤È¤·¤Æ¤â»öÁ°¤Ë¾å¸Â²ó¿ô¤òÀßÄꤷ¤Æ¤ª¤±¤Ð»î¹Ô¤Î²áÄø¤ÇÅö³º¥¿¥°¤Ï±Êµ×¤ËÉõº¿¤µ¤ì¤ë
  • µ­Ï¿ÍÆÎ̤ξ¯¤Ê¤µ¤Ï¥Ç¡¼¥¿°µ½Ì¤ÈÊ£¿ô¥¿¥°¤Ø¤Îʬ³ä³ÊǼ¤ÇÊ䤦¤³¤È¤¬²Äǽ¡£¿óÄ¥¤é¤Ê¤¤¤¿¤áÊ£¿ôËç¤ËÅϤäƤâ·È¹ÔÀ­¤Ø¤Î±Æ¶Á¤ÏÈù¾®

¤Ê¤ª¡¢¤³¤¦¤¤¤Ã¤¿»ÈÅӤˤª¤¤¤Æ¤Ï NFC ¤ÎÀ¤³¦¤Ç¡Ö¥Ç¡¼¥¿¸ò´¹¡×¤ò¹Ô¤¦¾å¤Ç¤ÎÊص¹¤È¤·¤Æ¤Î NDEF ·Á¼°¤ò»ÈÍѤ¹¤ëɬÁ³À­¤Ï¤¢¤ê¤Þ¤»¤ó¡£¥æ¡¼¥¶¥á¥â¥êÁ´ÂΤòǤ°Õ¤Î·Á¼°¤Ç¸úΨ¤è¤¯¼è¤ê²ó¤»¤Ð¤è¤¤¤Ç¤·¤ç¤¦¡£

»îºîÃæ¤Î¾ðÊó¼ý½¸»þ¤Ë¡¢ÈëÌ©¾ðÊó¤ò»æÇÞÂΤǴÉÍý¤¹¤ë¡Ö¥Ñ¥¹¥ï¡¼¥É¥Î¡¼¥È¡×¤È¤¤¤¦À½Éʤ¬¤¢¤ë¤³¤È¤òÃΤê¤Þ¤·¤¿¡£

¥¹¥È¥ì¡¼¥¸¤ä¥Í¥Ã¥È¥ï¡¼¥¯¤ò»ÈÍѤ·¤Ê¤¤ÅÀ¤¬¶¦Ä̤·¤Æ¤ª¤ê¶½Ì£¤ò»ý¤Á¤Þ¤·¤¿¡£¤¿¤·¤«¤Ë¡Ö¼ê½ñ¤­¡×¤Ë¤Ï¾¤ÎÊýË¡¤Ç¤Ï·è¤·¤ÆµÚ¤Ð¤Ê¤¤ÍÍ¡¹¤Ê½ÀÆðÀ­¤¬¤¢¤ê¤Þ¤¹¡£¤³¤ì¤¬¥Ò¥ó¥È¤È¤Ê¤Ã¤Æ NTAG ¤ò¼êÄ¢¤ØŽÉÕ¤·¤Æ»È¤¦¥¢¥¤¥Ç¥£¥¢¤Ë»ê¤ê¤Þ¤·¤¿¡£¤Õ¤¿¤Ä¤Îʸ²½¤ÎÍøÅÀ¤ò³èÍѤǤ­¤ëÎɤ¤ÁȤ߹ç¤ï¤»¤À¤È»×¤¤¤Þ¤¹¡£

¼ÂÁõÆâÍÆ

»îºî¤Î»ÅÍͤȤ·¤Æ°Ê²¼¤ÎÆâÍƤòÁÛÄꤷ¤Þ¤·¤¿¡£

  1. NTAG213, NTAG216 ¤òÂоݤȤ¹¤ë
  2. NDEF ¤Ï»ÈÍѤ»¤ººÇ¾®¸Â¤Î¥Ç¡¼¥¿¥Ø¥Ã¥À¤Ë³¤±¤Æ¥æ¡¼¥¶¥á¥â¥ê°ìÇդޤǥǡ¼¥¿¤ò³ÊǼ¤¹¤ë
  3. ¥Æ¥­¥¹¥È·Á¼°¤Î¥Ç¡¼¥¿¤Ç¤¢¤ë¤³¤È¤òÁ°Äó¤È¤¹¤ë¡£ÍÆÎÌÀáÌó¤Î¤¿¤á¥Þ¥ë¥Á¥Ð¥¤¥Èʸ»ú¤Î¥¨¥ó¥³¡¼¥Ç¥£¥ó¥°¤Ë¤Ï Unicode ¤Ç¤Ï¤Ê¤¯ Shift-JIS ¤ò»ÈÍѤ¹¤ë
  4. ¥Ç¡¼¥¿¤Ï gzip ·Á¼°¤Ç°µ½Ì¤¹¤ë
  5. ¥Ç¡¼¥¿¤¬°ìËç¤Î¥¿¥°¤Ë¼ý¤Þ¤é¤Ê¤¤¾ì¹ç¤ÏÊ£¿ô¤Î¥¿¥°¤Øʬ³ä³ÊǼ¤¹¤ë¡£¤¿¤À¤·¡¢¥Ç¡¼¥¿¤òʬ³ä¤·¤Æ³ÊǼ¤·¤¿¥¿¥°¤Ï¤½¤ì¤¾¤ìñÆȤǤÎÆɤ߽Ф·¤â²Äǽ¤È¤¹¤ë¡ÊÁ´¥¿¥°¤Î½ç¼¡Æɤ߽Ф·¤ò¥Ç¡¼¥¿Éü¸µ¤ÎÁ°Äó¤È¤»¤º¡¢Á´¥¿¥°¤¬Â·¤ï¤Ê¤¯¤Æ¤âÉôʬ¥Ç¡¼¥¿¤ò½ÀÆð¤Ë¼èÆÀ¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¡Ë
  6. Read/Write Í×µá¤ËÂФ·¥á¥â¥ê¤ÎÁ´¥Ú¡¼¥¸¤ò¥Ñ¥¹¥ï¡¼¥ÉÊݸîÂоݤȤ¹¤ë
  7. NTAG ¤Î 4 ¥Ð¥¤¥È¤Î¥Ñ¥¹¥ï¡¼¥ÉÎΰè¤Ø 4 ¥Ð¥¤¥È¤Î ASCII ¥­¥ã¥é¥¯¥¿¥³¡¼¥É¤ò³ÊǼ¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯»ØÄꤵ¤ì¤¿¥Ñ¥¹¥ï¡¼¥Éʸ»úÎó¤Î CRC32 Ãͤò³ÊǼ¤¹¤ë ¡ÊPWD ¤Î¥Ð¥ê¥¨¡¼¥·¥ç¥ó¤Ï 256^4 ¤È¤Ê¤ë¡Ë
  8. ¾åµ­¤ÎÁ¼Ã֤Τ¿¤á¾¤Î¥Ä¡¼¥ë¤Ç¤Ï¤³¤³¤ÇÀßÄꤷ¤¿¥Ñ¥¹¥ï¡¼¥ÉÊݸî¤ò²ò½üÉÔǽ¤Ë¤Ä¤­²ò½üµ¡Ç½¤òÆȼ«¤Ë¼ÂÁõ¤¹¤ëɬÍפ¬¤¢¤ë
  9. ÁíÅö¤¿¤ê¹¶·â¤Ø¤ÎÂнè¤È¤·¤Æ¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú¤Î»î¹Ô²ó¿ô¤Ë¾å¸ÂÃÍ¡ÊAUTHLIM¡Ë¤òÀßÄꤹ¤ë¤³¤È¤Ë¤è¤ê»î¹Ô²ó¿ôĶ²á¤Î¾ì¹ç¤Ë¤Ï NTAG ¤Î¼«Çúµ¡¹½¡ÊPWD_AUTH Í×µá¤ËÂФ¹¤ë̵¾ò·ïµñÈݡˤòȯư¤µ¤»¤ë
  10. ¾åµ­¤Ë¤â´ØÏ¢¤·¡¢¤³¤³¤Ç¤Ï¥Þ¥¹¥¿¡¼¥Ç¡¼¥¿¤ÎÊݸ¤òÌÜŪ¤È¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢¥³¥Ô¡¼¥Ç¡¼¥¿¤ÎÊص¹Åª¤ÊÊÝ»ý¤òÌÜŪ¤È¤¹¤ë¤³¤È¤òÁ°Äó¤È¤¹¤ë

NTAG ¥æ¡¼¥¶¥á¥â¥ê¤Î»È¤¤¤«¤¿

 ========= ¥æ¡¼¥¶¥á¥â¥êÎΰèÁ´ÂΤι½À® =========

 1. page 04h - 05h ¤Ë¸ÇÍ­¤Î´ÉÍý¾ðÊó¤ò³ÊǼ¤¹¤ë
 2. page 06h °Ê¹ß¤Ë gzip ¥Ç¡¼¥¿¤ò³ÊǼ¤¹¤ë

 ========= 1. ´ÉÍý¾ðÊó¤Ë¤Ä¤¤¤Æ =========

 [page 04h]
    0    1    2    3
  +----+----+----+----+
  |'t' |'t' | -- | -- |
  +----+----+----+----+

  Âè 1, 2 ¥Ð¥¤¥È
    ¼±ÊÌ»Ò "tt"

  Âè 3, 4 ¥Ð¥¤¥È
    ͽÈ÷
    ¢¨Åö½é¡¢¥Ç¡¼¥¿¤òʬ³ä³ÊǼ¤·¤¿¥¿¥°¥»¥Ã¥È¤Î¼±ÊÌÍÑÎΰè¤È
      ¤¹¤ë¤³¤È¤òÁÛÄꤷ¤¿¤¬ÈñÍÑÂиú²Ì¤Ë˳¤·¤¤¤ÈȽÃǤ·Ãæ»ß

 [page 05h]
    0    1    2    3
  +----+----+----+----+
  | NN | -- | NN | NN |
  +----+----+----+----+
  
  Âè 1 ¥Ð¥¤¥È
   ºÇ¾å°Ì¥Ó¥Ã¥È¡§¸å³¥¿¥°¤Î̵ͭ  0=¸å³¤Ê¤· 1=¸å³¤¢¤ê
   ²¼°Ì 4 ¥Ó¥Ã¥È¡§¥¿¥°Ï¢ÈÖ¡Ê0h - Fh¡Ë

  Âè 2 ¥Ð¥¤¥È
   ͽÈ÷

  Âè 3, 4 ¥Ð¥¤¥È
   ¥Ú¡¼¥¸ 06h °Ê¹ß¤Ë³ÊǼ¤º¤ß¤Î gzip ¥Ç¡¼¥¿¥µ¥¤¥º
   short ¥Ó¥Ã¥°¥¨¥ó¥Ç¥£¥¢¥ó

 ========= 2. gzip ¥Ç¡¼¥¿¤Ë¤Ä¤¤¤Æ =========

  - ¥Æ¥­¥¹¥È¥Ç¡¼¥¿¤Î gzip °µ½Ì¤Ï¥ª¥ó¥á¥â¥ê¤Ç¹Ô¤¦

  - ¥¿¥°¤Ø½ñ¤­¹þ¤àºÝ¤Ë¤Ï gzip ¥Ç¡¼¥¿¤ÎȾ¸ÇÄê¥Ø¥Ã¥À
    10¥Ð¥¤¥È(*)¤ò½üµî¤·¡¢Æɤ߽Ф·¤ÎºÝ¤Ë¤ÏÅö³º¥Ø¥Ã¥À¤ò
    ÊäŶ¤·¤¿¾å¤Ç unpack ¤¹¤ë
    (*) http://www.onicos.com/staff/iz/formats/gzip.html

  - ¥Ç¡¼¥¿¤òÊ£¿ô¤Î¥¿¥°¤Øʬ³ä³ÊǼ¤¹¤ë¾ì¹ç¤Ï¾åµ­¤Î´ÉÍý¾ðÊó¤Ç
    Ï¢ÈÖ´ÉÍý¤ò¹Ô¤¦¤¬¡¢»ö¸å¤Ë³Æ¥¿¥°¤«¤éñÆȤÇÉôʬ¥Ç¡¼¥¿¤ò
    Æɤ߽Ф¹¤³¤È¤â²Äǽ¤È¤¹¤ë¤¿¤á¤Ë¡¢¥¿¥°¤Ø½ñ¤­¹þ¤à¤Î¤Ï
    ¡Ö¸µ¥Ç¡¼¥¿Á´ÂΤò°µ½Ì¤·¤¿ gzip ¥Ç¡¼¥¿¤Î°ìÉôʬ¡×¤Ç¤Ï¤Ê¤¯
    ¡Ö¸µ¥Ç¡¼¥¿¤òŬÀڤʰÌÃÖ¤Çʬ³ä¤·¤Æ°µ½Ì¤·¤¿ gzip ¥Ç¡¼¥¿¡×¤È¤¹¤ë

¥½¡¼¥¹¥³¡¼¥É

¢¨Ëܵ­»ö¤ÎËÁƬ¤Ç¤â¿¨¤ì¤¿¤è¤¦¤Ë NTAG21x ¤Î¥¢¥¯¥»¥¹À©¸æµ¡¹½¤Î°·¤¤¤Ë¤Ï½½Ê¬¤ÊÃí°Õ¤¬É¬ÍפǤ¹¡£ »îºî¤Î¥½¡¼¥¹¥³¡¼¥É¸ø³«¤Ï¤¢¤¯¤Þ¤Ç¤âµ»½Ñ¾ðÊó¤Î¾Ò²ð¤òÌÜŪ¤È¤¹¤ë¤â¤Î¤Ç¤¢¤ê¥×¥í¥°¥é¥à¼Â¹Ô»þ¤ÎÆ°ºî¤ÏÊݾڤ·¤Þ¤»¤ó¡£¤³¤ì¤ò»ÈÍѤ·¤Æ²¿¤é¤«¤Î»³²¤¬È¯À¸¤·¤¿¤È¤·¤Æ¤âÅöÊý¤Ï°ìÀÚ¤ÎÀÕǤ¤òÉ餤¤Þ¤»¤ó¡£

Æ°ºî¤ÎÍÍ»Ò

°Ê²¼¤Î¥Ç¥âÆ°²è¤Ç¤Ï¥Æ¥¹¥È¥Ç¡¼¥¿¤È¤·¤Æ¼¡¤Î 4,978 ¥Ð¥¤¥È¤Î±Ññ¸ì¥ê¥¹¥È¤ò»ÈÍÑ¡£¤³¤Î¥Ç¡¼¥¿¤ò°µ½Ì¤·¤Æ 3 Ëç¤Î NTAG216 ¤Ëʬ³ä³ÊǼ¤·¤Æ¤¤¤Þ¤¹¡£

START, ability, abroad,
accept, access, accident,
according, account, action,
activity, actually, add,
addition, additional, address,
adult, advance, advanced,
advantage, advice, advise,
age, agency, agent,
agree, ahead, air,
airline, allow, amount,
angry, announce, announcement,
anxious, appear, appearance,
application, apply, approach,
area, arrange, arrangement,
arrival, arrive, article,
attack, attend, attention,
available, average, avoid,
aware, balance, balanced,
bar, base, basic,
bear, beat, beauty,
benefit, bill, bit,
block, blood, board,
borrow, boss, branch,
break, broad, broadcast,
brush, budget, burn,
business, busy, cab,
cable, call, cancel,
capital, care, careful,
case, cash, catalog,
catch, cause, century,
certain, certainly, chance,
change, charge, chart,
cheap, check, chemical,
choose, citizen, claim,
clear, clerk, close,
clothes, collect, collection,
comfortable, common, communication,
company, compare, complain,
complete, concern, condition,
contact, contain, content,
continue, contract, control,
convenient, conversation, copy,
corner, correct, cost,
count, couple, course,
court, cover, crash,
create, credit, cross,
crowd, crowded, customer,
daily, damage, data,
date, deal, decide,
decision, defence, degree,
delay, deliver, demand,
department, depend, deposit,
describe, design, destroy,
detail, develop, dial,
diet, difference, difficulty,
direct, direction, directly,
director, discount, discuss,
disease, disk, display,
distance, district, document,
double, doubt, downtown,
dress, drive, drop,
drug, due, earn,
earthquake, economy, edge,
education, effect, effective,
effort, electricity, employee,
empty, encourage, energy,
enjoy, enter, entrance,
equipment, event, examination,
example, excellent, except,
exciting, excuse, exercise,
exit, expect, expense,
expensive, experience, expert,
explain, express, extra,
face, fail, fair,
fall, fan, fare,
fashion, fault, favor,
favorite, feature, fee,
fence, figure, file,
fill, film, final,
fine, fire, firm,
fit, fix, flag,
flat, flood, floor,
flow, follow, following,
force, foreign, form,
former, forward, found,
foundation, free, freeze,
front, fund, furniture,
further, future, gain,
garage, gas, gather,
general, global, goal,
government, grade, graduagte,
grand, ground, guard,
guess, guide, handle,
hang, happen, hardly,
head, heart, heat,
highly, hire, hold,
host, human, hurt,
illness, image, immediately,
improve, include, income,
increase, individual, industry,
inform, information, insect,
instead, instruction, insurance,
intend, interest, international,
interview, introduce, invitation,
invite, issue, item,
job, join, judge,
knowledge, lack, land,
language, law, lawyer,
lay, lead, lend,
length, level, license,
lie, lift, likely,
limit, limitation, line,
list, load, loan,
local, location, lock,
lose, loss, luck,
lucky, luggage, mail,
main, major, majority,
manage, management, manager,
mark, market, master,
match, material, matter,
meal, means, measure,
media, medicine, mention,
message, method, mind,
minute, miss, mix,
model, modern, moment,
monthly, movemet, nation,
national, nearly, necessary,
notice, offer, office,
officer, official, operate,
operation, operator, opinion,
order, organization, own,
pack, package, pain,
part, party, pass,
passenger, patient, pay,
payment, per, performance,
performance, period, permit,
personal, pick, plain,
plan, plant, plate,
pleasure, plenty, point,
pole, policy, popular,
position, possible, post,
powerful, practice, prefer,
prepare, present, press,
prevent, price, print,
private, probably, problem,
process, produce, product,
production, professional, profit,
program, progress, project,
promise, property, protect,
protection, proud, provide,
public, publish, purpose,
puzzle, quality, quarter,
race, raise, range,
rapid, rate, reach,
ready, realize, reason,
receive, recent, recently,
recommend, record, reduce,
refer, regard, regarding,
regular, relationship, remember,
remove, rent, repair,
report, request, require,
research, reserve, responsible,
rest, result, return,
rise, room, route,
row, run, rush,
safe, safety, sail,
salary, sale, save,
schedule, seat, section,
security, sense, separate,
separately, serious, serve,
service, shake, shape,
share, ship, shock,
short, show, sign,
signal, single, situation,
skill, skin, slip,
social, solve, sort,
sound, spare, spend,
spot, spread, staff,
stage, stair, stand,
standard, state, statement,
step, stock, store,
storm, stretch, strike,
study, subject, submit,
succeed, success, suffer,
suggest, suit, supply,
support, suppose, sure,
surprise, survey, swing,
system, taste, tax,
temperature, terible, term,
tie, tight, tip,
tired, tool, total,
touch, tour, trade,
traffic, training, trip,
trouble, turn, type,
usual, valuable, value,
view, vote, want,
war, warn, way,
wear, weather, win,
wind, wire, wise,
wonder, worth, worthy,
xenophobia, yard, yarn,
yawn, yearn, yell,
yellow, yesterday, yet,
yield, yolk, young,
youth, zeal, zenith,
zigzag, zinc, zoom,
END

Æ°²è¡§5ʬ1ÉÃ

¢¨¥Ñ¥¹¥ï¡¼¥Éǧ¾Ú»î¹Ô¾å¸Â²ó¿ô¤òĶ²á¤·¤¿¾õ¶·¤ÎÆ°²è¤Ï¤³¤Á¤é


(tanabe)
klab_gijutsu2 at 17:00¡Ã¤³¤Îµ­»ö¤ÎURL¨¢Comments(0)
BlogÆ⸡º÷
Archives
¤³¤Î¥Ö¥í¥°¤Ë¤Ä¤¤¤Æ
DSAS¤È¤Ï¡¢KLab ¤¬¹½ÃÛ¤·±¿ÍѤ·¤Æ¤¤¤ë¥³¥ó¥Æ¥ó¥Ä¥µ¡¼¥Ó¥¹ÍѤÎLinux¥Ù¡¼¥¹¤Î¥¤¥ó¥Õ¥é¤Ç¤¹¡£¸½ºß5¥ö½ê¤Î¥Ç¡¼¥¿¥»¥ó¥¿¤Ë¤Æ¹½ÃÛ¤·¡¢±¿ÍѤ·¤Æ¤¤¤Þ¤¹¤¬¡¢²æ¡¹¤ÏDSAS¤ò¤è¤ê»È¤¤¤ä¤¹¤¯¡¢¤è¤ê°ÂÁ´¤Ë¡¢¤½¤·¤Æ¤è¤ê¾ÊÎϤDZ¿ÍѤǤ­¤ë¤³¤È¤òÌܻؤ·¤Æ¡¢Æü¡¹²þÎɤ˶Ф·¤ó¤Ç¤¤¤Þ¤¹¡£
¤³¤Î¥Ö¥í¥°¤Ç¤Ï¡¢¤½¤ó¤Ê DSAS ¤Ç»È¤Ã¤Æ¤¤¤ëµ»½Ñ¤Î¾Ò²ð¤ä¡¢¼Â¸³¤·¤Æ¤ß¤¿·ë²Ì¤ÎÊó¹ð¡¢¥È¥é¥Ö¥ë¤Ë´¬¤­¹þ¤Þ¤ì¤¿»þ¤Î·Ð¸³Ã̤ʤɡ¢¹­¤¯¿¼¤¯¡¢¿§¡¹¤ÊÏÃÂê¤ò¿¥¤ê¤Þ¤¼¤Æ¾Ò²ð¤·¤Æ¤¤¤­¤¿¤¤¤È»×¤¤¤Þ¤¹¡£
ºÇ¿·¥³¥á¥ó¥È