विषयसूची:
- चरण 1: हार्डवेयर।
- चरण 2: सॉफ्टवेयर।
- चरण 3: सॉफ्टवेयर के बारे में।
- चरण 4: "आगामी परियोजना"।
- चरण 5: अगला: ESP32 NTP तापमान जांच एनालॉग इनपुट स्टीनहार्ट-हार्ट सुधार के साथ
वीडियो: बटन के लिए "मेटालिक होल प्लग्स" का उपयोग करते हुए ESP32 कैपेसिटिव टच इनपुट: 5 चरण (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
जैसा कि मैं आगामी ESP32 वाईफाई किट 32 आधारित परियोजना के लिए तीन बटन इनपुट की आवश्यकता के लिए डिजाइन निर्णयों को अंतिम रूप दे रहा था, एक ध्यान देने योग्य समस्या यह थी कि वाईफाई किट 32 में एक भी यांत्रिक पुशबटन नहीं है, फिर भी इनपुट के लिए केवल तीन यांत्रिक बटन हैं। हालाँकि, वाईफाई किट 32 में बहुत सारे कैपेसिटिव टच इनपुट हैं, इसलिए मैंने कुछ समय हार्डवेयर को असेंबल करने, सॉफ्टवेयर लिखने और ईएसपी 32 कैपेसिटिव टच इनपुट फीचर और तीन 3/8 ""मेटालिक होल प्लग" का उपयोग करके तीन बटन इनपुट डिज़ाइन का परीक्षण करने में बिताया। बटन।
जैसा कि ईएसपी 32 कैपेसिटिव टच इनपुट के साथ प्रयोग करने वाले किसी भी व्यक्ति ने पाया है, विश्वसनीय इनपुट डिटेक्शन के लिए फ़िल्टरिंग की आवश्यकता के लिए टच इनपुट निश्चित रूप से पर्याप्त शोर हैं। आगामी परियोजना के लिए कुल भागों की संख्या को कम करने के लिए, मैंने निर्धारित किया कि एक साधारण इंटरप्ट संचालित डिजिटल फ़िल्टर (फ़िल्टर की तुलना में "डिबॉन्स" से अधिक, लेकिन मैं पचाता हूं), बाहरी फ़िल्टर हार्डवेयर को जोड़ने के विपरीत, शोर इनपुट को शांत कर सकता है. और परीक्षण के बाद, यह स्पष्ट हो गया कि ईएसपी 32 कैपेसिटिव इनपुट, तीन 3/8 "धातु छेद प्लग, और कुछ डिजिटल" फ़िल्टरिंग "सॉफ्टवेयर, वास्तव में डिजाइन के लिए एक विश्वसनीय तीन बटन इनपुट प्रदान करेंगे।
इसलिए यदि आप ESP32 पर डिजिटल फ़िल्टरिंग के साथ कैपेसिटिव इनपुट के परीक्षण में रुचि रखते हैं, तो मैंने Arduino पर्यावरण प्रारूप में असेंबली और प्रोग्रामिंग निर्देशों के साथ स्रोत कोड का एक संक्षिप्त विवरण के साथ स्रोत कोड "Buttons.ino" शामिल किया है। जिसे मैंने अत्यधिक विश्वसनीय तीन बटन इनपुट के रूप में खोजा।
और हमेशा की तरह, मैं शायद एक या दो फाइल भूल गया था या कौन जानता है कि और क्या है, इसलिए यदि आपके कोई प्रश्न हैं, तो कृपया पूछने में संकोच न करें क्योंकि मैं बहुत सारी गलतियाँ करता हूँ।
और एक अंतिम नोट, मुझे इस डिज़ाइन में उपयोग किए गए किसी भी घटक के लिए, किसी भी रूप में कोई मुआवजा नहीं मिलता है, जिसमें नि: शुल्क नमूने शामिल हैं, लेकिन इन्हीं तक सीमित नहीं है।
चरण 1: हार्डवेयर।
डिजाइन निम्नलिखित हार्डवेयर का उपयोग करता है:
- एक, वाईफाई किट 32.
- तीन, 3/8 "धातु छेद प्लग।
- 28awg तार की तीन, 4" लंबाई।
हार्डवेयर को इकट्ठा करने के लिए, मैंने निम्नलिखित चरणों का पालन किया:
- दिखाए गए अनुसार प्रत्येक 4 "तार की लंबाई के सिरों को छीन लिया और टिन किया।
- ESP32 (TOUCH4, या "T4", इनपुट) के 13 को पिन करने के लिए पहला तार मिलाप किया।
- ESP32 (TOUCH5, या "T5", इनपुट) के 12 को पिन करने के लिए दूसरे तार को मिलाया।
- ESP32 (TOUCH6, या "T6" इनपुट) के 14 को पिन करने के लिए तीसरे तार को मिलाया।
- तीन तार लंबाई के मुक्त सिरों के लिए तीन 3/8 "धातु छेद प्लग में से प्रत्येक में से एक को मिलाया।
चरण 2: सॉफ्टवेयर।
फ़ाइल "Buttons.ino" एक Arduino पर्यावरण फ़ाइल है जिसमें डिज़ाइन के लिए सॉफ़्टवेयर शामिल है। इस फ़ाइल के अतिरिक्त, आपको WiFi Kit32 OLED डिस्प्ले के लिए "U8g2lib" ग्राफिक्स लाइब्रेरी की आवश्यकता होगी (इस लाइब्रेरी के बारे में अधिक जानकारी के लिए https://github.com/olikraus/u8g2/wiki देखें)।
आपकी Arduino निर्देशिका में स्थापित U8g2lib ग्राफिक्स लाइब्रेरी के साथ, और "Buttons.ino" को Arduino वातावरण में लोड किया गया है, सॉफ़्टवेयर को ESP32 में संकलित और डाउनलोड करें।
एक बार डाउनलोड और चलने के बाद, डिस्प्ले की शीर्ष पंक्ति को "बटन" पढ़ना चाहिए और डिस्प्ले की दूसरी पंक्ति बटन संकेतक के रूप में "1 2 3" पढ़ना चाहिए। 1, 2, 3 बटन संकेतकों में से प्रत्येक के नीचे अनफ़िल्टर्ड टच रीड वैल्यू हैं, और इनमें से प्रत्येक के नीचे बटन प्रेस संकेतक (दबाए जाने के लिए "1", दबाए नहीं जाने के लिए "0") हैं। जैसा कि वीडियो में देखा जा सकता है (और लंबे समय तक परीक्षण की पुष्टि के रूप में), सॉफ़्टवेयर फ़िल्टर विश्वसनीय बटन इनपुट डिटेक्शन प्रदान करता है जिसमें कोई झूठी ट्रिगरिंग नहीं होती है।
चरण 3: सॉफ्टवेयर के बारे में।
सॉफ्टवेयर में तीन मुख्य कोड खंड होते हैं; Arduino को "सेटअप ()" और "लूप ()" अनुभागों और एक "इंटरप्ट्स" अनुभाग की आवश्यकता है। सेटअप () सेक्शन में OLED को इनिशियलाइज़ करने और सेवाओं को बाधित करने के लिए आवश्यक कोड होता है। OLED सेटअप फ़ंक्शन का वर्णन ऊपर दिए गए लिंक में किया गया है। इंटरप्ट सेवा सेटअप कार्य इस प्रकार हैं:
- "timerLoopSemaphore = xSemaphoreCreateBinary ()" लूप पास को निष्पादित करने का समय होने पर लूप () को सूचित करने के लिए "इंटरप्ट सर्विस ()" (इंटरप्ट सर्विस रूटीन) के लिए एक सेमाफोर बनाता है।
- "timerInterruptService = timerBegin(0, 80, true)" हार्डवेयर टाइमर 0 का उपयोग करके 80 के प्रीस्केल के साथ एक टाइमर बनाता है।
- "timerAttachInterrupt(timerInterruptService, & InterruptService, true)" टाइमर से InterruptService() को जोड़ता है।
- "timerAlarmWrite(timerInterruptService, 1000, true)" इंटरप्ट सर्विस रेट को 1000hz पर सेट करता है।
- "timerAlarmEnable(timerInterruptService)" टाइमर अलार्म शुरू करता है, और इस तरह सेवा को बाधित करता है।
सेटअप पूर्ण होने के साथ, लूप () दर्ज किया जाता है और तुरंत लाइन पर रुक जाता है:
अगर (xSemaphoreTake (timerLoopSemaphore, portMAX_DELAY) == pdTRUE), अर्थ लूप () इस बिंदु पर तब तक प्रतीक्षा करेगा जब तक कि इंटरप्ट सर्विस () से सेमाफोर नहीं आ जाता। जब सेमाफोर आता है, तो लूप () कोड निष्पादित होता है, बटन डेटा के साथ ओएलईडी डिस्प्ले को अपडेट करता है, फिर अगले सेमाफोर की प्रतीक्षा में शीर्ष पर लौटता है। इंटरप्ट सर्विस () के साथ १००० हर्ट्ज पर चल रहा है और LOOP_DELAY मान ३० है, लूप () हर ३०ms, या ३३.३३३ हर्ट्ज की डिस्प्ले अपडेट दर पर निष्पादित होता है। जबकि अधिकांश ESP32 अनुप्रयोगों के लिए यह एक उच्च प्रदर्शन ताज़ा दर है, मैंने इस सेटिंग का उपयोग फ़िल्टर की प्रतिक्रिया को चित्रित करने के लिए किया है। मैंने परीक्षण किया और एक लूप () पास को 20ms तक निष्पादित करने के लिए आवश्यक समय निर्धारित किया।
इंटरप्ट सर्विस () को 1000 हर्ट्ज की दर से सेटअप () में बनाए गए टाइमर द्वारा बुलाया जाता है। जब कॉल किया जाता है, तो यह दो डाउन काउंटर, nLoopDelay और nButtonDelay को अपडेट करता है। जब nLoopDelay को शून्य तक नीचे गिना जाता है, तो यह सेमाफोर को लूप () को एक पास निष्पादित करने की अनुमति देता है और फिर nLoopDelay को रीसेट करता है। जब nButtonDelay नीचे शून्य तक गिना जाता है, तो यह भी रीसेट हो जाता है और फिर बटन "फ़िल्टर" निष्पादित होता है।
प्रत्येक बटन फ़िल्टर में एक अद्वितीय फ़िल्टर काउंटर होता है (जैसे nButton1Count, nButton2Count और nButton3Count)। जब तक बटन को असाइन किया गया स्पर्श इनपुट मान परिभाषित थ्रेशोल्ड मान (BUTTON_THRESHHOLD) से अधिक या उसके बराबर है, तब तक बटन और बटन को असाइन किया गया फ़िल्टर काउंटर शून्य रहता है। यदि बटन को असाइन किया गया स्पर्श इनपुट मान निर्धारित सीमा से कम है, तो बटन को असाइन किया गया फ़िल्टर काउंटर प्रत्येक 20ms में एक से बढ़ जाता है। जब फ़िल्टर काउंटर बटन फ़िल्टर मान (BUTTON_FILTER) से अधिक हो जाता है, तो बटन को "दबाया" माना जाता है। इस पद्धति का प्रभाव 80ms (20ms nButtonDelay * 4ms nButtonCountN जहां N बटन संख्या है) की आवश्यकता वाला फ़िल्टर बनाना है, जो वास्तव में दबाए गए बटन पर विचार करने के लिए परिभाषित थ्रेशोल्ड के नीचे निरंतर स्पर्श इनपुट मानों का है। किसी भी समय 80ms से कम को "गड़बड़" माना जाता है और फ़िल्टर द्वारा अस्वीकार कर दिया जाता है।
इस संक्षिप्त विवरण को देखते हुए, यदि आपके कोई प्रश्न हैं, तो कृपया बेझिझक पूछें और मैं उनका उत्तर देने की पूरी कोशिश करूंगा।
उम्मीद है तुम्हें मजा आया!
चरण 4: "आगामी परियोजना"।
आगामी परियोजना, "Intelligrill® Pro", एक दोहरी तापमान जांच धूम्रपान करने वाला मॉनिटर है जिसमें विशेषता है:
- बढ़ी हुई सटीकता के लिए स्टीनहार्ट-हार्ट तापमान जांच गणना ("लुक-अप" तालिकाओं के विपरीत)।
- स्टीनहार्ट-हार्ट गणनाओं से प्राप्त बढ़ी हुई सटीकता को शामिल करते हुए जांच 1 पर पूरा होने का अनुमानित समय।
- धूम्रपान करने वालों के तापमान की निगरानी के लिए एक दूसरी जांच, जांच 2, (32 से 399 डिग्री तक सीमित)।
- कैपेसिटिव टच इनपुट कंट्रोल (जैसा कि इस इंस्ट्रक्शनल में है)।
- वाईफ़ाई आधारित रिमोट मॉनिटरिंग (एक निश्चित आईपी पते के साथ, इंटरनेट कनेक्शन उपलब्ध कहीं से भी धूम्रपान करने वालों की प्रगति की निगरानी में सक्षम बनाता है)।
- विस्तारित तापमान सीमा (फिर से 32 से 399 डिग्री)।
- Intelligrill® ट्रांसमीटर के भीतर और अधिकांश WiFi सक्षम निगरानी उपकरणों पर श्रव्य पूर्णता अलार्म।
- या तो डिग्री F या डिग्री C में तापमान प्रदर्शन।
- एचएच: एमएम: एसएस या एचएच: एमएम में समय प्रारूप।
- बैटरी का डिस्प्ले वोल्ट या % चार्ज में से किसी एक में है।
- और जल्द ही आ रहा है, बरमा आधारित धूम्रपान करने वालों के लिए पीआईडी आउटपुट।
"Intelligrill® Pro" मेरे द्वारा डिज़ाइन किया गया सबसे सटीक, फीचर पैक और विश्वसनीय HTML आधारित Intelligrill® बनने के लिए परीक्षण कर रहा है।
यह अभी भी परीक्षण के अधीन है, लेकिन भोजन के साथ यह परीक्षण के दौरान तैयार करने में सहायता कर रहा है, मैंने कुछ पाउंड से अधिक प्राप्त किया है।
फिर से, मुझे आशा है कि आप इसका आनंद लेंगे!
चरण 5: अगला: ESP32 NTP तापमान जांच एनालॉग इनपुट स्टीनहार्ट-हार्ट सुधार के साथ
इसके लिए अपनी बीजगणित की पुस्तकों को धूल चटाने के लिए तैयार रहें।
सिफारिश की:
एक एनालॉग इनपुट का उपयोग करके 4 बटन गेम: 6 चरण (चित्रों के साथ)
एक एनालॉग इनपुट का उपयोग करते हुए 4 बटन गेम: यह निर्देश कई बटनों के लिए एक एनालॉग इनपुट लाइन का उपयोग करने पर केंद्रित है, जिसे एक दूसरे से स्वतंत्र पाया जा सकता है। और इन बटनों के उपयोग को उजागर करने के लिए चार अलग-अलग 4-बटन गेम खेलने के लिए सॉफ्टवेयर शामिल है। सभी खेल (8 इंच में
Arduino के साथ 2.4Ghz NRF24L01 मॉड्यूल का उपयोग कर वायरलेस रिमोट - क्वाडकॉप्टर के लिए Nrf24l01 4 चैनल / 6 चैनल ट्रांसमीटर रिसीवर - आरसी हेलीकाप्टर - Arduino का उपयोग करते हुए Rc प्लेन: 5 कदम (चित्रों के साथ)
Arduino के साथ 2.4Ghz NRF24L01 मॉड्यूल का उपयोग कर वायरलेस रिमोट | क्वाडकॉप्टर के लिए Nrf24l01 4 चैनल / 6 चैनल ट्रांसमीटर रिसीवर | आरसी हेलीकाप्टर | Arduino का उपयोग करते हुए Rc प्लेन: Rc कार चलाने के लिए | क्वाडकॉप्टर | ड्रोन | आरसी विमान | RC नाव, हमें हमेशा एक रिसीवर और ट्रांसमीटर की आवश्यकता होती है, मान लीजिए कि RC QUADCOPTER के लिए हमें एक 6 चैनल ट्रांसमीटर और रिसीवर की आवश्यकता है और उस प्रकार का TX और RX बहुत महंगा है, इसलिए हम अपने
SSD1306 I2C OLED 128x64 डिस्प्ले पर सर्किटपाइथन के साथ ग्राफिक्स एक इटिबिट्सी M4 एक्सप्रेस का उपयोग करते हुए: 13 चरण (चित्रों के साथ)
एसएसडी१३०६ आई२सी ओएलईडी १२८x६४ डिस्प्ले पर सर्किटपाइथन के साथ ग्राफिक्स एक इटसिबिट्सी एम४ एक्सप्रेस का उपयोग करते हुए: एसएसडी१३०६ ओएलईडी डिस्प्ले एक छोटा (०.९६"), सस्ता, व्यापक रूप से उपलब्ध, आई२सी, 128x64 पिक्सल के साथ मोनोक्रोम ग्राफिकल डिस्प्ले है, जो आसानी से इंटरफेस किया जाता है (केवल ४) तार) माइक्रोप्रोसेसर विकास बोर्डों जैसे रास्पबेरी पाई, अरुडिनो या
Arduino के लिए 6 बटन के लिए 1 एनालॉग इनपुट का उपयोग करें: 6 चरण
Arduino के लिए 6 बटन के लिए 1 एनालॉग इनपुट का उपयोग करें: मैंने अक्सर सोचा है कि मैं अपने Arduino के लिए और अधिक डिजिटल इनपुट कैसे प्राप्त कर सकता हूं। हाल ही में मेरे साथ ऐसा हुआ है कि मुझे कई डिजिटल इनपुट लाने के लिए एनालॉग इनपुट में से एक का उपयोग करने में सक्षम होना चाहिए। मैंने एक त्वरित खोज की और पाया कि लोग कहाँ थे
DMD का उपयोग करते हुए P10 LED डिस्प्ले के साथ स्कोर बोर्ड प्रोजेक्ट: 6 चरण (चित्रों के साथ)
DMD का उपयोग करके P10 LED डिस्प्ले के साथ स्कोर बोर्ड प्रोजेक्ट: अक्सर हम एक सॉकर स्टेडियम में मिलते हैं; एक विशाल एलईडी बोर्ड है जो स्कोरबोर्ड के रूप में कार्य करता है। तो अन्य खेल क्षेत्र में भी, अक्सर हम एलईडी से बने डिस्प्ले स्क्रीन के स्कोरबोर्ड को जानते हैं। हालांकि यह संभव नहीं है, लेकिन एक क्षेत्र ऐसा भी है जो अभी भी हमें