এসপিআই এবং আরডুইনো ইন্টারফেস

সুচিপত্র:

এসপিআই এবং আরডুইনো ইন্টারফেস
এসপিআই এবং আরডুইনো ইন্টারফেস

ভিডিও: এসপিআই এবং আরডুইনো ইন্টারফেস

ভিডিও: এসপিআই এবং আরডুইনো ইন্টারফেস
ভিডিও: Arduino কর্মশালা - অধ্যায় 5 - SPI ব্যবহার করা 2024, মে
Anonim

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

এসপিআই ইন্টারফেস
এসপিআই ইন্টারফেস

প্রয়োজনীয়

  • - আরডুইনো;
  • - শিফট রেজিস্টার 74HC595;
  • - 8 এলইডি;
  • - 220 ওহমের 8 প্রতিরোধক।

নির্দেশনা

ধাপ 1

এসপিআই - সিরিয়াল পেরিফেরাল ইন্টারফেস বা "সিরিয়াল পেরিফেরাল ইন্টারফেস" হল পেরিফেরাল ডিভাইস (স্লেভ) দিয়ে মাস্টার ডিভাইসে ইন্টারফেস করার জন্য একটি সিঙ্ক্রোনাস ডেটা ট্রান্সফার প্রোটোকল। মাস্টার প্রায়শই একটি মাইক্রোকন্ট্রোলার হয়। ডিভাইসের মধ্যে যোগাযোগ চারটি তারের উপর দিয়ে সঞ্চালিত হয়, এ কারণেই এসপিআইকে মাঝে মাঝে "চার-তারের ইন্টারফেস" হিসাবে উল্লেখ করা হয়। এই টায়ারগুলি হ'ল:

মোশি (মাস্টার আউট স্লেভ ইন) - মাস্টার থেকে স্লেভ ডিভাইসে ডেটা সংক্রমণ লাইন;

এমআইএসও (মাস্টার ইন স্লেভ আউট) - দাস থেকে মাস্টার পর্যন্ত সংক্রমণ লাইন;

এসসিএলকে (সিরিয়াল ক্লক) - মাস্টার দ্বারা উত্পাদিত সিঙ্ক্রোনাইজেশন ক্লক ডাল;

এসএস (স্লেভ নির্বাচন) - স্লেভ ডিভাইস নির্বাচন লাইন; "0" লাইনে থাকলে, দাস "বোঝে" যে এটি অ্যাক্সেস করা হচ্ছে।

ঘড়ির নাড়ির পোলারাইটির সংমিশ্রণের কারণে (আমরা উচ্চ বা LOW স্তরে কাজ করি), ক্লক পোলারিটি, সিপিওএল এবং ঘড়ির ডালের ধাপের (সিঙ্ক্রোনাইজেশন) চারটি ডেটা স্থানান্তর (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3) রয়েছে ঘড়ির নাড়ির উত্থিত বা পড়ন্ত প্রান্তে), ক্লক পর্ব, সিপিএইচএ।

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

এসপিআই সংযোগের প্রকারগুলি
এসপিআই সংযোগের প্রকারগুলি

ধাপ ২

আরডুইনোতে, এসপিআই বাসগুলি নির্দিষ্ট বন্দরগুলিতে থাকে। প্রতিটি বোর্ডের নিজস্ব পিন অ্যাসাইনমেন্ট রয়েছে। সুবিধার জন্য, পিনগুলি নকল করে আলাদা আইসিএসপি (ইন সার্কিট সিরিয়াল প্রোগ্রামিং) সংযোজকটিতে স্থাপন করা হয়। অনুগ্রহ করে নোট করুন যেহেতু আইসিএসপি সংযোগকারী - এসএস-তে কোনও দাস নির্বাচন পিন নেই ধারণা করা হচ্ছে যে নেটওয়ার্কে আরডুইনো মাস্টার হিসাবে ব্যবহৃত হবে। তবে প্রয়োজনে, আরডুইনোর যে কোনও ডিজিটাল পিনকে এসএস হিসাবে নির্ধারণ করতে পারেন।

চিত্রটি আরডুইনো ইউএনও এবং ন্যানোর জন্য এসপিআই বাসগুলিতে পিনের স্ট্যান্ডার্ড অ্যাসাইনমেন্ট দেখায়।

আরডুইনোতে এসপিআই বাস্তবায়ন
আরডুইনোতে এসপিআই বাস্তবায়ন

ধাপ 3

আরডুইনোর জন্য একটি বিশেষ গ্রন্থাগার লেখা হয়েছে যা এসপিআই প্রোটোকল প্রয়োগ করে। এটি এর মতো সংযুক্ত: প্রোগ্রামের শুরুতে, # অন্তর্ভুক্ত এসপিআই এইচ

এসপিআই প্রোটোকলের সাথে কাজ শুরু করার জন্য, আপনাকে সেটিংস সেট করতে হবে এবং তারপরে SPI.beginTransaction () পদ্ধতি ব্যবহার করে প্রোটোকল শুরু করতে হবে। আপনি একটি নির্দেশ দিয়ে এটি করতে পারেন: SPI.beginTransaction (SPISettings (14000000, MSBFIRST, SPI_MODE0))।

এর অর্থ হল যে আমরা এসপিআই প্রোটোকলটি 14 মেগাহার্জ ফ্রিকোয়েন্সিতে শুরু করি, এমএসবি (সবচেয়ে গুরুত্বপূর্ণ বিট) থেকে শুরু করে ডেটা স্থানান্তর হয়, "0" মোডে।

আরম্ভের পরে, আমরা নীচে অবস্থায় এসএস পিনটি যুক্ত করে স্লেভ ডিভাইসটি নির্বাচন করি।

তারপরে আমরা এসপিআই.টান্সফার () কমান্ডের সাহায্যে ডেভটি স্লেভ ডিভাইসে স্থানান্তর করি।

সংক্রমণের পরে, আমরা এসএসকে উচ্চ স্থিতিতে ফিরি।

প্রোটোকল দিয়ে কাজ SPI.endTransaction () কমান্ড দিয়ে শেষ হয়। SPI.beginTransaction () এবং SPI.endTransaction () নির্দেশাবলীর মধ্যে স্থানান্তরটির কার্যকর করার সময়টি হ্রাস করা বাঞ্ছনীয় যাতে কোনও ডিভাইস বিভিন্ন সেটিংস ব্যবহার করে ডেটা স্থানান্তর শুরু করার চেষ্টা করে তবে কোনও ওভারল্যাপ না থাকে।

এসপিআই সংক্রমণ
এসপিআই সংক্রমণ

পদক্ষেপ 4

আসুন এসপিআই ইন্টারফেসের ব্যবহারিক প্রয়োগটি বিবেচনা করি। আমরা এসপিআই বাসের মাধ্যমে 8-বিট শিফট রেজিস্টারটি নিয়ন্ত্রণ করে এলইডিগুলি আলোকিত করব। আসুন আরডুইনোতে 74HC595 শিফট রেজিস্টারটি সংযুক্ত করুন। আমরা একটি 8 টি আউটপুটগুলির সাথে একটি এলইডি (সীমিত প্রতিরোধকের মাধ্যমে) এর মাধ্যমে প্রতিটি সংযোগ করি। চিত্রটিতে চিত্রটি দেখানো হয়েছে।

আরডুইনোতে শিফট রেজিস্টার 74HC595 সংযুক্ত হচ্ছে
আরডুইনোতে শিফট রেজিস্টার 74HC595 সংযুক্ত হচ্ছে

পদক্ষেপ 5

এরকম একটি স্কেচ লিখি।

প্রথমে এসপিআই লাইব্রেরি সংযোগ করি এবং এসপিআই ইন্টারফেসটি সূচনা করি। আসুন পিন 8 টি স্লেভ সিলেকশন পিন হিসাবে সংজ্ঞায়িত করি। শিফট রেজিস্টারটি এটিতে "0" মান প্রেরণ করে সাফ করুন। আমরা সিরিয়াল বন্দর শুরু করি।

শিফট রেজিস্টার ব্যবহার করে নির্দিষ্ট এলইডি জ্বালানোর জন্য আপনাকে এর ইনপুটটিতে একটি 8-বিট নম্বর প্রয়োগ করতে হবে। উদাহরণস্বরূপ, প্রথম আলো জ্বালানোর জন্য, আমরা বাইনারি নম্বরটি 00000001, দ্বিতীয়টির জন্য - 00000010, তৃতীয়টির জন্য - 00000100 ইত্যাদি খাওয়াই দশমিক স্বরলিপিতে এই বাইনারি সংখ্যাগুলি নিম্নলিখিত ক্রমটি গঠন করে: 1, 2, 4, 8, 16, 32, 64, 128 এবং 0 থেকে 7 পর্যন্ত দুটির শক্তি।

তদনুসারে, এলইডি সংখ্যা দ্বারা লুপ () এ, আমরা 0 থেকে 7 এর পুনঃ গণনা করি The পাও (বেস, ডিগ্রি) ফাংশনটি 2 চক্র কাউন্টারটির শক্তি পর্যন্ত বাড়ায়। মাইক্রোকন্ট্রোলাররা "ডাবল" ধরণের সংখ্যার সাথে খুব সঠিকভাবে কাজ করে না, ফলস্বরূপ একটি পূর্ণসংখ্যায় রূপান্তর করতে আমরা বৃত্তাকার () ফাংশনটি ব্যবহার করি। এবং আমরা ফলাফলটি শিফট রেজিস্টারে স্থানান্তর করি। স্বচ্ছতার জন্য, সিরিয়াল পোর্ট মনিটর এই অপারেশন চলাকালীন প্রাপ্ত মানগুলি প্রদর্শন করে: একটি ডিজিটের মধ্য দিয়ে চলে - LEDs একটি তরঙ্গে আলোকিত হয়।

এসপিআই বাসের মাধ্যমে শিফট রেজিস্টার নিয়ন্ত্রণের জন্য স্কেচ
এসপিআই বাসের মাধ্যমে শিফট রেজিস্টার নিয়ন্ত্রণের জন্য স্কেচ

পদক্ষেপ 6

এলইডিগুলি পরিবর্তে আলোকিত হয়, এবং আমরা আলোকসজ্জার একটি ভ্রমণ "তরঙ্গ" পর্যবেক্ষণ করি। এলইডিগুলি শিফট রেজিস্টার ব্যবহার করে নিয়ন্ত্রণ করা হয়, যার সাথে আমরা এসপিআই ইন্টারফেসের মাধ্যমে সংযুক্ত হয়েছি। ফলস্বরূপ, 8 টি এলইডি চালাতে কেবল 3 টি আরডুইনো পিন ব্যবহার করা হয়।

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

প্রস্তাবিত: