विषयसूची:

स्टोन डिस्प्ले +STM32 +कॉफी मेकर: 6 कदम
स्टोन डिस्प्ले +STM32 +कॉफी मेकर: 6 कदम

वीडियो: स्टोन डिस्प्ले +STM32 +कॉफी मेकर: 6 कदम

वीडियो: स्टोन डिस्प्ले +STM32 +कॉफी मेकर: 6 कदम
वीडियो: "Ridiculous" Espresso Workflow Ever! #coffeegrinder #coffeemachine #espresso 2024, जुलाई
Anonim
स्टोन डिस्प्ले +STM32 +कॉफी मेकर
स्टोन डिस्प्ले +STM32 +कॉफी मेकर

मैं एक एमसीयू सॉफ्टवेयर इंजीनियर हूं, हाल ही में एक कॉफी मशीन बनने के लिए एक परियोजना प्राप्त हुई है, टच स्क्रीन ऑपरेशन के साथ घरेलू आवश्यकताएं, फ़ंक्शन अच्छा है, स्क्रीन चयन के ऊपर बहुत अच्छा नहीं हो सकता है, सौभाग्य से, यह परियोजना मैं तय कर सकता हूं कि क्या स्वयं का उपयोग करने के लिए एमसीयू का उपयोग यह तय करने के लिए भी किया जा सकता है कि स्क्रीन क्या है, इसलिए मैंने इस तरह के सरल और आसान एमसीयू के एसटीएम 32 को चुना, डिस्प्ले स्क्रीन मैंने स्टोन की टच स्क्रीन डिस्प्ले को चुना, स्क्रीन सरल और उपयोग में आसान है, मेरा केवल UART संचार के माध्यम से STM32 MCU इसके साथ ठीक है।

स्टोन सीरियल एलसीडी डिस्प्ले स्क्रीन, जो एमसीयू के सीरियल पोर्ट के माध्यम से संचार कर सकती है। साथ ही, इस डिस्प्ले स्क्रीन के UI इंटरफ़ेस के लॉजिक डिज़ाइन को STONE की आधिकारिक वेबसाइट द्वारा प्रदान किए गए STONE TOOL Box का उपयोग करके सीधे डिज़ाइन किया जा सकता है, जो बहुत सुविधाजनक है। तो मैं इसे इस कॉफी मशीन प्रोजेक्ट के लिए उपयोग करने जा रहा हूं। साथ ही, मैं केवल बुनियादी विकास को रिकॉर्ड करूंगा। चूंकि यह मेरी कंपनी की एक परियोजना है, मैं केवल एक साधारण डेमो रिकॉर्ड करूंगा और पूरा कोड नहीं लिखूंगा। स्टोन डिस्प्ले स्क्रीन के बारे में कुछ बुनियादी ट्यूटोरियल वेबसाइट पर जा सकते हैं: https://www.stoneitech.com/ वेबसाइट में मॉडल, उपयोग और डिजाइन प्रलेखन के साथ-साथ वीडियो ट्यूटोरियल के बारे में कई तरह की जानकारी है। मैं यहाँ बहुत अधिक विस्तार में नहीं जाऊँगा।

चरण 1: कॉफी मशीन डिस्प्ले स्क्रीन फंक्शन परिचय

इस परियोजना के निम्नलिखित कार्य हैं: l

  • वर्तमान समय और दिनांक प्रदर्शित करता है
  • अमेरिकन, लट्टे, कैप्पुकिनो और एस्प्रेसो के लिए डिस्प्ले पर चार बटन हैं।
  • शेष कॉफी बीन्स, दूध और कॉफी चीनी की वर्तमान मात्रा प्रदर्शित करता है
  • एक टेक्स्ट डिस्प्ले बॉक्स वर्तमान स्थिति प्रदर्शित करता है

इन अवधारणाओं को ध्यान में रखते हुए, आप एक UI इंटरफ़ेस डिज़ाइन कर सकते हैं। यूआई डिज़ाइन में टच स्क्रीन का स्टोन अपेक्षाकृत सरल है, उपयोगकर्ता फोटोशॉप सॉफ्टवेयर डिजाइन के माध्यम से अच्छा यूआई इंटरफेस और बटन प्रभाव, स्टोन टूल बॉक्स के माध्यम से स्क्रीन में अच्छी तस्वीरें डिजाइन करने के लिए, और स्टोन टूल बॉक्स लॉजिक के साथ अपने स्वयं के बटन जोड़ते हैं। सीरियल डेटा वापसी मूल्य ठीक है, आपके लिए विकसित करना बहुत आसान है।

चरण 2: स्टोन डिस्प्ले के लिए UI चित्र बनाएं

स्टोन डिस्प्ले के लिए UI चित्र बनाएं
स्टोन डिस्प्ले के लिए UI चित्र बनाएं
स्टोन डिस्प्ले के लिए UI चित्र बनाएं
स्टोन डिस्प्ले के लिए UI चित्र बनाएं
स्टोन डिस्प्ले के लिए UI चित्र बनाएं
स्टोन डिस्प्ले के लिए UI चित्र बनाएं

कार्यात्मक आवश्यकताओं के अनुसार, मैंने निम्नलिखित दो यूआई डिस्प्ले इंटरफेस बनाए, एक मुख्य इंटरफ़ेस है और दूसरा बटन प्रभाव है।

स्टोन टूल बॉक्स का उपयोग वर्तमान में, स्टोन टूल प्रदान करता है। एक नया प्रोजेक्ट बनाने के लिए इस टूल को खोलें, फिर चित्रों को प्रदर्शित करने के लिए डिज़ाइन किए गए UI को आयात करें, और अपने स्वयं के बटन, टेक्स्ट डिस्प्ले बॉक्स आदि जोड़ें। STONE की आधिकारिक वेबसाइट में इस सॉफ़्टवेयर का उपयोग करने के तरीके पर एक बहुत ही संपूर्ण ट्यूटोरियल है। https: / /www.stoneitech.com/support/download/video

स्टोन टूल बॉक्स में बटन जोड़ने और घटकों को प्रदर्शित करने के प्रभाव इस प्रकार हैं:

स्टोन टूल बॉक्स में सिमुलेशन डिस्प्ले का कार्य है, जिसके माध्यम से आप UI इंटरफ़ेस के संचालन प्रभाव को देख सकते हैं:

इस बिंदु पर, मेरा यूआई डिस्प्ले पूरा हो गया है, और मुझे केवल एमसीयू कोड लिखना है। वास्तविक परिणाम देखने के लिए स्टोन टूल बॉक्स द्वारा उत्पन्न फाइलों को डिस्प्ले स्क्रीन पर डाउनलोड करें।

चरण 3: STM32F103RCT6

STM32F103RCT6
STM32F103RCT6

STM32F103RCT6 MCU में शक्तिशाली कार्य हैं। यहाँ MCU के बुनियादी पैरामीटर हैं:

  • श्रृंखला: STM32F10X एल केर्न
  • एआरएम - COTEX32
  • गति: 72 मेगाहर्ट्ज
  • संचार इंटरफ़ेस: CAN, I2C, IrDA, LIN, SPI, UART/USART, USB
  • परिधीय उपकरण: डीएमए, मोटर नियंत्रण पीडब्लूएम, पीडीआर, पीओआर, पीवीडी, पीडब्लूएम, तापमान सेंसर, डब्ल्यूडीटी
  • कार्यक्रम भंडारण क्षमता: 256KB
  • प्रोग्राम मेमोरी टाइप: FLASH
  • रैम क्षमता: 48K
  • वोल्टेज - बिजली की आपूर्ति (वीसीसी / वीडीडी): 2 वी ~ 3.6 वी
  • थरथरानवाला: आंतरिक
  • ऑपरेटिंग तापमान: -40 डिग्री सेल्सियस ~ 85 डिग्री सेल्सियस
  • पैकेज/आवास: 64-जीवन

इस परियोजना में, मैं UART, GPIO, वॉच डॉग और STM32F103RCT6 के टाइमर का उपयोग करूंगा। इन बाह्य उपकरणों के विकास को नीचे प्रलेखित किया गया है। STM32 Keil MDK सॉफ़्टवेयर विकास का उपयोग करता है, जो आपके लिए कोई अजनबी नहीं है, इसलिए मैं इस सॉफ़्टवेयर की स्थापना विधि का परिचय नहीं दूंगा। एसटीएम 32 को जे-लिंक या सेंट-लिंक और अन्य सिमुलेशन टूल द्वारा ऑनलाइन सिम्युलेटेड किया जा सकता है। निम्नलिखित चित्र STM32 सर्किट बोर्ड है जिसका मैंने उपयोग किया है:

चरण 4: यूएआरटी सीरियल

यूएआरटी सीरियल
यूएआरटी सीरियल
यूएआरटी सीरियल
यूएआरटी सीरियल
यूएआरटी सीरियल
यूएआरटी सीरियल

STM32F103RCT6 में कई सीरियल पोर्ट हैं। इस परियोजना में, मैंने सीरियल पोर्ट चैनल PA9/PA10 का उपयोग किया, और सीरियल पोर्ट बॉड दर 115200 पर सेट की गई।

जीपीआईओ

इस प्रोजेक्ट के यूजर इंटरफेस में कुल चार बटन हैं, जो वास्तव में चार तरह की कॉफी बनाने का काम करते हैं। कॉफी मशीन में, कॉफी बीन्स की संख्या, दूध की खपत और विभिन्न कॉफी के पानी के प्रवाह को नियंत्रित करना वास्तव में सेंसर और रिले को नियंत्रित करके महसूस किया जाता है, जबकि मैं पहले जीपीआईओ पिन को नियंत्रित करता हूं।

चरण 5: टाइमर

घड़ी
घड़ी
घड़ी
घड़ी

टाइमर को इनिशियलाइज़ करते समय, फ़्रीक्वेंसी डिवीजन गुणांक PSC निर्दिष्ट करें, यहाँ फ़्रीक्वेंसी डिवीजन के लिए हमारी सिस्टम क्लॉक (72MHz) है

फिर रीलोड वैल्यू एआर निर्दिष्ट करें, जिसका अर्थ है कि जब हमारा टाइमर इस एआर पर पहुंच जाता है, तो टाइमर अन्य मानों को फिर से लोड करेगा।

उदाहरण के लिए, जब हम टाइमर को काउंट अप करने के लिए सेट करते हैं, तो टाइमर काउंट का मान arr के बराबर होता है और इसे 0 से क्लियर किया जाएगा और पुनर्गणना की जाएगी।

टाइमर की गिनती फिर से लोड हो जाती है और एक बार अपडेट हो जाता है

अद्यतन समय सूत्र की गणना करें Tout = ((arr+1)*(PSC +1))/Tclk

फॉर्मूला व्युत्पत्ति: टॉक टाइमर का घड़ी स्रोत है, यहां 72 मेगाहर्ट्ज है

हम आवंटित घड़ी की आवृत्ति को विभाजित करते हैं, आवृत्ति विभाजन मान को PSC के रूप में निर्दिष्ट करते हैं, फिर अपनी बात को PSC +1 में विभाजित करते हैं, हमारे टाइमर की अंतिम आवृत्ति Tclk/(PSC +1) MHz है

तो यहाँ फ़्रीक्वेंसी से हमारा मतलब यह है कि हमारे पास PSC +1 M नंबर (1M = 10 ^ 6) पर टॉक का 1s है, और प्रत्येक नंबर का समय PSC +1 /Talk है, और यह समझना आसान है कि उलटा आवृत्ति की अवधि है, और यहां प्रत्येक संख्या के लिए अवधि पीएससी +1 / टॉक सेकंड है और फिर हम 0 से एआर तक जाते हैं (arr+1)*(PSC +1)/Tclk

उदाहरण के लिए, आइए arr=7199 और PSC =9999. सेट करें

हमने 72MHz को 9999+1 में विभाजित किया है जो 7200Hz के बराबर है

यह ९,००० काउंट प्रति सेकंड है, और प्रत्येक काउंट एक सेकंड का १/७, २०० है

इसलिए हम टाइमर अपडेट (7199+1)*(1/7200)=1s पर जाने के लिए यहां 9, 000 नंबर रिकॉर्ड कर रहे हैं, इसलिए 1s अपडेट में जाता है।

शून्य TIM3_Int_Init (u16 गिरफ्तारी, u16 पीएससी) {

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 घंटे के भीतर जवाब दूंगा।

चरण 6: देखो कुत्ता

देखो कुत्ता
देखो कुत्ता
देखो कुत्ता
देखो कुत्ता

प्रोग्राम के चलने के दौरान सिस्टम को क्रैश होने से बचाने के लिए, मैंने वॉचडॉग को जोड़ा। वास्तव में, एमसीयू का उपयोग करने वाली सभी परियोजनाएं आम तौर पर वॉचडॉग का उपयोग करती हैं।

STM32 में दो बिल्ट-इन वॉचडॉग हैं, जो अधिक सुरक्षा, समय सटीकता और लचीलापन प्रदान करते हैं। सॉफ़्टवेयर त्रुटियों के कारण होने वाले दोषों का पता लगाने और उन्हें हल करने के लिए दो वॉचडॉग डिवाइस (स्वतंत्र वॉचडॉग और विंडो वॉचडॉग) का उपयोग किया जा सकता है। जब काउंटर किसी दिए गए टाइमआउट मान तक पहुंच जाता है, तो एक इंटरप्ट (केवल विंडो वॉचडॉग) या सिस्टम रीसेट चालू हो जाता है। स्वतंत्र प्रहरी (आईडब्ल्यूडीजी):

एक समर्पित लो-स्पीड क्लॉक (LSI) द्वारा संचालित, यह मास्टर घड़ी के विफल होने पर भी काम करता है।

यह उन स्थितियों में उपयोग के लिए उपयुक्त है जहां वॉचडॉग को मुख्य कार्यक्रम के बाहर पूरी तरह से स्वतंत्र रूप से काम करने की आवश्यकता होती है और कम समय सटीकता की आवश्यकता होती है। विंडो वॉचडॉग (डब्ल्यूडब्ल्यूडीजी):

आवृत्ति विभाजन के बाद APB1 घड़ी से घड़ी द्वारा संचालित। एक विन्यास योग्य समय विंडो के माध्यम से असामान्य रूप से देर से या समय से पहले एप्लिकेशन ऑपरेशन का पता लगाएं। उन प्रोग्रामों के लिए उपयुक्त है जिन्हें विंडोज के सटीक समय में काम करने के लिए वॉचडॉग की आवश्यकता होती है।

मुख्य अंतर (शून्य) {

देरी_इनिट ();

// देरी init NVIC_PriorityGroupConfig (NVIC_PriorityGroup_2);

// एनवीआईसी आईएनआईटी uart_init (115200);

// UART INIT PAD_INIT ();

// लाइट इनिट IWDG_Init (4, 625);

जबकि(1) {

अगर (USART_RX_END)

{स्विच (USART_RX_BUF[5])

{

केस एस्प्रेसो:

कॉफी चयन (एस्प्रेसो, USART_RX_BUF [8]);

टूटना;

मामला अमेरिकनो:

कॉफी चयन (अमेरिकन, USART_RX_BUF [8]);

मुख्य कार्य में मुख्य तर्क इस प्रकार है:

u8 टाइमर_cnt=0;

शून्य TIM3_IRQHandler (शून्य) // TIM3

{

अगर (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)

{

TIM_ClearITPendingBit(TIM3, TIM_IT_Update);

टाइमर_सीएनटी++;

अगर (टाइमर_सीएनटी>=200)

{

दूध_भेजें [६] = दूध ();

अंत में, टाइमर इंटरप्ट में कोड जोड़ें: टाइमर इंटरप्ट में, मेरा लक्ष्य यह जांचना है कि कितना कॉफी और दूध बचा है, और फिर सीरियल पोर्ट के माध्यम से डिस्प्ले स्क्रीन पर पता लगाया गया मान भेजें। यह मापने के लिए कि कितना दूध और कॉफी बीन्स बचा है, आमतौर पर सेंसर द्वारा किया जाता है। सरल तरीकों में प्रेशर सेंसर शामिल हैं, जो दूध और कॉफी बीन्स के वर्तमान वजन को मापते हैं ताकि यह निर्धारित किया जा सके कि कितना बचा है।

लास्ट में लिखें

यह आलेख केवल मेरी परियोजना की सरल विकास प्रक्रिया को रिकॉर्ड करता है। कंपनी के प्रोजेक्ट की गोपनीयता को ध्यान में रखते हुए, मेरे द्वारा उपयोग किया जाने वाला UI डिस्प्ले इंटरफ़ेस भी स्वयं द्वारा बनाया गया था, न कि इस प्रोजेक्ट का वास्तविक UI डिस्प्ले इंटरफ़ेस। STM32 का कोड भाग केवल MCU के परिधीय चालक और संबंधित तर्क कोड को जोड़ता है। साथ ही कंपनी की परियोजना की गोपनीयता को ध्यान में रखते हुए, विशिष्ट प्रमुख प्रौद्योगिकी भाग नहीं दिया गया है, कृपया समझें। हालाँकि, मेरे द्वारा प्रदान किए गए कोड के अनुसार, STONE डिस्प्ले स्क्रीन के साथ सहयोग करें। मेरे मित्र जो सॉफ्टवेयर इंजीनियर भी हैं, उन्हें परियोजना को पूरा करने के लिए मेरे कोड ढांचे में मुख्य तकनीकी भागों को जोड़ने के लिए केवल कुछ दिन बिताने की जरूरत है।

परियोजना के बारे में अधिक जानने के लिए यहां क्लिक करें