فهرست مطالب:
- مرحله 1: الزامات سخت افزاری
- مرحله 2: موضوعات تحت پوشش
- مرحله 3: اصول اولیه گذرگاه I2C
- مرحله 4: ماژول چند منظوره TCA9548A I2C
- مرحله 5:
- مرحله 6: نحوه ارسال و دریافت داده توسط استاد
- مرحله 7: کد
- مرحله 8: اسکنر I2C
- مرحله 9: سیم کشی و نمایشی
- مرحله 10: مزایا و معایب
- مرحله 11: با تشکر
تصویری: TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU: 11 Step
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:56
آیا تا به حال در موقعیتی قرار گرفته اید که مجبور شوید دو ، سه یا چند سنسور I2C را به آردوینو خود متصل کنید تا متوجه شوید که سنسورها دارای آدرس I2C ثابت یا یکسان هستند. علاوه بر این ، شما نمی توانید دو دستگاه با آدرس یکسان در پین های SDA/SCL یکسان داشته باشید!
بنابراین گزینه های شما چه هستند؟ همه آنها را روی چندضلعی TCA9548A 1 تا 8 I2C قرار دهید تا همه آنها در یک اتوبوس با یکدیگر صحبت کنند! TCA9548A Breakout امکان برقراری ارتباط با چندین دستگاه I2C که آدرس آنها یکسان است را برای شما آسان می کند.
مرحله 1: الزامات سخت افزاری
برای این آموزش به موارد زیر نیاز داریم:
- تخته نان
- چند منظوره TCA9548A I2C
- Arduino Uno/Nano هر آنچه که مفید است
- NodeMCU
- چند صفحه نمایش OLED 0.91 و 0.96 I2C
- کابل های جامپر ، و
- کابل USB برای بارگذاری کد
مرحله 2: موضوعات تحت پوشش
ما بحث خود را با درک اصول اولیه فناوری I2C آغاز می کنیم
سپس ما در مورد TCA9548A Multiplexer و نحوه ارسال و دریافت داده های master و slave با استفاده از فناوری I2C آشنا می شویم و سپس نحوه برنامه نویسی و استفاده از مالتی پلکسر در پروژه خود را با استفاده از Arduino و NodeMCU خواهیم آموخت ، سپس سریع به شما نشان خواهم داد. نسخه نمایشی با استفاده از 8 صفحه نمایش OLED I2C و در نهایت ما آموزش را با بحث در مورد مزایا و معایب TCA9548A Multiplexer به پایان می بریم
مرحله 3: اصول اولیه گذرگاه I2C
مدار مجتمع I-squared-C (I²C) یا I2C یک فناوری دو سیمه است (در واقع 4 سیم است زیرا شما همچنین به VCC و Ground احتیاج دارید) که برای ارتباط بین چندین پردازنده و حسگر استفاده می شود.
این دو سیم عبارتند از:
* SDA - داده های سریال (خط داده) و
* SCL - ساعت سریال (خط ساعت)
به یاد داشته باشید ، هر دو خط "همزمان" ، "دو طرفه" ، "تخلیه باز" هستند و "با مقاومت" کشیده شده اند.
فناوری گذرگاه I2C در ابتدا توسط Philips Semiconductors در اوایل دهه 80 طراحی شد تا امکان ارتباط آسان بین اجزای روی یک برد مدار را فراهم کند.
با I2C ، می توانید چندین برده را به یک master واحد متصل کنید (مانند SPI) یا می توانید چندین master را کنترل کنید که تک یا چند برد را کنترل می کنند. هر دو ارباب و بردگان می توانند داده ها را ارسال و دریافت کنند. بنابراین ، یک دستگاه در گذرگاه I2C می تواند در یکی از این چهار حالت باشد:
* ارسال اصلی - گره اصلی در حال ارسال داده به یک برده* دریافت اصلی - گره اصلی دریافت داده از یک برده است
* انتقال برده - گره برده داده ها را به اصلی ارسال می کند
* دریافت برده - گره برده داده ها را از استاد دریافت می کند
I2C یک "پروتکل ارتباطی" کوتاه "است ، بنابراین داده ها" بیت به بیت "در امتداد سیم یا خط SDA منتقل می شوند. خروجی بیت ها با نمونه برداری از بیت ها توسط سیگنال ساعت "مشترک" بین استاد و برده همزمان می شود. سیگنال ساعت همیشه توسط استاد کنترل می شود. Master ساعت را تولید می کند و ارتباط با برده ها را آغاز می کند.
بنابراین ، برای خلاصه کردن آن>
تعداد سیم های استفاده شده: 2 عدد
همزمان یا ناهمزمان: همزمان
سریال یا موازی: سریال
سیگنال ساعت توسط: Master Node کنترل می شود
ولتاژهای مورد استفاده: +5 ولت یا +3.3 ولت
حداکثر تعداد کارشناسی ارشد: نامحدود
حداکثر تعداد برده: 1008
حداکثر سرعت: حالت استاندارد = 100 کیلوبیت بر ثانیه
حالت سریع = 400kbps
حالت سرعت بالا = 3.4 مگابیت بر ثانیه
حالت فوق سریع = 5 مگابیت بر ثانیه
مرحله 4: ماژول چند منظوره TCA9548A I2C
TCA9548A چند کاناله I2C هشت کاناله (دو طرفه) است که اجازه می دهد هشت دستگاه I2C مجزا توسط یک گذرگاه I2C میزبان واحد کنترل شوند. فقط باید سنسورهای I2C را به گذرگاه های چندگانه SCn / SDn متصل کنید. به عنوان مثال ، اگر در یک برنامه کاربردی به هشت نمایشگر OLED یکسان نیاز است ، می توان یکی از هر صفحه را در هر یک از این کانال ها متصل کرد: 0-7.
Multiplexer به خطوط VIN ، GND ، SDA و SCL میکرو کنترلر متصل می شود. برد شکست VIN را از 1.65 ولت تا 5.5 ولت می پذیرد. هر دو خط ورودی SDA و SCL از طریق یک مقاومت کششی 10K به VCC متصل می شوند (اندازه مقاومت کشش بر اساس میزان ظرفیت در خطوط I2C تعیین می شود). مالتی پلکسر از پروتکل های I2C معمولی (100 کیلوهرتز) و سریع (400 کیلوهرتز) پشتیبانی می کند. همه پین های ورودی/خروجی TCA9548A 5 ولت تحمل دارند و همچنین می توانند برای ترجمه از ولتاژ بالا به پایین یا کم به زیاد استفاده شوند.
ایده خوبی است که مقاومتهای کششی را روی همه کانالهای TCA9548A قرار دهید ، حتی اگر ولتاژها یکسان باشد. دلیل این امر سوئیچ NMOS داخلی است. ولتاژ بالا را به خوبی منتقل نمی کند ، از سوی دیگر ولتاژهای پایین را به خوبی منتقل می کند. TCA9548A همچنین ممکن است برای ترجمه ولتاژ استفاده شود ، و اجازه می دهد تا از ولتاژهای مختلف گذرگاه در هر جفت SCn/SDn استفاده شود به طوری که قطعات 1.8-V ، 2.5-V ، یا 3.3-V می توانند با قطعات 5V ارتباط برقرار کنند. این امر با استفاده از مقاومتهای کششی خارجی برای رساندن گذرگاه به ولتاژ مورد نظر برای اصلی و هر کانال برده به دست می آید.
اگر میکروکنترلر یک ناسازگاری گذرگاه یا سایر عملکردهای نامناسب را تشخیص دهد ، TCA9548A را می توان از طریق تأیید کم به پین RESET بازنشانی کرد.
مرحله 5:
TCA9548 به یک میکروکنترلر واحد اجازه می دهد تا با اختصاص 64 سنسور که همه دارای آدرس I2C یکسان یا متفاوت هستند ، با اختصاص یک کانال منحصر به فرد به هر گذرگاه فرعی حسگر ارتباط برقرار کند.
وقتی در مورد ارسال داده ها از طریق 2 سیم به چندین دستگاه صحبت می کنیم ، به راهی برای رسیدگی به آنها نیاز داریم. این همان چیزی است که پستچی در یک جاده می آید و بسته های پستی را به خانه های مختلف می اندازد زیرا آدرس های مختلفی روی آنها نوشته شده است.
شما می توانید حداکثر 8 عدد از این چند پلکسرها را در آدرس های 0x70-0x77 به هم متصل کرده و 64 قسمت از آدرس های یکسان I2C را کنترل کنید. با اتصال سه بیت آدرس A0 ، A1 و A2 به VIN می توانید ترکیب متفاوتی از آدرس ها را بدست آورید. بایت آدرس TCA9548A به این شکل است. ابتدا 7 بیت ترکیب می شوند و آدرس برده را تشکیل می دهند. آخرین بیت آدرس برده ، عملکردی را که باید انجام شود (خواندن یا نوشتن) تعریف می کند. هنگامی که زیاد است (1) ، یک خواندن انتخاب می شود ، در حالی که کم (0) یک عملیات نوشتن را انتخاب می کند.
مرحله 6: نحوه ارسال و دریافت داده توسط استاد
روش زیر برای دسترسی اصلی به یک دستگاه برده به شرح زیر است:
1. اگر یک استاد می خواهد داده ها را به یک برده ارسال کند (WRITES):
-فرستنده اصلی یک شرط START به دنبال آدرس آدرس برده گیرنده و R/W را روی 0 تنظیم می کند.
-فرستنده اصلی داده ها را در "رجیسترهای کنترل 8 بیتی" به گیرنده برده زمانی ارسال می کند که برده آماده بودن آن را تشخیص می دهد
-فرستنده اصلی انتقال را با شرط STOP خاتمه می دهد
2. اگر استاد بخواهد داده ها را از یک برده دریافت یا بخواند (READS):
-گیرنده اصلی یک شرط START به دنبال آدرس آدرس برده گیرنده و R/W را روی 1 تنظیم می کند.
-گیرنده اصلی ثبت درخواست شده را برای خواندن به برده فرستنده ارسال می کند
-گیرنده اصلی داده ها را از فرستنده برده دریافت می کند
- پس از دریافت همه بایت ها ، Master سیگنال NACK را به برده می فرستد تا ارتباطات را متوقف کرده و اتوبوس را رها کند
- گیرنده اصلی انتقال را با شرط STOP متوقف می کند
اگر هر دو خط SDA و SCL پس از یک وضعیت STOP بالا باشند ، یک اتوبوس بیکار تلقی می شود.
مرحله 7: کد
اکنون ، کد Int اجازه می دهد تا با قرار دادن کتابخانه "Wire" و با تعیین آدرس چند پلکسر شروع کنید.
#شامل "Wire.h"
#شامل "U8glib.h"
#آدرس MUX_Address 0x70 // آدرس رمزگذار TCA9548A را تعریف کنید
سپس باید پورت مورد نظر خود را انتخاب کرده و داده های مربوط به آن را با استفاده از این تابع ارسال کنیم:
void selectI2CChannels (uint8_t i) {
اگر (i> 7) بازگشت ؛
Wire.beginTransmission (MUX_Address) ؛
Wire.write (1 << i)؛
Wire.endTransmission ()؛
}
در مرحله بعد با فراخوانی "u8g.begin ()؛) نمایش را در قسمت راه اندازی اولیه می کنیم. برای هر صفحه نمایش متصل به MUX "tcaselect (i)؛"
پس از راه اندازی اولیه ، می توانیم هر کاری را که می خواهیم انجام دهیم فقط با فراخوانی تابع "tcaselect (i)؛" جایی که "i" مقدار گذرگاه چندگانه و سپس ارسال داده ها و ساعت مطابق آن است.
مرحله 8: اسکنر I2C
در صورتی که از آدرس دستگاه سپر I2C خود مطمئن نیستید ، سپس کد ضمیمه 'I2C Scanner' را اجرا کنید تا آدرس hex دستگاه خود را بیابید. هنگامی که در Arduino بارگیری می شود ، این طرح شبکه I2C را اسکن می کند و آدرس هایی را که پاسخ می دهند نشان می دهد.
مرحله 9: سیم کشی و نمایشی
سیم کشی:
اجازه دهید با اتصال مالتی پلکسر به برد NodeMCU شروع کنیم. اتصال:
VIN تا 5V (یا 3.3V)
GND به زمین
SDA تا D2 و
پین های SCL تا D1 به ترتیب
برای برد برد آردوینو متصل شوید:
VIN تا 5V (یا 3.3V)
GND به زمین
SDA تا A4 و
به ترتیب پین های SCL تا A5
هنگامی که MUX به میکرو کنترلر متصل می شود ، فقط باید سنسورها را به جفت های SCn / SDn وصل کنید.
اکنون ، اجازه دهید این نسخه نمایشی سریع را بررسی کنم که در آن 8 صفحه نمایش OLED را به TCA9548A Multiplexer متصل کرده ام. از آنجا که این نمایشگرها از ارتباط I2C استفاده می کنند ، تنها با 2 پین با آردوینو ارتباط برقرار می کنند.
مرحله 10: مزایا و معایب
مزایای
* ارتباطات تنها به دو خط اتوبوس (سیم) نیاز دارد
* یک رابطه ساده بین استاد و برده بین همه اجزا وجود دارد
* بدون الزامات شدید نرخ باود مانند RS232 ، استاد ساعت اتوبوس تولید می کند
* سخت افزار نسبت به UART ها پیچیدگی کمتری دارد
* پشتیبانی از چندین استاد و برده های متعدد
* بیت ACK/NACK تأیید می کند که هر فریم با موفقیت منتقل شده است
* I2C یک "گذرگاه چند استاد اصلی" است که داوری و تشخیص برخورد را ارائه می دهد
* هر دستگاهی که به گذرگاه متصل است با یک آدرس منحصر به فرد قابل نرم افزار است
* اکثر دستگاه های I2C می توانند با سرعت 100kHz یا 400kHz ارتباط برقرار کنند
* I²C برای لوازم جانبی مناسب است که سادگی و هزینه تولید پایین از سرعت مهمتر است
* پروتکل معروف و پرکاربرد
معایب
* سرعت انتقال داده ها کندتر از SPI است
* اندازه فریم داده محدود به 8 بیت است
* سخت افزار پیچیده تری نسبت به فناوری SPI مورد نیاز است
توصیه شده:
NodeMCU Lua Cheap 6 $ Board with MicroPython Temperature and Humidity Logging، Wifi and Mobile Stats: 4 Step
NodeMCU Lua Cheap 6 $ Board with MicroPython Temperature and Humidity Logging، Wifi and Mobile Stats: این اساساً ایستگاه هواشناسی ابری است ، می توانید داده های تلفن خود را بررسی کنید یا از برخی تلفن ها به عنوان صفحه نمایش زنده استفاده کنید با دستگاه NodeMCU می توانید داده های دما و رطوبت را در خارج ثبت کنید ، در اتاق ، گلخانه ، آزمایشگاه ، اتاق خنک کننده یا هر مکان دیگری تکمیل شود
Micro: bit MU Vision Sensor for Beginners - I2C and Shape Card Recognition: 8 Step
Micro: bit MU Vision Sensor for Beginners - I2C و Shape Card تشخیص: من یک سنسور دید MU را برای Micro: bit در دست گرفته ام. به نظر می رسد این یک ابزار جالب است که به من امکان می دهد بسیاری از پروژه های مختلف مبتنی بر چشم انداز را بسازم. متأسفانه به نظر نمی رسد راهنمای زیادی برای آن وجود داشته باشد و در حالی که مستندات واقعاً
MQ7-POLLOTION MONITORING FORING THING THING SPEAK and NODEMCU: 4 Step
MQ7-POLLUTION MONITORING FORING THING SPEAK and NODEMCU: آلودگی مشکل اصلی دنیای امروز ما است. اما چگونه می توانیم آلودگی خود را در نزدیکی مانیتور کنیم ، اکنون بسیار آسان است
آموزش: چگونه Arduino چندین دستگاه آدرس مشابه را با استفاده از TCA9548A I2C Multiplexer کنترل می کند: 3 مرحله
آموزش: چگونه آردوینو با استفاده از TCA9548A I2C Multiplexer چندین دستگاه آدرس مشابه را کنترل می کند: توضیحات: ماژول چند منظوره TCA9548A I2C این امکان را فراهم می کند تا دستگاه هایی را با آدرس I2C یکسان (حداکثر 8 آدرس I2C یکسان) متصل به یک میکروکنترلر فعال کند. مالتی پلکسر به عنوان یک دروازه بان عمل می کند و دستورات را به مجموعه انتخاب شده منتقل می کند
Servodriver-Board With Python-GUI and Arduino: 5 Step
Servodriver-Board With Python-GUI و Arduino: هنگام انجام نمونه سازی یا ساخت هواپیماهای مدل ، اغلب با این مشکل روبرو می شوید که باید سفرهای سروو را بررسی کنید یا سرویس ها را در موقعیت میانی قرار دهید. در صورتی که عادت ندارید کل سیستم RC یا آزمایش شما ، تا چه حد می توانید