সুচিপত্র:

রাস্পবেরি PI একাধিক I2C ডিভাইস: 3 টি ধাপ
রাস্পবেরি PI একাধিক I2C ডিভাইস: 3 টি ধাপ

ভিডিও: রাস্পবেরি PI একাধিক I2C ডিভাইস: 3 টি ধাপ

ভিডিও: রাস্পবেরি PI একাধিক I2C ডিভাইস: 3 টি ধাপ
ভিডিও: মেকার পাই RP2040 ইনস্টলেশন ও বৈধকরণ 2024, নভেম্বর
Anonim
রাস্পবেরি PI একাধিক I2C ডিভাইস
রাস্পবেরি PI একাধিক I2C ডিভাইস
রাস্পবেরি PI একাধিক I2C ডিভাইস
রাস্পবেরি PI একাধিক I2C ডিভাইস

হতাশ কারণ আপনি আপনার প্রকল্পে একই I2C ডিভাইসের গুণক ব্যবহার করতে পারবেন না। ধীর মাল্টিপ্লেক্সার ব্যবহার করার দরকার নেই। সর্বশেষ রাস্পবিয়ান কার্নেল GPIO পিন ব্যবহার করে একাধিক I2C বাস তৈরি করতে সমর্থন করে। এই সমাধানটি অতি দ্রুত।

ধাপ 1: কিছু শেল কমান্ড

কিছু শেল কমান্ড
কিছু শেল কমান্ড

আপনার রাস্পবেরি পাই এর সময় আপনার i2c ডিভাইসগুলির মধ্যে একটি সংযুক্ত করুন, আপনার রাস্পবেরি পাই শুরু করুন এবং চালান

sudo i2cdetect -y 1

আপনি সংযুক্ত চিত্রের মতো একটি টেবিল দেখতে পাবেন। আমি একটি BMP280 টেম্প এবং ব্যারোমেট্রিক প্রেসার সেন্সর সংযুক্ত করেছি। সারণী অনুযায়ী i2c ঠিকানা 0x76। এই ঠিকানাটি নোট করুন।

আপনার সমস্ত i2c ডিভাইসের জন্য এটি করুন।

ধাপ 2: কেস ওয়ান: I2c ডিভাইসের একই ঠিকানা আছে

কেস ওয়ান: I2c ডিভাইসের একই ঠিকানা আছে
কেস ওয়ান: I2c ডিভাইসের একই ঠিকানা আছে

এটি সর্বদা সমস্যাযুক্ত কেস ছিল। একটি i2c বাস একাধিক ডিভাইস পরিচালনা করতে পারে, কিন্তু তাদের আলাদা i2c ঠিকানা থাকা উচিত। কিছু i2c ডিভাইসে অন্যান্য i2c ঠিকানা সেট করার জন্য জাম্পার থাকে, কিন্তু অনেকেই তা করেন না। এই ক্ষেত্রে আপনি i2c SDA (ডেটা) এবং এসসিএল (ক্লক) ঘোরানোর জন্য একটি i2c মাল্টিপ্লেক্সার (হার্ডওয়্যার) ব্যবহার করতে পারেন অথবা আপনি একটি অতিরিক্ত i2c বাস বা তার বেশি তৈরি করতে পারেন।

আমি দুটি অতিরিক্ত বাস তৈরি করব, nl বাস 3 এবং 4

ক্লি খুলুন এবং চালান

সিডি /বুট

sudo ন্যানো config.txt

কোডের নিম্নোক্ত লাইনটি যোগ করুন, যে বিভাগে spi এবং i2c সক্রিয় আছে সে ক্ষেত্রে অগ্রাধিকারযোগ্য।

dtoverlay = i2c-gpio, বাস = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24

এই লাইনটি GPIO 23 এ SDA হিসেবে এবং GPIO 24 এসসিএল হিসাবে একটি অতিরিক্ত i2c বাস (বাস 4) তৈরি করবে (GPIO 23 এবং 24 ডিফল্ট)

এছাড়াও i2c বাস 3 তৈরি করতে নিচের লাইন যোগ করুন

dtoverlay = i2c-gpio, বাস = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27

জিপিআইও 17 হবে এসডিএ এবং জিপিআইও 27 হবে আইসি 2 সি বাস 4 এর জন্য এসসিএল।

প্রস্থান করতে X নিয়ন্ত্রণ করুন।

বাসের নাম্বারিং এবং অর্ডারে নোট:

বাস 0 এবং 2 ব্যবহার করবেন না, এটি বোর্ডের অন্যান্য জিনিস যেমন টুপি ইত্যাদিতে ব্যবহার করা হয়

এপ্রিল 2019 রাস্পবিয়ান মুক্তির জন্য:

আপনি সবসময় আপনার config.txt এ সর্বোচ্চ বাস (এই ক্ষেত্রে বাস 4) দিয়ে শুরু করুন এবং সর্বনিম্ন বাসে (বাস 3) কাজ করুন।

সর্বনিম্ন বাস সবসময় বাস 3 হতে হবে

আপনার যদি 5 টি অতিরিক্ত বাসের প্রয়োজন হয় তবে বাসগুলি অবশ্যই 7, 6, 5, 4, 3 এর ক্রমে দ্বি করতে হবে

বাস নির্দেশে এই সমস্যাটি ছিল না যখন এই নির্দেশযোগ্যটি মূলত লেখা হয়েছিল। মনে হচ্ছে কার্নেলে পরিবর্তন করা হয়েছে।

আপনার পিআই বন্ধ করুন, এটি সুইচ করুন। আপনার i2c ডিভাইসগুলিকে বাস 4 (SDA থেকে GPIO 23 এবং SCL থেকে GPIO 24) এবং অন্যটি i2c বাস 3 (SDA থেকে GPIO 17 এবং SCL থেকে GPIO 27) এর সাথে সংযুক্ত করুন।

পাই চালু করুন।

চালান:

sudo i2cdetect -l (লোয়ার কেস L)

আপনি এখন দেখতে পাবেন যে i2c বাস 3 এবং 4 তালিকাভুক্ত। এছাড়াও চালান:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

এখন আপনি আপনার প্রোগ্রামিং ভাষায় আপনার সেন্সর ব্যবহার করতে পারেন। সঠিক i2c busses উল্লেখ করতে ভুলবেন না।

জনপ্রিয় BMP280 তাপমাত্রা এবং চাপ সেন্সরের জন্য সংযুক্তি একটি উদাহরণ। কোন মাল্টিপ্লেক্সার এই দ্রুত 2 BMP280s পড়তে পারে না।

2 Sensirion SDP 810 সেন্সরের একটি উদাহরণও সংযুক্ত। আবার আমি অতীতে যে মাল্টিপ্লেক্সার ব্যবহার করেছি তার চেয়ে অনেক দ্রুত কাজ করা

আমি অ্যাডাফ্রুট থেকে দুটি নতুন BMP388s পড়ার জন্য পাইথন কোড তৈরি করেছি।

আমি ভবিষ্যতে অন্যান্য সেন্সর যোগ করতে পারি

ধাপ 3: কেস 2: বিভিন্ন I2c ঠিকানা।

সরল। i2c একটি বাস। একটি বাসের উদ্দেশ্য হল একাধিক ডিভাইসের সাথে যোগাযোগ করা। একই i2c বাসের সমান্তরাল ডিভাইসগুলিকে সংযুক্ত করুন। আপনি একটি বাস ব্যবহার করতে পারেন।

চালান:

sudo i2cdetect -y 1

আপনি তালিকাভুক্ত ডিভাইসগুলি দেখতে পাবেন।

প্রস্তাবিত: