- المكونات مطلوبة
- وحدة الاستشعار MPU6050 - مقدمة موجزة
- Attiny85 خطوة عداد مخطط الدائرة
- تصنيع ثنائي الفينيل متعدد الكلور لعداد خطوة Attiny85
- طلب PCB من PCBWay
- تجميع ثنائي الفينيل متعدد الكلور ATtiny85 Step Counter
- ATtiny85 شرح رمز عداد الخطوة
- لنأخذ Arduino Step Counter للتنزه
في هذا البرنامج التعليمي ، سنقوم ببناء عداد خطى سهل ورخيص باستخدام ATtiny85 IC و MPU6050 Accelerometer & Gyroscope و OLED Display Module. يتم تشغيل عداد الخطوات البسيط المستند إلى Arduino بواسطة خلية عملة 3 فولت ، مما يسهل حمله عند الخروج في نزهة على الأقدام أو الركض. كما يتطلب إنشاء عدد قليل جدًا من المكونات ، كما أن الشفرة بسيطة نسبيًا. يستخدم البرنامج في هذا المشروع MPU6050 لقياس حجم التسارع على طول المحور الثالث (X ، Y ، و Z). ثم يقوم بحساب فرق مقدار التسارع بين القيم السابقة والقيم الحالية. إذا كان الفرق أكبر من عتبة معينة (للمشي أكبر من 6 وللركض أكبر من 10) ، فإنه يزيد من عدد الخطوات وفقًا لذلك. ثم يتم عرض إجمالي الخطوات التي تم اتخاذها على شاشة OLED.
لبناء عداد الخطوات المحمول هذا على PCB ، قمنا بتصنيع لوحات PCB الخاصة بنا من PCBWay وسنقوم بتجميعها واختبارها في هذا المشروع. إذا كنت ترغب في إضافة المزيد من الميزات ، يمكنك أيضًا إضافة شاشة Heartbeat إلى هذا الإعداد وقد قمنا أيضًا ببناء عداد خطوة لمقياس التسارع Arduino باستخدام ADXL335 ، تحقق منها إذا كنت مهتمًا.
المكونات مطلوبة
لبناء عداد الخطى هذا باستخدام Arduino ، ستحتاج إلى المكونات التالية.
- Attiny85 IC
- MPU6050
- وحدة عرض OLED
- 2 × أزرار دفع
- مقاومات 5 × 10KΩ (SMD)
وحدة الاستشعار MPU6050 - مقدمة موجزة
يعتمد MPU6050 على تقنية الأنظمة الميكانيكية الدقيقة (MEMS). يحتوي هذا المستشعر على مقياس تسارع ثلاثي المحاور وجيروسكوب ثلاثي المحاور ومستشعر درجة حرارة مدمج. يمكن استخدامه لقياس المعلمات مثل التسارع ، والسرعة ، والتوجيه ، والإزاحة ، وما إلى ذلك. لقد قمنا سابقًا بتوصيل MPU6050 مع Arduino و Raspberry pi ، كما قمنا ببناء بعض المشاريع باستخدامه مثل - روبوت الموازنة الذاتية ، ومنقلة Arduino الرقمية ، ومقياس ميل Arduino.
وحدة MPU6050 صغيرة الحجم وذات استهلاك منخفض للطاقة وتكرار عالٍ وتحمل عالي للصدمات ونقاط سعر منخفضة للمستخدم. يأتي MPU6050 مزودًا بناقل I2C وواجهة ناقل I2C ويمكن أن يتداخل بسهولة مع أجهزة الاستشعار الأخرى مثل أجهزة قياس المغناطيسية ووحدات التحكم الدقيقة.
Attiny85 خطوة عداد مخطط الدائرة
التخطيطي لعداد خطوة MPU6050 موضح أدناه:
توضح الصورة أعلاه مخطط الدائرة لربط MPU6050 وشاشة OLED مع Attiny85 IC. يجب تنفيذ الواجهة بين MPU6050 و OLED Display و Arduino باستخدام بروتوكول I2C. ومن ثم ، فإن SCLPin (PB2) من ATtiny85 متصل بـ SCLPin لشاشة MPU6050 و OLED على التوالي. وبالمثل ، فإن SDAPin (PB0) الخاص بـ ATtiny85 متصل بـ SDAPin لشاشة MPU6050 و OLED. يتم أيضًا توصيل زري ضغط بالدبوس PB3 و PB4 في ATtiny85 IC. يمكن استخدام هذه الأزرار لتمرير النص أو تغيير النص المعروض.
ملاحظة: اتبع برنامجنا التعليمي السابق Programming ATtiny85 IC مباشرة من خلال USB باستخدام Digispark Bootloader لبرمجة ATtiny85 IC عبر USB و Digispark Boot-loader
تصنيع ثنائي الفينيل متعدد الكلور لعداد خطوة Attiny85
تم الانتهاء من التخطيطي ، ويمكننا المضي قدمًا في وضع PCB. يمكنك تصميم ثنائي الفينيل متعدد الكلور باستخدام أي برنامج ثنائي الفينيل متعدد الكلور من اختيارك. لقد استخدمنا EasyEDA لتصنيع ثنائي الفينيل متعدد الكلور لهذا المشروع.
فيما يلي عروض النماذج ثلاثية الأبعاد للطبقة العليا والطبقة السفلية من Step Counter PCB:
يتوفر أيضًا تخطيط PCB للدائرة أعلاه للتنزيل باسم Gerber من الرابط أدناه:
- ملف Gerber لـ ATtiny85 Step Counter
طلب PCB من PCBWay
الآن بعد الانتهاء من التصميم ، يمكنك متابعة طلب PCB:
الخطوة 1: ادخل إلى https://www.pcbway.com/ ، قم بالتسجيل إذا كانت هذه هي المرة الأولى لك. ثم ، في علامة التبويب PCB Prototype ، أدخل أبعاد PCB وعدد الطبقات وعدد PCB الذي تحتاجه.
الخطوة 2: تابع بالنقر فوق الزر "اقتباس الآن". سيتم نقلك إلى صفحة حيث يتم تعيين بعض المعلمات الإضافية مثل نوع اللوحة والطبقات والمواد الخاصة بثنائي الفينيل متعدد الكلور والسمك والمزيد ، يتم تحديد معظمها افتراضيًا ، إذا كنت تختار أي معلمات محددة ، يمكنك تحديد هنا.
الخطوة 3: الخطوة الأخيرة هي تحميل ملف Gerber ومتابعة الدفع. للتأكد من أن العملية سلسة ، يتحقق PCBWAY مما إذا كان ملف Gerber الخاص بك صالحًا قبل متابعة الدفع. بهذه الطريقة ، يمكنك التأكد من أن ثنائي الفينيل متعدد الكلور الخاص بك سهل التصنيع وسيصل إليك كما هو ملتزم.
تجميع ثنائي الفينيل متعدد الكلور ATtiny85 Step Counter
بعد بضعة أيام ، تلقينا ثنائي الفينيل متعدد الكلور في عبوة أنيقة وكانت جودة ثنائي الفينيل متعدد الكلور جيدة كما هو الحال دائمًا. الطبقة العليا والطبقة السفلية للوحة موضحة أدناه:
بعد التأكد من صحة المسارات وآثار الأقدام. شرعت في تجميع ثنائي الفينيل متعدد الكلور. تبدو اللوحة الملحومة تمامًا كما يلي:
ATtiny85 شرح رمز عداد الخطوة
يتم تقديم رمز عداد خطوات Arduino الكامل في نهاية المستند. نحن هنا نوضح بعض الأجزاء المهمة من الكود.
يستخدم الكود مكتبات TinyWireM.h & TinyOzOLED.h. يمكن تنزيل مكتبة TinyWireM من Library Manager في Arduino IDE وتثبيتها من هناك. لذلك ، افتح Arduino IDE وانتقل إلى Sketch <Include Library <Manage Libraries . ابحث الآن عن TinyWireM.h وقم بتثبيت مكتبة TinyWireM بواسطة Adafruit.
بينما يمكن تنزيل مكتبة TinyOzOLED.h من الروابط المحددة.
بعد تثبيت المكتبات على Arduino IDE ، ابدأ الكود بتضمين ملفات المكتبات المطلوبة.
# تضمين "TinyWireM.h" #include "TinyOzOLED.h"
بعد تضمين المكتبات ، حدد المتغيرات لتخزين قراءات مقياس التسارع.
intaccelX ، التسريع ، التسريع ؛
داخل حلقة الإعداد () ، قم بتهيئة مكتبة الأسلاك وإعادة تعيين المستشعر من خلال سجل إدارة الطاقة ، كما تقوم أيضًا بتهيئة اتصال I2C لشاشة OLED. ثم في الأسطر التالية ، اضبط اتجاه العرض وأدخل عنوان السجل لقيم مقياس التسارع والجيروسكوب.
TinyWireM.begin () ، OzOled.init () ، OzOled.clearDisplay () ، OzOled.setNormalDisplay () ، OzOled.sendCommand (0xA1) ، OzOled.sendCommand (0xC8) ، TinyWireM.beginTransmission (mpu) ؛ TinyWireM.write (0x6B) ؛ TinyWireM.write (0b00000000) ؛ TinyWireM.write (0x1B) ؛
في دالة getAccel () ، ابدأ بقراءة بيانات مقياس التسارع. يتم تخزين البيانات الخاصة بكل محور في وحدتي بايت (علوي وسفلي) أو سجلات. من أجل قراءتها جميعًا ، ابدأ بالسجل الأول ، وباستخدام الدالة RequiestFrom () ، نطلب قراءة جميع السجلات الستة للمحاور X و Y و Z. ثم نقرأ البيانات من كل سجل ، ولأن المخرجات مكملة لاثنين ، قم بدمجها بشكل مناسب للحصول على قيم مقياس التسارع الكاملة.
voidgetAccel () {TinyWireM.beginTransmission (mpu) ، TinyWireM.write (0x3B) ؛ TinyWireM.endTransmission () ، TinyWireM.requestFrom (mpu، 6) ؛ AccelX = TinyWireM.read () << 8-TinyWireM.read () ؛ AccelY = TinyWireM.read () << 8-TinyWireM.read () ؛ AccelZ = TinyWireM.read () << 8-TinyWireM.read () ؛ }
الآن داخل دالة الحلقة ، اقرأ أولاً قيم المحور X و Y و Z وبعد الحصول على قيم 3 محاور ، احسب متجه التسارع الكلي بأخذ الجذر التربيعي لقيم المحور X و Y و Z. ثم احسب الفرق بين المتجه الحالي والمتجه السابق وإذا كان الفرق أكبر من 6 ، فقم بزيادة عدد الخطوات.
getAccel () ، المتجه = الجذر التربيعي ((تسريع * تسريع) + (تسريع * تسريع) + (تسريع * تسريع Z)) Totalvector = ناقل - متجه سابق ؛ if (totalvector> 6) {Steps ++ ؛ } OzOled.printString ("خطوات"، 0، 4) ؛ OzOled.printNumber (خطوات ، 0 ، 8 ، 4) ؛ المتجهات السابقة = ناقلات ؛ تأخير (600) ؛
لنأخذ Arduino Step Counter للتنزه
بمجرد الانتهاء من تجميع PCB ، قم بتوصيل ATtiny85 بلوحة المبرمج ، وقم بتحميل الكود. الآن قم بإعداد عداد الخطوات في يديك وابدأ في المشي خطوة بخطوة ، يجب أن يعرض عدد الخطوات على OLED. في بعض الأحيان يزيد من عدد الخطوات عندما يهتز الإعداد بسرعة كبيرة أو ببطء شديد.
هذه هي الطريقة التي يمكنك بها بناء عداد الخطوات الخاص بك باستخدام ATtiny85 و MPU6050. يمكن أيضًا العثور على العمل الكامل للمشروع في الفيديو المرتبط أدناه. آمل أن تكون قد استمتعت بالمشروع ووجدت أنه من المثير للاهتمام بناء مشروعك الخاص. إذا كان لديك أي أسئلة ، فيرجى تركها في قسم التعليقات أدناه.