সুচিপত্র:

আরসি প্লেন অ্যালটাইমিটার (স্পেকট্রাম টেলিমেট্রির সাথে সামঞ্জস্যপূর্ণ): 7 টি ধাপ
আরসি প্লেন অ্যালটাইমিটার (স্পেকট্রাম টেলিমেট্রির সাথে সামঞ্জস্যপূর্ণ): 7 টি ধাপ

ভিডিও: আরসি প্লেন অ্যালটাইমিটার (স্পেকট্রাম টেলিমেট্রির সাথে সামঞ্জস্যপূর্ণ): 7 টি ধাপ

ভিডিও: আরসি প্লেন অ্যালটাইমিটার (স্পেকট্রাম টেলিমেট্রির সাথে সামঞ্জস্যপূর্ণ): 7 টি ধাপ
ভিডিও: সাবাস বাংলাদেশ : যাত্রী নিয়ে উড়ছে ক্ষুদে বালক এর বিমান 😲 2024, নভেম্বর
Anonim
আরসি প্লেন অ্যালটাইমিটার (স্পেকট্রাম টেলিমেট্রির সাথে সামঞ্জস্যপূর্ণ)
আরসি প্লেন অ্যালটাইমিটার (স্পেকট্রাম টেলিমেট্রির সাথে সামঞ্জস্যপূর্ণ)

আমি এই আলটিমিটার তৈরি করেছি যাতে পাইলট জানতে পারে যে তারা মার্কিন যুক্তরাষ্ট্রে আরসি বিমানের 400 ফুট সীমার মধ্যে রয়েছে। আমার বন্ধু চিন্তিত ছিল কারণ সে নিশ্চিতভাবে বলতে পারছিল না যে সে সবসময় 400 ফুটের নিচে ছিল, এবং অতিরিক্ত আশ্বাস চেয়েছিল যে টেলিমেট্রি ডেটা সহ একটি সেন্সর সরবরাহ করবে। হ্যাঁ, আপনি স্পেকট্রাম থেকে একটি সেন্সর কিনতে পারেন, কিন্তু আপনি ব্রেকআউট বোর্ড (যা ইতিমধ্যে দামে স্ফীত) দিয়ে $ 20 এরও কম মূল্যে এই প্রকল্পটি তৈরি করতে পারেন। আপনার যদি ইতিমধ্যে জে-লিঙ্ক প্রোগ্রামার থাকে তবে আপনি এটি কয়েক ডলারের জন্য একটি কাস্টম বোর্ডে তৈরি করতে পারেন। আপনি Xbus প্রোটোকল একবার বুঝতে না উল্লেখ করার জন্য, আপনি অন্যান্য সমর্থিত সেন্সর যে কোনো করতে পারেন! তবে আমি এই প্রকল্পে কেবল একটি অ্যালটাইমটারকে কভার করব …

অংশ তালিকা:

  • আমি এই প্রকল্পের জন্য একটি 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

  • সার্কিট তারের জন্য Protoboard
  • সোল্ডার/সোল্ডারিং লোহা
  • পুরুষ/মহিলা পিন হেডার তাই আমি সহজেই সেন্সর/মাইক্রোকন্ট্রোলারকে আলাদা করতে পারি।
  • ছোট বোতাম। আমি এটি শুরু উচ্চতা পুনরায় সেট করার জন্য ব্যবহার করি।
  • বোতামে টান-ডাউন করার জন্য 10k প্রতিরোধক।
  • স্পেকট্রাম রিসিভারের টেলিমেট্রি পোর্টে প্লাগ করতে JST-XH 4 পিন মহিলা সংযোগকারী
  • SEGGER J-Link EDU প্রোগ্রামার বুটলোডার ছাড়া M0 ফ্ল্যাশ করতে।

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

  • Adafruit SWD 10-pin ব্রেকআউট বোর্ড

    www.adafruit.com/product/2743

সরবরাহ

  • আমি আমার অলটাইমারের জন্য 3 ডি মুদ্রণ করেছি, কিন্তু এটির প্রয়োজন নেই।
  • অসিলোস্কোপ- যদি আপনার কাছে না থাকে, আমি অত্যন্ত এটির সুপারিশ করি:

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

ধাপ 1: স্পেকট্রাম টেলিমেট্রি প্রোটোকল শিখুন

স্পেকট্রাম টেলিমেট্রি প্রোটোকল শিখুন
স্পেকট্রাম টেলিমেট্রি প্রোটোকল শিখুন
স্পেকট্রাম টেলিমেট্রি প্রোটোকল শিখুন
স্পেকট্রাম টেলিমেট্রি প্রোটোকল শিখুন
স্পেকট্রাম টেলিমেট্রি প্রোটোকল শিখুন
স্পেকট্রাম টেলিমেট্রি প্রোটোকল শিখুন

এটি বেশিরভাগই রেমন্ড ডোমিংগো আমার জন্য করেছিলেন। তারা ইতিমধ্যেই স্পেকট্রামের সাথে সামঞ্জস্যপূর্ণ একটি অ্যালটিমিটার তৈরি করেছিল, তাই সেই সোর্স কোড অনুসরণ করা সত্যিই সাহায্য করেছে। স্পেকট্রাম টেলিমেট্রি ডেটশীট বাকি শূন্যস্থান পূরণ করেছে। রিসিভারের বাইরে ডেটা লেভেল পরিমাপ করে দেখানো হয়েছে যে আমার 3.3 ভি লজিক লাগবে।

রিসিভার ডিভাইসের ঠিকানা পাঠায়, এবং তারপর একটি 16-বাইট উত্তর আশা করে। ডেটশীট সমস্ত বিভিন্ন সেন্সরের কাঠামো দেখায়। এমনকি যদি কাঠামোটি 16 বাইট দীর্ঘ না হয়, তবে রিসিভার প্রতিবার 16 বাইট ফিরে পাওয়ার আশা করে।

স্পেকট্রাম ডেটাশীট:

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

রেমন্ড ডোমিংগোর প্রকল্প:

www.aerobtec.com/download/altisSpektrumInte…

পদক্ষেপ 2: হার্ডওয়্যার নির্বাচন করুন

হার্ডওয়্যার নির্বাচন করুন
হার্ডওয়্যার নির্বাচন করুন
হার্ডওয়্যার নির্বাচন করুন
হার্ডওয়্যার নির্বাচন করুন
হার্ডওয়্যার নির্বাচন করুন
হার্ডওয়্যার নির্বাচন করুন

আমি প্রেসার সেন্সিং এর জন্য Adafruit থেকে BMP388 ব্রেকআউট বোর্ড ব্যবহার করেছি। ব্রেকআউট I2C এবং SPI ব্রেকআউট প্রদান করে, এবং 3.3v বা 5v যুক্তিতে কাজ করে। অ্যাডাফ্রুট সর্বদা তাদের ব্রেকআউট বোর্ডগুলির সাথে একটি আশ্চর্যজনক কাজ করে, তাই আমি এটি কিনেছি। আমি আমার বিল্ডের পরিবর্তে একটি DFRobot মাধ্যাকর্ষণ BMP388 বোর্ড ব্যবহার করেছি কারণ আমার Adafruit বোর্ড ইতিমধ্যে ব্যবহার করা হয়েছে।

প্রদত্ত যে হোস্ট I2C ডিভাইস 3.3v যুক্তি ব্যবহার করে, আমার একটি 3.3v মাইক্রোকন্ট্রোলার প্রয়োজন, এবং আমি এটি ছোট হতে চেয়েছিলাম। আমি একটি Adafruit Trinket M0 ব্যবহার করতে যাচ্ছিলাম, কিন্তু সেগুলো অপেক্ষাকৃত ব্যয়বহুল, এবং অনেকগুলি পিন ভাঙা নেই। তারপর আমি Seeeduino XIAO বোর্ড খুঁজে পেয়েছি। এটি একটি M0 বোর্ড যা I2C এবং SPI উভয়ই প্রস্তুত, একটি USB-C সংযোগকারী সহ। এছাড়াও, এটা সত্যিই ছোট! সামগ্রিকভাবে আমি সত্যিই এই বোর্ডটি পছন্দ করি (যদিও স্লো স্টার্টআপ ক্রিস্টাল আমাকে চিরতরে বের করে নিয়েছিল)।

স্পেকট্রাম "Xbus" পোর্টের জন্য রিসিভারে একটি JST-XH আকারের 4-পিন পুরুষ সংযোগকারী ব্যবহার করে যা আমরা ট্যাপ করব। আমি আলটিমিটারে 4-পিন JST-XH মহিলা প্লাগ ব্যবহার করেছি এবং এটি নিখুঁতভাবে কাজ করেছে।

ধাপ 3: সফ্টওয়্যার লিখুন

আমি সমস্ত কোড লিখতে Arduino IDE ব্যবহার করেছি। আমি তাদের ডেটশীট থেকে স্পেকট্রাম টেলিমেট্রি প্রোটোকলটি অনুলিপি করেছি এবং এটি আমার আরডুইনো লাইব্রেরিতে যুক্ত করেছি। যেহেতু অ্যাডাফ্রুট সবসময় তাদের ব্রেকআউটের জন্য চমৎকার লাইব্রেরি আছে, তাই আমি তাদের BMP3XX লাইব্রেরি BMP388 সেন্সরের জন্য ব্যবহার করেছি।

আমার নকশা থেকে প্রধান takeaways হয়:

  • ক্লায়েন্ট ডিভাইস হিসাবে আচরণ করতে I2C সেটআপ করুন এবং স্পেকট্রাম অ্যালটাইমিটার অ্যাড্রেস (0x12) এ সাড়া দিন।
  • SPI এর মাধ্যমে BMP388 ব্যারোমিটার পড়ুন।
  • উচ্চতা ডেটা দুটি ভিন্ন বাফারে সংরক্ষণ করুন যাতে রিসিভারের একটি I2C অনুরোধ ডেটা দূষিত না করে এবং ডেটা আনার সময় দুই বাফারের মধ্যে বিকল্প হয়। এটি নিশ্চিত করে যে রিসিভারে পাঠানো ডেটা সর্বদা সম্পূর্ণ।
  • আলটিমিটার শূন্য করার জন্য একটি বোতাম ব্যবহার করে।

আরও বিশদ এবং কোড বিশ্লেষণের জন্য, ভিডিওটি দেখুন।

ধাপ 4: সার্কিট তারের

সার্কিট তারে
সার্কিট তারে
সার্কিট তারে
সার্কিট তারে
সার্কিট তারে
সার্কিট তারে
সার্কিট তারে
সার্কিট তারে

আমি প্রোটোবোর্ড ব্যবহার করেছি, কিন্তু আপনি যদি কাস্টম মিল্ড বোর্ড ডিজাইন করতে সময় নিতে চান, তাহলে আপনি সার্কিটটিকে অনেক বেশি ক্লিনার করতে পারেন।

আমি XIAO এর I2C পিনের সাথে JST-XH সংযোগকারীকে সংযুক্ত করেছি। যেহেতু রিসিভার টেলিমেট্রি বাসে 5 ভোল্ট আউটপুট করে, তাই বাস থেকে পজিটিভ XIAO- এর VCC পিনে চলে গেল। এই ভাবে অনবোর্ড 3.3v রেগুলেটর BMP388 সেন্সরকে পাওয়ার জন্য ব্যবহার করা হয়।

ধাপ 5: বুটলোডার ছাড়া কম্পাইল করুন

বুটলোডার ছাড়া কম্পাইল করুন
বুটলোডার ছাড়া কম্পাইল করুন
বুটলোডার ছাড়া কম্পাইল করুন
বুটলোডার ছাড়া কম্পাইল করুন
  1. আপনার board.txt ফাইলটি খুঁজুন (আপনি যে বোর্ড ব্যবহার করছেন তার জন্য)।

    আমার ক্ষেত্রে, এটি এখানে অবস্থিত ছিল:

  2. আপনার বোর্ডটি অনুলিপি করুন এবং বুটলোডারবিহীন সংস্করণ নির্দিষ্ট করতে প্রথম কীটির নাম পরিবর্তন করুন। আমি শুধু মূল নামের সাথে _nbl যোগ করেছি।

    • পুরাতন: seeed_XIAO_m0
    • নতুন: seeed_XIAO_m0_nbl
  3. . Name মান পরিবর্তন করুন:

    • পুরাতন: seeed_XIAO_m0_nbl.name = Seeeduino XIAO
    • নতুন: seeed_XIAO_m0_nbl.name = Seeeduino XIAO No Bootloader
  4. নির্মাতা ld স্ক্রিপ্ট পরিবর্তন করে বুটলোডার ছাড়াই ফ্ল্যাশ করার জন্য লিঙ্কার সংশোধন করুন:

    • পুরাতন: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with_bootloader.ld
    • নতুন: seeed_XIAO_m0_nbl.build.ldscript = linker_scripts/gcc/flash_with out _bootloader.ld
  5. Arduino IDE পুনরায় চালু করুন।
  6. বোর্ড মেনু থেকে নতুন "Seeeduino XIAO No Bootloader" বোর্ড নির্বাচন করুন।
  7. "রপ্তানি সংকলিত বাইনারি" নির্বাচন করুন
  8. একবার কম্পাইল হয়ে গেলে,.bin ফাইলটি আপনার Arduino প্রকল্প ফোল্ডারে থাকবে।

ধাপ 6: জে-লিঙ্কের সাথে ফ্ল্যাশ এমসিইউ

জে-লিংকের সাথে ফ্ল্যাশ এমসিইউ
জে-লিংকের সাথে ফ্ল্যাশ এমসিইউ
জে-লিংকের সাথে ফ্ল্যাশ এমসিইউ
জে-লিংকের সাথে ফ্ল্যাশ এমসিইউ
জে-লিংকের সাথে ফ্ল্যাশ এমসিইউ
জে-লিংকের সাথে ফ্ল্যাশ এমসিইউ

M0/M4 ডিভাইসে বুটলোডারকে পুনরায় প্রোগ্রাম করার জন্য অ্যাডাফ্রুটের একটি দুর্দান্ত নির্দেশিকা রয়েছে। আমাদের ক্ষেত্রে, আমরা বুটলোডার থেকে পরিত্রাণ পেতে চাই, কিন্তু এটি একই ভাবে কাজ করে।

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

একবার আপনি এটি করলে, আপনি ইউএসবি এর মাধ্যমে কোড আপলোড করতে পারবেন না। আপনি উপরের গাইডটি অনুসরণ করতে পারেন যাতে বুটলোডারটি আবার ইউএসবি এর মাধ্যমে কোড আপলোড করার জন্য ডিভাইসে ফিরে আসে যেমন আপনি কারখানা থেকে করতে পেরেছিলেন।

অ্যাডাফ্রুট গাইড খুব পুঙ্খানুপুঙ্খ, তবে এগুলি মৌলিক পদক্ষেপ:

  1. XIAO বোর্ডের পিছনে সোল্ডার জাম্পার তার।

    • অ্যাডাফ্রুট গাইড বলেনি যে 2x5 ব্রেকআউট বোর্ডে আরএসটি পিনটি অ্যাডাফ্রুট বোর্ডের রিসেট পিনের সাথে সংযুক্ত হওয়া দরকার। কিন্তু XIAO এর জন্য, আমাকে বোর্ডের পিছনের চারটি প্যাডের সাথে সংযুক্ত করতে হবে।
    • VREF পিন XIAO 3.3v পিনের সাথে সংযুক্ত করা প্রয়োজন। এটি ডিবাগারকে বলে যে ডিভাইসের লজিক 3.3v। এটি ছাড়া, যদি আপনি ভুল বিকল্পটি নির্বাচন করেন তবে আপনি মাইক্রোকন্ট্রোলারের ক্ষতি করতে পারেন।
  2. J-Link এর সাথে জাম্পার তারের সংযোগ করুন।
  3. একটি USB তারের সঙ্গে XIAO বোর্ডে শক্তি।
  4. এটমেল স্টুডিও খুলুন।
  5. সরঞ্জাম ডিভাইস প্রোগ্রামিং নির্বাচন করুন
  6. আপনার M0 বোর্ড নির্বাচন করুন। এই ক্ষেত্রে, ATSAMD21G18A
  7. SWD নির্বাচন করুন।
  8. লক্ষ্য থেকে কনফিগারেশন পড়ুন।
  9. আপনি যদি EDU J-Link ব্যবহার করছেন, ব্যবহারের শর্তাবলীতে সম্মত হন (যদি আপনি ব্যবহারের শর্তাবলী মেনে চলেন)।
  10. যাচাই করুন যে উপরের ডান দিকের কোণায় ভোল্টে পড়া সঠিক। যদি এটি 3.3v না হয়, আপনি আপনার বোর্ডটি ভেঙে ফেলতে পারেন!
  11. বুট সুরক্ষা ফিউজ সাফ করুন (বুটলোডারের আকার 0 বাইটে সেট করুন) এবং তারপরে প্রোগ্রামটি নির্বাচন করুন।
  12. স্মৃতি বিভাগে, আপনার সংকলিত.bin বা.hex ফাইল নির্বাচন করুন এবং প্রোগ্রাম নির্বাচন করুন।

সমস্যা সমাধান:

যখন আপনি ডিভাইস কনফিগারেশন পড়েন, যদি আপনি ভোল্টেজ আউট অফ রেঞ্জের ত্রুটি পান, তাহলে নিশ্চিত করুন যে MCU পাওয়ারে প্লাগ করা আছে এবং J-Link VREF পিন 3.3 ভোল্টের সাথে সংযুক্ত।

ধাপ 7: বাহ্যিক ক্রিস্টাল ছাড়া পুনরায় কম্পাইল করুন

বাহ্যিক ক্রিস্টাল ছাড়া পুনরায় কম্পাইল করুন
বাহ্যিক ক্রিস্টাল ছাড়া পুনরায় কম্পাইল করুন

XIAO বোর্ডে একটি বহিরাগত স্ফটিক রয়েছে যা শুরু হতে দীর্ঘ সময় নেয়। স্পেকট্রাম রিসিভার পাওয়ার আপের পর টেলিমেট্রি বাসে 350 মিলিসেকেন্ডে একটি ডিভাইস আবিষ্কার করে, তাই আমাদের কম্পাইলারকে অভ্যন্তরীণ অসিলেটর ব্যবহার করতে বলা দরকার যা স্টার্টআপকে প্রায় তাত্ক্ষণিক করে তুলবে।

  1. আপনি যে বোর্ডসটক্স ফাইলটি আগে সংশোধন করেছিলেন তা সন্ধান করুন (হ্যাঁ, আমি আপনাকে এই ধাপে আগে বাঁচাতে পারতাম, কিন্তু এটি আমার জন্য একটি শেখার প্রক্রিয়া ছিল)
  2. Seeed_XIAO_m0_nbl.build.extra_flags স্ট্রিংয়ে "-DCRYSTALLESS" যোগ করুন। এটি কম্পাইলারকে অভ্যন্তরীণ অসিলেটর ব্যবহার করতে বলবে।
  3. কোডটি পুনরায় কম্পাইল করুন।
  4. MCU পুনরায় ফ্ল্যাশ করুন।
  5. একটি অসিলোস্কোপ ব্যবহার করে স্টার্টআপের সময় যথেষ্ট দ্রুত যাচাই করুন।

আপনি ছবি থেকে দেখতে পারেন, হলুদ চ্যানেল 1 হল বিদ্যুৎ সরবরাহ। সায়ান চ্যানেল 2 হল মাইক্রোকন্ট্রোলারের রেডি পিন। পাওয়ার-আপের পর প্রায় 10 মিলিসেকেন্ড, চ্যানেল দুইটি মাইক্রোকন্ট্রোলার দ্বারা উঁচু করা হয় যা নির্দেশ করে যে এটি সেটআপ লুপে রয়েছে। একবার সেটআপ হয়ে গেলে, এমসিইউকে পিনটি কম টানতে কোড করা হয়, যা নির্দেশ করে যে প্রধান লুপ শুরু হচ্ছে। সুযোগ দেখায় যে সেটআপটি প্রায় 3 মিলিসেকেন্ড লাগে। সামগ্রিকভাবে মাইক্রোকন্ট্রোলার পাওয়ার আপের পর 13 মিলিসেকেন্ড সময় নেয়।

প্রস্তাবিত: