DCC नियंत्रक के लिए ARDUINO IDE सेट अप 

ARDUINO IDE लोगो

DCC नियंत्रक के लिए Arduino IDE सेट-अप

चरण 1. IDE वातावरण सेट-अप। ESP बोर्ड लोड करें।

जब आप पहली बार Arduino IDE इंस्टॉल करते हैं, तो यह केवल ARM आधारित बोर्ड का समर्थन करता है। हमें ESP आधारित बोर्ड के लिए समर्थन जोड़ने की आवश्यकता है। File… प्राथमिकताएं

IDE वातावरण सेट-अप। ESP बोर्ड लोड करें
IDE वातावरण सेट-अप। ESP बोर्ड लोड करें

अतिरिक्त बोर्ड प्रबंधक में नीचे दी गई पंक्ति टाइप करें URLS बॉक्स में। ध्यान दें कि इसमें अंडरस्कोर हैं, कोई रिक्त स्थान नहीं है।  http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://dl.espressif.com/dl/package_esp32_index.json
संकलन के दौरान विस्तृत जानकारी दिखाएँ वाले बॉक्स को भी चेक करें। संकलन के दौरान कुछ विफल होने पर यह हमें अधिक जानकारी देता है।

ध्यान दें कि ऊपर दी गई लाइन esp8266 डिवाइस और नए esp32 दोनों के लिए समर्थन जोड़ती है। दो json स्ट्रिंग्स को कॉमा द्वारा अलग किया गया है।
अब बोर्ड का चयन करें संस्करण 2.7.4 बोर्ड मैनेजर से

DCC नियंत्रक के लिए Arduino IDE सेट-अप

संस्करण 2.7.4 स्थापित करें। यह काम करता है। संस्करण 3.0.0 और उच्चतर इस प्रोजेक्ट के लिए काम नहीं करते हैं। अब, टूल्स मेनू में वापस, वह बोर्ड चुनें जिसका आप उपयोग करेंगे। इस प्रोजेक्ट के लिए यह या तो nodeMCU 1.0 या WeMos D1R1 होगा

DCC नियंत्रक के लिए Arduino IDE सेट-अप

यहां हम WeMos D1R1 का चयन करते हैं। (इसे नैनो से बदलते हुए)

चरण 2. IDE वातावरण सेट-अप। ESP8266 स्केच डेटा अपलोड ऐड-इन लोड करें।

हमें HTML पेज और अन्य सामग्री प्रकाशित करने के लिए इस ऐड-इन को लोड करने की आवश्यकता है fileESP डिवाइस पर s. ये आपके प्रोजेक्ट फ़ोल्डर के अंदर डेटा फ़ोल्डर में रहते हैं https://github.com/esp8266/arduino-esp8266fs-plugin/releases
पर जाएँ URL कृपया ऊपर जाएं और ESP8266FS-0.5.0.zip डाउनलोड करें।
अपने Arduino फ़ोल्डर के अंदर एक Tools फ़ोल्डर बनाएँ। ज़िप की सामग्री को अनज़िप करें file इस टूल्स फ़ोल्डर में। आपको यह मिलना चाहिए;

DCC नियंत्रक के लिए Arduino IDE सेट-अप

और टूल्स के अंतर्गत एक नया मेनू विकल्प दिखाई देगा...

DCC नियंत्रक के लिए Arduino IDE सेट-अप

यदि आप उस मेनू विकल्प को लागू करते हैं, तो IDE डेटा फ़ोल्डर की सामग्री को बोर्ड पर अपलोड कर देगा। ठीक है, तो यह सामान्य ESP8266 उपयोग के लिए IDE वातावरण सेट अप है, अब हमें इस विशिष्ट प्रोजेक्ट के लिए Arduino/Libraries फ़ोल्डर में कुछ लाइब्रेरी जोड़ने की आवश्यकता है।

चरण 3. लाइब्रेरीज़ डाउनलोड करें और मैन्युअल रूप से इंस्टॉल करें।

हमें इन लाइब्रेरीज़ को गिटहब से डाउनलोड करना होगा; https://github.com/me-no-dev/ESPAsyncTCP

DCC नियंत्रक के लिए Arduino IDE सेट-अप

कोड पर क्लिक करें, और फिर ज़िप डाउनलोड करें। यह आपके डाउनलोड फ़ोल्डर में चला जाएगा। डाउनलोड में जाएँ, ज़िप ढूँढ़ें, इसे खोलें और कंटेंट फ़ोल्डर “ESPAsyncTCP” को Arduino/libraries पर खींचें।
यदि फ़ोल्डर का नाम “-master” से समाप्त होता है, तो अंत से “-master” हटाने के लिए उसका नाम बदलें।
यानि डाउनलोड से

DCC नियंत्रक के लिए Arduino IDE सेट-अप

ESPAsyncTCP-master के लिए .zip खोलें, और इसके अंदर से ESPAsyncTCP-master फ़ोल्डर को Arduino/Libraries पर खींचें

DCC नियंत्रक के लिए Arduino IDE सेट-अप

टिप्पणी: Arduino/लाइब्रेरी .zip संस्करण का उपयोग नहीं कर सकते, आपको वांछित फ़ोल्डर को अनज़िप (खींचकर) करना होगा। हमें इसकी भी आवश्यकता है https://github.com/fmalpartida/New-LiquidCrystal
ज़िप फ़ाइल को डाउनलोड करें, फिर इसकी सामग्री को Arduino/libraries पर खींचें और -master अंत हटा दें।

और अंत में, हमें नीचे दिए गए लिंक से ArduinoJson-5.13.5.zip की आवश्यकता है https://www.arduinolibraries.info/libraries/arduino-json

डाउनलोड करें और फिर ज़िप सामग्री को Arduino/libraries पर खींचें

चरण 4. Arduino Library Manager का उपयोग करके कुछ और लाइब्रेरीज़ स्थापित करें।

हमें दो और लाइब्रेरी की आवश्यकता है, और ये Arduino Library Manager से आती हैं जिसमें बिल्ट-इन लाइब्रेरी का चयन होता है। टूल्स पर जाएँ… लाइब्रेरी प्रबंधित करें…

DCC नियंत्रक के लिए Arduino IDE सेट-अप
DCC नियंत्रक के लिए Arduino IDE सेट-अप

Adafruit INA1.0.3 का संस्करण 219 उपयोग करें। यह काम करता है। 

और भी

DCC नियंत्रक के लिए Arduino IDE सेट-अप

संस्करण 2.1.0 का उपयोग करें Webमार्कस सैटलर से सॉकेट, यह परीक्षण किया गया है और काम कर रहा है। मैंने बाद के संस्करणों का परीक्षण नहीं किया है।
ठीक है, तो ये सभी लाइब्रेरीज़ (अर्थात् संदर्भ) हैं जिनकी IDE को इस परियोजना को संकलित करने के लिए आवश्यकता है।

चरण 5. GitHub से ESP_DCC_Controller प्रोजेक्ट डाउनलोड करें और IDE में खोलें।

GitHub पर जाएं और डाउनलोड करें https://github.com/computski/ESP_DCC_controller

हरे रंग के “कोड” बटन पर क्लिक करें और ज़िप डाउनलोड करें। फिर ज़िप खोलें file और इसकी सामग्री को Arduino फ़ोल्डर में ले जाएँ। फ़ोल्डर नाम पर "-main" समाप्त करने के लिए फ़ोल्डर का नाम बदलें। आपको अपने Arduino फ़ोल्डर में ESP_ DCC_ controller फ़ोल्डर के साथ समाप्त होना चाहिए। इसमें एक .INO होगा file, विभिन्न .एच और .सीपीपी fileऔर एक डेटा फ़ोल्डर.

DCC नियंत्रक के लिए Arduino IDE सेट-अप

.INO पर डबल क्लिक करें file Arduino IDE में प्रोजेक्ट खोलने के लिए.
संकलन करने से पहले, हमें आपकी आवश्यकताओं के अनुसार कॉन्फ़िगर करने की आवश्यकता है...

चरण 6. ग्लोबल में अपनी आवश्यकताएं निर्धारित करें।

यह प्रोजेक्ट nodeMCU या WeMo's D1R1 को सपोर्ट कर सकता है और यह कई अलग-अलग पावर बोर्ड (मोटर शील्ड) विकल्पों को भी सपोर्ट कर सकता है, साथ ही यह I2C बस पर मौजूद डिवाइस जैसे कि करंट मॉनिटर, LCD डिस्प्ले और कीपैड को भी सपोर्ट कर सकता है। और अंत में यह जॉगव्हील (रोटरी एनकोडर) को भी सपोर्ट कर सकता है। सबसे बुनियादी निर्माण जो आप कर सकते हैं वह है WeMo's D1R1 और L298 मोटर शील्ड।
ध्यान दें कि किसी विकल्प को अक्षम करने का सबसे आसान तरीका #define कथन में उसके नाम के आगे लोअरकेस n जोड़ना है।
#परिभाषित करें nNODEMCU_OPTION3
#परिभाषित करें nBOARD_ESP12_SHIELD
#परिभाषित करना WEMOS_D1R1_AND_L298_SHIELD
उदाहरणार्थampले, ऊपर NODEMCU_OPTION3 को n के साथ अक्षम किया गया है, nBOARD_ESP12_SHIELD के लिए भी यही है। WEMOS_D1R1_AND_L298_SHIELD सक्रिय विकल्प है, और यह संकलक को इसके लिए नीचे सूचीबद्ध कॉन्फ़िगरेशन का उपयोग करने का कारण बनेगा।

इस कॉन्फ़िगरेशन को देखने के लिए: 

#elif परिभाषित(WEMOS_D1R1_AND_L298_SHIELD)

/*Wemos D1-R1 को L298 शील्ड के साथ स्टैक किया गया है, ध्यान दें कि D1-R2 भिन्न पिनआउट वाला एक नया मॉडल है*/
/*L298 शील्ड पर ब्रेक जंपर्स को काटें। इनकी आवश्यकता नहीं है और हम इन्हें I2C पिन द्वारा संचालित नहीं करना चाहते क्योंकि यह DCC सिग्नल को दूषित कर देगा।

बोर्ड में Arduino फॉर्म फैक्टर है, पिन इस प्रकार हैं
डी0 जीपीआईओ3 आरएक्स
डी1 जीपीआईओ1 TX
D2 GPIO16 हार्टबीट और जॉगव्हील पुशबटन (सक्रिय हाय)
D3 GPIO5 DCC सक्षम (pwm)
D4 GPIO4 जोग1
D5 GPIO14 DCC सिग्नल (dir)
D6 GPIO12 DCC सिग्नल (dir)
D7 GPIO13 DCC सक्षम (pwm)
D8 GPIO0 SDA, 12k पुलअप के साथ
D9 GPIO2 SCL, 12k पुलअप के साथ
D10 GPIO15 जोग2
ऊपर दिए गए नोट्स मनुष्यों के लिए हैं, इससे आपको पता चलता है कि कौन से ESP GPIO कौन से कार्य करेंगे। ध्यान दें कि Arduino D1-D10 से GPIO मैपिंग नोड MCU D1-D10 से GPIO मैपिंग से भिन्न हैं */

#define उपयोग_ANALOG_MEASUREMENT
#define ANALOG_SCALING 3.9 //जब A और B का समानांतर उपयोग किया जाता है (मल्टीमीटर RMS से मिलान करने के लिए 2.36)
हम ESP पर AD का उपयोग करेंगे, न कि किसी बाहरी I2C करंट मॉनिटरिंग डिवाइस जैसे INA219 डिसेबल का।
यदि आप INA219 का उपयोग करना चाहते हैं तो इसे n USE_ ANALOG_ MEASUREMENT के साथ करें

#define PIN_HEARTBEAT 16 //और जॉगव्हील पुशबटन
#DCC_PINS परिभाषित करें \
uint32 dcc_info[4] = { PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12, 12 , 0 }; \
uint32 enable_info[4] = { PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO5, 5 , 0 }; \
uint32 dcc_infoA[4] = {PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO14, 14 , 0 }; \
uint32 enable_infoA[4] = { PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO13,13, 0};
परिभाषित करता है कि कौन से पिन DCC सिग्नल चलाएंगे, हमारे पास दो चैनल हैं, जो चरणबद्ध तरीके से चल रहे हैं ताकि हम उन्हें एक साथ साझा कर सकें। A-चैनल dcc_ info [] है और B-चैनल dcc_ info A [] है। इन्हें मैक्रोज़ के रूप में परिभाषित किया गया है और बैकस्लैश एक लाइन-निरंतरता मार्कर है।

#define PIN_SCL 2 //12k पुलअप
#define PIN_SDA 0 //12k पुलअप
#define PIN_JOG1 4
#define PIN_JOG2 15 //12k पुलडाउन

पिन (GPIO) को परिभाषित करें जो I2C SCL/SDA को चलाते हैं और फिर जॉगव्हील इनपुट 1 और 2 को भी चलाते हैं

#define KEYPAD_ADDRESS 0x21 //pcf8574

वैकल्पिक 4 x 4 मैट्रिक्स कीपैड के लिए उपयोग किया जाता है, जिसे pcf8574 चिप का उपयोग करके स्कैन किया जाता है

//addr, en,rw,rs,d4,d5,d6,d7,backlight, polarity. हम इसे 4 बिट डिवाइस के रूप में प्रयोग कर रहे हैं //मेरा डिस्प्ले पिनआउट rs,rw,e,d0-d7 है। केवल d<4-7> का प्रयोग किया गया है। <210> इसलिए प्रकट होता है क्योंकि बिट्स <012> को //EN,RW,RS के रूप में मैप किया गया है और हमें हार्डवेयर पर वास्तविक क्रम के अनुसार उन्हें पुनः व्यवस्थित करने की आवश्यकता है, 3 को //बैकलाइट पर मैप किया गया है। <4-7> बैकपैक और डिस्प्ले पर उसी क्रम में प्रकट होते हैं।

#define BOOTUP_LCD LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //YwRobot बैकपैक

2 एलसीडी डिस्प्ले (वैकल्पिक) को चलाने वाले I1602C बैकपैक को परिभाषित और कॉन्फ़िगर करने के लिए उपयोग किया जाता है, यह सॉफ्टकॉन्फ़िगरेबल है और कई बैकपैक्स उपलब्ध हैं जिनके पिन कॉन्फ़िगरेशन अलग-अलग होते हैं।
#अंतअगर

चरण 7. संकलित करें और बोर्ड पर अपलोड करें।

अब आपने वह बोर्ड कॉम्बो कॉन्फ़िगर कर लिया है जिसका आप उपयोग करना चाहते हैं, आप प्रोजेक्ट को संकलित कर सकते हैं। यदि आप 4×4 मैट्रिक्स कीपैड और एलसीडी का उपयोग नहीं करना चाहते हैं, तो कोई समस्या नहीं है, उनकी परिभाषाएँ उसी तरह छोड़ दें जैसा कि सॉफ़्टवेयर उन्हें कॉन्फ़िगर करने की अपेक्षा करता है। सिस्टम उनके बिना वाईफ़ाई पर ठीक काम करेगा।
IDE पर, टिक चिह्न (सत्यापन) वास्तव में "संकलन" है। इस पर क्लिक करें और आपको विभिन्न संदेश दिखाई देंगे (बशर्ते आपने वर्बोज़ संकलन सक्षम किया हो) क्योंकि सिस्टम विभिन्न लाइब्रेरीज़ को संकलित करता है और इसे एक साथ जोड़ता है। यदि सब ठीक काम करता है, और यदि आपने ऊपर दिए गए सभी चरणों का ठीक से पालन किया है, तो आपको एक सफलता संदेश दिखाई देना चाहिए। अब आप दायाँ तीर (अपलोड) बटन दबाने के लिए तैयार हैं, लेकिन ऐसा करने से पहले, जाँच लें कि आपने टूल मेनू के अंतर्गत बोर्ड के लिए सही COM पोर्ट चुना है।
सफल अपलोड के बाद (अच्छी गुणवत्ता वाली यूएसबी केबल का उपयोग करें) आपको इसे भी लागू करना होगा ESP8266 स्केच डेटा मेनू लोड करें टूल्स के अंतर्गत विकल्प चुनें। यह डेटा फ़ोल्डर की सामग्री को डिवाइस (सभी HTML पेज) पर डाल देगा।
आपका काम हो गया। सीरियल मॉनिटर खोलें, रीसेट बटन पर क्लिक करें और आपको डिवाइस बूट दिखाई देगा और I2C डिवाइस के लिए स्कैन करना होगा। अब आप इसे वाई-फाई के ज़रिए कनेक्ट कर सकते हैं, और यह अपने पावर बोर्ड (मोटर शील्ड) से वायर करने के लिए तैयार है।

दस्तावेज़ / संसाधन

DCC नियंत्रक के लिए ARDUINO IDE सेट अप [पीडीएफ] निर्देश
DCC नियंत्रक के लिए IDE सेट अप, IDE सेट अप, DCC नियंत्रक के लिए सेट अप, DCC नियंत्रक IDE सेट अप, DCC नियंत्रक

संदर्भ

एक टिप्पणी छोड़ें

आपकी ईमेल आईडी प्रकाशित नहीं की जाएगी। आवश्यक फ़ील्ड चिह्नित हैं *