विषयसूची:

आरसी प्लेन अल्टीमीटर (स्पेक्ट्रम टेलीमेट्री के साथ संगत): 7 कदम
आरसी प्लेन अल्टीमीटर (स्पेक्ट्रम टेलीमेट्री के साथ संगत): 7 कदम

वीडियो: आरसी प्लेन अल्टीमीटर (स्पेक्ट्रम टेलीमेट्री के साथ संगत): 7 कदम

वीडियो: आरसी प्लेन अल्टीमीटर (स्पेक्ट्रम टेलीमेट्री के साथ संगत): 7 कदम
वीडियो: Spektrum Smart Receiver AS3X Setup Series #11 - SAFE Flight Testing 2024, जुलाई
Anonim
आरसी प्लेन अल्टीमीटर (स्पेक्ट्रम टेलीमेट्री के साथ संगत)
आरसी प्लेन अल्टीमीटर (स्पेक्ट्रम टेलीमेट्री के साथ संगत)

मैंने यह altimeter इसलिए बनाया ताकि पायलट को पता चल सके कि वे अमेरिका में RC विमान पर 400 फुट की सीमा के नीचे हैं। मेरा दोस्त चिंतित था क्योंकि वह निश्चित रूप से यह नहीं कह सकता था कि वह हमेशा 400 फीट से कम था, और अतिरिक्त आश्वासन चाहता था कि टेलीमेट्री डेटा वाला एक सेंसर प्रदान करेगा। हां, आप स्पेक्ट्रम से एक सेंसर खरीद सकते हैं, लेकिन आप इस प्रोजेक्ट को ब्रेकआउट बोर्ड (जो पहले से ही कीमत में बढ़ाए गए हैं) के साथ $20 से कम में बना सकते हैं। यदि आपके पास पहले से ही जे-लिंक प्रोग्रामर है, तो आप इसे कुछ डॉलर के लिए एक कस्टम बोर्ड पर बना सकते हैं। एक बार जब आप Xbus प्रोटोकॉल को समझ लेते हैं, तो उल्लेख करने के लिए नहीं, आप किसी भी अन्य समर्थित सेंसर को बना सकते हैं! लेकिन मैं इस परियोजना में सिर्फ एक altimeter को कवर करूंगा …

हिस्सों की सूची:

  • मैंने इस परियोजना के लिए एक Seeeduino XIAO माइक्रोकंट्रोलर बोर्ड का उपयोग किया है क्योंकि यह छोटा है, एक M0 प्रोसेसर का उपयोग करता है जिसमें इस परियोजना के लिए बहुत शक्ति है, I2C और SPI दोनों बॉक्स से बाहर जाने के लिए तैयार हैं, और 3.3v तर्क का उपयोग करता है इसलिए कोई स्तर स्थानांतरण नहीं है आवश्यक।

    https://www.seeedstudio.com/Seeeduino-XIAO-Arduino…

  • वायुदाब संवेदन के लिए, मैंने Adafruit से BMP388 ब्रेकआउट बोर्ड खरीदा। बोर्ड में I2C और SPI दोनों टूट गए हैं, और 3.3v या 5v तर्क पर काम कर सकते हैं।

    https://www.adafruit.com/product/3966

  • सर्किट को वायर करने के लिए प्रोटोबार्ड
  • सोल्डर/सोल्डरिंग आयरन
  • पुरुष/महिला पिन हेडर ताकि मैं आसानी से सेंसर/माइक्रोकंट्रोलर को अलग कर सकूं।
  • छोटा बटन। मैं इसका उपयोग शुरुआती ऊंचाई को रीसेट करने के लिए करता हूं।
  • बटन पर पुल-डाउन के लिए 10k रोकनेवाला।
  • जेएसटी-एक्सएच 4 पिन महिला कनेक्टर स्पेक्ट्रम रिसीवर के टेलीमेट्री पोर्ट में प्लग करने के लिए
  • बिना बूटलोडर के M0 को फ्लैश करने के लिए SEGGER J-Link EDU प्रोग्रामर।

    https://www.adafruit.com/product/3571

  • एडफ्रूट एसडब्ल्यूडी 10-पिन ब्रेकआउट बोर्ड

    www.adafruit.com/product/2743

आपूर्ति

  • मैंने अपनी ऊंचाई के लिए एक छोटे से बाड़े को 3D प्रिंट किया, लेकिन इसकी आवश्यकता नहीं है।
  • ऑसिलोस्कोप- यदि आपके पास एक नहीं है, तो मैं इसकी अत्यधिक अनुशंसा करता हूं:

    https://store.digilentinc.com/analog-discovery-2-1…

चरण 1: स्पेक्ट्रम टेलीमेट्री प्रोटोकॉल सीखें

स्पेक्ट्रम टेलीमेट्री प्रोटोकॉल सीखें
स्पेक्ट्रम टेलीमेट्री प्रोटोकॉल सीखें
स्पेक्ट्रम टेलीमेट्री प्रोटोकॉल सीखें
स्पेक्ट्रम टेलीमेट्री प्रोटोकॉल सीखें
स्पेक्ट्रम टेलीमेट्री प्रोटोकॉल सीखें
स्पेक्ट्रम टेलीमेट्री प्रोटोकॉल सीखें

यह ज्यादातर मेरे लिए रेमंड डोमिंगो द्वारा किया गया था। उन्होंने पहले से ही स्पेक्ट्रम के साथ संगत एक altimeter बना दिया था, इसलिए उस स्रोत कोड का पालन करने से वास्तव में मदद मिली। स्पेक्ट्रम टेलीमेट्री डेटाशीट बाकी अंतराल में भर गई। रिसीवर के बाहर डेटा स्तरों को मापने से पता चला कि मुझे 3.3v तर्क की आवश्यकता होगी।

रिसीवर डिवाइस का पता भेजता है, और फिर 16-बाइट उत्तर की अपेक्षा करता है। डेटाशीट सभी विभिन्न सेंसरों के लिए संरचनाओं को दिखाती है। यहां तक कि अगर संरचना 16 बाइट्स लंबी नहीं है, तो रिसीवर हर बार 16 बाइट्स की अपेक्षा करता है।

स्पेक्ट्रम डेटाशीट:

www.spektrumrc.com/ProdInfo/Files/SPM_Tele…

रेमंड डोमिंगो की परियोजना:

www.aerobtec.com/download/altisSpektrumInte…

चरण 2: हार्डवेयर का चयन करें

हार्डवेयर का चयन करें
हार्डवेयर का चयन करें
हार्डवेयर का चयन करें
हार्डवेयर का चयन करें
हार्डवेयर का चयन करें
हार्डवेयर का चयन करें

मैंने दबाव संवेदन के लिए Adafruit के BMP388 ब्रेकआउट बोर्ड का उपयोग किया। ब्रेकआउट I2C और SPI ब्रेकआउट प्रदान करता है, और 3.3v या 5v लॉजिक पर काम करता है। एडफ्रूट हमेशा अपने ब्रेकआउट बोर्ड के साथ एक अद्भुत काम करता है, इसलिए मैंने इसे खरीदा। मैंने अपने निर्माण के बजाय DFRobot Gravity BMP388 बोर्ड का उपयोग किया क्योंकि मेरा Adafruit बोर्ड पहले से ही उपयोग में था।

यह देखते हुए कि होस्ट I2C डिवाइस 3.3v तर्क का उपयोग करता है, मुझे 3.3v माइक्रोकंट्रोलर की आवश्यकता थी, और मैं चाहता था कि यह छोटा हो। मैं एक Adafruit Trinket M0 का उपयोग करने जा रहा था, लेकिन वे अपेक्षाकृत महंगे हैं, और बहुत सारे पिन टूटे नहीं हैं। तब मुझे Seeeduino XIAO बोर्ड मिला। यह एक M0 बोर्ड है जिसमें I2C और SPI दोनों जाने के लिए तैयार हैं, USB-C कनेक्टर के साथ। इसके अलावा, यह वास्तव में छोटा है! कुल मिलाकर मुझे वास्तव में यह बोर्ड पसंद है (भले ही धीमी स्टार्टअप क्रिस्टल ने मुझे हमेशा के लिए समझ लिया)।

स्पेक्ट्रम "एक्सबस" पोर्ट के लिए रिसीवर पर एक जेएसटी-एक्सएच आकार 4-पिन पुरुष कनेक्टर का उपयोग करता है जिसे हम टैप करेंगे। मैंने altimeter पर 4-पिन JST-XH महिला प्लग का उपयोग किया और इसने पूरी तरह से काम किया।

चरण 3: सॉफ्टवेयर लिखें

मैंने सभी कोड लिखने के लिए Arduino IDE का उपयोग किया। मैंने स्पेक्ट्रम टेलीमेट्री प्रोटोकॉल को उनके डेटाशीट से कॉपी किया और इसे अपने Arduino लाइब्रेरी में जोड़ा। चूँकि Adafruit के पास हमेशा उनके ब्रेकआउट के लिए अच्छी लाइब्रेरी होती है, इसलिए मैंने BMP388 सेंसर के लिए उनकी BMP3XX लाइब्रेरी का उपयोग किया।

मेरे डिजाइन से मुख्य takeaways हैं:

  • क्लाइंट डिवाइस के रूप में व्यवहार करने के लिए I2C को सेटअप करें और स्पेक्ट्रम अल्टीमीटर एड्रेस (0x12) का जवाब दें।
  • SPI के माध्यम से BMP388 बैरोमीटर पढ़ें।
  • ऊंचाई डेटा को दो अलग-अलग बफ़र्स में सहेजें ताकि रिसीवर से I2C अनुरोध डेटा को दूषित न करे, और डेटा लाते समय दो बफ़र्स के बीच वैकल्पिक हो। यह सुनिश्चित करता है कि रिसीवर को भेजा गया डेटा हमेशा पूरा हो।
  • altimeter को शून्य करने के लिए एक बटन का उपयोग करता है।

अधिक विवरण और कोड विश्लेषण के लिए, वीडियो देखें।

चरण 4: सर्किट को तार दें

वायर द सर्किट
वायर द सर्किट
वायर द सर्किट
वायर द सर्किट
वायर द सर्किट
वायर द सर्किट
वायर द सर्किट
वायर द सर्किट

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

मैंने JST-XH कनेक्टर को XIAO के I2C पिन से कनेक्ट किया। चूंकि रिसीवर टेलीमेट्री बस में 5 वोल्ट का आउटपुट देता है, बस से पॉजिटिव XIAO के VCC पिन में चला गया। इस तरह BMP388 सेंसर को पावर देने के लिए ऑनबोर्ड 3.3v रेगुलेटर का उपयोग किया जाता है।

चरण 5: बूटलोडर के बिना संकलित करें

बूटलोडर के बिना संकलित करें
बूटलोडर के बिना संकलित करें
बूटलोडर के बिना संकलित करें
बूटलोडर के बिना संकलित करें
  1. अपनी बोर्ड.txt फ़ाइल खोजें (जिस भी बोर्ड का आप उपयोग कर रहे हैं)।

    मेरे मामले में, यह यहाँ स्थित था: C:\Users\AppData\Local\Arduino15\packages\Seeeduino\hardware\samd\1.7.7\boards.txt

  2. अपने बोर्ड की प्रतिलिपि बनाएँ, और बिना बूटलोडर संस्करण निर्दिष्ट करने के लिए पहली कुंजी का नाम बदलें। मैंने अभी मूल नाम में _nbl जोड़ा है।

    • पुराना: सीड_XIAO_m0
    • नया: सीड_XIAO_m0_nbl
  3. .name मान बदलें:

    • पुराना: Seeed_XIAO_m0_nbl.name=Seeeduino XIAO
    • नया: Seeed_XIAO_m0_nbl.name=Seeeduino XIAO कोई बूटलोडर नहीं
  4. बिल्डर ld स्क्रिप्ट को बदलकर लिंकर को बूटलोडर के बिना फ्लैश करने के लिए संशोधित करें:

    • पुराना: Seeed_XIAO_m0_nbl.build.ldscript=linker_scripts/gcc/flash_with_bootloader.ld
    • नया: सीड_XIAO_m0_nbl.build.ldscript=linker_scripts/gcc/flash_with _bootloader.ld
  5. Arduino IDE को पुनरारंभ करें।
  6. बोर्ड मेनू से नया "Seeeduino XIAO No Bootloader" बोर्ड चुनें।
  7. "निर्यात संकलित बाइनरी" चुनें
  8. एक बार संकलित हो जाने पर,.bin फ़ाइल आपके Arduino प्रोजेक्ट फ़ोल्डर में होगी।

चरण 6: जे-लिंक के साथ फ्लैश एमसीयू

जे-लिंक के साथ फ्लैश एमसीयू
जे-लिंक के साथ फ्लैश एमसीयू
जे-लिंक के साथ फ्लैश एमसीयू
जे-लिंक के साथ फ्लैश एमसीयू
जे-लिंक के साथ फ्लैश एमसीयू
जे-लिंक के साथ फ्लैश एमसीयू

Adafruit के पास M0/M4 डिवाइस पर बूटलोडर को फिर से प्रोग्राम करने के लिए एक शानदार गाइड है। हमारे मामले में, हम बूटलोडर से छुटकारा पाना चाहते हैं, लेकिन यह उसी तरह काम करता है।

learn.adafruit.com/how-to-program-samd-boo…

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

एडफ्रूट गाइड बहुत विस्तृत है, लेकिन ये बुनियादी कदम हैं:

  1. XIAO बोर्ड के पीछे सोल्डर जम्पर तार।

    • Adafruit गाइड ने यह नहीं कहा कि 2x5 ब्रेकआउट बोर्ड पर RST पिन को Adafruit बोर्ड पर रीसेट पिन से कनेक्ट करने की आवश्यकता है। लेकिन XIAO के लिए, मुझे बोर्ड के पिछले चार पैड्स से कनेक्ट करने की आवश्यकता थी।
    • VREF पिन को XIAO 3.3v पिन से कनेक्ट करने की आवश्यकता है। यह डीबगर को बताता है कि डिवाइस लॉजिक 3.3v है। इसके बिना, यदि आप गलत विकल्प चुनते हैं, तो आप माइक्रोकंट्रोलर को नुकसान पहुंचा सकते हैं।
  2. जम्पर तारों को जे-लिंक से कनेक्ट करें।
  3. USB केबल के साथ XIAO बोर्ड चालू करें।
  4. एटमेल स्टूडियो खोलें।
  5. टूल्स डिवाइस प्रोग्रामिंग का चयन करें
  6. अपना M0 बोर्ड चुनें। इस मामले में, ATSAMD21G18A
  7. एसडब्ल्यूडी का चयन करें।
  8. लक्ष्य से कॉन्फ़िगरेशन पढ़ें।
  9. यदि आप EDU J-Link का उपयोग कर रहे हैं, तो उपयोग की शर्तों से सहमत हों (यदि आप उपयोग की शर्तों का पालन कर रहे हैं)।
  10. सत्यापित करें कि ऊपरी दाएं कोने में रीड इन वोल्टेज सही है। यदि यह 3.3v नहीं है, तो आप अपना बोर्ड तोड़ सकते हैं!
  11. बूट प्रोटेक्ट फ़्यूज़ को साफ़ करें (बूटलोडर का आकार 0 बाइट्स पर सेट करें), और फिर प्रोग्राम का चयन करें।
  12. मेमोरी सेक्शन में, अपनी संकलित.bin या.hex फ़ाइल चुनें, और प्रोग्राम चुनें।

समस्या निवारण:

जब आप डिवाइस कॉन्फ़िगरेशन पढ़ते हैं, यदि आपको वोल्टेज त्रुटि सीमा से बाहर मिलता है, तो सुनिश्चित करें कि एमसीयू को पावर में प्लग किया गया है और जे-लिंक वीआरईएफ पिन 3.3 वोल्ट से जुड़ा है।

चरण 7: बाहरी क्रिस्टल के बिना पुन: संकलित करें

बाहरी क्रिस्टल के बिना पुन: संकलित करें
बाहरी क्रिस्टल के बिना पुन: संकलित करें

XIAO बोर्ड में एक बाहरी क्रिस्टल होता है जिसे शुरू होने में लंबा समय लगता है। पावर अप के बाद स्पेक्ट्रम रिसीवर 350 मिलीसेकंड टेलीमेट्री बस पर एक डिवाइस की खोज करता है, इसलिए हमें कंपाइलर को आंतरिक थरथरानवाला का उपयोग करने के लिए कहना होगा जो स्टार्टअप को लगभग तात्कालिक बना देगा।

  1. बोर्ड.txt फ़ाइल ढूंढें जिसे आपने पहले संशोधित किया था (हाँ, मैं आपको इस चरण को पहले सहेज सकता था, लेकिन यह मेरे लिए सीखने की प्रक्रिया थी)
  2. सीड_XIAO_m0_nbl.build.extra_flags स्ट्रिंग में "-DCRYSTALLESS" जोड़ें। यह संकलक को आंतरिक थरथरानवाला का उपयोग करने के लिए कहेगा।
  3. कोड को पुन: संकलित करें।
  4. MCU को फिर से फ्लैश करें।
  5. ऑसिलोस्कोप का उपयोग करके सत्यापित करें कि स्टार्टअप समय पर्याप्त तेज़ है।

जैसा कि आप तस्वीर से देख सकते हैं, पीला चैनल 1 बिजली की आपूर्ति है। सियान चैनल 2 माइक्रोकंट्रोलर पर तैयार पिन है। पावर-अप के लगभग 10 मिलीसेकंड के बाद, चैनल दो को माइक्रोकंट्रोलर द्वारा उच्च खींचा जाता है जो इंगित करता है कि यह सेटअप लूप में है। एक बार सेटअप हो जाने के बाद, एमसीयू को पिन कम खींचने के लिए कोडित किया जाता है, यह दर्शाता है कि मुख्य लूप शुरू हो रहा है। दायरा दिखाता है कि सेटअप में लगभग 3 मिलीसेकंड लगते हैं। कुल मिलाकर माइक्रोकंट्रोलर पावर-अप के बाद जाने के लिए तैयार होने में 13 मिलीसेकंड लेता है।

सिफारिश की: