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

STONE Display + STM32 + ماكينة صنع القهوة: 6 خطوات
STONE Display + STM32 + ماكينة صنع القهوة: 6 خطوات

فيديو: STONE Display + STM32 + ماكينة صنع القهوة: 6 خطوات

فيديو: STONE Display + STM32 + ماكينة صنع القهوة: 6 خطوات
فيديو: Wash Machine with HMI Touch Screen Display | STONE Tech 2024, يوليو
Anonim
شاشة STONE + STM32 + ماكينة صنع القهوة
شاشة STONE + STM32 + ماكينة صنع القهوة

أنا مهندس برمجيات MCU ، تلقيت مؤخرًا مشروعًا هو أن تكون آلة قهوة ، المتطلبات المنزلية مع تشغيل شاشة تعمل باللمس ، الوظيفة جيدة ، فوق اختيار الشاشة قد لا يكون جيدًا جدًا ، لحسن الحظ ، هذا المشروع يمكنني أن أقرر ما MCU لاستخدام نفسي ، يمكن أيضًا استخدامه لتحديد الشاشة ، لذلك اخترت STM32 من هذا النوع من MCU البسيط والسهل الاستخدام ، وشاشة العرض التي اخترتها لشاشة STONE التي تعمل باللمس ، والشاشة بسيطة وسهلة الاستخدام ، STM32 MCU فقط من خلال اتصال UART مناسب لها.

شاشة عرض LCD التسلسلية STONE ، والتي يمكنها التواصل من خلال المنفذ التسلسلي لـ MCU. في الوقت نفسه ، يمكن تصميم التصميم المنطقي لواجهة UI لشاشة العرض هذه مباشرةً باستخدام STONE TOOL Box الذي يوفره موقع STONE الرسمي ، وهو مناسب جدًا. لذلك سأستخدمه في مشروع آلة القهوة هذا. في الوقت نفسه ، سأقوم ببساطة بتسجيل التطور الأساسي. نظرًا لأن هذا مشروع تابع لشركتي ، فسوف أسجل فقط عرضًا توضيحيًا بسيطًا ولن أكتب الكود الكامل. يمكن أن تنتقل بعض البرامج التعليمية الأساسية حول شاشة عرض الحجر إلى موقع الويب: https://www.stoneitech.com/ يحتوي موقع الويب على مجموعة متنوعة من المعلومات حول النموذج ، والاستخدام ، ووثائق التصميم ، بالإضافة إلى دروس الفيديو. لن أخوض في الكثير من التفاصيل هنا.

الخطوة 1: مقدمة وظيفة شاشة عرض آلة القهوة

هذا المشروع لديه الوظائف التالية: l

  • يعرض الوقت والتاريخ الحاليين
  • توجد أربعة أزرار على الشاشة للأمريكانو واللاتيه والكابتشينو والإسبريسو.
  • يعرض المقدار الحالي لحبوب القهوة المتبقية والحليب وسكر القهوة
  • يعرض مربع عرض النص الحالة الحالية

مع وضع هذه المفاهيم في الاعتبار ، يمكنك تصميم واجهة مستخدم. STONE من الشاشات التي تعمل باللمس في تصميم واجهة المستخدم بسيط نسبيًا ، حيث يقوم المستخدم من خلال برنامج PhotoShop بتصميم واجهة مستخدم جيدة وتأثير الزر ، من خلال STONE TOOL Box لتصميم صور جيدة في الشاشة ، وإضافة الأزرار الخاصة بك باستخدام منطق STONE TOOL Box و تسلسل القيمة المرتجعة على ما يرام ، من السهل جدًا تطويرها.

الخطوة 2: اصنع صور واجهة المستخدم لشاشة STONE

جعل صور واجهة المستخدم لعرض الحجر
جعل صور واجهة المستخدم لعرض الحجر
جعل صور واجهة المستخدم لعرض الحجر
جعل صور واجهة المستخدم لعرض الحجر
جعل صور واجهة المستخدم لعرض الحجر
جعل صور واجهة المستخدم لعرض الحجر

وفقًا للمتطلبات الوظيفية ، قمت بعمل واجهتي عرض UI التاليتين ، إحداهما هي الواجهة الرئيسية والأخرى هي تأثير الزر.

استخدام STONE TOOL Box: حاليًا ، يوفر STONE أداة. افتح هذه الأداة لإنشاء مشروع جديد ، ثم قم باستيراد واجهة المستخدم المصممة لعرض الصور ، وإضافة الأزرار الخاصة بك ، ومربعات عرض النص ، وما إلى ذلك. يحتوي الموقع الرسمي لـ STONE على برنامج تعليمي كامل للغاية حول كيفية استخدام هذا البرنامج : https: / /www.stoneitech.com/support/download/video

فيما يلي تأثيرات إضافة الأزرار وعرض المكونات في STONE TOOL Box:

STONE TOOL Box لديه وظيفة عرض المحاكاة ، والتي من خلالها يمكنك رؤية تأثير التشغيل لواجهة UI:

في هذه المرحلة ، اكتملت شاشة واجهة المستخدم الخاصة بي ، وكل ما علي فعله هو كتابة كود MCU ، قم بتنزيل الملفات التي تم إنشاؤها بواسطة STONE TOOL Box على شاشة العرض لرؤية النتائج الفعلية.

الخطوة 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU لها وظائف قوية. فيما يلي المعلمات الأساسية لـ MCU:

  • السلسلة: STM32F10X l Kerne
  • ARM - كوتكس 32
  • السرعة: 72 ميجا هرتز
  • واجهة الاتصال: CAN، I2C، IrDA، LIN، SPI، UART / USART، USB
  • المعدات الطرفية: DMA ، التحكم في المحرك PWM ، PDR ، POR ، PVD ، PWM ، مستشعر درجة الحرارة ، WDT
  • سعة تخزين البرنامج: 256 كيلو بايت
  • نوع ذاكرة البرنامج: فلاش
  • سعة ذاكرة الوصول العشوائي: 48 كيلو
  • الجهد - مصدر الطاقة (Vcc / Vdd): 2 فولت ~ 3.6 فولت
  • مذبذب: داخلي
  • درجة حرارة التشغيل: -40 درجة مئوية ~ 85 درجة مئوية
  • العبوة / السكن: 64 عمرًا

في هذا المشروع ، سأستخدم UART و GPIO و Watch Dog و Timer لـ STM32F103RCT6. تم توثيق تطوير هذه الأجهزة الطرفية أدناه. يستخدم STM32 تطوير برامج Keil MDK ، وهو أمر ليس غريباً عليك ، لذلك لن أقدم طريقة تثبيت هذا البرنامج. يمكن محاكاة STM32 عبر الإنترنت عن طريق j-link أو st-link وأدوات المحاكاة الأخرى. الصورة التالية هي لوحة الدوائر STM32 التي استخدمتها:

الخطوة 4: المسلسل UART

مسلسل UART
مسلسل UART
مسلسل UART
مسلسل UART
مسلسل UART
مسلسل UART

يحتوي STM32F103RCT6 على العديد من المنافذ التسلسلية. في هذا المشروع ، استخدمت قناة المنفذ التسلسلي PA9 / PA10 ، وتم تعيين معدل البث بالباود للمنفذ التسلسلي على 115200.

GPIO

في واجهة المستخدم لهذا المشروع ، هناك ما مجموعه أربعة أزرار ، والتي هي في الواقع لصنع أربعة أنواع من القهوة. في ماكينة القهوة ، يتم التحكم في عدد حبوب القهوة واستهلاك الحليب وتدفق المياه لأنواع مختلفة من القهوة عن طريق التحكم في المستشعرات والمرحلات ، بينما أتحكم ببساطة في دبوس GPIO أولاً.

الخطوة 5: الموقت

الموقت
الموقت
الموقت
الموقت

عند تهيئة المؤقت ، حدد معامل تقسيم التردد PSC ، وهنا ساعة نظامنا (72 ميجا هرتز) لتقسيم التردد

ثم حدد قيمة إعادة التحميل arr ، مما يعني أنه عندما يصل المؤقت إلى هذا الوصول ، سيعيد المؤقت تحميل القيم الأخرى.

على سبيل المثال ، عندما نضبط عداد الوقت على العد ، فإن قيمة عداد المؤقت تساوي arr وسيتم مسحها بمقدار 0 وإعادة حسابها

يتم إعادة تحميل عداد المؤقت ويتم تحديثه مرة واحدة

احسب صيغة وقت التحديث Tout = ((arr + 1) * (PSC +1)) / Tclk

اشتقاق الصيغة: Talk هو مصدر الساعة للمؤقت ، هنا 72 ميجا هرتز

نقسم تردد الساعة المخصص ، ونحدد قيمة تقسيم التردد على أنها PSC ، ثم نقسم حديثنا إلى PSC +1 ، والتردد النهائي لمؤقتنا هو Tclk / (PSC +1) MHz

إذن ما نعنيه بالتردد هنا هو أن لدينا 1s من Talk عبر PSC +1 M Numbers (1M = 10 ^ 6) ، والوقت لكل رقم هو PSC +1 / Talk ، ومن السهل أن نفهم أن معكوس من التردد هي الفترة ، والمدة لكل رقم هنا PSC +1 / Talk seconds ثم ننتقل من 0 إلى arr هي (arr + 1) * (PSC +1) / Tclk

على سبيل المثال ، لنقم بتعيين arr = 7199 و PSC = 9999

قسمنا 72 ميجا هرتز إلى 9999 + 1 يساوي 7200 هرتز

هذا هو 9000 عدد في الثانية ، وكل عدد هو 1/7 ، 200 من الثانية

لذلك نحن نسجل 9000 رقم هنا للانتقال إلى تحديث المؤقت (7199 + 1) * (1/7200) = 1 ثانية ، لذلك يتم الانتقال إلى التحديث.

باطل TIM3_Int_Init (u16 arr ، u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure ؛ NVIC_InitTypeDef NVIC_InitStructure ؛ RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3 ، تمكين) ؛

// ساعة TIM_TimeBaseStructure. TIM_Period = arr ؛

TIM_TimeBaseStructure. TIM_Prescaler = psc ، TIM_TimeBaseStructure. TIM_ClockDivision = 0 ،

// TDTS = Tck_tim TIM_TimeBaseStructure. TIM_CounterMode = TIM_CounterMode_Up ؛ TIM_TimeBaseInit (TIM3 ، & TIM_TimeBaseStructure) ؛

يرجى الاتصال بنا إذا كنت بحاجة إلى إجراء كامل:

www.stoneitech.com/contact

سأرد عليك في غضون 12 ساعة.

الخطوة 6: مشاهدة الكلب

مشاهدة الكلب
مشاهدة الكلب
مشاهدة الكلب
مشاهدة الكلب

لمنع النظام من التعطل أثناء تشغيل البرنامج ، أضفت المراقبة. في الواقع ، تستخدم جميع المشاريع التي تستخدم MCU بشكل عام هيئة رقابة.

يحتوي STM32 على جهازي مراقبة مدمجين ، مما يوفر قدرًا أكبر من الأمان ودقة الوقت والمرونة. يمكن استخدام جهازي مراقبة (هيئة مراقبة مستقلة ومراقبة نافذة) لاكتشاف الأخطاء الناتجة عن أخطاء البرامج وحلها. عندما يصل العداد إلى قيمة مهلة معينة ، يتم تشغيل مقاطعة (مراقبة نافذة فقط) أو إعادة تعيين النظام. هيئة رقابة مستقلة (IWDG):

تعمل بواسطة ساعة مخصصة منخفضة السرعة (LSI) ، وهي تعمل حتى إذا فشلت الساعة الرئيسية.

وهي مناسبة للاستخدام في المواقف التي يطلب فيها من المراقب أن يعمل بشكل مستقل تمامًا خارج البرنامج الرئيسي ويتطلب دقة زمنية منخفضة. نافذة المراقبة (WWDG):

مدفوعة بالساعة من ساعة APB1 بعد تقسيم التردد. كشف عملية التطبيق المتأخرة أو المبكرة بشكل غير طبيعي من خلال نافذة زمنية قابلة للتكوين. مناسب للبرامج التي تتطلب وجود حراس حراسة لتعمل في توقيت دقيق لنظام التشغيل Windows.

int main (void) {

delay_init () ؛

// تأخير الحرف NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2) ؛

// NVIC INIT uart_init (115200) ؛

// UART INIT PAD_INIT () ؛

// Light Init IWDG_Init (4 ، 625) ؛

بينما (1) {

إذا (USART_RX_END)

{تبديل (USART_RX_BUF [5])

{

علبة اسبرسو:

CoffeeSelect (Espresso، USART_RX_BUF [8]) ؛

استراحة؛

حالة أمريكانو:

CoffeeSelect (Americano، USART_RX_BUF [8]) ؛

المنطق الرئيسي في الوظيفة الرئيسية هو كما يلي:

u8 timer_cnt = 0 ؛

باطل TIM3_IRQHandler (باطل) // TIM3

{

إذا كان (TIM_GetITStatus (TIM3 ، TIM_IT_Update)! = إعادة تعيين)

{

TIM_ClearITPendingBit (TIM3 ، TIM_IT_Update) ،

timer_cnt ++ ؛

إذا (timer_cnt> = 200)

{

milk_send [6] = milk () ؛

أخيرًا ، أضف الرمز في مقاطعة المؤقت: في مقاطعة المؤقت ، هدفي هو التحقق من كمية القهوة والحليب المتبقية ، ثم إرسال القيمة المكتشفة إلى شاشة العرض من خلال منفذ تسلسلي. عادة ما يتم قياس كمية الحليب المتبقية من حبوب البن بواسطة المستشعرات. تتضمن الطرق البسيطة مستشعرات الضغط ، والتي تقيس الوزن الحالي للحليب وحبوب القهوة لتحديد الكمية المتبقية.

اكتب في الماضي

تسجل هذه المقالة فقط عملية التطوير البسيطة لمشروعي. بالنظر إلى سرية مشروع الشركة ، فإن واجهة عرض واجهة المستخدم التي استخدمتها صنعت أيضًا بنفسي ، وليست واجهة عرض واجهة المستخدم الحقيقية لهذا المشروع. يضيف جزء الكود الخاص بـ STM32 فقط برنامج التشغيل المحيطي لـ MCU والشفرة المنطقية ذات الصلة. بالنظر أيضًا إلى سرية مشروع الشركة ، لم يتم تقديم الجزء التكنولوجي الرئيسي المحدد ، يرجى فهم ذلك. ومع ذلك ، وفقًا للرمز الذي قدمته ، تعاون مع شاشة عرض STONE. يحتاج أصدقائي الذين هم أيضًا مهندسو برمجيات إلى قضاء بضعة أيام فقط لإضافة الأجزاء التقنية الرئيسية إلى إطار عمل الكود الخاص بي لإكمال المشروع.

لمعرفة المزيد عن المشروع انقر هنا