جدول المحتويات:

شاشة LCD مع منزل ذكي: 5 خطوات
شاشة LCD مع منزل ذكي: 5 خطوات

فيديو: شاشة LCD مع منزل ذكي: 5 خطوات

فيديو: شاشة LCD مع منزل ذكي: 5 خطوات
فيديو: ☑️ LCD أردوينو للمبتدئين - (26) فهم واستخدام شاشة 2024, يوليو
Anonim
شاشة LCD مع منزل ذكي
شاشة LCD مع منزل ذكي

اليوم ، حصلت على شاشة محرك المنفذ التسلسلي لـ 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

MCU الاتصالات
MCU الاتصالات
MCU الاتصالات
MCU الاتصالات
MCU الاتصالات
MCU الاتصالات
MCU الاتصالات
MCU الاتصالات

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. كل ما عليك فعله هو كتابة هذه البيانات في الوظيفة المقابلة كقيمة إرجاع.

الخطوة 5: تأثير العملية الفعلية

موصى به: