Isi kandungan:

Modul Multiplexer TCA9548A I2C - Dengan Arduino dan NodeMCU: 11 Langkah
Modul Multiplexer TCA9548A I2C - Dengan Arduino dan NodeMCU: 11 Langkah

Video: Modul Multiplexer TCA9548A I2C - Dengan Arduino dan NodeMCU: 11 Langkah

Video: Modul Multiplexer TCA9548A I2C - Dengan Arduino dan NodeMCU: 11 Langkah
Video: TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU 2024, Jun
Anonim
Image
Image

Adakah anda pernah mengalami situasi di mana anda harus memasang dua, tiga atau lebih Sensor I2C ke Arduino anda untuk menyedari bahawa sensor mempunyai alamat I2C yang tetap atau sama. Selain itu, anda tidak boleh mempunyai dua peranti dengan alamat yang sama pada pin SDA / SCL yang sama!

Jadi, apa pilihan anda? Letakkan semuanya di multiplexer TCA9548A 1-to-8 I2C untuk membuat mereka semua bercakap antara satu sama lain dengan bas yang sama! Breakout TCA9548A membolehkan komunikasi dengan pelbagai peranti I2C yang mempunyai alamat yang sama menjadikannya mudah untuk berinteraksi dengan mereka.

Langkah 1: Keperluan Perkakasan

Topik yang Diliputi
Topik yang Diliputi

Untuk tutorial ini, kami memerlukan:

- Papan roti

- TCA9548A I2C Multiplexer

- Arduino Uno / Nano apa sahaja yang berguna

- NodeMCU

- Beberapa paparan OLED 0.91 & 0.96 I2C

- Kabel Jumper, dan

- Kabel USB untuk memuat naik kod

Langkah 2: Topik yang Diliputi

Kami akan memulakan perbincangan kami dengan memahami asas-asas teknologi I2C

Kemudian kita akan belajar mengenai TCA9548A Multiplexer dan bagaimana tuan dan hamba menghantar dan menerima data menggunakan teknologi I2C Kemudian kita akan memeriksa bagaimana kita dapat memprogram dan menggunakan multiplexer dalam projek kita menggunakan Arduino dan NodeMCU Seterusnya, saya akan menunjukkan kepada anda demo menggunakan 8 paparan OLED I2C dan akhirnya kami akan menyelesaikan tutorial dengan membincangkan kelebihan dan kekurangan TCA9548A Multiplexer

Langkah 3: Asas Bas I2C

Asas Bas I2C
Asas Bas I2C
Asas Bas I2C
Asas Bas I2C
Asas Bas I2C
Asas Bas I2C

Litar Bersepadu yang diucapkan I-squared-C (I²C) atau I2C adalah teknologi bus dua wayar (sebenarnya 4 wayar kerana anda juga memerlukan VCC dan Ground) yang digunakan untuk komunikasi antara beberapa pemproses dan sensor.

Dua wayar tersebut adalah:

* SDA - Data Bersiri (garis data) dan

* SCL - Jam Bersiri (garis jam)

Ingat, kedua-dua garis ini adalah 'sinkron' 'dua arah' 'terbuka-longkang' dan 'ditarik dengan perintang'.

Teknologi bas I2C pada asalnya dirancang oleh Philips Semiconductors pada awal tahun 80an untuk membolehkan komunikasi mudah antara komponen yang berada di papan litar yang sama.

Dengan I2C, anda boleh menghubungkan beberapa hamba ke satu master (seperti SPI) atau anda boleh mempunyai beberapa master yang mengendalikan single, atau beberapa hamba. Baik tuan dan hamba boleh menghantar dan menerima data. Oleh itu, peranti di bas I2C boleh berada di salah satu daripada empat keadaan berikut:

* Master transmit - master node menghantar data kepada hamba * Master menerima - master node menerima data dari hamba

* Slave transmit - node hamba menghantar data ke master

* Slave menerima - node hamba menerima data dari master

I2C adalah protokol komunikasi bersiri 'jarak pendek', jadi data dipindahkan 'sedikit demi sedikit' di sepanjang wayar tunggal atau garis SDA. Keluaran bit diselaraskan dengan pensampelan bit dengan isyarat jam 'dikongsi' antara tuan dan hamba. Isyarat jam sentiasa dikawal oleh tuan. Guru menghasilkan jam dan memulakan komunikasi dengan hamba.

Jadi, untuk meringkaskannya>

Bilangan Wayar yang digunakan: 2

Segerak atau Tidak segerak: Segerak

Bersiri atau Selari: Bersiri

Isyarat Jam dikawal oleh: Master Node

Voltan yang digunakan: +5 V atau +3.3 V

Bilangan Masters maksimum: Tidak terhad

Bilangan maksimum hamba: 1008

Kelajuan Maksimum: Mod Standard = 100kbps

Mod Pantas = 400kbps

Mod Berkelajuan Tinggi = 3.4 Mbps

Mod Ultra Cepat = 5 Mbps

Langkah 4: Modul Multiplexer TCA9548A I2C

Modul Multiplexer TCA9548A I2C
Modul Multiplexer TCA9548A I2C
Modul Multiplexer TCA9548A I2C
Modul Multiplexer TCA9548A I2C
Modul Multiplexer TCA9548A I2C
Modul Multiplexer TCA9548A I2C

TCA9548A adalah multiplexer lapan saluran (dua arah) I2C yang membolehkan lapan peranti I2C berasingan dikendalikan oleh bas I2C hos tunggal. Anda hanya perlu memasang sensor I2C ke bas multiplexed SCn / SDn. Sebagai contoh, jika diperlukan lapan paparan OLED yang serupa dalam aplikasi, satu dari setiap paparan dapat disambungkan di setiap saluran ini: 0-7.

Multiplexer menghubungkan ke garis VIN, GND, SDA dan SCL pengawal mikro. Papan pelarian menerima VIN dari 1.65v hingga 5.5v. Kedua-dua garis input SDA dan SCL disambungkan ke VCC melalui resistor pull-up 10K (Ukuran resistor pull-up ditentukan oleh jumlah kapasitansi pada garis I2C). Multiplexer menyokong protokol I2C normal (100 kHz) dan cepat (400 kHz). Semua pin I / O TCA9548A bertoleransi 5 volt dan juga boleh digunakan untuk menterjemahkan dari voltan tinggi ke rendah atau rendah ke tinggi.

Adalah baik untuk meletakkan perintang penarik pada semua saluran TCA9548A, walaupun voltannya sama. Sebabnya adalah kerana suis NMOS dalaman. Ia tidak menghantar voltan tinggi dengan baik, sebaliknya menghantar voltan rendah dengan sangat baik. TCA9548A juga dapat digunakan untuk Terjemahan Voltan, yang memungkinkan penggunaan voltan bus yang berlainan pada setiap pasangan SCn / SDn sehingga bahagian 1.8-V, 2.5-V, atau 3.3-V dapat berkomunikasi dengan bahagian 5-V. Ini dicapai dengan menggunakan resistor pull-up luaran untuk menarik bus ke voltan yang diinginkan untuk master dan setiap saluran hamba.

Sekiranya pengawal mikro mengesan konflik bas atau operasi tidak betul yang lain, TCA9548A dapat diset semula dengan menegaskan rendah ke pin RESET.

Langkah 5:

Imej
Imej
Imej
Imej
Imej
Imej

TCA9548 membenarkan pengawal mikro tunggal untuk berkomunikasi dengan '64 sensor 'semuanya dengan alamat I2C yang sama atau berbeza dengan menetapkan saluran unik untuk setiap sub-sub hamba sensor.

Apabila kita bercakap mengenai pengiriman data lebih dari 2 wayar ke beberapa peranti, maka kita memerlukan cara untuk mengatasinya. Sama seperti posmen yang datang di satu jalan dan menjatuhkan paket surat ke rumah yang berbeza kerana mereka mempunyai alamat yang berlainan.

Maksimum 8 dari multiplexer ini dihubungkan bersama pada alamat 0x70-0x77 untuk mengawal 64 bahagian I2C yang sama. Dengan menghubungkan tiga bit alamat A0, A1 dan A2 ke VIN, anda boleh mendapatkan kombinasi alamat yang berbeza. Beginilah rupa bait alamat TCA9548A. 7-bit pertama bergabung untuk membentuk alamat hamba. Bit terakhir dari alamat hamba menentukan operasi (baca atau tulis) yang akan dilakukan. Apabila tinggi (1), bacaan dipilih, sementara rendah (0) memilih operasi tulis.

Langkah 6: Bagaimana Master Menghantar & Menerima Data

Bagaimana Induk Menghantar & Menerima Data
Bagaimana Induk Menghantar & Menerima Data
Bagaimana Induk Menghantar & Menerima Data
Bagaimana Induk Menghantar & Menerima Data

Berikut ini adalah prosedur umum untuk master mengakses peranti hamba:

1. Sekiranya tuan ingin menghantar data kepada hamba (MENULIS):

- Master-transmitter menghantar keadaan MULAI diikuti dengan alamat penerima hamba dan R / W ditetapkan ke 0

- Master-transmitter mengirimkan data dalam 'register kawalan 8-bit' ke penerima-hamba ketika hamba mengakui bahawa ia sudah siap

- Master-transmitter menghentikan pemindahan dengan keadaan STOP

2. Sekiranya tuan mahu menerima atau membaca data dari hamba (BACA):

- Master-penerima menghantar syarat MULAI diikuti dengan alamat penerima budak dan R / W ditetapkan ke 1

- Penerima utama menghantar daftar yang diminta untuk dibaca ke pemancar hamba

- Penerima utama menerima data dari pemancar hamba

- Setelah semua bait diterima, Guru menghantar isyarat NACK kepada hamba untuk menghentikan komunikasi dan melepaskan bas

- Master-penerima menghentikan pemindahan dengan syarat STOP

Bas dianggap tidak berfungsi sekiranya kedua-dua talian SDA dan SCL tinggi setelah keadaan STOP.

Langkah 7: Kod

Kod
Kod

Sekarang, int kodnya bermula dengan memasukkan perpustakaan "Wire" dan dengan menentukan alamat multiplexer.

#sertakan "Wire.h"

#sertakan "U8glib.h"

#define MUX_Address 0x70 // Alamat pengekod TCA9548A

Kemudian kita perlu memilih port yang ingin kita sampaikan dan menghantar data di dalamnya menggunakan fungsi ini:

batal pilihI2CChannels (uint8_t i) {

sekiranya (i> 7) kembali;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Selanjutnya kita akan menginisialisasi paparan di bahagian persediaan dengan memanggil "u8g.begin ();" untuk setiap paparan yang dipasang pada MUX "tcaselect (i);"

Setelah diinisialisasi, kita kemudian dapat melakukan apa sahaja yang kita mahukan hanya dengan memanggil fungsi "tcaselect (i);" di mana "i" adalah nilai bus berbilang dan kemudian menghantar data dan jam dengan sewajarnya.

Langkah 8: Pengimbas I2C

Pengimbas I2C
Pengimbas I2C

Sekiranya anda tidak pasti mengenai alamat peranti perisai I2C anda, kemudian jalankan kod 'Pengimbas I2C' yang dilampirkan untuk mencari alamat hex peranti anda. Ketika dimuat ke Arduino, lakaran akan memindai rangkaian I2C, menunjukkan alamat yang merespons.

Langkah 9: Pendawaian dan Demo

Pendawaian dan Demo
Pendawaian dan Demo
Pendawaian dan Demo
Pendawaian dan Demo

Pendawaian:

Mari bermula dengan menyambungkan multiplexer ke papan NodeMCU. Sambung:

VIN hingga 5V (atau 3.3V)

GND ke tanah

SDA hingga D2 dan

SCL hingga D1 pin masing-masing

Untuk papan Arduino sambungkan:

VIN hingga 5V (atau 3.3V)

GND ke tanah

SDA hingga A4 dan

SCL hingga A5 pin masing-masing

Setelah MUX disambungkan ke pengawal mikro, anda hanya perlu menyambungkan sensor ke pasangan SCn / SDn.

Sekarang, mari lihat demo cepat ini di mana saya telah menyambungkan 8 paparan OLED ke TCA9548A Multiplexer. Oleh kerana paparan ini menggunakan komunikasi I2C, mereka berkomunikasi dengan Arduino dengan hanya menggunakan 2 pin.

Langkah 10: Kelebihan dan Kekurangan

Kelebihan dan kekurangan
Kelebihan dan kekurangan

KELEBIHAN

* Komunikasi hanya memerlukan dua talian bas (wayar)

* Hubungan tuan / hamba yang sederhana wujud antara semua komponen

* Tidak ada keperluan kadar baud yang ketat seperti misalnya dengan RS232, master menghasilkan jam bas

* Perkakasan kurang rumit daripada UART

* Menyokong banyak tuan dan beberapa hamba

* ACK / NACK bit memberikan pengesahan bahawa setiap bingkai berjaya dipindahkan

* I2C adalah 'bas multi-master sejati' yang menyediakan penimbangtaraan dan pengesanan perlanggaran

* Setiap peranti yang disambungkan ke bas dialamatkan oleh perisian dengan alamat unik

* Sebilangan besar peranti I2C dapat berkomunikasi pada 100kHz atau 400kHz

* I²C sesuai untuk periferal di mana kesederhanaan dan kos pembuatan yang rendah lebih penting daripada kepantasan

* Protokol yang terkenal dan banyak digunakan

KELEBIHAN

* Kadar pemindahan data lebih perlahan daripada SPI

* Ukuran bingkai data terhad kepada 8 bit

* Perkakasan yang lebih rumit diperlukan untuk dilaksanakan daripada teknologi SPI

Disyorkan: