جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
اليوم ، حصلت على شاشة محرك المنفذ التسلسلي لـ STONE ، والتي يمكنها التواصل من خلال المنفذ التسلسلي لـ MCU ، ويمكن تصميم تصميم منطق واجهة المستخدم لهذه الشاشة مباشرةً باستخدام برنامج VGUS المتوفر على موقع STONE الرسمي على الويب ، وهو مناسب جدًا لنا. لذلك أخطط لاستخدامه في صنع جهاز تحكم بسيط ، والذي يتضمن التحكم في الأضواء المختلفة (غرفة المعيشة ، المطبخ ، غرفة الأطفال ، الحمام). في نفس الوقت ، يمكن جمع درجة الحرارة الداخلية والخارجية والرطوبة وجودة الهواء. هذا مجرد عرض توضيحي بسيط ، ويمكنك إجراء تطوير ثانوي من خلال الكود الذي قدمته. يمكن الانتقال إلى بعض البرامج التعليمية الأساسية حول شاشة STONE:
يحتوي موقع الويب على مجموعة متنوعة من المعلومات حول النموذج والمستخدم ووثائق التصميم ، بالإضافة إلى دروس الفيديو. لن أخوض في الكثير من التفاصيل هنا.
الخطوة 1: تصميم واجهة المستخدم
محل تصوير
لقد قمت بتصميم صفحتي واجهة المستخدم التاليتين باستخدام Photoshop:
يحتوي هذا المشروع على الصفحتين أعلاه في المجموع. "الضوء" و "المستشعر" في الزاوية اليمنى العليا هما أزرار التبديل لهاتين الصفحتين.
في صفحة "Light" ، يمكنك التحكم في جميع أنواع المصابيح في منزلك. في صفحة "Sensor" ، يمكنك التحقق من القيم التي تم الكشف عنها بواسطة أجهزة الاستشعار المختلفة.
بعد تصميم الصفحتين أعلاه ، يمكننا إجراء تصميم منطقي للزر من خلال برنامج STONE TOOL المتوفر على موقع STONE الرسمي.
تجدر الإشارة إلى أن مصدر الساعة المستخدم لعرض الوقت هنا هو مصدر الساعة لشاشة العرض ، وليس مصدر ساعة MCU.
تأثير تبديل صفحة TAB
لم يتم العثور على مكون تبديل صفحة TAB في برنامج STONE TOOL ، لذلك فكرت في طريقة أخرى لتحقيق تأثير تبديل صفحة TAB.
من خلال الملاحظة التي أقدمها ، يمكن العثور على صورتين لواجهة المستخدم أن الصورتين أعلاه هما نص "خفيف" و "مستشعر" ، والفرق هو أن حجم البكسل مختلف ، لذلك نحتاج فقط إلى وضع موضع البكسلين مضبوطًا على نفس النص ، ثم من خلال الزاوية اليسرى العلوية للوقت والتاريخ للرجوع إليه ، يمكنك تحقيق علامة التبويب لتبديل التأثير.
منطق الزر
خذ زر "غرفة المعيشة" كمثال. عندما يضغط المستخدم على هذا الزر ، سترسل شاشة عرض المنفذ التسلسلي STONE تعليمات البروتوكول المقابلة من خلال المنفذ التسلسلي. بعد تلقي هذه التعليمات ، ستقوم وحدة MCU الخاصة بالمستخدم بتحليل البروتوكول للتحكم في حالة تبديل الأضواء المتصلة بوحدة MCU.
اقتناء أجهزة الاستشعار
خذ "جودة الهواء" على سبيل المثال: إذا كنت ترغب في الحصول على جودة الهواء الداخلي ، فيجب أن يكون لدينا وحدة MCU لجمع جودة الهواء ، ومستشعر جودة الهواء عندما يتم جمع عددي MCU من خلال خوارزمية تقارن إيجابيات وسلبيات جودة الهواء ، ثم يتم إرسال MCU عبر منفذ تسلسلي لعرض مساحة التخزين "جيد" أو "سيئ" ، لتغيير محتوى عرض "متغير النص 0" ، ومن ثم يمكن للمستخدم أن يرى بشكل بديهي مزايا مراقبة الجودة. يتم شرحها لاحقًا في رمز MCU.
الخطوة 2: MCU Communication
STM32 هي MCU التي يعرفها الجميع ، وهي نموذج MCU شائع في العالم. لذلك ، فإن النموذج المحدد لـ STM32 MCU الذي استخدمته في هذا المشروع هو STM32F103RCT6.
هناك العديد من سلاسل STM32 ، والتي يمكن أن تلبي متطلبات السوق المختلفة. يمكن تقسيم النواة إلى cortex-m0 و M3 و M4 و M7 ، ويمكن تقسيم كل نواة إلى التيار الرئيسي ، والأداء العالي ، والاستهلاك المنخفض للطاقة.
بحتة من منظور التعلم ، يمكنك اختيار F1 و F4 ، F1 يمثل النوع الأساسي ، استنادًا إلى نواة cortex-m3 ، التردد الرئيسي هو 72 ميجا هرتز ، يمثل F4 الأداء العالي ، استنادًا إلى نواة cortex-m4 ، الرئيسية التردد 180 م.
بالنسبة إلى F1 ، F4 (سلسلة 429 وما فوق) ، بصرف النظر عن النوى المختلفة وتحسين التردد الرئيسي ، فإن الميزة الواضحة للترقية هي وحدة تحكم LCD وواجهة الكاميرا ، ودعم SDRAM ، سيتم إعطاء هذا الاختلاف الأولوية في اختيار المشروع. ومع ذلك ، من منظور التدريس الجامعي والتعلم الأولي للمستخدمين ، لا تزال سلسلة F1 هي الخيار الأول. حاليًا ، تمتلك STM32 من سلسلة F1 أكبر كمية من المواد والمنتجات في السوق.
حول طريقة تثبيت وتنزيل البرامج في بيئة تطوير STM32 SCM ، لن أفعل المقدمة.
تهيئة GPIO
في هذا المشروع ، استخدمنا ما مجموعه 4 GPIO ، أحدها هو دبوس الإخراج PWM. لنلق نظرة أولاً على تهيئة ثلاثة منافذ GPIO عادية:
تعمل هذه الوظيفة على تهيئة PB0 / PB1 / PB2 الخاص بـ STM32F103C8 باعتباره دبوس الإخراج وتستدعيه من الوظيفة الرئيسية. بعد التهيئة ، نحتاج إلى منطق للتحكم في حالة الإخراج ، والمستوى العالي والمنخفض من GPIO ، لذلك كتبت الوظيفة على النحو التالي:
هذه وظيفة يمكنك فهمها بشكل حدسي من خلال اسم المتغير.
تهيئة المنفذ التسلسلي
جزء التهيئة للمنفذ التسلسلي موجود في uart.c:
ثم اتصل بـ uart_init في الوظيفة الرئيسية لتهيئة معدل البث بالباود للمنفذ التسلسلي البالغ 115200. تستخدم الدبابيس PA9 / PA10
تهيئة PWM
خطوات محددة:
1. تعيين ساعة RCC.
2. ضبط ساعة GPIO ؛ يجب ضبط وضع GPIO على GPIO_Model_AF_PP ، أو على وظيفة GPIO_PinRemapConfig () إذا تطلب الأمر إعادة رسم خريطة الدبوس.
3. تعيين السجلات ذات الصلة من TIMx الموقت.
4. تعيين PWM ذات الصلة سجل TIMx الموقت.
أ. ضبط وضع PWM
باء - تعيين دورة العمل (حساب الصيغة)
ج. تعيين قطبية مقارنة الإخراج (تم تقديمه مسبقًا)
D. والأهم من ذلك ، تمكين حالة الإخراج لـ TIMx وتمكين إخراج PWM لـ TIMx ؛ بعد اكتمال الإعدادات ذات الصلة ، يتم تشغيل مؤقت TIMx بواسطة TIMx_Cmd () للحصول على خرج PWM. استدعاء هذا TIM3_PWM_Init من الوظيفة الرئيسية.
الخطوة الثالثة: كتابة كود المنطق
عرض تعريف عنوان المكون
تحتوي مكونات العرض على عناوين منفصلة ، وهنا قمت بكتابتها جميعًا على أنها تعريفات ماكرو: استقبال البيانات التسلسلية
بالنظر إلى المعلومات حول شاشة STONE ، يمكنك أن ترى أنه عند الضغط على الزر ، يرسل المنفذ التسلسلي الموجود على الشاشة بروتوكولات بالتنسيق المناسب ، والتي يمكن للمستخدم MCU تلقيها وتحليلها. عند الضغط على الزر ، يرسل المنفذ التسلسلي الموجود على الشاشة تسعة بايت من البيانات ، بما في ذلك بيانات المستخدم. يتم كتابة استقبال البيانات التسلسلية في Handler: يتم تخزين البيانات المستلمة في مصفوفة "USART_RX_BUF". في هذا المشروع ، يتم إصلاح طول الاستلام. عندما يكون طول الاستقبال أكثر من 9 بايت ، يتم الحكم على الطرف المستقبل.
التحكم في حالة تبديل المصباح
في الوظيفة الرئيسية ، كتبت بعض الرموز المنطقية للتحكم في حالة تبديل المصباح: كما نرى ، يحدد الرمز أولاً ما إذا كانت بيانات المنفذ التسلسلي قد تم استلامها ، وعندما يتم استلام بيانات المنفذ التسلسلي ، يحدد الزر المستخدم يضغط على شاشة العرض. الأزرار المختلفة على الشاشة لها عناوين مختلفة ، والتي يمكن رؤيتها في برنامج STONE TOOL: عندما يضغط المستخدم على زر "Living Room" ، فإن البتتين الرابعة والخامسة من البيانات المرسلة بواسطة المنفذ التسلسلي لشاشة العرض هي عنوان الزر. نظرًا لأن الجزء الرابع من جميع الأزرار التي تم تعيينها هنا هو 0x00 ، يمكننا الحكم على الزر الذي يضغط عليه المستخدم من خلال الحكم المباشر على بيانات البت الخامس. بعد الحصول على الزر الذي ضغط عليه المستخدم ، نحتاج إلى الحكم على بيانات المستخدم الواردة عند الضغط على الزر ، وهو الرقم الثامن من البيانات المرسلة من شاشة العرض. لذلك ، نقوم بعمل عنصر التحكم التالي: كتابة معلمة عنوان الزر وبيانات المستخدم في وظيفة "Light_Contral" للتحكم في حالة تشغيل وإيقاف الضوء. كيان وظيفة Light_Contral هو كما يلي: كما ترى ، إذا كان عنوان الزر هو "غرفة المعيشة" وكانت بيانات المستخدم "LightOn" ، فسيتم تعيين دبوس PB0 في MCU على إخراج عالي المستوى ، ويضيء المصباح. الأزرار الثلاثة الأخرى متشابهة ، لكنني لن أكمل هنا.
خرج PWM
في واجهة المستخدم التي صممتها ، يوجد منظم منزلق ، يستخدم للتحكم في سطوع ضوء "غرفة الأطفال". يتم تنفيذ MCU بواسطة PWM. دبوس الإخراج PWM هو PB5. الكود هو كما يلي: الضبط المنزلق مضبوط على قيمة دنيا قدرها 0x00 وقيمة قصوى تبلغ 0x64. عند الانزلاق ، سيرسل المنفذ التسلسلي لشاشة العرض أيضًا العناوين والبيانات ذات الصلة ، ثم يقوم بتعيين نسبة العمل لإخراج PWM عن طريق استدعاء الوظيفة التالية:
الخطوة 4: اقتناء أجهزة الاستشعار
في صفحة "Sensor" من شاشة العرض ، توجد أربعة بيانات من أجهزة الاستشعار.
تحتوي البيانات أيضًا على عنوان تخزين في الشاشة ، ويمكننا تغيير المحتوى الحقيقي ببساطة عن طريق كتابة البيانات إلى هذه العناوين من خلال المنفذ التسلسلي لوحدة MCU.
هنا قمت بتنفيذ رمز بسيط:
يتم تحديث بيانات العرض كل 5 ثوانٍ ، وكتبت فقط عرضًا توضيحيًا بسيطًا لوظيفة جمع المستشعرات ذات الصلة ، لأنني لا أمتلك هذه المستشعرات في يدي.
في تطوير المشروع الحقيقي ، قد تكون هذه المستشعرات عبارة عن بيانات تم جمعها بواسطة ADC ، أو بيانات تم جمعها بواسطة واجهات اتصالات IIC و UART و SPI. كل ما عليك فعله هو كتابة هذه البيانات في الوظيفة المقابلة كقيمة إرجاع.