সুচিপত্র:
- ধাপ 1: কফি মেশিন ডিসপ্লে স্ক্রিন ফাংশন ভূমিকা
- ধাপ 2: স্টোন ডিসপ্লের জন্য UI ছবি তৈরি করুন
- ধাপ 3: STM32F103RCT6
- ধাপ 4: UART সিরিয়াল
- ধাপ 5: টাইমার
- ধাপ 6: কুকুর দেখুন
ভিডিও: স্টোন ডিসপ্লে +STM32 +কফি মেকার: 6 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 07:56
আমি একজন এমসিইউ সফটওয়্যার ইঞ্জিনিয়ার, সম্প্রতি একটি প্রকল্প পেয়েছি একটি কফি মেশিন, একটি টাচ স্ক্রিন অপারেশন সহ গৃহস্থালির প্রয়োজনীয়তা, ফাংশন ভাল, স্ক্রিন সিলেকশনের উপরে হয়ত খুব ভালো নাও হতে পারে, সৌভাগ্যবশত, এই প্রকল্পটি আমি ঠিক করতে পারি এমসিইউ নিজেকে ব্যবহার করার জন্য, স্ক্রিন কি তা নির্ধারণ করতেও ব্যবহার করা যেতে পারে, তাই আমি এই ধরনের সহজ এবং সহজ এমসিইউ ব্যবহার করার জন্য STM32 বেছে নিয়েছি, ডিসপ্লে স্ক্রিন আমি STONE এর টাচ স্ক্রিন ডিসপ্লে বেছে নিয়েছি, স্ক্রিনটি সহজ এবং ব্যবহার করা সহজ, আমার STM32 MCU শুধুমাত্র UART যোগাযোগের মাধ্যমে এটি ঠিক আছে।
স্টোন সিরিয়াল এলসিডি ডিসপ্লে স্ক্রিন, যা MCU এর সিরিয়াল পোর্টের মাধ্যমে যোগাযোগ করতে পারে। একই সময়ে, এই ডিসপ্লে স্ক্রিনের UI ইন্টারফেসের লজিক ডিজাইন সরাসরি STONE এর অফিসিয়াল ওয়েবসাইটের দেওয়া STONE টুল বক্স ব্যবহার করে ডিজাইন করা যায়, যা খুবই সুবিধাজনক। তাই আমি এই কফি মেশিন প্রকল্পের জন্য এটি ব্যবহার করতে যাচ্ছি। একই সময়ে, আমি কেবল মৌলিক উন্নয়ন রেকর্ড করব। যেহেতু এটি আমার কোম্পানির একটি প্রকল্প, আমি কেবল একটি সাধারণ ডেমো রেকর্ড করব এবং সম্পূর্ণ কোডটি লিখব না। স্টোন ডিসপ্লে স্ক্রিন সম্পর্কে কিছু প্রাথমিক টিউটোরিয়াল ওয়েবসাইটে যেতে পারে: https://www.stoneitech.com/ ওয়েবসাইটটিতে মডেল, ব্যবহার এবং নকশা সংক্রান্ত ডকুমেন্টেশন এবং ভিডিও টিউটোরিয়াল সম্পর্কে বিভিন্ন তথ্য রয়েছে। আমি এখানে খুব বেশি বিশদে যাব না।
ধাপ 1: কফি মেশিন ডিসপ্লে স্ক্রিন ফাংশন ভূমিকা
এই প্রকল্পের নিম্নলিখিত ফাংশন আছে: ঠ
- বর্তমান সময় এবং তারিখ প্রদর্শন করে
- ডিসপ্লেতে আমেরিকানো, ল্যাটে, ক্যাপুচিনো এবং এসপ্রেসোর জন্য চারটি বোতাম রয়েছে।
- অবশিষ্ট কফি মটরশুটি, দুধ এবং কফি চিনি বর্তমান পরিমাণ প্রদর্শন করে
- একটি টেক্সট ডিসপ্লে বক্স বর্তমান অবস্থা প্রদর্শন করে
এই ধারণার কথা মাথায় রেখে, আপনি একটি UI ইন্টারফেস ডিজাইন করতে পারেন। UI ডিজাইনে টাচ স্ক্রিনের স্টোন তুলনামূলকভাবে সহজ, ব্যবহারকারী ফটোশপ সফটওয়্যারের মাধ্যমে ভাল UI ইন্টারফেস এবং বোতাম ইফেক্ট ডিজাইন করে, স্টোন টুল বক্সের মাধ্যমে স্ক্রিনে ভালো ছবি ডিজাইন করতে পারে, এবং স্টোন টুল বক্স লজিক দিয়ে আপনার নিজের বোতাম যুক্ত করতে পারে এবং সিরিয়াল ডেটা রিটার্ন ভ্যালু ঠিক আছে, আপনার বিকাশ করা খুব সহজ।
ধাপ 2: স্টোন ডিসপ্লের জন্য UI ছবি তৈরি করুন
কার্যকরী প্রয়োজনীয়তা অনুসারে, আমি নিম্নলিখিত দুটি UI ডিসপ্লে ইন্টারফেস তৈরি করেছি, একটি হল প্রধান ইন্টারফেস এবং অন্যটি হল বোতাম প্রভাব।
স্টোন টুল বক্সের ব্যবহার বর্তমানে, স্টোন টুল সরবরাহ করে। একটি নতুন প্রজেক্ট তৈরির জন্য এই টুলটি খুলুন, তারপর ছবি প্রদর্শনের জন্য ডিজাইন করা ইউআই আমদানি করুন, এবং আপনার নিজের বোতাম, টেক্সট ডিসপ্লে বক্স ইত্যাদি যোগ করুন, স্টোনের অফিসিয়াল ওয়েবসাইটে এই সফটওয়্যারটি কিভাবে ব্যবহার করতে হয় তার একটি সম্পূর্ণ টিউটোরিয়াল আছে : https:/ /www.stoneitech.com/support/download/video
স্টোন টুল বক্সে বোতাম যুক্ত করা এবং উপাদানগুলি প্রদর্শনের প্রভাবগুলি নিম্নরূপ:
স্টোন টুল বক্সে সিমুলেশন ডিসপ্লে ফাংশন রয়েছে, যার মাধ্যমে আপনি UI ইন্টারফেসের অপারেশন প্রভাব দেখতে পারেন:
এই মুহুর্তে, আমার UI ডিসপ্লে সম্পূর্ণ, এবং আমাকে যা করতে হবে তা হল MCU কোড লিখতে হবে।
ধাপ 3: STM32F103RCT6
STM32F103RCT6 MCU- এর শক্তিশালী ফাংশন রয়েছে। এখানে MCU এর মৌলিক পরামিতিগুলি রয়েছে:
- সিরিজ: STM32F10X l Kerne
- এআরএম - COTEX32
- গতি: 72 MHZ
- যোগাযোগ ইন্টারফেস: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
- পেরিফেরাল সরঞ্জাম: DMA, মোটর নিয়ন্ত্রণ PWM, PDR, POR, PVD, PWM, তাপমাত্রা সেন্সর, WDT
- প্রোগ্রাম সঞ্চয় ক্ষমতা: 256KB
- প্রোগ্রাম মেমরির ধরন: ফ্ল্যাশ
- র RAM্যাম ক্ষমতা: 48K
- ভোল্টেজ - পাওয়ার সাপ্লাই (Vcc/Vdd): 2 V ~ 3.6 V
- অসিলেটর: অভ্যন্তরীণ
- অপারেটিং তাপমাত্রা: -40 ° C ~ 85 °
- প্যাকেজ/আবাসন: 64-জীবন
এই প্রকল্পে, আমি UART, GPIO, ওয়াচ ডগ এবং STM32F103RCT6 এর টাইমার ব্যবহার করব। এই পেরিফেরালগুলির উন্নয়ন নীচে নথিভুক্ত করা হয়েছে। STM32 ব্যবহার করে Keil MDK সফটওয়্যার ডেভেলপমেন্ট, যা আপনার কাছে অপরিচিত নয়, তাই আমি এই সফটওয়্যারটির ইনস্টলেশন পদ্ধতি চালু করব না। STM32 কে j-link বা st-link এবং অন্যান্য সিমুলেশন টুল দ্বারা অনলাইনে নকল করা যায়। নিচের ছবিটি আমার ব্যবহৃত STM32 সার্কিট বোর্ড:
ধাপ 4: UART সিরিয়াল
STM32F103RCT6 এর বেশ কয়েকটি সিরিয়াল পোর্ট রয়েছে। এই প্রকল্পে, আমি সিরিয়াল পোর্ট চ্যানেল PA9/PA10 ব্যবহার করেছি, এবং সিরিয়াল পোর্ট বড রেট 115200 এ সেট করা হয়েছিল।
জিপিআইও
এই প্রকল্পের ইউজার ইন্টারফেসে, মোট চারটি বোতাম রয়েছে, যা আসলে চার ধরনের কফি তৈরি করে। কফি মেশিনে, কফির মটরশুটি, দুধের ব্যবহার এবং বিভিন্ন কফির পানির প্রবাহ নিয়ন্ত্রণ করা আসলে সেন্সর এবং রিলে নিয়ন্ত্রণের মাধ্যমে উপলব্ধি করা হয়, যখন আমি প্রথমে জিপিআইও পিন নিয়ন্ত্রণ করি।
ধাপ 5: টাইমার
টাইমার আরম্ভ করার সময়, ফ্রিকোয়েন্সি ডিভিশন সহগ PSC উল্লেখ করুন, ফ্রিকোয়েন্সি ডিভিশনের জন্য এখানে আমাদের সিস্টেম ক্লক (72MHz)
তারপর পুনরায় লোড মান arr নির্দিষ্ট করুন, যার মানে হল যে যখন আমাদের টাইমার এই arr পৌঁছাবে, টাইমার অন্যান্য মান পুনরায় লোড করবে।
উদাহরণস্বরূপ, যখন আমরা গণনা করার জন্য টাইমার সেট করি, তখন টাইমার গণনার মান arr এর সমান এবং 0 দ্বারা সাফ করা হবে এবং পুনরায় গণনা করা হবে
টাইমার গণনা পুনরায় লোড করা হয় এবং একবার একটি আপডেট হয়
আপডেট টাইম সূত্র Tout = ((arr +1)*(PSC +1))/Tclk গণনা করুন
সূত্র ডেরিভেশন: টক হল টাইমারের ঘড়ির উৎস, এখানে 72Mhz
আমরা বরাদ্দকৃত ঘড়ির ফ্রিকোয়েন্সি ভাগ করি, ফ্রিকোয়েন্সি ডিভিশন মান PSC হিসাবে নির্দিষ্ট করি, তারপর আমাদের টককে PSC +1 তে ভাগ করি, আমাদের টাইমারের চূড়ান্ত ফ্রিকোয়েন্সি হল Tclk/(PSC +1) MHz
সুতরাং এখানে ফ্রিকোয়েন্সি বলতে আমরা যা বুঝি তা হল PSC +1 M Numbers (1M = 10 ^ 6) এর উপর আমাদের 1s টক আছে এবং প্রতিটি সংখ্যার জন্য সময় হল PSC +1 /Talk ফ্রিকোয়েন্সি হল পিরিয়ড, এবং এখানে প্রতিটি সংখ্যার সময়কাল হল PSC +1 /টক সেকেন্ড এবং তারপর আমরা 0 থেকে arr এ যাই (arr +1)*(PSC +1) /Tclk
উদাহরণস্বরূপ, আসুন arr = 7199 এবং PSC = 9999 সেট করি
আমরা 72MHz কে 9999+1 এ ভাগ করেছি 7200Hz এর সমান
এটি প্রতি সেকেন্ডে 9, 000 গণনা এবং প্রতিটি গণনা এক সেকেন্ডের 1/7, 200
তাই টাইমার আপডেটে (7199+1)*(1/7200) = 1 সেকেন্ডে যাওয়ার জন্য আমরা এখানে 9, 000 নম্বর রেকর্ড করছি
অকার্যকর 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: কুকুর দেখুন
প্রোগ্রাম চলাকালীন সিস্টেমটি ক্র্যাশ হওয়া থেকে রক্ষা করার জন্য, আমি ওয়াচডগ যোগ করেছি। আসলে, এমসিইউ ব্যবহার করে এমন সমস্ত প্রকল্প সাধারণত একটি প্রহরী ব্যবহার করে।
STM32 এর দুটি অন্তর্নির্মিত ওয়াচডগ রয়েছে, যা বৃহত্তর নিরাপত্তা, সময় নির্ভুলতা এবং নমনীয়তা প্রদান করে। সফটওয়্যার ত্রুটি দ্বারা সৃষ্ট ত্রুটিগুলি সনাক্ত এবং সমাধান করার জন্য দুটি প্রহরী ডিভাইস (স্বাধীন প্রহরী এবং উইন্ডো প্রহরী) ব্যবহার করা যেতে পারে। যখন কাউন্টার একটি নির্দিষ্ট সময়সীমা মান পৌঁছায়, একটি বাধা (শুধুমাত্র উইন্ডো ওয়াচডগ) বা সিস্টেম রিসেট ট্রিগার করা হয়। স্বাধীন প্রহরী (IWDG):
একটি ডেডিকেটেড লো-স্পিড ক্লক (LSI) দ্বারা চালিত, মাস্টার ক্লক ব্যর্থ হলেও এটি কাজ করে।
এটি এমন পরিস্থিতিতে ব্যবহারের জন্য উপযুক্ত যেখানে প্রধান কর্মসূচির বাইরে সম্পূর্ণ স্বাধীনভাবে কাজ করার জন্য ওয়াচডগের প্রয়োজন হয় এবং কম সময়ের নির্ভুলতা প্রয়োজন। উইন্ডো ওয়াচডগ (WWDG):
ফ্রিকোয়েন্সি বিভাগের পরে APB1 ঘড়ি থেকে ঘড়ি দ্বারা চালিত। একটি কনফিগারযোগ্য টাইম উইন্ডোর মাধ্যমে অস্বাভাবিক দেরিতে বা অকাল অ্যাপ্লিকেশন অপারেশন সনাক্ত করুন। সুনির্দিষ্ট সময় উইন্ডোজে কাজ করার জন্য ওয়াচডগগুলির প্রয়োজন এমন প্রোগ্রামগুলির জন্য উপযুক্ত।
int main (void) {
delay_init ();
// বিলম্ব init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);
// NVIC INIT uart_init (115200);
// UART INIT PAD_INIT ();
// হালকা Init IWDG_Init (4, 625);
যখন (1) {
যদি (USART_RX_END)
{সুইচ (USART_RX_BUF [5])
{
কেস এসপ্রেসো:
CoffeeSelect (এসপ্রেসো, USART_RX_BUF [8]);
বিরতি;
কেস আমেরিকানো:
CoffeeSelect (Americano, USART_RX_BUF [8]);
প্রধান ফাংশনে মূল যুক্তি নিম্নরূপ:
u8 timer_cnt = 0;
অকার্যকর TIM3_IRQ হ্যান্ডলার (অকার্যকর) // টিআইএম 3
{
যদি (TIM_GetITStatus (TIM3, TIM_IT_Update)! = RESET)
{
TIM_ClearITPendingBit (TIM3, TIM_IT_Update);
timer_cnt ++;
যদি (timer_cnt> = 200)
{
milk_send [6] = দুধ ();
অবশেষে, টাইমার ইন্টারাপ্টে কোড যোগ করুন: টাইমার ইন্টারাপ্টে, আমার লক্ষ্য হল কফি এবং দুধ কতটা আছে তা পরীক্ষা করা, এবং তারপর একটি সিরিয়াল পোর্টের মাধ্যমে ডিসপ্লে স্ক্রিনে সনাক্তকৃত মান পাঠানো। কতটুকু দুধ এবং কফি মটরশুটি অবশিষ্ট আছে তা পরিমাপ করা সাধারণত সেন্সর দ্বারা করা হয়। সহজ পদ্ধতিগুলির মধ্যে রয়েছে চাপ সেন্সর, যা দুধ এবং কফির মটরশুটিগুলির বর্তমান ওজন পরিমাপ করে কতটুকু অবশিষ্ট রয়েছে তা নির্ধারণ করে।
শেষের দিকে লিখুন
এই নিবন্ধটি শুধুমাত্র আমার প্রকল্পের সহজ উন্নয়ন প্রক্রিয়া রেকর্ড করে। কোম্পানির প্রকল্পের গোপনীয়তা বিবেচনায়, আমি যে UI ডিসপ্লে ইন্টারফেসটি ব্যবহার করেছি তা নিজেও তৈরি করেছি, এই প্রকল্পের আসল UI ডিসপ্লে ইন্টারফেস নয়। STM32 এর কোড অংশ শুধুমাত্র MCU এর পেরিফেরাল ড্রাইভার এবং সংশ্লিষ্ট লজিক কোড যোগ করে। এছাড়াও কোম্পানির প্রকল্পের গোপনীয়তা বিবেচনা করে, নির্দিষ্ট কী প্রযুক্তি অংশ দেওয়া হয়নি, অনুগ্রহ করে বুঝুন। যাইহোক, আমার দেওয়া কোড অনুযায়ী, STONE ডিসপ্লে স্ক্রিনে সহযোগিতা করুন। আমার বন্ধুরা যারা সফটওয়্যার ইঞ্জিনিয়ার, তাদের প্রকল্পটি সম্পন্ন করার জন্য আমার কোড কাঠামোর মূল প্রযুক্তিগত অংশ যুক্ত করতে মাত্র কয়েক দিন ব্যয় করতে হবে।
প্রকল্প সম্পর্কে আরও জানতে এখানে ক্লিক করুন