Talaan ng mga Nilalaman:
- Hakbang 1: Kinakailangan sa Hardware
- Hakbang 2: Saklaw na Mga Paksa
- Hakbang 3: Mga Pangunahing Kaalaman ng I2C Bus
- Hakbang 4: TCA9548A I2C Multiplexer Module
- Hakbang 5:
- Hakbang 6: Paano Nagpadala at Nakakatanggap ng Data ang Master
- Hakbang 7: Code
- Hakbang 8: I2C Scanner
- Hakbang 9: Mga Kable at Demo
- Hakbang 10: Mga Kalamangan at Kalamangan
- Hakbang 11: Salamat
Video: TCA9548A I2C Multiplexer Module - Sa Arduino at NodeMCU: 11 Mga Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Naranasan mo ba ang isang sitwasyon kung saan kailangan mong i-wire ang dalawa, tatlo o higit pang I2C Sensors sa iyong Arduino upang mapagtanto na ang mga sensor ay mayroong isang nakapirming o parehong I2C address. Bukod dito, hindi ka maaaring magkaroon ng dalawang mga aparato na may parehong address sa parehong mga SDA / SCL na pin!
Kaya, ano ang iyong mga pagpipilian? Ilagay ang lahat sa TCA9548A 1-to-8 I2C multiplexer upang maiusap silang lahat sa iisang bus! Ang TCA9548A Breakout ay nagbibigay-daan sa komunikasyon sa maraming mga aparato ng I2C na may parehong address na ginagawang simple upang mag-interface sa kanila.
Hakbang 1: Kinakailangan sa Hardware
Para sa tutorial na ito kailangan namin:
- Breadboard
- TCA9548A I2C Multiplexer
- Arduino Uno / Nano anuman ang madaling gamitin
- NodeMCU
- Ilang 0.91 at 0.96 I2C OLED ay nagpapakita
- Mga Jumper Cables, at
- USB Cable upang mai-upload ang code
Hakbang 2: Saklaw na Mga Paksa
Sisimulan namin ang aming talakayan sa pamamagitan ng pag-unawa sa mga pangunahing kaalaman ng teknolohiya ng I2C
Pagkatapos ay malalaman natin ang tungkol sa TCA9548A Multiplexer at kung paano ang master at alipin ay nagpapadala at tumatanggap ng data gamit ang I2C na teknolohiya Pagkatapos ay susuriin namin kung paano namin mai-program at magagamit ang multiplexer sa aming proyekto gamit ang Arduino at NodeMCU Susunod, ipapakita ko sa iyo ang isang mabilis demo gamit ang 8 I2C OLED display at sa wakas tatapusin namin ang tutorial sa pamamagitan ng pagtalakay sa mga pakinabang at kawalan ng TCA9548A Multiplexer
Hakbang 3: Mga Pangunahing Kaalaman ng I2C Bus
Binibigkas ng Inter-integrated Circuit na I-squared-C (I CC) o I2C ay isang dalawang teknolohiya ng wire bus (na talagang 4 na wires sapagkat kailangan mo rin ang VCC at Ground) na ginagamit para sa komunikasyon sa pagitan ng maraming mga processor at sensor.
Ang dalawang wires ay:
* SDA - Serial Data (linya ng data) at
* SCL - Serial Clock (linya ng orasan)
Tandaan, ang parehong mga linyang ito ay 'magkasabay' 'bidirectional' 'open-drain' at 'hinugot sa mga resistor'.
Ang teknolohiya ng I2C bus ay orihinal na idinisenyo ng Philips Semiconductors noong unang bahagi ng 80s upang payagan ang madaling komunikasyon sa pagitan ng mga sangkap na naninirahan sa parehong circuit board.
Sa I2C, maaari mong ikonekta ang maraming mga alipin sa isang solong master (tulad ng SPI) o maaari kang magkaroon ng maraming mga masters na kumokontrol sa solong, o maraming mga alipin. Ang parehong mga masters at alipin ay maaaring magpadala at makatanggap ng data. Kaya, ang isang aparato sa I2C bus ay maaaring nasa isa sa apat na estado na ito:
* Maghahatid ng master - ang master node ay nagpapadala ng data sa isang alipin * Natanggap ng Master - ang master node ay tumatanggap ng data mula sa isang alipin
* Paghahatid ng alipin - ang node ng alipin ay nagpapadala ng data sa master
* Tumanggap ng alipin - ang node ng alipin ay tumatanggap ng data mula sa master
Ang I2C ay isang 'maikling distansya' 'serial protocol ng komunikasyon', kaya ang data ay inililipat ng 'bit-by-bit' kasama ang solong kawad o linya ng SDA. Ang output ng mga bits ay na-synchronize sa sampling ng mga piraso ng isang signal ng orasan na 'ibinahagi' sa pagitan ng master at ng alipin. Ang signal ng orasan ay laging kinokontrol ng master. Ang Master ay bumubuo ng orasan at nagpapasimula ng komunikasyon sa mga alipin.
Kaya, upang buuin ito>
Bilang ng mga Wires na ginamit: 2
Kasabay o Asynchronous: Kasabay
Serial o Parallel: Serial
Ang Clock Signal ay kinokontrol ng: Master Node
Mga ginamit na boltahe: +5 V o +3.3 V
Maximum na bilang ng mga Masters: Walang limitasyong
Maximum na bilang ng mga Alipin: 1008
Pinakamataas na Bilis: Karaniwang Mode = 100 kbps
Mabilis na Mode = 400 kbps
High Speed Mode = 3.4 Mbps
Ultra Fast Mode = 5 Mbps
Hakbang 4: TCA9548A I2C Multiplexer Module
Ang TCA9548A ay isang eight-channel (bidirectional) I2C multiplexer na nagbibigay-daan sa walong magkakahiwalay na I2C na aparato upang makontrol ng isang solong host na I2C bus. Kailangan mo lang i-wire ang mga sensor ng I2C sa mga SCn / SDn na multiplexed na bus. Halimbawa, kung kinakailangan ang walong magkaparehong pagpapakita ng OLED sa isang application, ang isa sa bawat display ay maaaring konektado sa bawat isa sa mga channel na ito: 0-7.
Ang Multiplexer ay kumokonekta sa mga linya ng VIN, GND, SDA at SCL ng micro-controller. Tumatanggap ang breakout board ng VIN mula 1.65v hanggang 5.5v. Ang parehong mga linya ng input ng SDA at SCL ay konektado sa VCC sa pamamagitan ng isang resistor na 10K na pull-up (Ang laki ng resistor na pull-up ay natutukoy ng dami ng capacitance sa mga linya ng I2C). Sinusuportahan ng multiplexer ang parehong normal (100 kHz) at mabilis (400 kHz) na mga I2C na protokol. Ang lahat ng mga I / O na pin ng TCA9548A ay 5-volt tolerant at maaari ding magamit upang isalin mula sa mataas hanggang sa mababa o mababa hanggang sa mataas na voltages.
Magandang ideya na maglagay ng mga pull-up resistor sa lahat ng mga channel ng TCA9548A, kahit na pareho ang mga voltages. Ang dahilan para dito ay dahil sa panloob na switch ng NMOS. Hindi ito mahusay na nagpapadala ng mataas na boltahe, sa kabilang banda ay mahusay na nagpapadala ng mababang boltahe. Ang TCA9548A ay maaari ding gamitin para sa Pagsasalin ng Boltahe, na pinapayagan ang paggamit ng iba't ibang mga boltahe ng bus sa bawat pares ng SCn / SDn na tulad ng 1.8-V, 2.5-V, o mga bahagi ng 3.3-V ay maaaring makipag-usap sa mga 5-V na bahagi. Nakamit ito sa pamamagitan ng paggamit ng panlabas na pull-up resistors upang hilahin ang bus hanggang sa nais na boltahe para sa master at bawat alipin na channel.
Kung ang micro-controller ay nakakita ng isang salungatan sa bus o iba pang hindi wastong operasyon ang TCA9548A ay maaaring i-reset sa pamamagitan ng paggiit ng isang mababa sa RESET pin.
Hakbang 5:
Pinapayagan ng TCA9548 ang isang solong micro-controller na makipag-usap nang hanggang sa '64 sensor 'lahat na may pareho o magkakaibang I2C address sa pamamagitan ng pagtatalaga ng isang natatanging channel sa bawat sensor na sub-bus ng alipin.
Kapag pinag-uusapan natin ang tungkol sa pagpapadala ng data sa higit sa 2 mga wire sa maraming mga aparato kailangan namin ng isang paraan upang matugunan ang mga ito. Ito ay kapareho ng kartero na dumarating sa iisang kalsada at ihuhulog ang mga mail packet sa iba't ibang mga bahay dahil mayroon silang iba't ibang mga address na nakasulat sa kanila.
Maaari kang magkaroon ng max 8 ng mga multiplexer na ito na nakakonekta sa 0x70-0x77 na mga address upang makontrol ang 64 ng parehong mga bahagi ng I2C na hinarap. Sa pamamagitan ng pagkonekta sa tatlong mga address bit A0, A1 at A2 sa VIN maaari kang makakuha ng iba't ibang kumbinasyon ng mga address. Ganito ang hitsura ng isang address byte ng TCA9548A. Pinagsama ang mga unang 7-bit upang mabuo ang address ng alipin. Ang huling piraso ng address ng alipin ay tumutukoy sa operasyon (basahin o isulat) na isasagawa. Kapag ito ay mataas (1), ang isang nabasa ay napili, habang ang isang mababa (0) ay pipili ng isang operasyon ng pagsusulat.
Hakbang 6: Paano Nagpadala at Nakakatanggap ng Data ang Master
Ang sumusunod ay ang pangkalahatang pamamaraan para sa isang master na ma-access ang isang aparato ng alipin:
1. Kung nais ng isang master na magpadala ng data sa isang alipin (WRITES):
- Nagpapadala ang Master-transmitter ng kundisyon ng SIMULA na sinusundan ng mga address ng aliping-tatanggap at R / W na nakatakda sa 0
- Nagpapadala ang Master-transmitter ng data sa '8-bit control register' sa slave-receiver kapag kinilala ng alipin na handa na ito
- Tinatapos ng Master-transmitter ang paglipat na may kundisyon ng STOP
2. Kung ang isang master ay nais na makatanggap o magbasa ng data mula sa isang alipin (BASAHIN):
- Ang Master-receiver ay nagpapadala ng kundisyon ng SIMULA na sinusundan ng mga address ng aliping-tatanggap at R / W na nakatakda sa 1
- Ipinadala ng Master-receiver ang hiniling na rehistro upang mabasa sa transmiter ng alipin
- Ang Master-receiver ay tumatanggap ng data mula sa slave-transmitter
- Kapag natanggap ang lahat ng mga byte ay nagpapadala ang NACK ng pagbibigay ng senyas sa alipin upang ihinto ang mga komunikasyon at palabasin ang bus
- Tinatapos ng Master-receiver ang paglipat na may kundisyon ng STOP
Ang isang bus ay itinuturing na walang ginagawa kung ang parehong mga linya ng SDA at SCL ay mataas pagkatapos ng kundisyon ng STOP.
Hakbang 7: Code
Ngayon, Int magsisimula ang code sa pamamagitan ng pagsasama ng "Wire" library at sa pamamagitan ng pagtukoy sa multiplexers address.
# isama ang "Wire.h"
# isama ang "U8glib.h"
#define MUX_Address 0x70 // TCA9548A Encoders address
Pagkatapos ay kailangan naming piliin ang port na nais naming makipag-usap at ipadala ang data dito gamit ang pagpapaandar na ito:
walang bisa selectI2CChannels (uint8_t i) {
kung (i> 7) bumalik;
Wire.beginTransmission (MUX_Address);
Wire.write (1 << i);
Wire.endTransmission ();
}
Susunod ay isisimulan namin ang pagpapakita sa seksyon ng pag-setup sa pamamagitan ng pagtawag sa "u8g.begin ();" para sa bawat display na nakakabit sa MUX "tcaselect (i);"
Kapag napasimulan, maaari na nating gawin ang nais natin sa pamamagitan lamang ng pagtawag sa pagpapaandar na "tcaselect (i);" kung saan ang "i" ay ang halaga ng multiplexed bus at pagkatapos ay pagpapadala ng data at orasan nang naaayon.
Hakbang 8: I2C Scanner
Kung sakali kung hindi ka sigurado tungkol sa address ng aparato ng iyong kalasag I2C, pagkatapos ay patakbuhin ang nakalakip na 'I2C Scanner' code upang hanapin ang hex address ng iyong aparato. Kapag na-load sa isang Arduino, i-scan ng sketch ang I2C network, ipinapakita ang mga address na tumutugon.
Hakbang 9: Mga Kable at Demo
Mga kable:
Hinahayaan nating magsimula sa pamamagitan ng pagkonekta ng multiplexer sa isang board ng NodeMCU. Kumonekta:
VIN hanggang 5V (o 3.3V)
GND sa lupa
SDA hanggang D2 at
SCL sa D1 na pin ayon sa pagkakabanggit
Para sa isang Arduino board na kumonekta:
VIN hanggang 5V (o 3.3V)
GND sa lupa
SDA hanggang A4 at
SCL hanggang A5 na mga pin ayon sa pagkakabanggit
Kapag ang MUX ay nai-hook up sa micro-controller, kailangan mo lamang ikonekta ang mga sensor sa mga pares na SCn / SDn.
Ngayon, hayaan mong suriin ang mabilis na demo na ito kung saan nakakonekta ko ang 8 OLED display sa TCA9548A Multiplexer. Tulad ng mga ipinapakitang ito ay gumagamit ng komunikasyon ng I2C, nakikipag-usap sila sa Arduino gamit lamang ang 2 mga pin.
Hakbang 10: Mga Kalamangan at Kalamangan
MGA KAGAMITAN
* Ang komunikasyon ay nangangailangan lamang ng dalawang linya ng bus (mga wire)
* Ang isang simpleng relasyon sa master / alipin ay umiiral sa pagitan ng lahat ng mga bahagi
* Walang mahigpit na mga kinakailangan sa rate ng baud tulad ng halimbawa sa RS232, bumubuo ang master ng isang orasan ng bus
* Ang hardware ay hindi gaanong kumplikado kaysa sa mga UART
* Sinusuportahan ang maraming mga masters at maraming mga alipin
* Ang ACK / NACK bit ay nagbibigay ng kumpirmasyon na ang bawat frame ay matagumpay na nailipat
* Ang I2C ay isang 'totoong multi-master bus' na nagbibigay ng arbitrasyon at pagtuklas ng banggaan
* Ang bawat aparato na nakakonekta sa bus ay addressable ng software ng isang natatanging address
* Karamihan sa mga aparato ng I2C ay maaaring makipag-usap sa 100kHz o 400kHz
* Ang I²C ay angkop para sa mga peripheral kung saan ang pagiging simple at mababang gastos sa pagmamanupaktura ay mas mahalaga kaysa sa bilis
* Kilalang at malawak na ginamit na protokol
KAPANGYARIHAN
* Mas mabagal na rate ng paglipat ng data kaysa sa SPI
* Ang laki ng frame ng data ay limitado sa 8 piraso
* Mas kumplikadong hardware na kinakailangan upang ipatupad kaysa sa teknolohiya ng SPI
Inirerekumendang:
Tutorial: Paano Kinokontrol ng Arduino ang Maramihang Parehong Mga Device sa Address sa pamamagitan ng Paggamit ng TCA9548A I2C Multiplexer: 3 Mga Hakbang
Tutorial: Paano Kinokontrol ng Arduino ang Maramihang Parehong Mga Device sa Address sa pamamagitan ng Paggamit ng TCA9548A I2C Multiplexer: Paglalarawan: Ang TCA9548A I2C Multiplexer Module ay upang paganahin upang ikonekta ang mga aparato na may parehong I2C address (hanggang sa 8 parehong address I2C) na naka-hook hanggang sa isang microcontroller. Ang multiplexer ay kumikilos bilang isang gatekeeper, pinapatay ang mga utos sa napiling set o
I2C / IIC LCD Display - Gumamit ng isang SPI LCD sa I2C LCD Display Gamit ang SPI to IIC Module With Arduino: 5 Hakbang
I2C / IIC LCD Display | Gumamit ng isang SPI LCD sa I2C LCD Display Gamit ang SPI to IIC Modyul Sa Arduino: Kumusta mga tao dahil ang isang normal na SPI LCD 1602 ay may maraming mga wires upang kumonekta kaya napakahirap i-interface ito sa arduino ngunit may isang module na magagamit sa merkado na maaaring i-convert ang SPI display sa IIC display kaya kailangan mong ikonekta ang 4 na wires lamang
Wireless na Komunikasyon Gamit ang NRF24L01 Transceiver Module para sa Mga Proyekto na Nakabatay sa Arduino: 5 Mga Hakbang (na may Mga Larawan)
Wireless na Komunikasyon Gamit ang NRF24L01 Transceiver Module para sa Mga Proyekto na Nakabatay sa Arduino: Ito ang aking pangalawang itinuturo na tutorial tungkol sa mga robot at micro-Controller. Tunay na kamangha-manghang makita ang iyong robot na buhay at gumagana tulad ng inaasahan at maniwala ka sa akin magiging mas masaya kung kontrolin mo ang iyong robot o iba pang mga bagay nang wireless nang mabilis at
Ipinakikilala ang I2C Sa Mga Zio Module at Qwiic: 6 Mga Hakbang
Ipinakikilala ang I2C With Zio Modules at Qwiic: Sinabi ni Robin Sharma: 'Ang maliit na pang-araw-araw na pagpapabuti sa paglipas ng panahon ay humantong sa nakamamanghang mga resulta'. Maaaring iniisip mo, 'Ay, ibang I2C post?'. Sa gayon, tiyak na may libu-libong impormasyon pagdating sa I2C. Ngunit manatiling nakatutok, ito ay hindi lamang isa pang I2C
Bumuo ng isang Dual 15V Power Supply Gamit ang Mga Module ng Istante para sa ilalim ng $ 50: 10 Mga Hakbang (na may Mga Larawan)
Bumuo ng isang Dual 15V Power Supply Gamit ang Off the Shelf Modules para sa Under $ 50: Panimula: Kung ikaw ay isang libangan na nakikipag-usap sa audio, pamilyar ka sa mga dalawahang supply ng kuryente. Karamihan sa mga low audio audio board tulad ng pre-amps ay nangangailangan ng kahit saan mula sa +/- 5V hanggang +/- 15V. Ang pagkakaroon ng dalawahang boltahe na supply ng kuryente ay ginagawang