Мазмұны:
- 1 -қадам: Жабдыққа қойылатын талаптар
- 2 -қадам: өтетін тақырыптар
- 3 -қадам: I2C шинасының негіздері
- 4 -қадам: TCA9548A I2C мультиплексор модулі
- 5 -қадам:
- 6 -қадам: Мастер деректерді қалай жібереді және алады
- 7 -қадам: код
- 8 -қадам: I2C сканері
- 9 -қадам: сымдар мен демо
- 10 -қадам: Артықшылықтары мен кемшіліктері
- 11 -қадам: рахмет
Бейне: TCA9548A I2C мультиплексор модулі - Arduino және NodeMCU көмегімен: 11 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Сенсорлардың тұрақты немесе бірдей I2C мекен -жайы бар екенін түсіну үшін Arduino -ға екі, үш немесе одан да көп I2C датчиктерін қосуға тура келетін жағдайға тап болдыңыз ба? Сонымен қатар, бір SDA/SCL түйреуіштерінде адрестері бірдей екі құрылғы болуы мүмкін емес!
Сонымен, сіздің нұсқаларыңыз қандай? Барлығын TCA9548A 1-ден 8-ге дейінгі I2C мультиплексорына салыңыз, осылайша олардың барлығы бір автобуста бір-бірімен сөйлесе алады! TCA9548A Breakout адресі бірдей көптеген I2C құрылғыларымен байланыс орнатуға мүмкіндік береді, олармен интерфейсті жеңілдетеді.
1 -қадам: Жабдыққа қойылатын талаптар
Бұл оқулық үшін бізге қажет:
- Нан тақтасы
- TCA9548A I2C мультиплексоры
- Arduino Uno/Nano ыңғайлы
- NodeMCU
- Бірнеше 0.91 және 0.96 I2C OLED дисплейлері
- Өтпелі кабельдер және
- кодты жүктеуге арналған USB кабелі
2 -қадам: өтетін тақырыптар
Біз талқылауды I2C технологиясының негіздерін түсінуден бастаймыз
Содан кейін біз TCA9548A мультиплексоры туралы және мастер мен құл I2C технологиясының көмегімен деректерді қалай жіберетіні мен алатынын білеміз, содан кейін біз Arduino мен NodeMCU көмегімен жобамызда мультиплексорды қалай бағдарламалауға және қолдануға болатынын тексереміз, мен сізге жылдам көрсетемін. демонстрация 8 I2C OLED дисплейін қолдана отырып, біз TCA9548A мультиплексорының артықшылықтары мен кемшіліктерін талқылай отырып, оқуды аяқтаймыз.
3 -қадам: I2C шинасының негіздері
I-квадрат-C (I²C) немесе I2C деп аталатын интегралды схема-бұл екі процессорлар мен сенсорлар арасындағы байланыс үшін қолданылатын екі сымды автобус технологиясы (шын мәнінде 4 сым, себебі сізге VCC мен Ground қажет).
Екі сым:
* SDA - Сериялық деректер (деректер желісі) және
* SCL - сериялық сағат (сағат желісі)
Есіңізде болсын, бұл екі жол да «синхронды», екі бағытты, ашық ағызу және резисторлармен тартылған.
I2C шиналық технологиясын бастапқыда 80 -жылдардың басында Philips Semiconductors бір схемада орналасқан компоненттер арасында оңай байланыс орнату үшін жасаған.
I2C көмегімен сіз бірнеше құлдарды бір мастерге қосуға болады (SPI сияқты) немесе сізде бір немесе бірнеше құлдарды басқаратын бірнеше мастер болуы мүмкін. Қожайындар да, құлдар да мәліметтерді жібере және қабылдай алады. Сонымен, I2C шинасындағы құрылғы мына төрт күйдің бірінде болуы мүмкін:
* Негізгі беру - негізгі түйін деректерді құлға жібереді* Негізгі қабылдау - басты түйін деректерді құлдан алады
* Құл жіберу - қосалқы түйін деректерді шеберге жібереді
* Құлды қабылдау - қосалқы түйін деректерді мастерден алады
I2C-бұл «қысқа қашықтықтағы» сериялық байланыс протоколы, сондықтан деректер бір сымды немесе SDA желісі бойынша «разряд бойынша» беріледі. Биттердің шығысы бит пен іріктеуіш арасындағы «ортақ» сағат белгісімен биттерді іріктеуге синхрондалады. Сағат сигналын әрқашан шебер басқарады. Мастер сағатты жасайды және құлдармен қарым -қатынасты бастайды.
Сонымен, оны қорытындылау үшін>
Қолданылатын сымдар саны: 2
Синхронды немесе асинхронды: синхронды
Сериялық немесе параллель: сериялық
Сигнал басқаратын: Негізгі түйін
Қолданылатын кернеулер: +5 В немесе +3,3 В.
Магистратураның максималды саны: шектеусіз
Құлдардың ең көп саны: 1008
Максималды жылдамдық: стандартты режим = 100 кбит / с
Жылдам режим = 400 кбит / с
Жоғары жылдамдық режимі = 3,4 Мбит / с
Ультра жылдам режим = 5 Мбит / с
4 -қадам: TCA9548A I2C мультиплексор модулі
TCA9548A-сегіз арналы (екі бағытты) I2C мультиплексоры, ол сегіз бөлек I2C құрылғысын бір хост I2C шинасымен басқаруға мүмкіндік береді. Сізге SC2 / SDn мультиплексті шиналарына I2C датчиктерін қосу қажет. Мысалы, егер қосымшаға сегіз бірдей OLED дисплей қажет болса, әр дисплейдің біреуін осы арналардың әрқайсысына қосуға болады: 0-7.
Мультиплексор микроконтроллердің VIN, GND, SDA және SCL желілеріне қосылады. Үзіліс тақтасы VIN -ді 1,65 в -тан 5,5 В -қа дейін қабылдайды. Кіріс SDA және SCL желілерінің екеуі де VCC-ге 10K тартылатын резистор арқылы қосылады (тартылатын резистордың мөлшері I2C желілеріндегі сыйымдылық шамасымен анықталады). Мультиплексор қалыпты (100 кГц) және жылдам (400 кГц) I2C протоколдарын қолдайды. TCA9548A барлық енгізу-шығару түйреуіштері 5 вольтқа төзімді және оларды жоғарыдан төменге немесе төменнен жоғары кернеуге ауыстыру үшін де қолдануға болады.
Кернеулер бірдей болса да, TCA9548A барлық арналарына тартылатын резисторларды қою жақсы. Мұның себебі - ішкі NMOS қосқышы. Ол жоғары кернеуді өте жақсы өткізбейді, екінші жағынан төмен кернеуді өте жақсы өткізеді. TCA9548A кернеуді аудару үшін де пайдаланылуы мүмкін, бұл әр SCn/SDn жұпында әр түрлі шиналардың кернеуін қолдануға мүмкіндік береді, осылайша 1.8-V, 2.5-V немесе 3.3-V бөлшектері 5-V бөліктерімен байланысады. Бұған автобусты негізгі кернеу мен әрбір қосалқы арна үшін кернеуге дейін тарту үшін сыртқы тартылатын резисторларды қолдану арқылы қол жеткізіледі.
Егер микроконтроллер шинадағы қақтығысты немесе басқа да дұрыс емес әрекетті анықтаса, TCA9548A қалпына келтіру түйреуішін төмендету арқылы қалпына келтіруге болады.
5 -қадам:
TCA9548 бір микроконтроллерге сенсорлық қосалқы шинаның барлығына бірегей арна тағайындау арқылы I2C адресі бірдей немесе әр түрлі «64 датчиктермен» байланысуға мүмкіндік береді.
Деректерді 2 сым арқылы бірнеше құрылғыға жіберу туралы айтатын болсақ, онда оларды шешу әдісі қажет. Почтальонның жалғыз жолмен келе жатқаны және әр түрлі үйлерге пошталық пакеттерді тастағанымен бірдей, себебі оларда әр түрлі мекен -жайлар жазылған.
Сіз сол мультиплексорлардың максимум 8-де 0x70-0x77 адрестеріне қосылуға болады, сол I2C адрестелген 64 бөлікті басқару үшін. A0, A1 және A2 үш адрестік биттерді VIN -ге қосу арқылы сіз адрестердің әр түрлі комбинациясын ала аласыз. TCA9548A адресінің байты осылай көрінеді. Алғашқы 7-бит қосылып, адресті құрайды. Қосымша адрестің соңғы биті орындалатын әрекетті (оқу немесе жазу) анықтайды. Ол жоғары болғанда (1) оқу таңдалады, ал төменгі (0) жазу әрекетін таңдайды.
6 -қадам: Мастер деректерді қалай жібереді және алады
Төменде мастердің қосалқы құрылғыға қол жеткізудің жалпы процедурасы берілген:
1. Егер шебер деректерді құлға жібергісі келсе (ЖАЗАДЫ):
-Мастер-таратқыш START күйін жібереді, содан кейін құл қабылдағыштың мекенжайлары мен R/W 0 күйіне орнатылады.
-Мастер-таратушы «8-разрядты басқару регистрлеріндегі» деректерді құл қабылдағышқа жібереді, егер ол дайын екенін растаса.
-Мастер-таратқыш STOP шартымен тасымалдауды тоқтатады
2. Егер мастер құлдан деректерді алғысы немесе оқығысы келсе (READS):
-Негізгі қабылдағыш START күйін жібереді, содан кейін құлдық қабылдағыштың мекенжайлары мен R/W 1 орнатылады.
-Мастер-алушы сұралатын регистрді құлдық-таратқышқа оқу үшін жібереді
-Мастер-қабылдағыш мәліметтерді қосалқы таратқыштан алады
- Барлық байттарды алғаннан кейін, Мастер NACK сигналын жіберіп, байланысты тоқтатады және автобусты жібереді
- Мастер-қабылдағыш STOP шартымен тасымалдауды тоқтатады
Егер SDA да, SCL де STOP күйінен кейін жоғары болса, автобус бос деп саналады.
7 -қадам: код
Енді Int коды «Wire» кітапханасын қосудан және мультиплексорлардың мекен -жайын анықтаудан басталады.
#«Wire.h» қосыңыз
#«U8glib.h» қосыңыз
#анықтаңыз MUX_Address 0x70 // TCA9548A Encoders адресін
Содан кейін біз байланысатын портты таңдап, ондағы деректерді осы функция арқылы жіберуіміз керек:
жарамсыз 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 сканері' кодын іске қосыңыз. Arduino -ға жүктелген кезде эскиз жауап беретін мекенжайларды көрсете отырып, I2C желісін сканерлейді.
9 -қадам: сымдар мен демо
Сымдар:
Мультиплексорды NodeMCU тақтасына қосудан бастайық. Қосылу:
VIN - 5В (немесе 3.3В)
GND жерге
SDA - D2 және
SCL - D1 түйреуіштері
Arduino тақтасы үшін қосылыңыз:
VIN - 5В (немесе 3.3В)
GND жерге
SDA - A4 және
SCL - A5 түйреуіштері
MUX микроконтроллерге қосылғаннан кейін сенсорларды SCn / SDn жұптарына қосу керек.
Енді мен 8 OLED дисплейін TCA9548A мультиплексорына қосқан осы жылдам демонстрацияны қарастырайық. Бұл дисплейлер I2C байланысын қолданатындықтан, олар Arduino -мен тек 2 түйреуіш арқылы байланысады.
10 -қадам: Артықшылықтары мен кемшіліктері
АРТЫҚШЫЛЫҚТАР
* Байланыс тек екі автобус желісін қажет етеді (сымдар)
* Барлық компоненттер арасында қарапайым мастер/құл қатынастары бар
* Берілу жылдамдығына қатаң талаптар қойылмайды, мысалы RS232, мастер автобус сағатын жасайды
* Жабдық UART -ке қарағанда күрделірек
* Бірнеше шеберлер мен бірнеше құлдарды қолдайды
* ACK/NACK биті әрбір кадр сәтті тасымалданғанын растайды
* I2C-бұл арбитражды және соқтығысуды анықтайтын «шынайы көпмастерлі автобус»
* Автобусқа қосылған әрбір құрылғы бірегей адрес бойынша бағдарламалық қамтамасыз етіледі
* I2C құрылғыларының көпшілігі 100 кГц немесе 400 кГц жиілігінде байланыса алады
* I²C жылдамдыққа қарағанда қарапайымдылығы мен төмен өндірістік құны маңызды болатын перифериялық құрылғыларға сәйкес келеді
* Белгілі және кеңінен қолданылатын хаттама
КЕМШІЛІКТЕР
* SPI -ге қарағанда деректерді беру жылдамдығы төмен
* Мәліметтер фреймінің көлемі 8 битпен шектелген
* SPI технологиясынан гөрі енгізу үшін күрделі аппараттық құрал қажет
Ұсынылған:
Hologram Nova және Ubidots көмегімен қосылған шешімдерді қосыңыз және жаңартыңыз: 9 қадам
Hologram Nova және Ubidots көмегімен қосылған шешімдерді қосыңыз және жаңартыңыз: инфрақұрылымды жаңарту үшін голограмманы қолданыңыз. Ubidots -қа деректерді (температура) жіберу үшін Raspberry Pi көмегімен Hologram Nova орнатыңыз. Келесі нұсқаулықта Ubidots Raspberry Pi көмегімен голограмма Нованы қалай орнату керектігін көрсетеді
NodeMCU + ескі ноутбуктің камералық модулі бар бейнебақылау камерасы (Blynk қолданумен және онсыз): 5 қадам
NodeMCU + ескі ноутбуктің камералық модулі бар бейнебақылау камерасы (Blynk қолданумен және онсыз): Сәлем балалар! Бұл нұсқаулықта мен CCTV -ге ұқсас нәрсе жасау үшін ескі ноутбуктің камера модулін және nodeMCU қалай қолданғанымды көрсетемін
Bluetooth LE және RaspberryPi көмегімен температураны бақылау және жазу: 9 қадам (суреттермен)
Bluetooth LE және RaspberryPi көмегімен температураны бақылау және тіркеу: Бұл нұсқаулық Blue RADIO (BLEHome) мен RaspberryPi 3B Bluetooth LE сенсорлы қатесі бар температуралық бақылаудың көп түйінді жүйесін қалай қосуға болатындығы туралы. Bluetooth LE стандартының арқасында. қазір қол жетімді
NodeMCU, MySQL, PHP және Chartjs.org көмегімен деректерді тіркеу және желіде график құру: 4 қадам
NodeMCU, MySQL, PHP және Chartjs.org көмегімен деректерді тіркеу және онлайн режимінде график құру: Бұл нұсқаулықта түйін MCU тақтасын бірнеше датчиктерден мәліметтерді жинау үшін қалай пайдалану керектігін сипаттайды, бұл деректерді орналастырылған PHP файлына жібереді, содан кейін ол деректерді қосады. MySQL мәліметтер базасы. Осыдан кейін деректерді chart.js.A ba көмегімен график түрінде қарауға болады
LP Ripper көмегімен кесу және түсіру (Audacity және т.б. орнына): 6 қадам
LP Ripper көмегімен кесу және жоғалту (Audacity және т.б. орнына): Бұл нұсқаулық үйдегі музыканттарға, композиторларға, ән жазушыларға және басқаларға арналған, олардың жазбаларының басы мен құйрығын тазарту және WAV файлдарын MP3 форматына түрлендіру қажет. Кейбір тұтынушыларды қайта кодтау жүйелері қажет емес санақ/метромдық шертулерді қалдырады немесе