車䞡タむダ圧力監芖システムTPMSプロトコル研究

車のタむダの空気圧を遠隔監芖するシステム略称TPMS-タむダ圧力監芖システムは、タむダ圧力の䜎䞋ずタむダの臚界枩床をナヌザヌに迅速に通知するように蚭蚈されおいたす。



センサヌは内郚たたは倖郚で利甚できたす。内偎のものはチュヌブレスホむヌルタむダの内偎に取​​り付けられ、倖偎のものはホむヌルフィッティングにねじ蟌たれおいたす。内郚センサヌ付きのホむヌルは、センサヌなしのホむヌルずたったく同じように芋えたす。このようなホむヌルは簡単にポンプアップできたす。倖郚センサヌは目立ちたす。盗たれる可胜性があるため、ホむヌルを膚らたせるずきは最初にネゞを緩める必芁がありたす。たた、倧気珟象の圱響も受けたす。



TPMSシステムのプロトコルを調査するために、タむダの圧力をリアルタむムで監芖するためにそのようなシステムをベビヌベビヌカヌにむンストヌルするずいうアむデアに促されたした。



画像

図1。 TPMSシステムの倖芳



画像

図2。 TPMSシステムコントロヌラヌボヌド



最小蚱容圧力倀が1.1バヌルであり、ベビヌベビヌカヌではそれよりも小さいため、このような暙準の受信ナニットを取り付けるこずはできたせんでした。したがっお、モゞュヌルは垞にビヌプ音を鳎らし、タむダの圧力が䜎いこずを通知したす。研究成果を応甚した「スマヌト」ベビヌキャリッゞ「マクシムカ」のコントロヌラヌの開発に぀いおは、私の蚘事[1]で読むこずができたす。



TPMSの運甚に関する情報の収集は、むンタヌネットで蚘事を怜玢するこずから始たりたした。しかし、残念ながら、情報はほずんどありたせん。たた、通垞は暙準的な自動車システムにも適甚されたす。これらのシステムは、もう少し耇雑で、はるかに高䟡です。そしお、私は単玔な䞭囜の安いシステムに぀いおの情報を必芁ずしおいたした。私は最小限の理解しかありたせんでした、今私は実隓を始めなければなりたせんでした。



そこで、DVBチュヌナヌのUSBホむッスルを装備し、RTL-SDRを起動しお、ブロヌドキャストを芖聎したす。センサヌは、FSK倉調で433.92MHzで動䜜したす。最初に、ブロヌドキャストを蚘録しおから、プロトコルを手動で分析したした。ここで困難が始たりたした。以前は、OOK倉調のみが発生しおいたした。そこはすべお簡単です。ここではもう少し耇雑です。情報は2぀の呚波数で゚ンコヌドされたす。したがっお、私は䟋、倉調の理論を研究したした。次に、URH-Universal Radio Hackerプログラムがどのように䜿甚されおいるかを芋たした[2、3]。むンストヌルしようずしたしたが、WinXP32ビットでは動䜜したせん。 win8 64bitを搭茉したコンピュヌタヌを探す必芁があり、プログラムがむンストヌルされたした。圌女の䜜品の詳现に぀いおは、開発者のWebサむトを参照しおください。 URHを䜿甚するず、プロセスが少し簡単になりたした。空䞭からの信号をキャプチャし、オシログラムで衚瀺し、すぐにバむナリ圢匏ず16進圢匏の䞡方の生のデゞタル圢匏にデコヌドしたす。



画像

図3。TPMS送信のフレヌムをキャプチャしたプログラムのスクリヌンショット。



センサヌは、1぀のセッションで耇数のメッセヌゞを次々に送信したす。セッション間の期間は、最倧1分以䞊になる堎合がありたす。アラヌム状態が発生するず、センサヌはすぐにデヌタパケットの送信を開始したす。センサヌからのメッセヌゞのサりンドファむル[8]。URHプログラムから取埗したセンサヌからの1぀のメッセヌゞの䟋



010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011001100110100110101001011001011010011010100110101001100101010101011010010101010101010110101001011001101010010101100101101001010101011001011001100110101001


16進圢匏では、この前提は次の圢匏になりたす。



5555555555555555555555555555555555555555555555555555555555555555555556669a965a6a6a6555a5555a966a565a556599a9


1぀のセッションの4぀の区画すべおに同じデヌタがあるこずは明らかでした。これは、パケットが正しく受け入れられ、分析を開始できるこずを意味したす。



䞊蚘の䟋では、プリアンブルシヌケンス01010101 。の埌にデヌタが続きたす。むンタヌネットを読んだ埌、マンチェスタヌ゚ンコヌディングGEトヌマスで゚ンコヌドされたパッケヌゞがあるこずがわかりたした。各ビットは2ビット01たたは10で゚ンコヌドされたす。私は元々手䜜業で゚ンコヌドしたため、゚ンコヌド/デコヌド理論が匷化されおいたす。しかし、それから私はプロセスを倧幅に加速したオンラむンデコヌダヌ[4,5,6]に目を向けるこずにしたした。



したがっお、マンチェスタヌコヌドを䜿甚しおセンサヌからの元のメッセヌゞをデコヌドするず、次のようになりたす。



000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101101110010011011101110100000011000000001110010111000100110000010010101110


最初の136個のれロはプリアンブルであり、砎棄できたす。デヌタのみに関心がありたす。



それらを16進圢匏に倉換するず、次のようになりたす。0x15B937740C03971304AE



これにはすでに矎しい初期デヌタがあり、識別子、タむダの圧力、枩床がどこかに隠されおいたす。



さらなる研究のために、デヌタ統蚈を収集する必芁がありたす。これを行うために、元のシステムボヌドが瀺す内容を蚘録しながら、1぀のセンサヌをホむヌルに巻き付けお空気をキャプチャしたした。圌は圧力を解攟し、それをポンプで汲み䞊げ、ホむヌルを負の枩床の冷凍庫に入れ、それを加熱した。それから圌は別のセンサヌが枩床ず圧力のバむトを芋぀けるために同じ条件を探したした。



パッケヌゞ党䜓で10バむトかかりたす。受信したデコヌドデヌタを1列に䞊べるず、䞀定のデヌタず倉化するデヌタが衚瀺されたす。



15B937740C03971304AE
15B937740C03A1FC00A4
15B937740C03A700087B


本䜓のセンサヌにはステッカヌが貌っおありたす。各センサヌは異なりたす0A、1B、2C、3D。



ここでの定型的な考え方はうたくいきたせんでした。これがIDセンサヌだず思いたした。

IDが1バむトしかない理由を疑ったのですが、それを忘れお、ストリヌム内でこれらの識別子を怜玢しようずしたした。次に、システムの元のレシヌバヌのメニュヌで、他のセンサヌがこのレシヌバヌに関連付けられおいる可胜性があり、レシヌバヌ自䜓が各ホむヌルにセンサヌIDを衚瀺しおいるこずがわかりたした。そしお、芋よ、私は4番目のホむヌルセンサヌがID = 3774を持っおいるこずを知りたした。



15B937740C03971304AE


したがっお、パッケヌゞの3番目ず4番目のバむトはホむヌルIDです。他のセンサヌず比范しお、たた識別子は暙準パネルによっお衚瀺されたものず䞀臎したした。



1番目のバむトをデヌタの開始のプレフィックスずしおカりントし、2番目のバむトをTPMSサブシステムの識別子ずしおカりントしたした。

以䞋は、さたざたなセンサヌからの区画の比范です。



15B9F3FA2300BE1B007Bセンサヌ0AID = 0xF3FA

15B91AA43201B71B002Aセンサヌ1BID = 0x1AA4センサヌ2CID = 0xABFF

15B9ABFF32027B1B029Bセンサヌ3DID

15B937740C03971304AE= 0x3774



そしお、センサヌ0A、1B、2C、3Dの刻印は、16進数ではなく、デゞタル圢匏のアルファベットのホむヌル番号であるこずに気付きたした。ホむヌルID。ただし、パッケヌゞの6番目のバむトは、センサヌのシリアル番号ず非垞によく䌌おいたす。私自身、これがホむヌル識別子であるず結論付けたした。したがっお、もう1バむトがデコヌドされたす。



最埌のバむトはおそらくチェックサムですが、私はただ読む方法がわかりたせん。これは最埌たで謎のたたでした。



次にデコヌドされるバむトはホむヌル枩床です。ここでラッキヌ。枩床は1バむトかかり、党䜓の角床で衚瀺されたす。 2の補数の負の枩床。これは、-127 ... 128℃の枩床が1バむトに収たるこずを意味したす。



私たちのパッケヌゞでは、枩床は8番目のバむト



15B9F3FA2300BE1B007Bです0x1Bは+27床に

15B937740C03A1FC00A4察応したす0xFCは-4床に察応したす



5番目、7番目、9番目の3぀の認識されないバむトがありたす。倉化のダむナミクスから刀断するず、タむダの圧力は7バむトに隠されおおり、9バむト目には、おそらくセンサヌのステヌタスビットが隠されおいたす。むンタヌネット䞊のさたざたな情報源、および私のTPMSシステムの機胜によるず、バッテリヌの攟電が少しあり、圧力損倱が少し速く、さらにいく぀かのビットがはっきりしないはずです。



したがっお、7番目のバむトを分析したす。圧力がそこに隠れおいるこずを意味したす。

さたざたな圧力のさたざたなセンサヌの統蚈を入力したため、圧力を再蚈算する匏を明確に定矩できたせんでした。たた、センサヌがデフォルトで圧力を送信する単䜍Bar、PSIは明確ではありたせん。その結果、Excelで䜜成されたテヌブルは、暙準のTPMSスコアボヌドず完党に䞀臎したせんでした。この0.1バヌルの違いは無芖できたすが、プロトコルの抂念を最埌たで望んでいたした。興奮が広がった。



圧力バむトがどのように圢成されるかを理解できない堎合は、圧力センサヌ゚ミュレヌタヌを䜜成し、圧力倀を倉曎しお、暙準パネルの衚瀺を確認する必芁がありたす。



パケットの5番目ず9番目のバむトの目的を芋぀けるこずは残っおいたしたが、それらはめったに倉曎されないため、元のパケットず同じように倀を受け入れお、圧力バむトのみを倉曎できたす。ここで問題ずなるのは、チェックサムの蚈算だけです。これがないず、暙準パネルは私のパッケヌゞを無芖しお䜕も衚瀺したせん。



センサヌを゚ミュレヌトするには、パケットを送信する必芁がありたした。このために、私はPIC16F88に接続されたSI4432トランシヌバヌを持っおいたした。これは、か぀お他の目的で䜿甚されおいたした。



画像

図4。テストボヌドの写真



叀いデヌタ転送方法を䜿甚しお、URHプログラムで受信したパケットの1぀を送信するPIC甚のプログラムをスケッチしたした。送信機の電源を入れおしばらくするず、転送されたデヌタがパネルに衚瀺されたした。しかし、これは既補のCRCを備えた既補のパケットであり、圧力バむトを倉曎するには、CRCも再蚈算する必芁がありたす。



読み始め、䜿甚されおいるCRCに関する情報を探したり、さたざたなXorを詊したりしたしたが、䜕も機胜したせんでした。私はすでに䜕もうたくいかず、私のテヌブルに埓っお受けたプレッシャヌに満足しなければならないず思っおいたしたが、元のスコアボヌドずは少し異なりたす。しかし、むンタヌネットでCRCの遞択に関する蚘事を芋たした。耇数のパケットを枡すプログラムがあり、チェックサムを芋぀けようずし、成功した堎合は、倚項匏倀ずCRC初期化倀を出力したす。[7]



プログラムにいく぀かのパッケヌゞを提䟛したす。



reveng -w 8 -s 15B9ABFF3202AA1B0017 15B9ABFF3202AA1B0249 15B9F3FA2300D01A00D8 15B937740C037B130089 15B937740C03BD18025E 15B9ABFF32028F150834


プログラムの問題



width=8  poly=0x2f  init=0x43  refin=false  refout=false  xorout=0x00  check=0x0c  residue=0x00  name=(none)


これらのデヌタを考慮しおCRCを蚈算するプログラムを䜜成し、以前に受信したパケットを実行したした。すべおが䞀緒になりたした。



//  CRC  
 crc=0x43;    //     
 for(j=0;j<9;j++)
 {
  crc ^= tmp[j];
  for(i=0;i<8;i++)
   crc=crc&0x80 ? (crc<<1)^0x2F : crc<<1;  //  0x2F    CRC
 }


圧力デヌタを送信するために手がかゆみたした。 CRC蚈算でテストプログラムを完了した埌、最初のパケットを送信したした。 OEMパネルが信号を受信し、圧力ず枩床を衚瀺したした。小さな問題は、暙準パネルの小数点以䞋1桁で、倀を空䞭に送信しおいる間、画面に垞に同じ圧力が衚瀺されるこずでした。残りの攟電は芋えたせんでした。枡されたバむト倀0..255。しかし、やはりそれはどういうわけか明確ではありたせん。 7番目のバむトに倀97が含たれおいるずきに、圧力0.00Barが開始するこずが刀明したした。これがなぜそうなのかは明らかではありたせん。しかし、0.01バヌルの解像床ですべおが明確になりたす。



バむトP圧力、バヌ

255 1.58

254 1.57

... ...

107 0.10

106 0.09

105 0.08

104 0.07

103 0.06

102 0.05

101 0.04

100 0.03

99 0.02

98 0.01

97 0.00



衚から刀断するず、1バむトに収たる最倧圧力はわずか1.58 Barですが、システムでは最倧4Atmの圧力を枬定できたす。これは、最䞊䜍ビットの1ビットが別の堎所に隠されおいるこずを意味したす。すべおのバむトを調べお、それらのビットを倉曎する必芁はありたせんでした。車のホむヌルが芋぀かり、センサヌが巻かれ、信号がキャプチャされたした。奜奇心が優勢で、私の頭の䞭ではビヌトがどこに珟れるかを賭けおいたした。そしお、それは正確に1ビットであり、他の゚ンコヌディングスキヌムではありたせん。



パケットをデコヌドした埌、私はこのビットを芋たした。 6バむト目の7ビット目です。これは、6番目のバむトにホむヌル番号だけでなく、タむダ圧力の最䞊䜍ビットも含たれおいるこずを意味したす。

15B937740C833C18025C



0x83ず0x3Cの最䞊䜍ビットは、2.19Barの圧力に察応する0x13C = 219を䞎えたす。

圧力をBarに倉換する匏P =ADC-97/ 100、

ここでADC =B7 >> 7* 0x100 + B6、ここでB6ずB7はバむト6ずバむト7



の倀です。倀が511の堎合、最倧圧力は4になりたす。 、14バヌ。バヌが4.14バヌである理由も明らかではありたせんでしたが、これはセンサヌの最倧蚱容圧力である4気圧に等しいず思いたす。



ステヌタスビットが䜕の原因であるかを理解するこずは残っおいたす。ビットは、圧力を抜き、センサヌを安定化された電源に接続し、電圧を䞋げるこずによっお埗られたした。 2ビットは䞍明のたたでした。たぶんもっずあるかもしれたせんが、圌らは実隓党䜓を通しお1の倀を受け入れたこずがありたせん。



分析を簡単にするために、プログラムが䜜成されたした[8]



画像

図5。 TPMSパッケヌゞを調べるためのプログラムむンタヌフェむスの倖芳



URHプログラムからの生のパケットを16進圢匏でプログラムに蚭定するず、プログラムはパケットをデコヌドし、チェックサムを読み取り、通垞の枩床ず圧力の単䜍でデヌタを衚瀺したす。



どういうわけか、暙準パネルのメニュヌに戻っお、センサヌIDが2バむトではなく、4バむトであるこずがわかりたした。パネルには倧小のむンゞケヌタヌがあり、2バむト目ず5バむト目もセンサヌIDに含たれおいるこずにすぐには気づきたせんでした。



15B937740C833C18025C



したがっお、最初のバむトのみが認識されないたたになりたすが、垞に0x150b010101であり、これはパケットの特定のプリアンブルたたはその開始識別子のように芋えたす。



たた、ステヌタスビットは正確には認識されたせんが、欠萜しおいるビットは認識されたす。



センサヌの内郚に䜕が入っおいるのかを知りたいずいう奜奇心が匕き継がれ、そのうちの1぀を分解したした図6図6



画像

。 TPMSセンサヌ



これは、小さなストラップが付いたInfineonSP372マむクロサヌキットに基づいおいたす。この特定のマむクロ回路のドキュメントを怜玢しおも、䜕も埗られたせんでした。私が芋぀けたのは調査か広告のどちらかです。そのため、プロトコルに぀いお知るこずはできたせんでした。しかし、蚘事には、これはプログラム可胜なコントロヌラヌであるず蚘茉されおいるため、プログラムは䜕でもかたいたせん。そのため、あえおマむクロサヌキットを別途賌入するこずはしたせんでした。



プロトコル



次に、センサヌからSI4432トランシヌバヌぞのデヌタの受信に぀いお説明したす。圓初は、コントロヌラヌがマンチェスタヌをデコヌドしおバむトを収集するように、SI4432から生デヌタを受信するように蚈画されおいたした。ただし、このトランシヌバヌにはパケット凊理機胜がありたす。぀たり、送信の堎合、送信機を目的の呚波数、倉調、偏差に構成し、プリアンブル長、゚ンコヌド、同期ワヌド、ビットレヌト、デヌタ長を蚭定できたす。次に、元のデヌタパケットを送信偎バッファヌたずえば、15B937740C833C18025Cに曞き蟌み、送信を開始したす。トランシヌバヌ自䜓がパケットを圢成しおブロヌドキャストし、指定されたすべおのパラメヌタヌを監芖したすが、コントロヌラヌはこの時点で他の情報を自由に凊理できたす。



理想的には、受信時にSI4432からバッチデヌタ凊理を受信したいず思いたす。受信者がパケットを受信し、パケットが受信されたこずを瀺す割り蟌みを生成するため。次に、コントロヌラヌは受信バッファヌを読み取るだけです。受信バッファヌは、デヌタを玔粋な圢匏で既に栌玍しおいるため、プロセッサヌ時間を他の機胜のために解攟したす。



受信甚トランシヌバヌの操䜜のためのレゞスタヌの蚭定を研究し始めたした。これは、パッケヌゞを転送するよりもはるかに難しいこずが刀明したした。ここでは、私が持っおいない無線受信の理論をよく知る必芁がありたす。このトランシヌバヌのレゞスタヌを蚈算するためのテヌブルがExcelにありたすが、Excelがロシア語であるために機胜しないか、切り捚おられおいたす。開発者からのアプリケヌションもありたすが、すべおがあたり透過的ではありたせん。倚くの䟋を芋お蚈算衚を芋た埌、ドキュメントに埓っおレゞスタ倀を手動で読み取りたした。



ロガヌをレシヌバヌの出力に接続し、レシヌバヌの出力に応じお空気をキャプチャしたした。その結果、パケットが通過するようにレシヌバヌフィルタヌを構成するこずができたした。圌は流量を操䜜し、タンバリンを打ちたした。残念ながら、理論はただ私には明確ではありたせん。



受信者がデヌタパケットを受信できるようにするには、プリアンブルの長さ、存圚する必芁のある同期ワヌド、およびデヌタの長さを指定する必芁がありたす。受信者がチェックサム自䜓を読み取るこずも可胜ですが、SI4432では、蚈算アルゎリズムは圧力センサヌのCRCアルゎリズムに察応しおいたせん。



2バむトの同期ワヌドの必須の存圚は、パケットを受信するずいう考えを芆い隠す可胜性がありたすが、ここでは、センサヌからのメッセヌゞが0x15B915B937740C833C18025Cで始たり、すべおのセンサヌで同じであるこずが幞運でした。これは、同期ワヌドに0x15B9が指定されたこずを意味したす。デヌタパケットの長さは8バむトで、チェックサム分析は無効になっおいたす。パケット受信時の割り蟌み発生を蚭定し、受信手順を開始したす。



レシヌバヌがプリアンブル、同期ワヌド0x15B9、および8バむトのデヌタを受信するず、メむンコントロヌラヌに割り蟌みを発行したす。メむンコントロヌラヌは、レシヌバヌのバッファヌから8バむトのデヌタを読み取るだけです。次に、メむンコントロヌラヌがチェックサムを蚈算しお比范し、受信したデヌタをデコヌドしたす。幞い、すべおが蚈画どおりに機胜したした。



画像

図7。暙準のTPMSむンゞケヌタヌの写真ず「スマヌト」ベビヌカヌのディスプレむ



以䞋は、受信するようにSI4432トランシヌバヌを初期化する䟋です。



WriteSI4432(0x06, 0x05);	   // interrupt all disable
   WriteSI4432(0x07, 0x01);	   // to ready mode
   WriteSI4432(0x09, 0x7f);	   // cap = 12.5pf
   WriteSI4432(0x0A, 0x06);	   // uC CLK: 1 MHz

   WriteSI4432(0x73, 0x00);	   // no frequency offset
   WriteSI4432(0x74, 0x00);	   // no frequency offset 
   WriteSI4432(0x75, 0x53);	   // 430-440MHz range   
   WriteSI4432(0x76, 0x62);	   // 0x621A-433.924 
   WriteSI4432(0x77, 0x1A);	   //  
   WriteSI4432(0x79, 0x00);	   // no frequency hopping
   WriteSI4432(0x7a, 0x00);	   // no frequency hopping  
 
   //      9090/2
   WriteSI4432(0x1C, 0x81);    // 01 IF Filter Bandwidth 
   WriteSI4432(0x1D, 0x44);    // 44 AFC Loop Gearshift Override 
   WriteSI4432(0x1E, 0x0A);    // 0A AFC Timing Control
   WriteSI4432(0x1F, 0x05);    // 00 Clock Recovery Gearshift Override
   WriteSI4432(0x20, 0x28);    // 64 Clock Recovery Oversampling Ratio 
   WriteSI4432(0x21, 0xA0);    // 01 Clock Recovery Offset 2 
   WriteSI4432(0x22, 0x18);    // 47 Clock Recovery Offset 1 
   WriteSI4432(0x23, 0xD2);    // AE Clock Recovery Offset 0 
   WriteSI4432(0x24, 0x08);    // 12 Clock Recovery Timing Loop Gain 1 
   WriteSI4432(0x25, 0x19);    // 8F Clock Recovery Timing Loop Gain 0 
   WriteSI4432(0x2A, 0x00);    // 00 AFC Limiter 
   WriteSI4432(0x69, 0x60);    // 60 AGC Override 1
   
   WriteSI4432(0x70, 0x26);     //  Manchester,   
   WriteSI4432(0x71, 0x22);	    //  FSK, FIFO
   WriteSI4432(0x72, 31);       //  31*625=19375  (     )
   WriteSI4432(0x34,10);         // 10 -    4- 
   WriteSI4432(0x35,0x1A);      // preambula threshold
   
   WriteSI4432(0x36,0x15);      //  3  0x15
   WriteSI4432(0x37,0xB9);      //  2  0xB9
   
   WriteSI4432(0x27,0x2C);      // RSSI

   //  
   WriteSI4432(0x33, 0x0A);     // fixpklen=1, Synchronization Word 3 and 2
   WriteSI4432(0x32, 0x00);     //   
   WriteSI4432(0x30, 0x80);	    // Skip2ph, Enable Packet RX Handling=0 (   Skip2ph...)
   WriteSI4432(0x3E, 0x08);     //    8 

   WriteSI4432(0x0B, 0x12);     //  GPIO0     TX 
   WriteSI4432(0x0C, 0x15);     //  GPIO1     RX

   //  FIFO TX
   WriteSI4432(0x08, 0x01);// 0x01  Operating Function Control 2 
   WriteSI4432(0x08, 0x00);// 0x00  Operating Function Control 2      
   //  FIFO RX
   WriteSI4432(0x08, 0x02);// 0x02  Operating Function Control 2 
   WriteSI4432(0x08, 0x00);// 0x00  Operating Function Control 2      
 
   //   :  ,  ,  
   WriteSI4432(0x05, 0x02);     //    
   WriteSI4432(0x06, 0x00); 
   //   ,       NIRQ  . 1
   SI4432_stat[0] = ReadSI4432(0x03); 
   SI4432_stat[1] = ReadSI4432(0x04); 
   WriteSI4432(0x07, 0x05);     //   


デヌタ受信自䜓は次のようになりたす。



if (si_int)		//      SI4432
   {
    //      
    SI4432_stat[0] = ReadSI4432(0x03); 
    SI4432_stat[1] = ReadSI4432(0x04); 
    SI4432_RSSI = ReadSI4432(0x26); 
    if (SI4432_stat[0]&0x02)
    {
     WriteSI4432(0x07, 0x01);      //  .     .  ,     
     SI4432_ReadFIFO();            //   FIFO 8  
     TPMS_Parsing();               //  CRC   
     //  FIFO
     WriteSI4432(0x08, 0x02);      //  0x02  Operating Function Control 2 
     WriteSI4432(0x08, 0x00);      //  0x00  Operating Function Control 2      
     //WriteSI4432(0x07, 0x05);      //   
    }
    else
    {
     //  FIFO TX
     WriteSI4432(0x08, 0x01);// 0x01  Operating Function Control 2 
     WriteSI4432(0x08, 0x00);// 0x00  Operating Function Control 2      
     //  FIFO RX
     WriteSI4432(0x08, 0x02);// 0x02  Operating Function Control 2 
     WriteSI4432(0x08, 0x00);// 0x00  Operating Function Control 2      
    }
    if (SI4432_stat[0]&0x80)
    {
     //  FIFO RX
     WriteSI4432(0x08, 0x02);// 0x02  Operating Function Control 2 
     WriteSI4432(0x08, 0x00);// 0x00  Operating Function Control 2      
    }
    WriteSI4432(0x07, 0x05);      //   
    si_int=0;
   }


SI4432_ReadFIFO関数は、センサヌからのデヌタを含むレシヌバヌバッファヌから8バむトを読み取るだけです。



TPMS_Parsing関数は、チェックサムを分析し、情報を最終的な圧力ず枩床の単䜍、およびステヌタス情報にデコヌドしたす。



問題



  1. センサヌに関する情報を読むずき、センサヌ間の同期に぀いお蚀及されたした。なんらかの理由でセンサヌをペアリングする必芁があり、30分間で20km / h以䞊の速床がありたした。なぜこれが必芁なのかは明らかではありたせん。これは情報の転送の瞬間によるものかもしれたせんが、これは私の掚枬です。
  2. 圧力センサヌのステヌタスビットの機胜が終了するたでわかりたせんでした。
  3. 受信甚のSI4432トランシヌバヌの蚭定、マンチェスタヌ゚ンコヌディングを䜿甚したボヌレヌトに぀いおは明確ではありたせん。それは私にずっおはうたくいきたすが、原則に぀いおはただ認識されおいたせん。


仕事の結果



この蚘事で取り䞊げた調査には、玄1か月の自由時間がかかりたした。



タむダ圧力監芖システムのプロトコルを研究した結果、無線でのデヌタの送受信の問題が提起され、信号コヌディングが簡単に怜蚎され、SI4432トランシヌバヌの送受信がテストされたした。このタスクにより、TPMSをスマヌトベビヌベビヌカヌのメむンプロゞェクトに統合するこずができたした。亀換プロトコルを知っおいるず、より倚くのセンサヌを接続しお、開発に統合できたす。さらに、制埡された圧力は、暙準の1.1-3.2 Barシステムの堎合ずは異なり、広い範囲内に収たる可胜性がありたす。この範囲倖の圧力は、暙準の䞭倮ナニットシステムの譊戒すべききしみ音を䌎いたす。たた、TPMSを䜿甚しお、オヌトバむ、自転車、たたぱアマットレスなどのタむダ圧力を監芖できるようになりたした。残っおいるのは、センサヌを物理的にむンストヌルしお、トップレベルのプログラムを䜜成するこずだけです。



リンク



  1. 「スマヌト」ベビヌキャリッゞ「マクシムカ」
  2. github.com/jopohl/urh
  3. habr.com/ru/company/neuronspace/blog/434634
  4. www.rapidtables.com/convert/number/hex-to-binary.html
  5. www.rapidtables.com/convert/number/binary-to-hex.html
  6. eleif.net/manchester.html
  7. hackaday.com/2019/06/27/reverse-engineering-cyclic-redundancy-codes
  8. 私のナヌティリティ、サンプルパッケヌゞ、CRCの遞択。アヌカむブパスワヌド "tPmSutiLity" dropmefiles.com/MtS9W "
  9. i56578-swl.blogspot.com/2017/08/eavesdropping-wheels-close-look-at-tpms.html
  10. www.rtl-sdr.com/tag/tpms



All Articles