فهرست مطالب:

STONE Display +STM32 +قهوه ساز: 6 مرحله
STONE Display +STM32 +قهوه ساز: 6 مرحله

تصویری: STONE Display +STM32 +قهوه ساز: 6 مرحله

تصویری: STONE Display +STM32 +قهوه ساز: 6 مرحله
تصویری: "Ridiculous" Espresso Workflow Ever! #coffeegrinder #coffeemachine #espresso 2024, جولای
Anonim
STONE Display +STM32 +قهوه ساز
STONE Display +STM32 +قهوه ساز

من یک مهندس نرم افزار MCU هستم ، اخیراً پروژه ای دریافت کرده است که باید یک دستگاه قهوه ساز باشد ، نیازهای خانگی با عملکرد صفحه لمسی ، عملکرد خوب است ، در بالای صفحه انتخاب ممکن است خیلی خوب نباشد ، خوشبختانه ، این پروژه می تواند تصمیم بگیرد MCU برای استفاده از خودم ، همچنین می تواند برای تصمیم گیری در مورد صفحه استفاده شود ، بنابراین من STM32 را از این نوع MCU ساده و آسان برای استفاده انتخاب کردم ، صفحه نمایش من صفحه نمایش صفحه لمسی STONE را انتخاب کردم ، صفحه ساده و آسان برای استفاده است ، My STM32 MCU فقط از طریق ارتباط UART مناسب است.

صفحه نمایش LCD STONE ، که می تواند از طریق پورت سریال MCU ارتباط برقرار کند. در عین حال ، می توان با استفاده از STONE TOOL Box ارائه شده توسط وب سایت رسمی STONE ، طراحی منطقی رابط UI این صفحه نمایش را طراحی کرد که بسیار راحت است. بنابراین من قصد دارم از آن برای این پروژه دستگاه قهوه استفاده کنم. در همان زمان ، من به سادگی توسعه اولیه را ثبت می کنم. از آنجا که این پروژه شرکت من است ، من فقط یک نسخه ی نمایشی ساده ضبط می کنم و کد کامل را نمی نویسم. برخی از آموزش های اساسی در مورد صفحه نمایش سنگی می توانند به وب سایت مراجعه کنند: https://www.stoneitech.com/ این وب سایت دارای اطلاعات متنوعی در مورد مدل ، نحوه استفاده و اسناد طراحی و همچنین آموزش های ویدئویی است. در اینجا به جزئیات زیادی نمی پردازم.

مرحله 1: معرفی عملکرد صفحه نمایش دستگاه قهوه ساز

این پروژه دارای توابع زیر است: l

  • زمان و تاریخ کنونی را نمایش می دهد
  • چهار دکمه برای نمایش آمریکایی ، لاته ، کاپوچینو و اسپرسو روی صفحه نمایش وجود دارد.
  • مقدار فعلی دانه های قهوه ، شیر و قند قهوه را نشان می دهد
  • یک کادر نمایش متن وضعیت فعلی را نشان می دهد

با در نظر گرفتن این مفاهیم ، می توانید یک رابط UI طراحی کنید. STONE صفحه های لمسی در طراحی رابط کاربری نسبتاً ساده است ، کاربر از طریق نرم افزار PhotoShop رابط کاربری خوب و جلوه دکمه را طراحی می کند ، از طریق STONE TOOL Box تصاویر خوبی را روی صفحه طراحی می کند و دکمه های خود را با منطق STONE TOOL Box و داده های سریال مقدار بازگشتی خوب است ، توسعه برای شما بسیار آسان است.

مرحله 2: ایجاد تصاویر UI برای نمایش STONE

ایجاد تصاویر UI برای نمایش STONE
ایجاد تصاویر UI برای نمایش STONE
ایجاد تصاویر UI برای نمایش STONE
ایجاد تصاویر UI برای نمایش STONE
ایجاد تصاویر UI برای نمایش STONE
ایجاد تصاویر UI برای نمایش STONE

با توجه به نیازهای عملکردی ، من دو رابط نمایش UI زیر را ایجاد کردم ، یکی رابط اصلی و دیگری جلوه دکمه است.

استفاده از جعبه ابزار STONE در حال حاضر ، STONE TOOL را ارائه می دهد. این ابزار را برای ایجاد یک پروژه جدید باز کنید ، سپس رابط کاربری طراحی شده را برای نمایش تصاویر وارد کنید و دکمه های خود ، جعبه های نمایش متن و غیره را اضافه کنید. وب سایت رسمی STONE یک آموزش بسیار کامل در مورد نحوه استفاده از این نرم افزار دارد : https:/ /www.stoneitech.com/support/download/video

اثرات افزودن دکمه ها و نمایش قطعات در جعبه ابزار STONE به شرح زیر است:

جعبه ابزار STONE عملکرد نمایش شبیه سازی را دارد که از طریق آن می توانید اثر عملکرد رابط UI را مشاهده کنید:

در این مرحله ، صفحه نمایش UI من کامل است و تنها کاری که باید انجام دهم این است که کد MCU را بنویسم. فایلهای ایجاد شده توسط جعبه ابزار STONE را روی صفحه نمایشگر بارگیری کنید تا نتایج واقعی را ببینید.

مرحله 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

MCU STM32F103RCT6 عملکردهای قدرتمندی دارد. در اینجا پارامترهای اساسی MCU آمده است:

  • سری: STM32F10X l Kerne
  • ARM - COTEX32
  • سرعت: 72 مگاهرتز
  • رابط ارتباطی: CAN ، I2C ، IrDA ، LIN ، SPI ، UART/USART ، USB
  • تجهیزات جانبی: DMA ، کنترل موتور PWM ، PDR ، POR ، PVD ، PWM ، سنسور دما ، WDT
  • ظرفیت ذخیره سازی برنامه: 256 کیلوبایت
  • نوع حافظه برنامه: FLASH
  • ظرفیت RAM: 48K
  • ولتاژ - منبع تغذیه (Vcc/Vdd): 2 ولت ~ 3.6 ولت
  • نوسان ساز: داخلی
  • دمای کار: -40 ° C ~ 85 ° C
  • بسته بندی/مسکن: 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 برسد ، تایمر مقادیر دیگر را بارگذاری می کند.

به عنوان مثال ، وقتی تایمر را برای شمارش بالا تنظیم می کنیم ، مقدار شمارش تایمر برابر arr است و با 0 پاک می شود و دوباره محاسبه می شود

تعداد تایمر بارگیری می شود و یک بار به روز می شود

محاسبه فرمول زمان به روز رسانی Tout = ((arr +1)*(PSC +1))/Tclk

مشتق فرمول: Talk منبع ساعت تایمر است ، در اینجا 72 مگاهرتز است

فرکانس ساعت اختصاص داده شده را تقسیم می کنیم ، مقدار تقسیم فرکانس را به عنوان PSC مشخص می کنیم ، سپس Talk خود را به PSC +1 تقسیم می کنیم ، فرکانس نهایی تایمر ما Tclk/(PSC +1) مگاهرتز است

بنابراین منظور ما از فرکانس این است که ما 1 عدد Talk over PSC +1 M Numbers (1M = 10 ^ 6) داریم و زمان هر عدد PSC +1 /Talk است و به راحتی می توان فهمید که معکوس از فرکانس دوره است ، و دوره برای هر عدد در اینجا PSC +1 /ثانیه مکالمه است و سپس از 0 به arr می رویم (arr +1)*(PSC +1) /Tclk

به عنوان مثال ، بیایید arr = 7199 و PSC = 9999 را تنظیم کنیم

ما 72 مگاهرتز را به 1+9999 برابر با 7200 هرتز تقسیم کردیم

این 9000 شمارش در ثانیه است و هر شمارش 1/7 ، 200 ثانیه است

بنابراین ما 9000 عدد را در اینجا ضبط می کنیم تا به روزرسانی تایمر برویم (7199+1)*(1/7200) = 1s ، بنابراین 1s به یک به روز رسانی می رود.

void TIM3_Int_Init (u16 arr ، u16 psc) {

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure؛ NVIC_InitTypeDef NVIC_InitStructure ؛ RCC_APB1PeriphClockCmd (RCC_APB1Periph_TIM3 ، ENABLE) ؛

// ساعت 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 ساعت به شما پاسخ می دهم.

مرحله ششم: Watch Dog

Watch Dog
Watch Dog
Watch Dog
Watch Dog

برای جلوگیری از خرابی سیستم در حین اجرای برنامه ، من نگهبان را اضافه کردم. در واقع ، همه پروژه هایی که از MCU استفاده می کنند ، به طور کلی از یک نگهبان استفاده می کنند.

STM32 دارای دو نگهبان داخلی است که امنیت ، دقت زمان و انعطاف پذیری بیشتری را ارائه می دهد. از دو دستگاه دیده بان (ناظر مستقل و ناظر پنجره) می توان برای تشخیص و رفع خطاهای ناشی از خطاهای نرم افزاری استفاده کرد. هنگامی که شمارنده به یک مقدار زمان تعیین شده مشخص می شود ، وقفه (فقط نگهبان پنجره) یا تنظیم مجدد سیستم ایجاد می شود. ناظر مستقل (IWDG):

با استفاده از یک ساعت اختصاصی با سرعت پایین (LSI) کار می کند ، حتی در صورت خرابی ساعت اصلی کار می کند.

برای استفاده در شرایطی که نگهبان باید کاملاً مستقل در خارج از برنامه اصلی کار کند و نیاز به دقت کم دارد ، مناسب است. نگهبان پنجره (WWDG):

پس از تقسیم فرکانس توسط ساعت از ساعت APB1 حرکت می کند. تشخیص عملکرد غیر معمول دیر یا زودرس برنامه از طریق یک پنجره زمانی قابل تنظیم. مناسب برای برنامه هایی که برای عملکرد دقیق زمان بندی ویندوز به نگهبان نیاز دارند.

int main (باطل) {

delay_init ()؛

// تأخیر 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 (اسپرسو ، USART_RX_BUF [8]) ؛

زنگ تفريح؛

مورد Americano:

CoffeeSelect (Americano ، USART_RX_BUF [8]) ؛

منطق اصلی در تابع Main به شرح زیر است:

u8 timer_cnt = 0؛

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

{

if (TIM_GetITStatus (TIM3، TIM_IT_Update)! = RESET)

{

TIM_ClearITPendingBit (TIM3 ، TIM_IT_Update) ؛

timer_cnt ++؛

if (timer_cnt> = 200)

{

milk_send [6] = شیر ()؛

در نهایت ، کد را در وقفه تایمر اضافه کنید: در وقفه تایمر ، هدف من این است که میزان قهوه و شیر باقی مانده را بررسی کنم ، و سپس مقدار تشخیص داده شده را از طریق یک پورت سریال به صفحه نمایش ارسال کنم. اندازه گیری میزان باقی مانده شیر و دانه های قهوه معمولاً توسط حسگرها انجام می شود. روشهای ساده شامل سنسورهای فشار است که وزن فعلی شیر و دانه های قهوه را اندازه گیری می کند تا مقدار باقی مانده را تعیین کند.

در آخرین مورد بنویسید

این مقاله فقط روند توسعه ساده پروژه من را ثبت می کند. با توجه به محرمانه بودن پروژه شرکت ، رابط صفحه نمایش UI که من استفاده کردم نیز توسط خودم ساخته شده است ، نه رابط کاربری واقعی UI این پروژه. بخش کد STM32 فقط درایور جانبی MCU و کد منطقی مربوطه را اضافه می کند. همچنین با توجه به محرمانه بودن پروژه شرکت ، بخش کلیدی فناوری خاصی ارائه نشده است ، لطفاً درک کنید. با این حال ، با توجه به کد ارائه شده ، با صفحه نمایش STONE همکاری کنید. دوستان من که مهندس نرم افزار نیز هستند ، فقط چند روز وقت لازم دارند تا بخشهای فنی کلیدی را به فریم ورک کد من اضافه کنند تا پروژه تکمیل شود.

برای آشنایی بیشتر با پروژه اینجا را کلیک کنید