- आवश्यक शर्तें
- सामग्री की आवश्यकता
- हार्डवेयर
- सर्वर का अपना ब्लूटूथ पता प्राप्त करें (फिटनेस बैंड का पता)
- सर्वर की सेवा और विशेषता यूयूआईडी को प्राप्त करना
- ESP32 निकटता स्विच अनुप्रयोग के लिए एक ग्राहक के रूप में कार्य करने के लिए प्रोग्रामिंग
- कार्य करना और परीक्षण करना
जैसे ही आप अपने घर में प्रवेश करते हैं स्वचालित रूप से रोशनी चालू करना कितना अच्छा होता है और जब आप निकल जाते हैं तो इसे फिर से बंद कर देते हैं! हां, एक साधारण एप्लिकेशन आपके लिए ऐसा कर सकता है। इस परियोजना में, हम ईएसपी 32 को बीएलई क्लाइंट और फिटनेस बैंड के रूप में बीएलई सर्वर के रूप में उपयोग करेंगे, इसलिए जब भी फिटनेस बैंड पहनने वाला व्यक्ति ईएसपी 32 ब्लूटूथ की सीमा में आता है, ईएसपी 32 इसका पता लगाता है और लाइट चालू करता है। किसी भी ब्लूटूथ डिवाइस जिनमें BLE सर्वर क्षमताएं हैं, उन्हें ESP32 का उपयोग करके किसी भी घरेलू उपकरण को नियंत्रित करने के लिए ट्रिगर डिवाइस के रूप में उपयोग किया जा सकता है ।
हमने पहले ही ESP32 मॉड्यूल के BLE (ब्लूटूथ लो एनर्जी) फंक्शंस की खोज की है और मैं इससे काफी रोमांचित हूं। पुनरावर्तन देने के लिए, इस मॉड्यूल में क्लासिक ब्लूटूथ और ब्लूटूथ लो एनर्जी (BLE) दोनों हैं, क्लासिक ब्लूटूथ का उपयोग गाने या फ़ाइलों को स्थानांतरित करने के लिए किया जा सकता है और BLE विकल्प का उपयोग ब्लूटूथ बीकन, फिटनेस बैंड, निकटता s जैसे बैटरी अनुकूलित अनुप्रयोगों के लिए किया जा सकता है।, आदि इसे सरल माइक्रोकंट्रोलर परियोजनाओं के लिए HC-05 या HC-06 मॉड्यूल की तरह एक धारावाहिक ब्लूटूथ के रूप में उपयोग करना भी संभव है।
जैसा कि आप जानते हैं कि ESP32 BLE दो अलग-अलग मोड में काम कर सकता है। एक सर्वर मोड है जिसे हमने बैटरी स्तर सूचक सेवा की नकल करने के लिए गैट सेवा का उपयोग करके पहले ही चर्चा की है। उस अभ्यास में, ESP32 ने सर्वर के रूप में काम किया और हमारे मोबाइल फोन ने ग्राहक के रूप में काम किया। अब, हम ग्राहक के रूप में ईएसपी 32 को संचालित करते हैं और इसे मेरे फिटनेस बैंड जैसे अन्य बीएलई सर्वरों से जोड़ने का प्रयास करते हैं ।
मेरे फिटनेस बैंड सहित सभी बीएलई सर्वर निरंतर विज्ञापन मोड में हैं जो कि क्लाइंट द्वारा स्कैन किए जाने पर उन्हें हमेशा खोजा जा सकता है। इस सुविधा का लाभ उठाकर हम इन फिटनेस बैंडों को एक निकटता स्विच के रूप में उपयोग कर सकते हैं, जिसका अर्थ है कि ये फिटनेस बैंड हमेशा उपयोगकर्ता के हाथ से बंधे होते हैं और बैंड के लिए स्कैन करके हम यह पता लगा सकते हैं कि व्यक्ति सीमा के भीतर है या नहीं। यह ठीक वैसा ही है जैसा हम इस लेख में करने जा रहे हैं। हम एक BLE क्लाइंट के रूप में कार्य करने के लिए ESP32 को प्रोग्राम करेंगे और लगातार BLE उपकरणों के लिए स्कैनिंग रखेंगे; यदि हम रेंज में फिटनेस बैंड पाते हैं तो हम इसे कनेक्ट करने का प्रयास करेंगे और यदि कनेक्शन सफल होता है तो हम ESP32 पर GPIO पिन में से एक को टॉगल करके एक लाइट बल्ब को ट्रिगर कर सकते हैं । विधि विश्वसनीय है क्योंकि प्रत्येक BLE सर्वर(फिटनेस बैंड) में एक अद्वितीय हार्डवेयर आईडी होगी ताकि कोई दो BLE सर्वर उपकरण समान न हों। दिलचस्प सही है !!! अब, चलो निर्माण करते हैं
आवश्यक शर्तें
इस लेख में, मैं मानता हूं कि आप पहले से ही इस बात से परिचित हैं कि ईएसपी 32 बोर्ड का उपयोग कैसे करना है, अगर ईएसपी 32 ट्यूटोरियल के साथ शुरुआत करना वापस नहीं आता है।
हमने आसानी से समझने के लिए पूर्ण ESP32 ब्लूटूथ को तीन खंडों में विभाजित किया है । इसलिए इसे शुरू करने से पहले पहले दो ट्यूटोरियल से गुजरने की सलाह दी जाती है।
- मोबाइल फोन से ईएसपी 32 टॉगल एलईडी पर सीरियल ब्लूटूथ
- GATT सेवा का उपयोग करके मोबाइल फोन को बैटरी स्तर डेटा भेजने के लिए BLE सर्वर
- BLE क्लाइंट BLE उपकरणों के लिए स्कैन करने और बीकन के रूप में कार्य करने के लिए।
हमने पहले ही दो ट्यूटोरियल को कवर कर लिया है, यहाँ हम पिछले एक के साथ आगे बढ़ रहे हैं ESP32 को BLE क्लाइंट के रूप में समझाने के लिए।
सामग्री की आवश्यकता
- ESP32 विकास बोर्ड
- एसी लोड (लैंप)
- रिले मॉड्यूल
हार्डवेयर
इस ESP32 BLE क्लाइंट प्रोजेक्ट के लिए हार्डवेयर बहुत सादा है क्योंकि अधिकांश जादू कोड के अंदर होता है। ब्लूटूथ सिग्नल की खोज या खो जाने पर ESP32 को एक एसी लैंप (लोड) को चालू करना पड़ता है। इस लोड को टॉगल करने के लिए हम एक रिले का उपयोग करेंगे, और चूंकि ESP32 के GPIO पिन केवल 3.3V संगत हैं, हमें एक रिले मॉड्यूल की आवश्यकता होती है जिसे 3.3V के साथ संचालित किया जा सकता है। केवल रिले मॉड्यूल में ट्रांजिस्टर का उपयोग किया जाता है या नहीं इसकी जाँच करें यदि यह BC548 है तो आप नीचे दिए गए सर्किट आरेख का पालन करके अपने स्वयं के सर्किट का निर्माण करने के लिए अच्छे हैं।
चेतावनी: सर्किट सीधे 220V एसी मेन वोल्टेज से संबंधित है। लाइव तारों से सावधान रहें और सुनिश्चित करें कि आप शॉर्ट सर्किट नहीं बनाते हैं। आपको चेतावनी दी गई है।
BC547 या 2N2222 पर BC548 का उपयोग करने के पीछे कारण यह है कि उनके पास एक कम बेस-एमिटर वोल्टेज है जिसे केवल 3.3V के साथ चालू किया जा सकता है। यहां उपयोग किया जाने वाला रिले 5V रिले है, इसलिए हम इसे विन पिन के साथ पावर करते हैं जो 5V को पावर केबल बनाता है। ग्राउंड पिन सर्किट की जमीन से जुड़ा होता है। अवरोधक आर 1 1K एक आधार वर्तमान सीमक बाधा के रूप में प्रयोग किया जाता है । फेज वायर रिले के NO पिन से जुड़ा होता है और रिले का कॉमन पिन लोड से जुड़ा होता है और लोड का दूसरा छोर न्यूट्रल से जुड़ा होता है। आप चरण और तटस्थ की स्थिति को स्वैप कर सकते हैं, लेकिन ध्यान रखें कि आप उन्हें सीधे कम न करें। वर्तमान को हमेशा लोड (बल्ब) से गुजरना चाहिए ।मैंने चीजों को सरल रखने के लिए एक रिले मॉड्यूल का उपयोग किया है और यहां लोड एक फोकस एलईडी लैंप है। मेरा सेट-अप कुछ इस तरह दिखता है
यदि आप अभी के लिए हार्डवेयर को छोड़ना चाहते हैं तो आप ESP32 पर ऑन-बोर्ड एलईडी को चालू करने के लिए GPIO 13 पिन के बजाय GPIO 2 पिन का उपयोग कर सकते हैं। यह विधि शुरुआती लोगों के लिए अनुशंसित है।
सर्वर का अपना ब्लूटूथ पता प्राप्त करें (फिटनेस बैंड का पता)
जैसा कि पहले बताया गया था कि हम ESP32 को एक क्लाइंट (फोन के समान) के रूप में कार्य करने और एक सर्वर से कनेक्ट करने जा रहे हैं जो मेरा फिटनेस बैंड (लेनोवो एचडब्ल्यू -01) है। क्लाइंट से सर्वर से जुड़ने के लिए उसे सर्वर का ब्लूटूथ पता जानना होगा। मेरे फिटनेस बैंड की तरह हर ब्लूटूथ सर्वर का अपना विशिष्ट ब्लूटूथ पता होता है जो स्थायी होता है। आप इसे अपने लैपटॉप या मोबाइल फोन के मैक पते से संबंधित कर सकते हैं।
इस एड्रेस फॉर्म को प्राप्त करने के लिए हम उस सर्वर का उपयोग करते हैं जिसका उपयोग nRF से किया जाता है जिसे नॉर्डिक सेमी-कंडक्टर से कनेक्ट किया जाता है जिसे हमने अपने पिछले ट्यूटोरियल के लिए पहले ही उपयोग कर लिया था। यह IOS और Android उपयोगकर्ताओं दोनों के लिए मुफ्त में उपलब्ध है। बस डाउनलोड करें, एप्लिकेशन लॉन्च करें और आस-पास के ब्लूटूथ डिवाइस के लिए स्कैन करें। एप्लिकेशन उन सभी बीएलई उपकरणों को सूचीबद्ध करेगा जो इसे पाता है। मेरा नाम HW-01 रखा गया है, बस इसके नाम के नीचे देखें और आपको सर्वर का हार्डवेयर पता मिलेगा जैसा कि नीचे दिखाया गया है।
तो मेरे फिटनेस बैंड का ESP32 BLE हार्डवेयर पता C7: F0: 69: F0: 68: 81 है, आपके पास एक ही प्रारूप में संख्याओं का एक अलग सेट होगा। जब हम अपनी ESP32 को प्रोग्राम करेंगे तब हमें इसकी आवश्यकता होगी।
सर्वर की सेवा और विशेषता यूयूआईडी को प्राप्त करना
ठीक है, अब हमने BLE पते का उपयोग करके अपने सर्वर की पहचान की है, लेकिन इसके साथ संवाद करने के लिए हमें सेवा और विशेषताओं की भाषा बोलने की आवश्यकता है, जिसे आप समझेंगे यदि आपने पिछले ट्यूटोरियल को पढ़ा था। इस ट्यूटोरियल में मैं अपने सर्वर (फिटनेस बैंड) के लेखन की विशेषता का उपयोग कर रहा हूं। तो डिवाइस के साथ युग्मित करने के लिए हमें सेवा विज्ञापन विशेषता UUID की आवश्यकता होती है जिसे हम फिर से उसी एप्लिकेशन के साथ प्राप्त कर सकते हैं।
बस अपने आवेदन पर कनेक्ट बटन पर क्लिक करें और कुछ लिखने की विशेषताओं की खोज करें, जहां एप्लिकेशन सेवा यूयूआईडी और विशेषता यूयूआईडी प्रदर्शित करेगा। मेरा नीचे दिखाया गया है
यहां मेरी सेवा यूयूआईडी और विशेषता यूयूआईडी एक ही है, लेकिन यह समान होना जरूरी नहीं है। अपने सर्वर के UUID को नोट करें। मेरा उल्लेख नीचे दिया गया था
सेवा UUID: 0000fee7-0000-1000-8000-00805f9b34fb विशेषता UUID: 0000fee7-0000-1000-8000-00805f9b34fb
लेखन विशेषताओं का उपयोग करना अनिवार्य नहीं है; आप किसी भी मान्य सेवा और एप्लिकेशन में दिखाए गए सर्वर के विशिष्ट यूयूआईडी का उपयोग कर सकते हैं।
ESP32 निकटता स्विच अनुप्रयोग के लिए एक ग्राहक के रूप में कार्य करने के लिए प्रोग्रामिंग
कार्यक्रम का विचार ESP32 को एक क्लाइंट के रूप में कार्य करने के लिए है जो ब्लूटूथ डिवाइस के लिए स्कैन करता रहता है जब वह हमारे सर्वर (फिटनेस बैंड) को पाता है तो यह हार्डवेयर आईडी को सत्यापित करता है और यह GPIO पिन के माध्यम से प्रकाश को टॉगल करेगा 13. खैर ठीक है!; लेकिन इसके साथ एक समस्या है। सभी BLE सर्वर में 10 मीटर की रेंज होगी जो थोड़ी बहुत है। इसलिए यदि हम एक दरवाजा खोलने के प्रकाश को चालू करने के लिए निकटता स्विच बनाने की कोशिश कर रहे हैं तो यह सीमा बहुत अधिक है।
BLE सर्वर की सीमा को कम करने के लिए हम युग्मन विकल्प का उपयोग कर सकते हैं। एक BLE सर्वर और क्लाइंट केवल तभी जोड़े रहेंगे, जब दोनों 3-4 मीटर की दूरी के भीतर हों। यह हमारे आवेदन के लिए एकदम सही है। इसलिए, हम ईएसपी 32 को न केवल बीएलई सर्वर की खोज करने के लिए बनाते हैं, बल्कि इसे कनेक्ट करने और यह सुनिश्चित करने के लिए भी बनाते हैं कि यह बना रहता है। जब तक उन्हें जोड़ा जाता है तब तक एसी दीपक चालू रहेगा, जब सीमा से अधिक युग्मन खो जाएगा और दीपक बंद हो जाएगा । ऐसा करने के लिए पूरा ESP32 BLE उदाहरण कार्यक्रम इस पृष्ठ के अंत में दिया गया है। यहां नीचे, मैं छोटे स्निपेट्स में कोड को तोड़ दूंगा और उन्हें समझाने की कोशिश करूंगा।
हेडर फाइल को शामिल करने के बाद, हम ईएसपी 32 को बीएलई पते, सेवा और विशेषता यूयूआईडी के बारे में सूचित करते हैं जो हमने प्राप्त की थी, हालांकि एनआरएफ कनेक्ट एप्लिकेशन जैसा कि उपरोक्त शीर्षकों में बताया गया है। कोड नीचे की तरह दिखता है
स्थिर BLEUUID serviceUUID ("0000fee7-0000-1000-8000-00805f9b34fb"); // एनआरएफ के माध्यम से प्राप्त फिटनेसबैंड की सेवा यूयूआईडी कनेक्टेड स्थिर ब्ल्यूयूआईडी चार्यूआईडी ("0000fee7-0000-1000-8000-00805f9b34fb"); // एनआरएफ के माध्यम से प्राप्त फिटनेसबैंड की विशेषता यूयूआईडी कनेक्ट एप्लिकेशन स्ट्रिंग स्ट्रिंग My_BLE_Address = "c7: f0: 69: f0: 68: 81"; // मेरे फिटनेसबैंड के हार्डवेयर ब्लूटूथ मैक , एनआरएफ कनेक्ट एप्लिकेशन के माध्यम से प्राप्त प्रत्येक बैंड के लिए अलग-अलग होंगे
इसके बाद कार्यक्रम में हमारे पास कनेक्टटॉसर और MyAdvertisedDeviceCallback है जो हम बाद में वापस प्राप्त करेंगे। फिर सेटअप फ़ंक्शन के अंदर, हम सीरियल मॉनिटर को इनिशियलाइज़ करते हैं और डिवाइस के लिए स्कैन करने के लिए BLE को ESP बनाते हैं । स्कैन के बाद हर BLE डिवाइस की खोज पूरी होने के बाद फ़ंक्शन MyAdvertisedDeviceCallbacks कहलाता है।
हम सक्रिय स्कैन को भी सक्षम करते हैं क्योंकि हम ESP32 को मुख्य शक्ति के साथ पावर कर रहे हैं, बैटरी एप्लिकेशन के लिए वर्तमान खपत को कम करने के लिए इसे बंद कर दिया गया है। रिले ट्रिगर पिन हमारे हार्डवेयर में GPIO 13 से जुड़ा है, इसलिए हम यह भी घोषणा करते हैं कि GPIO पिन 13 आउटपुट के रूप में है।
शून्य सेटअप () { Serial.begin (115200); // सीरियल मॉनिटर की शुरुआत करें Serial.println ("ESP32 BLE सर्वर प्रोग्राम"); // इंट्रो संदेश BLEDevice:: init (""); pBLEScan = BLEDevice:: getScan (); // नया स्कैन बनाएँ pBLEScan-> setAdvertisedDeviceCallbacks (नया MyAdvertisedDeviceCallbacks ()); // pBLEScan-> setActiveScan (true) के ऊपर परिभाषित वर्ग को कॉल करें ; // सक्रिय स्कैन अधिक शक्ति का उपयोग करता है, लेकिन परिणाम तेजी से पिनकोड (13, OUTPUT) प्राप्त करता है; // इन-बिल्ट एलईडी पिन को आउटपुट के रूप में घोषित करें }
MyAdvertisedDeviceCallbacks फ़ंक्शन के अंदर, हम उस रेखा को प्रिंट करते हैं जो खोजे गए BLE उपकरणों के नाम और अन्य जानकारी को सूचीबद्ध करेगा। हमें BLE डिवाइस की हार्डवेयर आईडी की आवश्यकता थी जिसे खोजा गया था ताकि हम इसे वांछित के साथ तुलना कर सकें। इसलिए हम डिवाइस का पता प्राप्त करने के लिए वैरिएबल Server_BLE_Address का उपयोग करते हैं और फिर इसे BLEAddress से स्ट्रिंग में बदलने के लिए भी करते हैं।
वर्ग MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks { void onResult (BLEAdvertisedDevice advertisedDevice) {Serial.printf ("स्कैन अपमान :% s \ n", advertisedDevice.toString () c_str (); Server_BLE_Address = नया BLEAddress (advertisedDevice.getAddress ()); स्कैन किया हुआ_BLE_Address = Server_BLE_Address-> toString ()। C_str (); } };
लूप फ़ंक्शन के अंदर, हम 3 सेकंड के लिए स्कैन करते हैं और परिणाम को फाउंडडेविसेस के अंदर डालते हैं जो BLEScanResults से एक ऑब्जेक्ट है। यदि हमें स्कैन करके एक या एक से अधिक डिवाइस मिलते हैं, तो हम यह जांचना शुरू करते हैं कि खोजे गए BLE एड्रेस उस प्रोग्राम के साथ मेल खाते हैं या नहीं। यदि मैच पॉजिटिव है और डिवाइस को पहले से पेयर नहीं किया गया है, तो हम कनेक्टटॉसर फ़ंक्शन का उपयोग करके इसके साथ पारिंग की कोशिश करते हैं। हमने उद्देश्य को समझने के लिए कुछ सीरियल स्टेटमेंट का भी उपयोग किया है।
जबकि (foundDevices.getCount ()> = 1) { if (Scaned_BLE_Address == My_BLE_Address && paired == false) { Serial.println ("फाउंड डिवाइस:"… सर्वर से क्लाइंट के रूप में जुड़ रहा है "); अगर (कनेक्टटॉसर (* Server_BLE_Address)) {
ConnectToserver फ़ंक्शन के अंदर हम BLE सर्वर (फिटनेस बैंड) के साथ जोड़ी बनाने के लिए UUID का उपयोग करते हैं । सर्वर से कनेक्ट करने के लिए, ESP32 को एक क्लाइंट के रूप में कार्य करना होता है, इसलिए हम createClient () फ़ंक्शन का उपयोग करके एक क्लाइंट बनाते हैं और फिर BLE सर्वर के पते से कनेक्ट होते हैं। फिर हम यूयूआईडी मूल्यों का उपयोग करके सेवा और विशेषता की खोज करते हैं और इसे कनेक्ट करने का प्रयास करते हैं। जब कनेक्शन सफल होता है तो फ़ंक्शन एक सही रिटर्न देता है और यदि नहीं तो यह एक गलत रिटर्न देता है। ध्यान दें कि सर्वर के साथ जोड़ी बनाने के लिए सेवा और विशिष्ट यूयूआईडी होना अनिवार्य नहीं है, यह केवल आपकी समझ के लिए किया जाता है।
बूल कनेक्टटॉसर (BLEAddress pAddress) { BLEClient * pClient = BLEDevice:: createClient (); Serial.println ("- निर्मित ग्राहक"); // BLE सर्वर से कनेक्ट करें। pClient-> connect (pAddress); Serial.println ("- फिटनेसबैंड से जुड़ा हुआ"); // दूरस्थ BLE सर्वर में हम उस सेवा के संदर्भ को प्राप्त करते हैं जो हम हैं। BLERemoteService * pRemoteService = pClient-> getService (serviceUUID); if (pRemoteService! = nullptr) { Serial.println ("- हमारी सेवा मिली"); सच लौटना; } और असत्य वापस; // दूरस्थ BLE सर्वर की सेवा में विशेषता के लिए एक संदर्भ प्राप्त करें। pRemoteCharacteristic = pRemoteService->getCharacteristic (charUUID); if (pRemoteCharacteristic! = nullptr) Serial.println ("- हमारी विशेषता मिली"); सच लौटना; }
यदि कनेक्शन सफल होता है तो GPIO पिन 13 को उच्च बनाया जाता है और ब्रेक स्टेटमेंट का उपयोग करके नियंत्रण को लूप के बाहर भेजा जाता है। बूलियन चर जोड़ा भी सही होने के लिए निर्धारित है।
if (connectToserver (* Server_BLE_Address)) { युग्मित = सत्य; Serial.println ("********************** एलईडी बदल गया ********************* **)); digitalWrite (13, उच्च); टूटना; }
युग्मन सफल होने के बाद और GPIO पिन चालू होने पर हमें यह जांचना होगा कि क्या डिवाइस अभी भी रेंज में है। चूंकि, अब डिवाइस को पेयर किया गया है, BLE स्कैन सर्विस अब इसे नहीं देख पाएगी। हम इसे फिर से तभी पाएंगे जब उपयोगकर्ता क्षेत्र छोड़ देगा। इसलिए हमें बस BLE सर्वर के लिए स्कैन करना होगा और अगर हमें पता चलता है कि हमें नीचे दिखाए गए अनुसार GPIO पिन को कम पर सेट करना है
if (Scaned_BLE_Address == My_BLE_Address && जोड़ा == true) { सीरियल। Println ("हमारी डिवाइस सीमा से बाहर चली गई"); बनती = झूठी; धारावाहिक। println ("******************** एलईडी OOOFFFFF ************************"); digitalWrite (13, LOW); ESP.restart (); टूटना; }
कार्य करना और परीक्षण करना
एक बार जब आप प्रोग्राम और हार्डवेयर सेट-अप के साथ तैयार हो जाते हैं, तो बस कोड को ESP32 पर अपलोड करें और नीचे दिखाए गए पूरे सेट-अप को व्यवस्थित करें।
ईएसपी 32 के साथ फिटनेस बैंड (सर्वर) जोड़े जैसे ही आप लैंप को चालू करते हैं, आपको नोटिस करना चाहिए । आप फिटनेस बैंड पर कनेक्शन ब्लूटूथ प्रतीक को देखकर भी इसकी जांच कर सकते हैं। एक बार युग्मित किए जाने के बाद बस ESP32 से दूर चलने की कोशिश करें और जब आप 3-4 मीटर पार करेंगे तो आप देखेंगे कि घड़ी पर ब्लूटूथ का चिन्ह गायब हो गया है और कनेक्शन खो गया है। अब, यदि आप दीपक को देखते हैं तो इसे बंद कर दिया जाएगा। जब आप वापस चलते हैं तो डिवाइस फिर से पेयर हो जाता है और लाइट ऑन हो जाती है। परियोजना का पूरा काम नीचे दिए गए वीडियो में पाया जा सकता है।
आशा है कि आपने इस परियोजना का आनंद लिया है और रास्ते में कुछ नया सीखा है। यदि आपको इसे काम करने में कोई समस्या का सामना करना पड़ा है, तो बेझिझक मंचों पर या नीचे टिप्पणी अनुभाग पर भी पोस्ट करने के लिए स्वतंत्र महसूस करें