→
الجزء الأول ،
الجزء الثانيلقد مر عام على النشر الأخير ، وكثيراً ما يُسألني السؤال عما تغير منذ ذلك الحين. باختصار ، تم إجراء الانتقال إلى رقائق Ntag ، وتم إجراء تغييرات صغيرة في الدائرة لتوفير حساسية أفضل ، وحجم الإشارة وحركة الساعة الصحيحة ، وتم إنشاء برنامج للعمل مع النظام. بشكل عام ، استقر النظام وهو جاهز للتشغيل والاستخدام. مزيد من التفاصيل أدناه.
بادئ ذي بدء ، سأخبرك عن رقائق RFID ، لماذا تم الانتقال نحو Ntag. دعني أذكرك بأن ذاكرة Mifare Classic 1K تحتوي على 1024 بايت ، منها 752 بايت متوفرة لتخزين المعلومات. ينقسم هيكل الذاكرة إلى 16 كتلة ، والتي تحتوي على 4 صفحات من 16 بايت ، واحدة منها محفوظة للتشفير. إذا كنت تستخدم صفحة واحدة كخدمة ، فلا يزال هناك 46 صفحة لتسجيل العلامات.
في بداية التطوير ، استخدمت الذاكرة بحرية - صفحة واحدة من 16 بايت لكل علامة ، مما يحد من استخدام البدايات متوسطة الحجم. وللقضاء على الأعاصير والتوجيه السياحي أو سباق المغامرات ، هناك 46 محطة قليلة. لذلك ، تم تحقيق فكرة الضغط: تم كتابة علامتين على كل صفحة. في الوقت نفسه ، كان هناك خطر فقدان البيانات ، لأن وحدة التسجيل هي صفحة واحدة ، وعند إعادة التسجيل ، يجب عليك قراءة النصف المسجل بالفعل لكتابته مرة أخرى. في الواقع ، لقد خطوت على هذه أشعل النار خلال Rogaining في نوفمبر الماضي ، وفقد جزء صغير من البيانات ، واضطررت إلى تعديل الكثير يدويًا. وعلى الرغم من اكتشاف خطأ في الرمز ، فقد قررت التبديل إلى رقائق أكثر سعة دون التعرض لخطر فقدان البيانات أثناء إعادة الكتابة.
أحد الخيارات الممكنة هو استخدام شرائح Mifare 4K ، والتي يختلف هيكلها عن 1K في أربعة أضعاف المساحة الكبيرة للذاكرة فقط. لكن هذه الرقائق أكثر تكلفة ومدة التنظيف ، ستزداد العلامات باستخدامها. خيار آخر هو استخدام رقائق سلسلة Ntag (213/215/216). بنية الذاكرة لرقائق Ntag بسيطة للغاية - الذاكرة مقسمة إلى صفحات من 4 بايت ، أول 4 و 5 صفحات محفوظة لتخزين معلومات الخدمة ، ويمكن استخدام الباقي. تختلف رقائق سلسلة Ntag في حجم الذاكرة ، وتحتوي Ntag213 على 36 صفحة (144 بايت) مجانية ، و Ntag215 بها 126 صفحة (504 بايت) ، و Ntag216 بها 222 صفحة (888 بايت). ونتيجة لذلك ، قمت بتطبيق الدعم لجميع الرقائق في هذه السلسلة ، على الرغم من أن Ntag215 يمكن اعتباره مثاليًا ، وذاكرته كافية لـ 120 علامة ، والسعر منخفض جدًا (حوالي 0.2 دولار لكل شريحة على شكل ملصق أو 0.4 دولار على شكل سلسلة مفاتيح). أيضًا ، بناءً على نصيحة SFR ، قرر التخلي عن تخزين المعلومات المهمة - رقم آخر صفحة مجانية لصالح البحث الثنائي. هذا زاد الطابع الزمني ، ولكن زيادة الموثوقية.
تحتوي صفحة Ntag للذاكرة على 4 بايت ، حيث تحتاج إلى احتواء رقم المحطة - 1 بايت والطابع الزمني - 4 بايت. تم حل المشكلة من خلال حقيقة أن الوقت الكامل لتهيئة (تنظيف) الشريحة مكتوب في صفحة منفصلة ، وعند وضع علامة عليه ، فقط 3 بايتات أقل من الوقت. ثم ، عند القراءة ، يتم استعادة وقت العلامات تمامًا بناءً على وقت التهيئة. صفحة أخرى في الشريحة مشغولة برقم الشريحة وترك صفحتان احتياطيتان. يتم عرض الهيكل الناتج أدناه:

سمح استخدام Ntag بحل مشكلة التسجيل الآمن لعدد كبير من العلامات على الشريحة ، ولكن ظهرت مشكلة أخرى. تتطلب رقائق Ntag طاقة إرسال أكثر من Mifare بنفس منطقة الهوائي ، وقد لا تعمل رقائق المفاتيح التي يكون الهوائي فيها 2 سم ^ 2 بشكل جيد على وحدة RC522 كمعيار قياسي. كان حل المشكلة هو لحام الحث على الوحدة لأقوى. في الوقت نفسه ، زاد نطاق الاستجابة بشكل ملحوظ ، لرقائق Ntag حتى 2 سم ، ولمايفار حتى 3 سم.لكن بعض الوحدات بدأت في العمل بشكل سيء بسبب هذا اللحام: تم تسجيل الرقائق فقط مع نطاق معين وغير متوقع من المسافات من هوائي الإرسال. اضطررت للدخول إلى مكتبة RC522 Arduino والعثور على معلمة الكسب هناك ، المسؤولة عن طاقة الهوائي ؛ تحريرها للمحطات الفردية حل المشكلة. كما أتقن التصنيع اليدوي للرقائق على سوار من الملصقات. علي بابا معروضة للبيع بالفعل وجميلة ، ولكن مساحة الهوائي الخاصة بها هي نصف ذلك تقريبًا ، والعلامة تمر أقل استقرارًا. ألاحظ أيضًا أنني تركت دعمًا لرقائق Mifare 1K ، يمكنك العمل معها ، ولكن لهذا تحتاج إلى استخدام برنامج ثابت منفصل ، وتقتصر سعة الشريحة على 42 علامة ، ولكنها تأتي مع وحدات RC522.

كانت المشكلة الأخرى التي يجب حلها أثناء التطوير هي المسار غير الصحيح للساعة. في بعض المحطات ، بدأت الساعة بالتأخير أو الاندفاع لمدة تصل إلى 5 دقائق في اليوم. لفترة طويلة لم أتمكن من فهم السبب ، ثم اكتشفت أن المحطات التي تحتوي على لوحة الدوائر المطبوعة في المصنع هي فقط عربات التي تجرها الدواب ، في حين أن كل شيء يعمل بشكل جيد على تلك المحفورة يدويًا. فكرت في ما يمكن ربط هذا. على مسارات سميكة محفورة يدويًا بسبب الصباغة الوفيرة ، ومقاومة أقل. اتضح أن المكثف عند الإخراج من المثبت ليس كافيًا لفصل قوة الساعة على مسارات المصنع الرقيقة. لقد وضعت مكثفًا آخر بالقرب من الساعة ، وتم حل المشكلة ، في الغالب. لا يزال جزء صغير من الساعة يفشل ، لكنني بالفعل أربط هذا بزواج الساعات الرخيصة مع علي ، تحتاج إلى البحث عن موردين موثوق بهم.
حسنًا ، التغيير الأخير في الدائرة هو تضخيم إشارة الصوت. في السابق ، تم التحكم في قوة مكبر الصوت في الدائرة وقوته من قدم وحدة التحكم الدقيقة ، لذلك كانت محدودة للغاية في الطاقة. الآن تنتقل الطاقة مباشرة من البطاريات ، ويتم التحكم من خلال ترانزستور ، مما أدى إلى زيادة كبيرة في حجم الإشارة. يتم أخذ جميع هذه التغييرات في الاعتبار الآن وإدخالها في ملفات Gerber ، لكنني أعدت يدويًا حوالي 40 محطة ، واضطررت إلى اختيار المجمع ، وقطع المسارات ، وتعليق الترانزستور على الأسلاك ، وكانت هناك بعض المحطات المكسورة.

نظرًا للانتقال إلى الرقائق الأخرى ، كان لا بد من تغيير البرامج الثابتة للمحطات الأساسية بشكل كبير ، لكن مبدأ ومنطق العمل ، في معظمه ، ظل كما هو. نفس أنماط توفير الطاقة والنوم والعمل والإعداد باستخدام رقائق رئيسية. ولكن تم إعادة تصميم البرامج الثابتة للبوابة بالكامل. بروتوكول الاتصال السابق ، عندما كانت البيانات تتدفق في منفذ COM في دفق مستمر ، بدا ضعيفًا: تم تفويت البايت ، وتحولت جميع البيانات إلى قرع. بدا التكيف مع بروتوكولات نقل البيانات الحالية مملاً ، لذلك اخترع دراجته.
يتم إرسال المعلومات واستلامها بالتتابع عن طريق إرسال حزم تصل إلى 32 بايت. إذا كانت البيانات المرسلة لا تتناسب مع الحزمة ، يتم الإرسال عن طريق إعادة توجيه الحزم بالتسلسل. تبدأ الحزمة ببايت البدء 0xFE ، متبوعًا برقم الأمر ، وطول الحزمة والبيانات ، وفي نهاية المجموع الاختباري. تمر الأوامر فقط بالقيمة الصحيحة للمجموع الاختباري وتبدأ وحدات البايت. بسيطة جدا وموثوقة بما فيه الكفاية.

تم إنشاء الاتصال ، ولكن كان من الضروري كتابة برنامج عادي للكمبيوتر ، لم تكن الحرف الخاصة بي على المعالجة مناسبة لذلك. سيميون ياكيموف ، الذي أنشأ
وحدة Python للعمل مع النظام ، تناول هذا الأمر ، وهو ممتن للغاية له. تسمح لك الوحدة بالاتصال بالبوابة وإرسال واستقبال البيانات بتنسيق مناسب. بعد ذلك ، أتقنت Python كأول تقدير وكتبت
تطبيق GUI بسيطًا يستند إلى هذه الوحدة و PyQt ، والتي يمكن استخدامها لتكوين النظام ، وكذلك لجمع البيانات من الرقائق في شكل ملف JSON. حسنًا ، يمكن معالجة البيانات باستخدام نصوص صغيرة للمسابقات مع مجموعة متنوعة من الشروط والقواعد ، والتي يتم إصدارها في شكل ملائم (
التوجه السياحي ،
التعفن ). ولكن ، على أي حال ، هذا يعني بعض المهارات ، وستكون السعادة غير مكتملة إذا لم تكن لمطوري برنامج
SportOrg ، الذين أضافوا الدعم لـ Sportiduino (بالإضافة إلى Sportident و SFR). يتطور البرنامج بنشاط والعديد من الأشياء قادرة على الحكم على بدايات التوجيه.
الخلاصة
وبالتالي ، في الوقت الحالي هناك أجهزة وبرامج عمل مستقرة. أعتقد أن هدف المشروع قد تحقق: لقد ظهر نظام تعليم إلكتروني رخيص. لن أغير أي شيء في إطار هذا المخطط ، إلا إذا كان هناك نوع من الأخطاء. تم تطوير واختبار نظام وضع العلامات بالفعل في عدد كبير من المسابقات المختلفة: التوجيه ، الركض ، رمي المسيرة ، المسار ، المراحل السياحية. إلى جانب ذلك ، يتم استخدامه من قبل العديد من الأشخاص في أماكن مختلفة. قام شخص ما بتشغيل النظام ، وقام شخص ما بإضافات هناك ، على سبيل المثال ،
وحدة راديو أو استخدام
بطاريات الليثيوم ورقائق
Mifare باعتبارها الرئيسية.
التطوير مفتوح وغير تجاري ومرخص بموجب GNU GPLv3. يمكن لأي شخص نسخه وإعادة إنتاجه وتعديله واستخدامه بحرية. خلال العام الماضي ، طرحت الكثير من الأسئلة عما إذا كنت أقوم ببيع محطة. لا ، لا أريد القيام بذلك. من ناحية أخرى ، لا أمانع إذا قام شخص ما بملء هذا المكان. أنا على استعداد فقط لإعطاء النصيحة بشأن التجميع والاستخدام ، لأن كل شيء بسيط للغاية هناك.
المشروع متاح على
جيثب ، توجد رسوم بيانية وتعليمات ومواد مفيدة أخرى. شكرا لكم على اهتمامكم.