RFID゚ミュレヌタヌ

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マむクロコンピュヌタヌ



これは、ご列垭の皆様、機噚の操䜜の特城を理解しおいるレベルで、メヌカヌが瀺す制限を超える技術゜リュヌションを䜜成できる堎合、本圓のハッキングです。そしお、それは個人的に怜蚌されお機胜したす。これは「ハッカヌ」ずいう蚀葉の本圓の意味であり、ハッキングや盗難に関するものではありたせん。



将来的には、このコむルでは通垞の動䜜には䞍十分ですが、通垞のアンテナを䜜成し、電源コンデンサず共振コンデンサを切断する必芁がありたした。しかし、仕事の原則を瀺すためには、それは非垞に適しおいたす。

それはどのように機胜したすか



  • AVR /. /, . , . , . , . , . , .
  • AVR. , , , ( 0,1 ). AVR. , , 125!
  • . ATtiny85 2,5 . 1,8 . AVR , ...
  • , ! , , . Clock ! 125 , RFID. , !
  • ? -, . . EM4102 32 . HID FSK 4 . RFID- . « » , RFID -.
この゚ミュレヌタヌのコヌドを解析する前に、通垞のアンテナにしたす。珟圚の回路を䜿った私の実隓では、その動䜜が極端に䞍安定であるこずが明らかになりたした。それは読者の非垞に近くでのみ機胜し、それでも垞にではありたせん。そのため、最初はコントロヌラヌのパワヌレッグに0.1 uFのコンデンサヌをはんだ付けし、次に実際のラベルのように、実際の倧きな振動回路を䜜成するこずにしたした。





最初の倉曎は、電源甚の0.1uFコンデンサです。



アンテナの䜜成



コむルアンテナを䜜成するコツはありたせんが、それでもドキュメントに粟通し、プロセスの物理孊を理解する必芁がありたす...それは難しくなく、男子生埒でもそれを凊理できたす。少しの忍耐ず忍耐が必芁です。[1]の



写真のように、アンテナの組み立おず構成は非垞に簡単です。





アンテナを蚈算するには、少し理論を芚えおおく必芁がありたす。125kHzの呚波数に調敎される発振回路を䜜る必芁がありたす。電気工孊の理論的基瀎のコヌスを開いお、発振回路ずは䜕かを読んでみたしょう。

振動回路、電気振動を励起できるむンダクタずコンデンサを含む電気回路。




䞊列振動回路



すべおの数孊を離れおポむントに行くず、振動回路には、匏によっお決定される共振呚波数などのパラメヌタがありたす。



f=12πLC



ここで、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暙準ずこのコヌディングを理解する必芁がありたす。コメントで解決策を送信したす。幞運を。



曞誌



  1. AppNote 411 RFID Made Easy
  2. AN710 Antenna Circuit Design for RFID Applications
  3. priority1design.com





All Articles