विषयसूची:

फ्लैश ESP-01 (ESP8266) बिना USB-to-serial एडॉप्टर के रास्पबेरी पाई का उपयोग करना: 3 चरण
फ्लैश ESP-01 (ESP8266) बिना USB-to-serial एडॉप्टर के रास्पबेरी पाई का उपयोग करना: 3 चरण

वीडियो: फ्लैश ESP-01 (ESP8266) बिना USB-to-serial एडॉप्टर के रास्पबेरी पाई का उपयोग करना: 3 चरण

वीडियो: फ्लैश ESP-01 (ESP8266) बिना USB-to-serial एडॉप्टर के रास्पबेरी पाई का उपयोग करना: 3 चरण
वीडियो: ESP8266 to Raspberry Pi -adapter board 2024, जुलाई
Anonim
फ्लैश ESP-01 (ESP8266) USB-to-serial अडैप्टर के बिना Raspberry Pi का उपयोग कर रहा है
फ्लैश ESP-01 (ESP8266) USB-to-serial अडैप्टर के बिना Raspberry Pi का उपयोग कर रहा है

यह निर्देशयोग्य आपको ESP-01 WIFI मॉड्यूल पर अपने ESP8266 माइक्रोकंट्रोलर की प्रोग्रामिंग शुरू करने के तरीके के बारे में मार्गदर्शन करता है। आरंभ करने के लिए आपको बस (ESP-01 मॉड्यूल के अलावा, निश्चित रूप से) है

  • रास्पबेरी पाई
  • जम्पर तार
  • 10K रोकनेवाला

मैं एक पुराने बेडसाइड लैंप को आधुनिक एलेक्सा नियंत्रित एलईडी नाइट लैंप में नवीनीकृत करना चाहता था। वॉयस कमांड का उपयोग करके इसे चालू/बंद करने के लिए कुछ भी फैंसी नहीं है। मैंने सबसे सरल ESP-01 वाईफ़ाई मॉड्यूल, एलईडी के साथ रिले और वायर ऑनलाइन ऑर्डर किया, और ESP8266 माइक्रोकंट्रोलर प्रोग्राम करने के लिए USB-to-serial अडैप्टर ऑर्डर करना पूरी तरह से भूल गया। लेकिन चूंकि मेरे पास रास्पबेरी पाई थी और रास्पबेरी पाई और ईएसपी -01 बोर्ड दोनों में यूएआरटी पिन थे, मुझे लगा कि मैं एडाप्टर के बिना ईएसपी 8266 प्रोग्राम करने के लिए अपने आरपीआई का उपयोग कर सकता हूं।

चरण 1: रास्पबेरी पाई कॉन्फ़िगर करें

रास्पबेरी पाई कॉन्फ़िगर करें
रास्पबेरी पाई कॉन्फ़िगर करें

मैंने रास्पबेरी पाई 3 मॉडल बी + का उपयोग किया, हालांकि, निर्देशों को अन्य संस्करणों पर काम करना चाहिए, खासकर मॉडल बी पर।

तो, सबसे पहले चीज़ें - हमें UART को Pi पर सक्षम करने की आवश्यकता है।

आरपीआई कॉन्फ़िगरेशन सेटिंग्स पर जाएं। टर्मिनल विंडो रन में

$ सुडो रास्पि-कॉन्फ़िगरेशन

5 इंटरफेसिंग विकल्प पर जाएं, फिर P6 सीरियल चुनें। फिर आपने संकेत दिया कि क्या आप एक लॉगिन शेल को सीरियल में एक्सेस करना चाहते हैं? चयन करें क्योंकि हम पीआई को बिना सिर के चलाने के लिए यूएआरटी का उपयोग नहीं करना चाहते हैं, लेकिन अन्य उपकरणों के साथ संवाद करने के लिए, इसलिए निम्न स्क्रीन पर पूछे जाने पर क्या आप सीरियल पोर्ट हार्डवेयर को सक्षम करना चाहते हैं? चुनते हैं । संकेत के अनुसार पाई को पुनरारंभ करें। UART को अब रास्पबेरी पाई 3 के RX और TX पिन पर सीरियल कम्युनिकेशन के लिए सक्षम किया जाना चाहिए। नोट: इसके बाद /boot/config.txt के अंत में एक नई प्रविष्टि enable_uart=1 दिखाई देनी चाहिए।

चरण 2: ESP-01 को रास्पबेरी पाई से कनेक्ट करें

ESP-01 को रास्पबेरी पाई से कनेक्ट करें
ESP-01 को रास्पबेरी पाई से कनेक्ट करें

अब हम सब कुछ एक साथ वायरिंग करने के लिए नीचे उतरते हैं।

सबसे पहले, अपने RPi 3.3V पावर और GND (ग्राउंड) पिन को ESP8266 माइक्रोकंट्रोलर, TXD (ट्रांसमिट) और RXD (प्राप्त) पिन को संचार करने के लिए पहचानें, और ESP8266 संचालित करने के लिए दो सामान्य प्रयोजन पिन (पिन जो या तो उच्च या सेट किए जा सकते हैं) कम)। pinout.xyz पर पिन व्यवस्था देखें या टर्मिनल टाइप करें:

$ पिनआउट

दूसरा ESP-01 पर आवश्यक पिनों की पहचान करें। लेकिन शुरुआत में हमें ESP-01 पिन की समझ होनी चाहिए। मुझे इस संबंध में आपकी सहायता करने के लिए इंटरनेट पर उपलब्ध कई उपयोगी संसाधन मिले। यह सबसे छोटा है, जबकि यह इतना बेहतर स्पष्टीकरण देता है। संक्षेप में: 8 पिन हैं, हमें उनमें से 7 की आवश्यकता होगी, अर्थात् बिजली के लिए VCC पावर और GND (ग्राउंड) पिन, संचार के लिए TXD और RXD पिन, और RST (रीसेट), CH_PD (चिप पावर डाउन, कभी-कभी लेबल किए गए) CH_EN या चिप सक्षम) और GPIO0 मॉड्यूल को संचालित करने के लिए। आमतौर पर ESP8266 एक नियमित मोड में काम करता है, लेकिन ESP8266 पर कोड अपलोड करते समय यह फ्लैश मोड में होने पर ध्यान देता है। नियमित या सामान्य ऑपरेशन मोड के लिए मॉड्यूल को पावर से कनेक्ट करने की आवश्यकता होती है (जाहिर है), लेकिन पिन CH_PD को भी VCC से 10K के माध्यम से जोड़ा जाना है (यह मान अलग-अलग सहारा में भिन्न होता है, मुझे 3K तक के मान मिले) पुल-अप बूट पर रोकनेवाला। दूसरी तरफ, फ्लैशिंग या प्रोग्रामिंग मोड में प्रवेश करने के लिए आपको बूट पर GPIO0 पिन को ग्राउंड करना होगा। ग्राउंडेड होने पर GPIO0 के माध्यम से अप्रतिबंधित वर्तमान प्रवाह को रोकने के लिए GPIO0 को कुछ कम प्रतिरोध रोकनेवाला 300Ω - 470Ω (इस पर और अधिक) के माध्यम से जमीन से जोड़ने की सिफारिश की जाती है। जैसा कि नाम से पता चलता है कि RST पिन MCU को रीसेट (या पुनरारंभ) करता है। सामान्य ऑपरेशन के दौरान इसे 10K पुल-अप रेसिस्टर के माध्यम से VCC से जोड़ा जा सकता है, लेकिन माइक्रोकंट्रोलर को रीसेट करने के लिए इसे ग्राउंड किया जाना चाहिए। हालांकि RST और GPIO0 पिन को ग्राउंड करने के लिए भौतिक बटन का उपयोग करना हमेशा संभव होता है (या मैन्युअल रूप से एक बटन को अनुकरण करने के लिए तारों से जुड़ते हैं), मॉड्यूल के RST और GPIO0 पर वोल्टेज उच्च और निम्न सेट करने के लिए रास्पबेरी पाई पिन का उपयोग करना अधिक सुखद अनुभव है। पिन इसके अलावा 10K और 470Ω प्रतिरोधों की कोई आवश्यकता नहीं है।

अब ESP-01 पिन की ख़ासियत से अवगत होकर, हम सब कुछ एक साथ जोड़ना शुरू कर सकते हैं। आप उपरोक्त चित्र के साथ निम्नलिखित तालिका को संदर्भ के रूप में उपयोग कर सकते हैं:

ESP-01 रास्पबेरी पाई

  • वीसीसी (3.3V) पिन #1 (3.3V)
  • जीएनडी पिन #6 (जीएनडी)
  • TXD पिन #10 (RXD / BCM 15)
  • RXD पिन #8 (TXD / BCM 14)
  • CH_PD पिन #1 (3.3V)
  • आरएसटी पिन #3 (बीसीएम 2)
  • जीपीआईओ 0 पिन #5 (बीएमसी 5)

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

स्क्रीन रन का उपयोग करना:

$ सुडो स्क्रीन / देव / सीरियल0 115200

मिनिकॉम रन का उपयोग करना:

$ सुडो मिनिकॉम-बी ११५२००-ओ-डी/देव/सीरियल0

नोट: कई ऑनलाइन संसाधन /dev/ttyAMA0 पर ESP8266 से जुड़ने का सुझाव देते हैं, लेकिन यह RPi 3 या बाद के संस्करण (शून्य W सहित) पर RPi दस्तावेज़ीकरण के अनुसार काम नहीं करता है। इसके बजाय /dev/serial0 या /dev/ttyS0 के माध्यम से कनेक्ट करें।

आपके द्वारा स्क्रीन या मिनीकॉम में प्रवेश करने के बाद, ESP8266 के साथ संचार करने के लिए AT कमांड का उपयोग करें। एटी टाइप करें, फिर एंटर दबाएं और फिर कमांड भेजने के लिए Ctrl + J दबाएं। आपको जवाब में ठीक होना चाहिए। उपलब्ध एटी कमांड की सूची espressiff.com पर या सिर्फ यहां पाई जा सकती है।

डिवाइस भौतिक रूप से जुड़े हुए हैं और एक-दूसरे से बात करते हैं, हम आरपीआई जीपीआईओ पिन प्रोग्रामिंग करने के लिए नीचे उतर सकते हैं और अंत में, ईएसपी 8266 ही।

चरण 3: सॉफ्टवेयर सेटअप (पायथन टू ऑपरेट और Arduino IDE टू प्रोग्राम)

भाग 1. ESP8266 मोड स्विच करने के लिए अजगर का उपयोग करना

जैसा कि ऊपर उल्लेख किया गया है, ESP8266 के संचालन मोड को स्विच करने के लिए RPI के GPIO पिन का उपयोग करना सुविधाजनक है। मैंने दो बुनियादी अजगर कोड लिखे जो ESP8266 को नियमित या प्रोग्रामिंग मोड में डालते हैं।

नियमित मोड: माइक्रोकंट्रोलर को नियमित संचालन मोड में रखने के लिए हमें बस इसे पावर देने और CH_PD को पुल-अप रेसिस्टर के माध्यम से VCC से जोड़ने की आवश्यकता है, लेकिन MCU को प्रोग्रामिंग से सामान्य मोड में बदलने के लिए हमें इसे रीसेट करने की आवश्यकता है (थिंक रिस्टार्ट)। आरपीआई पर ऐसा करने के लिए हम ईएसपी -01 पर आरएसटी पिन से जुड़े आरपीआई के जीपीआईओ को संक्षेप में नीचे खींचने जा रहे हैं (डिफ़ॉल्ट रूप से आरपीआई पिन जिसे मैंने रीसेट करने के लिए उपयोग किया है वह उच्च पर सेट है)। कैसे संक्षेप में? मेरे लिए यह एक सट्टा प्रश्न है। आप अलग-अलग समय अंतराल आज़मा सकते हैं, लेकिन मैंने पाया कि 200 - 500 ms ठीक काम करते हैं। टिप्पणियों में लिखें यदि आपके पास कोई बेहतर विचार है। अपने कोड को reset.py के रूप में सहेजें।

#!/usr/बिन/पायथन

RPIO. GPIO को GPIO के रूप में आयात करें आयात समय GPIO.setmode(GPIO. BOARD) # भौतिक पिन नंबरों द्वारा GPIO पहचान सेट करता है रीसेटपिन = 3 # ESP8266 RST पिन से जुड़े RPi भौतिक पिन की पहचान करें GPIO.setup(resetPin, GPIO. OUT) # रीसेट सेट करें आउटपुट के रूप में पिन करें। क्लीनअप () # भविष्य में रनटाइम चेतावनियों को रोकने के लिए RPI पर पिन रीसेट करें

  • प्रोग्रामिंग मोड: MCU को प्रोग्रामिंग मोड में डालने के लिए हमें ESP8266 को GPIO0 ग्राउंडेड के साथ पावर देना होगा, या वैकल्पिक रूप से इसे रीसेट करना होगा और बूट करते समय GPIO0 को ग्राउंड करना होगा (फिर से वोल्टेज ड्रॉप्स की सटीक अवधि मुझे नहीं पता है, इसलिए सख्ती से न करें प्रयुक्त मूल्यों द्वारा निर्देशित)। कोड को Flash.py के रूप में सहेजें या नीचे डाउनलोड करें। क्रियाओं का क्रम निम्नलिखित है:

    • आरएसटी पिन नीचे खींचो
    • GPIO0 पिन नीचे खींचो
    • आरएसटी पिन खींचो
    • GPIO0 पिन खींचो

#!/usr/बिन/पायथन

GPIO के रूप में RPi. GPIO आयात करें आयात समय GPIO.setmode (GPIO. BOARD) # भौतिक पिन नंबर रीसेट द्वारा GPIO पहचान सेट करता है पिन = 3 # ESP8266 से जुड़े RPi भौतिक पिन की पहचान करें RST पिन फ्लैशपिन = 5 # ESP8266 GPIO0 पिन से जुड़े RPi भौतिक पिन की पहचान करें GPIO.setup(resetPin, GPIO. OUT) # रीसेट पिन को आउटपुट के रूप में सेट करें GPIO.setup(flashPin, GPIO. OUT) # आउटपुट के रूप में फ्लैश पिन सेट करें। नींद (.2) # इस प्रतीक्षा की आवश्यकता सट्टा है GPIO.output(flashPin, GPIO. LOW) # GPIO0 समय पर वोल्टेज ड्रॉप करें। नींद (.2) # इस प्रतीक्षा की आवश्यकता सट्टा GPIO.output(resetPin, GPIO. HIGH) है) # ESP8266 समय को बूट करना शुरू करें। नींद (.5) # GPIO.ouput (flashPin. GPIO. HIGH) को बूट करने के लिए ESP8266 की प्रतीक्षा करें # GPIO पिन पर वोल्टेज बहाल करें।

टर्मिनल परिवर्तन अनुमतियों में:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

अब से जब भी आपको टर्मिनल में चलने वाले प्रोग्रामिंग मोड में प्रवेश करने की आवश्यकता हो:

$ अजगर /flash.py

सामान्य ऑपरेशन मोड चलाने के लिए कोड अपलोड करने के बाद:

$ अजगर /reset.py

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

भाग 2. Arduino IDE सेट करना

यदि आपके पास पहले से ही Arduino IDE स्थापित है, तो आप अभी भी यह सुनिश्चित करना चाहते हैं कि आपका IDE ESP8266 के लिए तैयार है।

रैपबेरी पाई पर आप अपने ESP8266 को प्रोग्राम करने के लिए Arduino IDE का उपयोग कर सकते हैं। आरपीआई पर आईडीई स्थापित करने के दो तरीके हैं:

  • apt-get install का उपयोग करके रिपॉजिटरी से कमांड लाइन के माध्यम से
  • arduino.cc से मैन्युअल रूप से डाउनलोड और इंस्टॉल करें।

मैं दृढ़ता से बाद के रास्ते पर जाने का सुझाव देता हूं। रिपॉजिटरी से आईडीई संस्करण अप्रचलित प्रतीत होता है और ईएसपी8266 प्रोग्रामिंग शुरू करने के लिए तैयार होने से पहले आपको निश्चित रूप से और अधिक करना होगा। परेशानी से बचने के लिए, Arduino.cc डाउनलोड पेज पर जाएं और Linux ARM संस्करण डाउनलोड करें। अगला असम्पीडित और स्थापित करें: यदि डाउनलोड की गई फ़ाइल का नाम कुछ इस तरह दिखता है arduino-X. Y. Z-linuxarm.tar.xz, डाउनलोड फ़ोल्डर में चलाएं:

$ टार -xvf arduino-X. Y. Z-linuxarm.tar.xz

यह फ़ाइल को arduino-X. Y. Z फ़ोल्डर में असम्पीडित करना चाहिए। Daud:

$ सुडो./arduino-X. Y. Z/install.sh

यह आईडीई स्थापित करना चाहिए। स्थापना पूर्ण होने के बाद, IDE प्रारंभ करें।

  • Arduino IDE से File > Preferences पर जाएं। वरीयता विंडो के नीचे "अतिरिक्त बोर्ड प्रबंधक URL" देखें। "अतिरिक्त बोर्ड प्रबंधक URL" फ़ील्ड में https://arduino.esp8266.com/stable/package_esp8266com_index.json दर्ज करें, "ओके" बटन पर क्लिक करें।
  • टूल्स > बोर्ड: XXX > बोर्ड्स मैनेजर पर जाएं। विंडो में खोज का उपयोग करें या नीचे स्क्रॉल करें, ESP8266 बोर्ड मेनू का चयन करें और इंस्टॉल पर क्लिक करें। इंस्टॉलेशन के पूरा होने और विंडो को बंद करने की प्रतीक्षा करें।
  • फिर से टूल्स> बोर्ड: XXX पर जाएं और ESP8266 बोर्ड देखें। जेनेरिक ESP8266 मॉड्यूल चुनें।

अब IDE ESP8266 प्रोग्राम करने के लिए तैयार है। आईडीई विंडो में वांछित कोड टाइप या पेस्ट करें और इसे सेव करें। अपलोड पर क्लिक करें। टर्मिनल रन से flash.py, यह आपके बोर्ड को प्रोग्रामिंग मोड में डाल देना चाहिए। IDE के संकलन और अपलोडिंग को समाप्त करने के लिए कुछ मिनट प्रतीक्षा करें (नोट: ESP-01 आमतौर पर 2 LED के साथ आता है, कोड अपलोड होने के दौरान नीली LED फ्लैश होगी) और reset.py चलाएँ। अब आपका ESP-01 बोर्ड कर्तव्यों को निभाने के लिए तैयार है।

सिफारिश की: