সুচিপত্র:

এমবেডেড ইউনিভার্সাল ইন্টারফেস বোর্ড - ইউএসবি/ব্লুটুথ/ওয়াইফাই কন্ট্রোল: 6 টি ধাপ
এমবেডেড ইউনিভার্সাল ইন্টারফেস বোর্ড - ইউএসবি/ব্লুটুথ/ওয়াইফাই কন্ট্রোল: 6 টি ধাপ

ভিডিও: এমবেডেড ইউনিভার্সাল ইন্টারফেস বোর্ড - ইউএসবি/ব্লুটুথ/ওয়াইফাই কন্ট্রোল: 6 টি ধাপ

ভিডিও: এমবেডেড ইউনিভার্সাল ইন্টারফেস বোর্ড - ইউএসবি/ব্লুটুথ/ওয়াইফাই কন্ট্রোল: 6 টি ধাপ
ভিডিও: 8051 MICROCONTROLLER||FEATURES||BLOCK DIAGRAM||PIN DIAGRAM||MICROPROCESSOR VS MICROCONTROLLER||USES 2024, নভেম্বর
Anonim
এমবেডেড ইউনিভার্সাল ইন্টারফেস বোর্ড - ইউএসবি/ব্লুটুথ/ওয়াইফাই কন্ট্রোল
এমবেডেড ইউনিভার্সাল ইন্টারফেস বোর্ড - ইউএসবি/ব্লুটুথ/ওয়াইফাই কন্ট্রোল
এমবেডেড ইউনিভার্সাল ইন্টারফেস বোর্ড - ইউএসবি/ব্লুটুথ/ওয়াইফাই কন্ট্রোল
এমবেডেড ইউনিভার্সাল ইন্টারফেস বোর্ড - ইউএসবি/ব্লুটুথ/ওয়াইফাই কন্ট্রোল

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

আমি প্রায়ই খুঁজে পাই যে আমি একটি পিসি দিয়ে একটি এমবেডেড মডিউল ইন্টারফেস করতে চাই। যদি মডিউলটিতে বিশেষভাবে একটি ইউএসবি সংযোগ না থাকে যা প্রায়শই হয় তবে আপনাকে সাধারণত একটি অতিরিক্ত মূল্যের ইউএসবি কনভার্টার কিনতে হবে যা কেবলমাত্র এসপিআই বা কেবল আই 2 সি এর মতো একটি কাজ করবে।

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

আমি স্থির বোর্ডের এম্বেডেড ইন্টারফেস বৈশিষ্ট্য অন্তর্ভুক্ত।

  • ডিজিটাল I/O
  • I2C
  • এসপিআই
  • UART
  • PWM
  • Servo মোটর
  • এডিসি ইনপুট
  • DAC আউটপুট

যার সবগুলোই সম্পূর্ণ স্বাধীনভাবে ব্যবহার করা যায়।

ইন্টারফেস বোর্ডটি পিসিতে একটি ইউএসবি সংযোগের মাধ্যমে নিয়ন্ত্রণ করা যায়, কিন্তু remoteচ্ছিক ওয়াইফাই বা ব্লুটুথ মডিউল সংযোগ রয়েছে যাতে বোর্ডটি দূর থেকে বা আইওটি টাইপ পরিস্থিতিতে ব্যবহার করা যায়।

স্ট্যান্ডার্ড 2.54 মিমি পিচ এসআইএল হেডার ব্যবহার করে বোর্ড এবং এমবেডেড মডিউলের মধ্যে সরাসরি মহিলা ডুপোন্ট কেবলগুলি সংযুক্ত করা সম্ভব, যা দ্রুত, নির্ভরযোগ্য এবং ঝাল মুক্ত সংযোগের অনুমতি দেয়।

আমি ক্যান, লিন, এইচ-ব্রিজ ইত্যাদি জিনিসগুলি যোগ করার কথাও ভেবেছিলাম কিন্তু এগুলি পরে v2 সংশোধন নিয়ে আসতে পারে।

ধাপ 1: পিসিবি ডিজাইন করা

পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা
পিসিবি ডিজাইন করা

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

আমার পছন্দের ইলেকট্রনিক্স সরবরাহকারীর দিকে তাকিয়ে আমি একটি চিপ পেয়েছি যা আমি আরামদায়ক ছিল যে বৈশিষ্ট্যগুলি আমি খুঁজছিলাম এবং একটি যুক্তিসঙ্গত খরচ ছিল। আমি যে চিপে অবতরণ করেছি তা ছিল PIC18F24K50।

উপলব্ধ 23 I/O পিনের সাথে এটি আমাকে এই বৈশিষ্ট্যগুলির অনুমতি দেয়

  • Digtal I/O
  • I2C
  • এসপিআই
  • UART
  • PWM x 2
  • Servo মোটর x 6
  • এডিসি ইনপুট x 3
  • DAC আউটপুট x 1
  • I/O 5V বা 3V3 থেকে চালিত
  • স্থিতি LED

আমি যে আইসি বেছে নিয়েছি তার একটি ত্রুটি হল এটিতে শুধুমাত্র একটি UART পেরিফেরাল রয়েছে এবং তাই ব্লুটুথ বা ওয়াইফাই নিয়ন্ত্রণ পদ্ধতি ব্যবহার করলে আপনি UART সংযোগ ব্যবহার করতে পারবেন না।

উপরের ছবিতে দেখানো হয়েছে সমাপ্ত পরিকল্পিত এবং PCB।

ধাপ 2: প্রোটোকল ডিজাইন করা

প্রটোকল ডিজাইন করা
প্রটোকল ডিজাইন করা

প্রোটোকল ডিজাইনের প্রথম ধাপ হল সিদ্ধান্ত নেওয়া যে, বিশেষ করে বোর্ডের কী করতে হবে। ব্রেকিং জিনিসগুলিকে নিয়ন্ত্রণের একটি ভাল স্তর যোগ করে যেখানে জিনিসগুলিকে একত্রিত করা ইন্টারফেসকে সহজ করে এবং বোর্ড এবং পিসির মধ্যে কমস ট্রাফিক হ্রাস করে। এটি একটি ভারসাম্যপূর্ণ খেলা এবং নিখুঁত করা কঠিন।

বোর্ডের প্রতিটি ফাংশনের জন্য আপনার কোন প্যারামিটার এবং রিটার্ন নির্দেশ করা উচিত। উদাহরণস্বরূপ একটি এডিসি ইনপুট পড়ার জন্য একটি ফাংশন নমুনার জন্য কোন ইনপুট এবং ফলাফল ধারণকারী একটি ফেরত মান নির্দিষ্ট করার জন্য একটি প্যারামিটার থাকতে পারে।

আমার নকশায় এখানে ফাংশনগুলির তালিকা রয়েছে যা আমি অন্তর্ভুক্ত করতে চেয়েছিলাম:

  • ডিজিটাল I/O

    • সেটপিন (পিন নম্বর, রাজ্য)
    • রাজ্য = GetPin (PinNumber)
  • এসপিআই

    • আরম্ভ (SPI মোড)
    • DataIn = স্থানান্তর (DataOut)
    • ControlChipSelect (চ্যানেল, রাজ্য)
    • SetPrescaler (হার)
  • I2C

    • আরম্ভ ()
    • শুরু ()
    • আবার শুরু ()
    • থামুন ()
    • SlaveAck = পাঠান (DataOut)
    • DataIn = প্রাপ্ত (শেষ)
  • UART

    • আরম্ভ ()
    • TX বাইট (DataOut)
    • বাইটস উপলব্ধ = RX গণনা ()
    • DataIn = RX বাইট ()
    • SetBaud (Baud)
  • PWM

    • সক্ষম করুন (চ্যানেল)
    • অক্ষম করুন (চ্যানেল)
    • SetFrequency (চ্যানেল, ফ্রিকোয়েন্সি)
    • GetMaxDuty (দায়িত্ব)
    • সেটডিউটি (ডিউটি)
  • সার্ভো

    • সক্ষম করুন (চ্যানেল)
    • অক্ষম করুন (চ্যানেল)
    • SetPosition (চ্যানেল, অবস্থান)
  • এডিসি

    ADCsample = নমুনা (চ্যানেল)

  • DAC

    • সক্ষম করুন
    • নিষ্ক্রিয় করুন
    • সেট আউটপুট (ভোল্টেজ)
  • ওয়াইফাই

    • SetSSID (SSID)
    • পাসওয়ার্ড সেট করুন (পাসওয়ার্ড)
    • অবস্থা = CheckConnectionStatus ()
    • আইপি = GetIPAddress ()

বন্ধনীতে প্যারামিটার দেখানো হয়েছে এবং সমান প্রতীকের আগে রিটার্ন দেখানো হয়েছে।

আমি কোডিং শুরু করার আগে আমি প্রতিটি ফাংশনকে 128 (বাইনারি 0b10000000) থেকে শুরু করে একটি কমান্ড কোড বরাদ্দ করি এবং উপরের দিকে কাজ করি। আমি প্রোটোকলটি সম্পূর্ণভাবে নথিভুক্ত করি যাতে একবার আমার মাথা কোডে থাকে আমার কাছে ফিরে যাওয়ার জন্য একটি চমৎকার নথি আছে। এই প্রকল্পের জন্য সম্পূর্ণ প্রোটোকল ডকুমেন্ট সংযুক্ত করা হয়েছে এবং ইনকামিং কমান্ড কোড এবং বিট প্রস্থ অন্তর্ভুক্ত।

ধাপ 3: ফার্মওয়্যার ডিজাইন করা

ফার্মওয়্যার ডিজাইন করা
ফার্মওয়্যার ডিজাইন করা
ফার্মওয়্যার ডিজাইন করা
ফার্মওয়্যার ডিজাইন করা
ফার্মওয়্যার ডিজাইন করা
ফার্মওয়্যার ডিজাইন করা

একবার প্রোটোকল প্রতিষ্ঠিত হলে এটি হার্ডওয়্যারে কার্যকারিতা বাস্তবায়নের ক্ষেত্রে।

ফার্মওয়্যারটি বোঝার এবং ডিবাগ করার সময় সহজ রাখার সময় আমি সম্ভাব্য কমান্ড এবং ডেটা থ্রুপুট চেষ্টা এবং সর্বাধিক করার জন্য স্লেভ সিস্টেমগুলি বিকাশের সময় আমি একটি সাধারণ স্টেট মেশিন টাইপ পদ্ধতি গ্রহণ করি। আরও উন্নত সিস্টেম যেমন মোডবাস ব্যবহার করা যেতে পারে যদি আপনি অন্যান্য সংযুক্ত ডিভাইসের সাথে আরও ভাল যোগাযোগের প্রয়োজন হয় তবে এটি ওভারহেড যুক্ত করে যা জিনিসগুলিকে ধীর করে দেয়।

রাষ্ট্রীয় যন্ত্র তিনটি রাজ্য নিয়ে গঠিত:

1) কমান্ডের জন্য অপেক্ষা করা

2) প্যারামিটার গ্রহণ

3) উত্তর দিন

তিনটি রাজ্য নিম্নরূপ মিথস্ক্রিয়া করে:

1) আমরা বাফারে ইনকামিং বাইটের মধ্য দিয়ে যাই যতক্ষণ না আমাদের একটি বাইট থাকে যার মধ্যে সবচেয়ে উল্লেখযোগ্য বিট সেট থাকে। একবার আমরা এই ধরনের একটি বাইট পেয়ে গেলে আমরা এটিকে পরিচিত কমান্ডের তালিকার বিপরীতে চেক করি। যদি আমরা কোন মিল খুঁজে পাই তাহলে আমরা প্রোটোকলের সাথে মিল করার জন্য প্যারামিটার বাইট এবং রিটার্ন বাইটের সংখ্যা নির্ধারণ করি। যদি কোন প্যারামিটার বাইট না থাকে তাহলে আমরা এখানে কমান্ডটি করতে পারি এবং স্টেট 3 এ চলে যেতে পারি অথবা স্টেট 1 রিস্টার্ট করতে পারি। যদি প্যারামিটার বাইট থাকে তাহলে আমরা স্টেট 2 এ চলে যাই।

2) আমরা সমস্ত প্যারামিটার সংরক্ষণ না করা পর্যন্ত আগত বাইটগুলি সেভ করে থাকি। একবার আমরা সব পরামিতি আছে আমরা কমান্ড সঞ্চালন। যদি রিটার্ন বাইট থাকে তাহলে আমরা স্টেজ 3 এ চলে যাই যদি পাঠানোর জন্য রিটার্ন বাইট না থাকে তাহলে আমরা স্টেজ 1 এ ফিরে আসি।

3) আমরা ইনকামিং বাইট দিয়ে যাই এবং প্রতিটি বাইটের জন্য আমরা বৈধ রিটার্ন বাইট দিয়ে ইকো বাইটকে ওভাররাইট করি। একবার আমরা সমস্ত রিটার্ন বাইট পাঠিয়ে দিলে আমরা পর্যায় 1 এ ফিরে আসি।

আমি ফার্মওয়্যার ডিজাইন করতে ফ্লোকোড ব্যবহার করেছি কারণ এটি আমি যা করছি তা সুন্দরভাবে দৃশ্যমান করে। একই কাজ Arduino বা অন্যান্য এম্বেডেড প্রোগ্রামিং ভাষায় সমানভাবে ভাল করা যেতে পারে।

প্রথম ধাপ হল পিসির সাথে যোগাযোগ স্থাপন করা। এটি করার জন্য মাইক্রোকে সঠিক গতিতে চালানোর জন্য কনফিগার করতে হবে এবং ইউএসবি এবং ইউএআরটি পেরিফেরাল চালানোর জন্য আমাদের কোড যোগ করতে হবে। ফ্লোকোডে এটি প্রকল্পের মধ্যে একটি ইউএসবি সিরিয়াল কম্পোনেন্ট এবং কমস কম্পোনেন্ট মেনু থেকে একটি UART কম্পোনেন্টকে টেনে আনার মতোই সহজ।

আমরা UART- এ ইনকামিং কমান্ডগুলি ধরার জন্য একটি RX ইন্টারাপ্ট এবং বাফার যোগ করি এবং আমরা নিয়মিত ইউএসবি পোল করি। আমরা তখন আমাদের অবসর প্রক্রিয়ায় বাফার করতে পারি।

ফ্লোকোড প্রকল্প এবং উৎপন্ন সি কোড সংযুক্ত করা হয়েছে।

ধাপ 4: ফ্লোকোডের মাধ্যমে ইন্টারফেসিং

ফ্লোকোডের মাধ্যমে ইন্টারফেসিং
ফ্লোকোডের মাধ্যমে ইন্টারফেসিং
ফ্লোকোডের মাধ্যমে ইন্টারফেসিং
ফ্লোকোডের মাধ্যমে ইন্টারফেসিং
ফ্লোকোডের মাধ্যমে ইন্টারফেসিং
ফ্লোকোডের মাধ্যমে ইন্টারফেসিং

ফ্লোকোড সিমুলেশন খুবই শক্তিশালী এবং বোর্ডের সাথে কথা বলার জন্য আমাদের একটি উপাদান তৈরি করতে দেয়। কম্পোনেন্ট তৈরিতে আমরা এখন কেবল আমাদের প্রজেক্টে কম্পোনেন্টটি টেনে আনতে পারি এবং তাত্ক্ষণিকভাবে বোর্ড ফাংশন পাওয়া যায়। একটি অতিরিক্ত বোনাস হিসাবে এসপিআই, আই 2 সি বা ইউএআরটি পেরিফেরাল যে কোন বিদ্যমান উপাদান সিমুলেশনে ব্যবহার করা যেতে পারে এবং কমস ডেটা ইনজেক্টর কম্পোনেন্টের মাধ্যমে ইন্টারফেস বোর্ডে পাইপ করা যায়। সংযুক্ত ছবি ডিসপ্লেতে একটি বার্তা প্রিন্ট করার জন্য একটি সহজ প্রোগ্রাম দেখায়। ইন্টারফেস বোর্ডের মাধ্যমে প্রকৃত ডিসপ্লে হার্ডওয়্যার এবং I2C ডিসপ্লে, I2C ইনজেক্টর এবং ইন্টারফেস বোর্ড উপাদানগুলির সাথে উপাদান সেটআপের জন্য পাঠানো কমস ডেটা।

ফ্লোকোড 8.1 এর জন্য নতুন SCADA মোড হল একটি পরম যোগ বোনাস যাতে আমরা একটি প্রোগ্রাম নিতে পারি যা ফ্লোকোড সিমুলেটরে কিছু করে এবং এটি রপ্তানি করে যাতে এটি কোন পিসিতে একা লাইসেন্সিং সমস্যা ছাড়াই চলবে। এটি টেস্ট রিগ বা সেন্সর ক্লাস্টারের মতো প্রকল্পগুলির জন্য দুর্দান্ত হতে পারে।

আমি এই SCADA মোডটি WIFI কনফিগারেশন টুল তৈরি করতে ব্যবহার করি যা SSID এবং পাসওয়ার্ড কনফিগার করার পাশাপাশি মডিউলের IP ঠিকানা সংগ্রহ করতে ব্যবহার করা যেতে পারে। এটি আমাকে ইউএসবি সংযোগ ব্যবহার করে সবকিছু সেট আপ করতে দেয় এবং তারপর জিনিসগুলি চলার পরে একটি ওয়াইফাই নেটওয়ার্ক সংযোগে স্থানান্তর করে।

কিছু উদাহরণ প্রকল্প সংযুক্ত করা হয়।

ধাপ 5: অন্যান্য ইন্টারফেসিং পদ্ধতি

ফ্লোকোডের পাশাপাশি আপনি ইন্টারফেস বোর্ডের সাথে যোগাযোগের জন্য আপনার পছন্দের প্রোগ্রামিং ভাষা ব্যবহার করতে পারেন। আমরা ফ্লোকোড ব্যবহার করেছি কারণ এটিতে ইতিমধ্যে অন্তর্ভুক্ত অংশগুলির একটি লাইব্রেরি ছিল যা আমরা তাড়াতাড়ি উঠতে পারতাম কিন্তু এটি অন্যান্য অনেক ভাষার ক্ষেত্রেও প্রযোজ্য।

এখানে ইন্টারফেস বোর্ডের সাথে যোগাযোগের ভাষা এবং পদ্ধতির একটি তালিকা।

পাইথন - একটি COM পোর্ট বা IP ঠিকানায় ডাটা স্ট্রিম করার জন্য একটি সিরিয়াল লাইব্রেরি ব্যবহার করা

ম্যাটল্যাব - একটি COM পোর্ট বা আইপি ঠিকানায় ডাটা স্ট্রিম করার জন্য ফাইল কমান্ড ব্যবহার করা

C ++ / C# / VB - একটি প্রাক -লিখিত DLL ব্যবহার করে, সরাসরি COM পোর্ট বা উইন্ডোজ TCP / IP API ব্যবহার করে

ল্যাবভিউ - একটি পূর্ব -লিখিত DLL, VISA সিরিয়াল উপাদান বা TCP/IP উপাদান ব্যবহার করে

যদি কেউ উপরের ভাষাগুলি বাস্তবায়িত দেখতে চান তবে দয়া করে আমাকে জানান।

ধাপ 6: সমাপ্ত পণ্য

সমাপ্ত পণ্য
সমাপ্ত পণ্য
সমাপ্ত পণ্য
সমাপ্ত পণ্য
সমাপ্ত পণ্য
সমাপ্ত পণ্য

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

আমি এমনকি সহকর্মীদের জন্য কিছু বোর্ড হস্তান্তর করেছি যাতে তারা তাদের কাজের প্রবাহকেও উন্নত করতে পারে এবং এগুলি খুব ভালভাবে গ্রহণ করা হয়েছে।

আমার নির্দেশযোগ্য পড়ার জন্য ধন্যবাদ আমি আশা করি আপনি এটি দরকারী পেয়েছেন এবং আশা করি এটি আপনাকে আপনার উত্পাদনশীলতা বাড়ানোর জন্য আপনার নিজস্ব সরঞ্জাম তৈরি করতে অনুপ্রাণিত করবে।

প্রস্তাবিত: