أجهزة الاستشعار متوفرة داخليًا أو خارجيًا. يتم تثبيت الأجزاء الداخلية داخل إطار العجلة بدون أنبوبي ، ويتم تثبيت الإطارات الخارجية على تركيبات العجلة. تبدو العجلة ذات المستشعر الداخلي تمامًا مثل عجلة بدون جهاز استشعار. هذه العجلة سهلة الضخ. المستشعر الخارجي ملحوظ ، ويمكن أن يُسرق ويجب أولاً فكه عند نفخ العجلة. كما أنها تتأثر بالظواهر الجوية.
للتحقيق في بروتوكول نظام TPMS ، دفعتني فكرة تثبيت مثل هذا النظام على عربة أطفال لمراقبة ضغط الإطارات بسرعة.
رسم بياني 1. مظهر نظام TPMS
الصورة 2. لوحة تحكم نظام TPMS
لم يكن من الممكن تثبيت وحدة الاستقبال القياسية تمامًا مثل ذلك ، نظرًا لأن الحد الأدنى لقيمة الضغط المسموح به هو 1.1 بار ، وفي عربة الأطفال يكون أقل. لذلك ، تُصدر الوحدة صفيرًا باستمرار للإبلاغ عن انخفاض ضغط الإطارات. يمكنك أن تقرأ عن تطوير وحدة تحكم لعربة الأطفال "الذكية" "Maksimka" ، والتي يتم فيها تطبيق نتائج البحث ، في مقالتي [1].
بدأ جمع المعلومات حول تشغيل TPMS بالبحث عن مقالات على الإنترنت. لكن لسوء الحظ ، هناك القليل من المعلومات. وينطبق أيضًا على أنظمة السيارات العادية ، والتي تكون أكثر تعقيدًا وأغلى بكثير. وكنت بحاجة إلى معلومات حول نظام صيني بسيط رخيص. كان لدي قدر ضئيل من الفهم ، والآن كان علي أن أبدأ بالتجربة.
لذلك ، نحن نسلح أنفسنا بصافرة USB لموالف DVB ، ونطلق RTL-SDR ونشاهد البث. تعمل المستشعرات عند 433.92 ميجا هرتز في تعديل FSK. في البداية ، قمت بتسجيل البث ثم قمت بتحليل البروتوكول يدويًا. هنا بدأت الصعوبات. في السابق ، واجهت فقط تعديل OOK. كل شيء بسيط هناك. الأمر أكثر تعقيدًا قليلاً هنا. المعلومات مشفرة بترددين. لذلك درست الأمثلة ، نظرية التحوير. ثم رأيت كيف تم استخدام برنامج URH-Universal Radio Hacker [2 ، 3]. حاولت تثبيته ، لكنه لا يعمل على WinXP 32bit الخاص بي. اضطررت إلى البحث عن جهاز كمبيوتر يعمل بنظام Win8 64 بت ثم تم تثبيت البرنامج. يمكنك قراءة المزيد عن عملها على موقع المطور. URH جعل العملية أسهل قليلاً بالنسبة لي ، لأنه يلتقط الإشارة من الهواء ويعرضها بمخطط تذبذب ويفك تشفيرها على الفور إلى شكل رقمي خام في شكل ثنائي وعشري.
تين. 3. لقطة من البرنامج مع إطار تم التقاطه من إرسال TPMS.
يرسل المستشعر عدة رسائل واحدة تلو الأخرى في جلسة واحدة. يمكن أن تصل الفترة بين الجلسات إلى دقيقة أو أكثر. في حالة حدوث موقف إنذار ، يبدأ المستشعر على الفور في إرسال حزم البيانات. الملف الصوتي للرسالة من جهاز الاستشعار [8]. مثال على رسالة واحدة من المستشعر مأخوذة من برنامج URH:
010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101011001100110100110101001011001011010011010100110101001100101010101011010010101010101010110101001011001101010010101100101101001010101011001011001100110101001
في الشكل السداسي العشري ، ستتخذ هذه الفرضية الشكل:
5555555555555555555555555555555555555555555555555555555555555555555556669a965a6a6a6555a5555a966a565a556599a9
كان من الواضح أن جميع الطرود الأربعة في جلسة واحدة تحتوي على نفس البيانات ، مما يعني أنه تم قبول الحزمة بشكل صحيح ويمكنك البدء في تحليلها.
في المثال أعلاه ، يمكنك رؤية التمهيد (التسلسل 01010101….) ، متبوعًا بالبيانات. بعد قراءة الإنترنت ، نفهم أن لدينا حزمة مشفرة بترميز Manchester (GE Thomas). كل بتة مشفرة ببتين 01 أو 10. لقد تم ترميزها يدويًا في الأصل ، مما يعزز نظرية التشفير / فك التشفير. ولكن بعد ذلك قررت أن أنتقل إلى وحدة فك التشفير على الإنترنت [4،5،6] ، مما أدى إلى تسريع العملية بشكل كبير.
لذلك ، فك تشفير الرسالة الأصلية من المستشعر برمز مانشستر ، نحصل عليه
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010101101110010011011101110100000011000000001110010111000100110000010010101110
أول 136 صفرا هي مقدمة ويمكن تجاهلها. نحن مهتمون فقط بالبيانات.
ترجمتها إلى شكل سداسي عشري ، نحصل على: 0x15B937740C03971304AE يحتوي
هذا بالفعل على بيانات أولية جميلة ، حيث يتم إخفاء المعرف وضغط الإطارات ودرجة الحرارة في مكان ما.
لمزيد من البحث من الضروري جمع إحصاءات البيانات. للقيام بذلك ، قمت بلف مستشعر واحد على العجلة والتقطت الهواء ، أثناء تسجيل ما تعرضه لوحة النظام الأصلية. أطلق الضغط ، وضخه ، ووضع العجلة في الفريزر لدرجة حرارة سلبية ، وسخنها. ثم سعى للحصول على نفس الظروف لمجس آخر لمعرفة بايتات درجة الحرارة والضغط.
الحزمة بأكملها تستغرق 10 بايت. إذا قمت بمحاذاة البيانات التي تم فك ترميزها في عمود ، يمكنك رؤية البيانات الثابتة والبيانات المتغيرة.
15B937740C03971304AE
15B937740C03A1FC00A4
15B937740C03A700087B
هناك ملصقات على أجهزة الاستشعار على الجسم. كل مستشعر مختلف: 0A ، 1B ، 2C ، 3D.
التفكير النمطي هنا لم يعمل بشكل جيد. اعتقدت أن هذا هو جهاز استشعار الهوية.
لقد شككت في سبب احتواء المعرف على بايت واحد فقط ، ولكن بعد ذلك نسيته وحاولت البحث عن هذه المعرفات في الدفق. بعد ذلك ، في قائمة جهاز الاستقبال الأصلي للنظام ، رأيت أنه يمكن ربط مستشعرات أخرى بهذا المستقبل ، ويعرض جهاز الاستقبال نفسه معرف المستشعر على كل عجلة. وها ، اكتشفت أن مستشعر العجلة الرابعة له معرف = 3774.
15B937740C03971304AE
لذا فإن البايتين الثالث والرابع من الحزمة هما معرف العجلة. مقارنة بأجهزة الاستشعار الأخرى وكذلك المعرفات التي تتطابق مع تلك التي تعرضها اللوحة القياسية.
لقد حسبت البايت الأول كبادئة بداية البيانات ، والبايت الثاني كمعرّف للنظام الفرعي TPMS.
فيما يلي مقارنة بين الطرود من أجهزة استشعار مختلفة.
15B9F3FA2300BE1B007Bمعرف المستشعر 0A = 0xF3FA معرف
15B91AA43201B71B002Aالمستشعر 1B = 0x1AA4 معرف
15B9ABFF32027B1B029Bالمستشعر 2C = 0xABFF معرف
15B937740C03971304AEالمستشعر ثلاثي الأبعاد = 0x3774
وأدركت أن النقوش الموجودة على المستشعرات (0A ، 1B ، 2C ، 3D) هي مجرد أرقام عجلات في شكل رقمي وبحروف أبجدية وليست سداسية عشرية معرف العجلة. ولكن ، مع ذلك ، فإن البايت السادس في الحزمة يشبه إلى حد بعيد الرقم التسلسلي لجهاز الاستشعار. بالنسبة لي ، استنتجت أن هذا هو معرّف العجلة. لذلك ، يتم فك تشفير بايت واحد.
البايت الأخير هو على الأرجح مجموع اختباري ، لا أعرف كيف أقرأه بعد. ظل هذا لغزا بالنسبة لي حتى النهاية.
البايت التالي الذي تم فك تشفيره هو درجة حرارة العجلة. محظوظ هنا. تأخذ درجة الحرارة 1 بايت ويتم تقديمها بدرجات كاملة. درجة حرارة سالبة في مكمل اثنين. هذا يعني أن درجة الحرارة -127 ... 128 درجة مئوية ستناسب البايت.
في عبوتنا ، درجة الحرارة هي 8 بايت ، حيث
15B9F3FA2300BE1B007Bيتوافق
15B937740C03A1FC00A40x1B مع +27 درجة ، حيث يتوافق 0xFC مع -4 درجات
هناك ثلاثة بايتات غير معترف بها 5 و 7 و 9. إذا حكمنا من خلال ديناميكيات التغيير ، فإن ضغط الإطارات مخفي في 7 بايت ، وفي البايت التاسع ، على الأرجح ، بتات حالة المستشعر. وفقًا لمصادر المعلومات المختلفة على الإنترنت ، بالإضافة إلى وظائف نظام TPMS الخاص بي ، يجب أن يكون هناك القليل من البطارية المفرغة ، وقليلًا من فقدان الضغط السريع وبتات أخرى غير واضحة للسبب.
لذلك ، سنقوم بتحليل البايت السابع منذ ذلك الحين نعني أن الضغط يختبئ فيه.
بعد أن كتبت إحصائيات عن أجهزة استشعار مختلفة ذات ضغوط مختلفة ، لم أتمكن من تحديد الصيغة التي تعيد حساب الضغط بوضوح. وليس من الواضح في أي وحدات ينقل المستشعر الضغط افتراضيًا (Bar ، PSI). نتيجة لذلك ، لم يقدم الجدول المضمن في Excel تطابقًا تامًا مع لوحة نتائج TPMS القياسية. يمكن للمرء إهمال فرق 0.1 بار هذا ، لكنني أردت مفهوم البروتوكول حتى آخر بت. سادت الإثارة.
إذا لم تتمكن من فهم كيفية تكوين بايت الضغط ، فأنت بحاجة إلى عمل محاكي لمستشعر الضغط وتغيير قيمة الضغط ، انظر ما تعرضه اللوحة القياسية.
بقيت لمعرفة الغرض من البايتين الخامس والتاسع للحزمة ، لكن نادرًا ما يتغيران ، لذلك يمكنك قبول قيمها كما في الحزمة الأصلية ، مع تغيير بايت الضغط فقط. الآن السؤال هو فقط في حساب المجموع الاختباري. بدونها ، ستتجاهل اللوحة القياسية الحزمة الخاصة بي ولن تظهر شيئًا.
لمحاكاة المستشعر ، كان عليك إرسال حزمة. لهذا كان لدي جهاز إرسال واستقبال SI4432 متصل بـ PIC16F88 ، والذي كان يستخدم في السابق لأغراض أخرى.
الشكل 4. صورة من لوحة الاختبار
باستخدام ممارسات نقل البيانات القديمة ، قمت برسم برنامج للموافقة المسبقة عن علم يقوم بنقل إحدى الحزم التي تلقيتها مع برنامج URH. بعد مرور بعض الوقت على تشغيل جهاز الإرسال ، عرضت اللوحة البيانات التي تم نقلها إليها! لكن هذه حزمة جاهزة مع CRC جاهزة ، ولكي أغير بايت الضغط ، أحتاج أيضًا إلى إعادة حساب CRC.
بدأت القراءة ، بحثًا عن معلومات حول أي CRC يتم استخدامها ، وجربت Xor مختلفة ، وما إلى ذلك ، ولكن لم ينجح شيء. لقد اعتقدت بالفعل أنه لا يوجد شيء سينجح ويجب أن يكون راضياً عن الضغط الذي تلقيته وفقًا لجدولتي ، ولكنه يختلف قليلاً عن لوحة النتائج الأصلية. لكن على الإنترنت رأيت مقالًا حول اختيار اتفاقية حقوق الطفل. كان هناك برنامج تعطيه عدة حزم ، ويحاول العثور على المجموع الاختباري ، وإذا نجح ، فإنه يُخرج القيمة متعددة الحدود وقيمة تهيئة 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 الإشارة وعرضت الضغط ودرجة الحرارة. كانت هناك مشكلة صغيرة تتمثل في أن اللوحة القياسية تحتوي على مكان عشري واحد ، وعند نقل القيمة إلى الهواء ، تعرض الشاشة دائمًا نفس الضغط ، لأن ولم تظهر بقية التصريفات. تم تمرير قيمة البايت 0..255. لكن مرة أخرى ليس واضحًا بطريقة ما. اتضح أن الضغط 0.00 بار يبدأ عندما يحتوي البايت السابع على القيمة 97. ليس من الواضح سبب ذلك. ولكن بعد ذلك يصبح كل شيء واضحًا بدقة 0.01 بار.
ضغط البايت ، بار
255 1.58
254 1.57
... ...
107 0.10106
0.09105
0.08104
0.07103
0.06102
0.05101
0.04
100 0.03
99 0.02
98 0.01
97 0.00
وفقًا للجدول ، فإن الحد الأقصى للضغط الذي يناسب في بايت واحد هو 1.58 بار فقط ، لكن النظام يسمح لك بقياس الضغط حتى 4 ضغط جوي. هذا يعني أن 1 بت من أهم بت مخفي في مكان آخر. لم تكن هناك رغبة في المرور عبر كل البايتات وتغيير البتات الموجودة فيها. تم العثور على عجلة من سيارة ، وجرح جهاز استشعار ، وتم التقاط إشارة. ساد الفضول ، وفي ذهني كنت أراهن على مكان ظهور هذه النغمة. وأنه سيكون بالضبط بت واحد ، وليس مخطط ترميز آخر.
بعد فك تشفير الحزمة ، رأيت هذا الشيء. إنها البتة السابعة من البايت السادس. هذا يعني أن البايت السادس لا يحتوي على رقم العجلة فحسب ، بل يحتوي أيضًا على الجزء الأكثر أهمية من ضغط الإطارات.
15B937740C833C18025C
يعطي البت الأكثر أهمية من 0x83 و 0x3C 0x13C = 219 والذي يتوافق مع ضغط 2.19 بار
صيغة تحويل الضغط إلى بار: P = (ADC-97) / 100 ،
حيث ADC = (B7 >> 7) * 0x100 + B6 ، حيث B6 و B7 هما قيمة البايت 6 والبايت 7.
بقيمة 511 لدينا أقصى ضغط 4 ، 14 بار. لم يكن من الواضح أيضًا سبب كون الشريط 4.14 بار ، لكنني أعتقد أن هذا يساوي 4 ضغط جوي - أقصى ضغط مسموح به للمستشعر.
يبقى أن نفهم ما هي مسؤولية بتات الحالة. تم الحصول على البتات عن طريق نزيف الضغط وتوصيل المستشعر بمصدر طاقة منظم وتقليل الجهد. 2 بت ظلت غير واضحة. ربما هناك المزيد ، لكنهم لم يقبلوا أبدًا قيمة واحد خلال التجربة بأكملها.
لتبسيط التحليل ، تمت كتابة برنامج [8]
الشكل 5. مظهر واجهة البرنامج لفحص حزم TPMS
يمكنك ضبط الحزمة الأولية من برنامج URH في البرنامج في شكل سداسي عشري ويقوم البرنامج بفك تشفير الحزمة ، ويقرأ المجموع الاختباري ويعرض البيانات في درجة الحرارة العادية ووحدات الضغط.
بطريقة ما عدت إلى قائمة اللوحة القياسية ورأيت أن معرف المستشعر ليس اثنين بايت ، بل أربعة بايت. تحتوي اللوحة على مؤشرات كبيرة وصغيرة ولم ألاحظ على الفور أن البايتين الثاني والخامس مدرجان أيضًا في معرف المستشعر.
15B937740C833C18025C
وبالتالي ، يبقى البايت الأول فقط غير معروف ، ولكنه دائمًا 0x15 (0b010101) ، وهذا يبدو وكأنه تمهيد معين لحزمة أو معرف بدايتها.
أيضًا ، لم يتم التعرف على بتات الحالة بالضبط ، ولكن تلك المفقودة.
فضولي لمعرفة ما داخل المستشعر ساد وفككت أحدهما (الشكل 6) الشكل 6
. مستشعر TPMS
يعتمد على الدائرة المصغرة Infineon SP372 ذات الربط الصغير. البحث عن توثيق هذه الدائرة الدقيقة المعينة لم يسفر عن شيء. تلك التي وجدتها إما استطلاع أو إعلان. لذلك لم يكن من الممكن معرفة البروتوكول. لكن المقالات تشير إلى أن هذه وحدة تحكم قابلة للبرمجة ، لذلك يمكن أن يكون البرنامج أي شيء. لذلك ، لم أجرؤ على شراء الدائرة المصغرة بشكل منفصل.
بروتوكول
الآن حول تلقي البيانات من المستشعر إلى جهاز الإرسال والاستقبال SI4432. كان من المخطط في الأصل تلقي البيانات الأولية من SI4432 بحيث تقوم وحدة التحكم بفك تشفير مانشستر وتجميع وحدات البايت. لكن جهاز الإرسال والاستقبال هذا لديه وظيفة معالجة الحزم. أي ، بالنسبة للإرسال ، يمكنك تكوين جهاز الإرسال على التردد المطلوب ، والتشكيل ، والانحراف ، وتعيين طول التمهيد ، والتشفير ، ومزامنة الكلمة ، ومعدل البت ، وطول البيانات. ثم اكتب حزمة البيانات الأصلية في المخزن المؤقت لجهاز الإرسال (على سبيل المثال ، 15B937740C833C18025C) وابدأ الإرسال. سيشكل جهاز الإرسال والاستقبال نفسه حزمة ويبثها ، مع مراعاة جميع المعلمات المحددة ، وتكون وحدة التحكم مجانية في هذا الوقت لمعالجة المعلومات الأخرى.
من الناحية المثالية ، أود تلقي معالجة البيانات المجمعة من SI4432 أثناء الاستقبال. لكي يستقبل المتلقي الحزمة ويولد مقاطعة استلام الحزمة. ثم تقوم وحدة التحكم ببساطة بقراءة المخزن المؤقت للاستلام ، والذي يقوم بالفعل بتخزين البيانات في شكلها النقي ، وبالتالي تحرير وقت المعالج لوظائف أخرى.
بدأت في دراسة إعداد السجلات لتشغيل جهاز الإرسال والاستقبال للاستقبال. تبين أن هذا أصعب بكثير من نقل الحزمة. هنا تحتاج إلى معرفة جيدة بنظرية استقبال الراديو ، والتي لا أملكها. توجد جداول لحساب السجلات في Excel لجهاز الإرسال والاستقبال هذا ، لكنها إما لا تعمل بسبب حقيقة أن Excel روسي ، أو أنها مقطوعة. يوجد أيضًا تطبيق من المطور ، لكن كل شيء ليس شفافًا للغاية أيضًا. بعد الاطلاع على العديد من الأمثلة والنظر في جداول الحساب ، قرأت يدويًا قيم التسجيل وفقًا للوثائق.
لقد قمت بتوصيل المسجل بإخراج جهاز الاستقبال والتقطت الهواء ، اعتمادًا على ما يقدمه جهاز الاستقبال. نتيجة لذلك ، تمكنت من تكوين مرشحات جهاز الاستقبال بحيث تسمح لحزمتي بالمرور. لقد تلاعب في معدل التدفق ، وضرب الدف. النظرية ، للأسف ، لا تزال غير واضحة بالنسبة لي.
لكي يتمكن المتلقي من تلقي حزمة بيانات ، فإنه يحتاج إلى تحديد طول التمهيد ، وكلمة المزامنة التي يجب أن تكون موجودة ، وطول البيانات. من الممكن أيضًا للمستقبل قراءة المجموع الاختباري نفسه ، ولكن في SI4432 ، لا تتوافق خوارزمية الحساب مع خوارزمية CRC لمستشعرات الضغط.
يمكن أن يطغى الوجود الإلزامي لكلمة مزامنة ثنائية البايت على فكرة تلقي حزمة ، ولكن كان من حسن الحظ هنا أن الرسالة من المستشعر تبدأ من 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 () بتحليل المجموع الاختباري وفك تشفير المعلومات إلى وحدات الضغط ودرجة الحرارة النهائية ، بالإضافة إلى معلومات الحالة.
مشاكل
- عند قراءة المعلومات حول المستشعرات ، تمت الإشارة إلى مزامنة المستشعرات مع بعضها البعض. لسبب ما ، من الضروري إقران المستشعرات ، كان هناك شيء حول سرعة تزيد عن 20 كم / ساعة لمدة 30 دقيقة. ليس من الواضح لماذا هذا ضروري. ربما كان هذا بسبب لحظة نقل المعلومات ، لكن هذا هو تخميني.
- لم يكتشف حتى نهاية وظيفة حالة بتات حساس الضغط.
- ليس من الواضح حول إعداد جهاز الإرسال والاستقبال SI4432 للاستقبال ، حول معدل الباود باستخدام ترميز مانشستر. إنه يعمل بالنسبة لي ، لكن لا يوجد فهم للمبدأ حتى الآن.
نتائج العمل
استغرق البحث الذي تمت تغطيته في هذه المقالة حوالي شهر من وقت الفراغ.
نتيجة لدراسة بروتوكول نظام مراقبة ضغط الإطارات ، أثيرت قضايا إرسال واستقبال البيانات عبر الهواء ، وتم النظر لفترة وجيزة في تشفير الإشارة ، وتم اختبار جهاز الإرسال والاستقبال SI4432 للإرسال والاستقبال. سمحت هذه المهمة بدمج TPMS في المشروع الرئيسي لعربة الأطفال الذكية. بمعرفة بروتوكول التبادل ، يمكنك توصيل المزيد من أجهزة الاستشعار ودمجها في تطويرك. علاوة على ذلك ، يمكن أن يكون الضغط المتحكم به ضمن حدود واسعة ، وليس كما هو الحال في النظام القياسي 1.1-3.2 بار ، لأن ويصاحب الضغط خارج هذا النطاق صرير ينذر بالخطر من نظام الوحدة المركزية القياسي. أيضًا ، يمكن الآن استخدام TPMS لمراقبة ضغط الإطارات لدراجة نارية أو دراجة أو ، على سبيل المثال ، مرتبة هوائية. كل ما تبقى هو تثبيت المستشعر فعليًا وكتابة برنامج عالي المستوى.
الروابط
- عربة أطفال "ذكية" "ماكسيمكا"
- github.com/jopohl/urh
- habr.com/ru/company/neuronspace/blog/434634
- www.rapidtables.com/convert/number/hex-to-binary.html
- www.rapidtables.com/convert/number/binary-to-hex.html
- eleif.net/manchester.html
- hackaday.com/2019/06/27/reverse-engineering-cyclic-redundancy-codes
- أدواتي المساعدة ، عينة الحزمة ، اختيار اتفاقية حقوق الطفل. أرشيف كلمة المرور "tPmSutiLity" dropmefiles.com/MtS9W "
- i56578-swl.blogspot.com/2017/08/eavesdropping-wheels-close-look-at-tpms.html
- www.rtl-sdr.com/tag/tpms