Daftar Isi:

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, November
Anonim
Image
Image

Pernahkah Anda mengalami situasi di mana Anda harus memasang dua, tiga atau lebih Sensor I2C ke Arduino Anda hanya untuk menyadari bahwa sensor memiliki alamat I2C yang tetap atau sama. Selain itu, Anda tidak dapat memiliki dua perangkat dengan alamat yang sama pada pin SDA/SCL yang sama!

Jadi, apa pilihan Anda? Letakkan semuanya di multiplexer TCA9548A 1-ke-8 I2C untuk membuat mereka semua berbicara satu sama lain di bus yang sama! TCA9548A Breakout memungkinkan komunikasi dengan beberapa perangkat I2C yang memiliki alamat yang sama sehingga mudah untuk berinteraksi dengan perangkat tersebut.

Langkah 1: Persyaratan Perangkat Keras

Topik yang Dicakup
Topik yang Dicakup

Untuk tutorial ini kita membutuhkan:

- Papan tempat memotong roti

- Multiplexer TCA9548A I2C

- Arduino Uno/Nano apa pun yang berguna

- NodeMCU

- Sedikit tampilan OLED 0.91 & 0.96 I2C

- Kabel Jumper, dan

- Kabel USB untuk mengunggah kode

Langkah 2: Topik yang Dicakup

Kami akan memulai diskusi kami dengan memahami dasar-dasar teknologi I2C

Kemudian kita akan belajar tentang TCA9548A Multiplexer dan bagaimana master dan slave mengirim dan menerima data menggunakan teknologi I2C Kemudian kita akan melihat bagaimana kita dapat memprogram dan menggunakan multiplexer dalam proyek kita menggunakan Arduino dan NodeMCU. demo menggunakan 8 layar OLED I2C dan terakhir kita akan menyelesaikan tutorial dengan membahas kelebihan dan kekurangan Multiplexer TCA9548A

Langkah 3: Dasar-dasar Bus I2C

Dasar-dasar Bus I2C
Dasar-dasar Bus I2C
Dasar-dasar Bus I2C
Dasar-dasar Bus I2C
Dasar-dasar Bus I2C
Dasar-dasar Bus I2C

Inter-integrated Circuit diucapkan I-squared-C (I²C) atau I2C adalah teknologi bus dua kawat (sebenarnya 4 kabel karena Anda juga memerlukan VCC dan Ground) yang digunakan untuk komunikasi antara beberapa prosesor dan sensor.

Kedua kabel tersebut adalah:

* SDA - Data Serial (saluran data) dan

* SCL - Jam Serial (garis jam)

Ingat, kedua jalur ini 'sinkron' 'dua arah' 'pembuangan terbuka' dan 'ditarik dengan resistor'.

Teknologi bus I2C awalnya dirancang oleh Philips Semiconductors di awal tahun 80-an untuk memungkinkan komunikasi yang mudah antar komponen yang berada pada papan sirkuit yang sama.

Dengan I2C, Anda dapat menghubungkan beberapa budak ke satu master (seperti SPI) atau Anda dapat memiliki beberapa master yang mengontrol satu, atau beberapa budak. Baik master dan slave dapat mengirim dan menerima data. Jadi, perangkat di bus I2C dapat berada di salah satu dari empat status berikut:

* Master transmit – master node mengirim data ke slave* Master accept – master node menerima data dari slave

* Transmisi budak – simpul budak mengirim data ke master

* Penerimaan budak – simpul budak menerima data dari master

I2C adalah 'protokol komunikasi serial' 'jarak pendek', sehingga data ditransfer 'sedikit demi sedikit' sepanjang kabel tunggal atau jalur SDA. Output bit disinkronkan dengan pengambilan sampel bit oleh sinyal clock 'dibagi' antara master dan slave. Sinyal clock selalu dikendalikan oleh master. Master menghasilkan jam dan memulai komunikasi dengan budak.

Jadi, kesimpulannya>

Jumlah Kabel yang digunakan: 2

Sinkron atau Asinkron: Sinkron

Serial atau Paralel: Serial

Sinyal Jam dikendalikan oleh: Master Node

Tegangan yang digunakan: +5 V atau +3,3 V

Jumlah maksimum Master: Tidak Terbatas

Jumlah maksimum Budak: 1008

Kecepatan Maksimum: Mode Standar = 100kbps

Mode Cepat = 400kbps

Mode Kecepatan Tinggi = 3,4 Mbps

Mode 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 I2C delapan saluran (dua arah) yang memungkinkan delapan perangkat I2C terpisah untuk dikendalikan oleh bus I2C host tunggal. Anda hanya perlu menghubungkan sensor I2C ke bus multipleks SCn / SDn. Misalnya, jika delapan tampilan OLED identik diperlukan dalam suatu aplikasi, satu dari setiap tampilan dapat dihubungkan di setiap saluran ini: 0-7.

Multiplexer terhubung ke jalur VIN, GND, SDA dan SCL dari mikrokontroler. Papan breakout menerima VIN dari 1.65v hingga 5.5v. Kedua jalur input SDA dan SCL dihubungkan ke VCC melalui resistor pull-up 10K (Ukuran resistor pull-up ditentukan oleh jumlah kapasitansi pada jalur I2C). Multiplexer mendukung protokol I2C normal (100 kHz) dan cepat (400 kHz). Semua pin I/O TCA9548A toleran 5 volt dan juga dapat digunakan untuk menerjemahkan dari tegangan tinggi ke rendah atau rendah ke tinggi.

Sebaiknya pasang resistor pull-up di semua saluran TCA9548A, meskipun voltasenya sama. Alasan untuk ini adalah karena sakelar NMOS internal. Itu tidak mentransmisikan tegangan tinggi dengan sangat baik, di sisi lain ia mentransmisikan tegangan rendah dengan sangat baik. TCA9548A juga dapat digunakan untuk Terjemahan Tegangan, memungkinkan penggunaan tegangan bus yang berbeda pada setiap pasangan SCn/SDn sehingga bagian 1,8-V, 2,5-V, atau 3,3-V dapat berkomunikasi dengan bagian 5-V. Hal ini dicapai dengan menggunakan resistor pull-up eksternal untuk menarik bus ke tegangan yang diinginkan untuk master dan setiap saluran slave.

Jika mikrokontroler mendeteksi konflik bus atau operasi lain yang tidak tepat, TCA9548A dapat direset dengan menetapkan pin RESET rendah.

Langkah 5:

Gambar
Gambar
Gambar
Gambar
Gambar
Gambar

TCA9548 memungkinkan mikrokontroler tunggal untuk berkomunikasi dengan hingga '64 sensor' semua dengan alamat I2C yang sama atau berbeda dengan menetapkan saluran unik untuk setiap sub-bus budak sensor.

Ketika kita berbicara tentang mengirim data melalui 2 kabel ke beberapa perangkat, kita memerlukan cara untuk mengatasinya. Sama seperti tukang pos yang datang di satu jalan dan menjatuhkan paket surat ke rumah yang berbeda karena mereka memiliki alamat yang berbeda tertulis di atasnya.

Anda dapat memiliki maksimal 8 multiplekser ini yang terhubung bersama pada alamat 0x70-0x77 untuk mengontrol 64 bagian yang dialamatkan I2C yang sama. Dengan menghubungkan tiga bit alamat A0, A1 dan A2 ke VIN, Anda bisa mendapatkan kombinasi alamat yang berbeda. Beginilah tampilan byte alamat TCA9548A. 7-bit pertama bergabung untuk membentuk alamat budak. Bit terakhir dari alamat slave mendefinisikan operasi (baca atau tulis) yang akan dilakukan. Ketika tinggi (1), pembacaan dipilih, sedangkan rendah (0) memilih operasi tulis.

Langkah 6: Bagaimana Guru Mengirim & Menerima Data

Bagaimana Master Mengirim & Menerima Data
Bagaimana Master Mengirim & Menerima Data
Bagaimana Master Mengirim & Menerima Data
Bagaimana Master Mengirim & Menerima Data

Berikut ini adalah prosedur umum bagi master untuk mengakses perangkat budak:

1. Jika master ingin mengirim data ke slave (MENULIS):

– Master-transmitter mengirimkan kondisi START diikuti dengan alamat dari slave-receiver dan R/W diatur ke 0

– Master-transmitter mengirimkan data dalam 'register kontrol 8-bit' ke penerima-slave ketika slave mengakui bahwa data siap

– Pemancar utama menghentikan transfer dengan kondisi STOP

2. Jika master ingin menerima atau membaca data dari slave (BACA):

– Master-receiver mengirimkan kondisi START diikuti dengan alamat dari slave-receiver dan R/W disetel ke 1

– Penerima master mengirimkan register yang diminta untuk dibaca ke pemancar budak

– Penerima master menerima data dari pemancar budak

- Setelah semua byte diterima, Master mengirimkan sinyal NACK ke slave untuk menghentikan komunikasi dan melepaskan bus

- Master-receiver mengakhiri transfer dengan kondisi STOP

Sebuah bus dianggap idle jika kedua jalur SDA dan SCL high setelah kondisi STOP.

Langkah 7: Kode

Kode
Kode

Sekarang, kode Int mari kita mulai dengan memasukkan pustaka "Wire" dan dengan mendefinisikan alamat multiplexer.

#sertakan "Wire.h"

#sertakan "U8glib.h"

#define MUX_Address 0x70 // Alamat Encoder TCA9548A

Kemudian kita perlu memilih port yang ingin kita komunikasikan dan mengirim data menggunakan fungsi ini:

batal pilihI2CChannels(uint8_t i) {

jika (i > 7) kembali;

Wire.beginTransmission(MUX_Address);

Kawat.tulis(1 << i);

Kawat.endTransmisi();

}

Selanjutnya kita akan menginisialisasi tampilan pada bagian setup dengan memanggil "u8g.begin();" untuk setiap tampilan yang dilampirkan ke MUX "tcaselect(i);"

Setelah diinisialisasi, kita dapat melakukan apapun yang kita inginkan hanya dengan memanggil fungsi "tcaselect(i);" di mana "i" adalah nilai dari bus multipleks dan kemudian mengirimkan data dan jam yang sesuai.

Langkah 8: Pemindai I2C

Pemindai I2C
Pemindai I2C

Untuk berjaga-jaga jika Anda tidak yakin tentang alamat perangkat pelindung I2C Anda, jalankan kode 'Pemindai I2C' yang terlampir untuk menemukan alamat hex perangkat Anda. Saat dimuat ke Arduino, sketsa akan memindai jaringan I2C, menunjukkan alamat yang merespons.

Langkah 9: Pengkabelan dan Demo

Pengkabelan dan Demo
Pengkabelan dan Demo
Pengkabelan dan Demo
Pengkabelan dan Demo

Pengkabelan:

Mari kita mulai dengan menghubungkan multiplexer ke papan NodeMCU. Menghubung:

VIN ke 5V (atau 3.3V)

GND ke tanah

SDA ke D2 dan

Pin SCL ke D1 masing-masing

Untuk papan Arduino, sambungkan:

VIN ke 5V (atau 3.3V)

GND ke tanah

SDA ke A4 dan

Pin SCL ke A5 masing-masing

Setelah MUX terhubung ke mikrokontroler, Anda hanya perlu menghubungkan sensor ke pasangan SCn / SDn.

Sekarang, mari kita lihat demo cepat ini di mana saya telah menghubungkan 8 layar OLED ke Multiplexer TCA9548A. Karena tampilan ini menggunakan komunikasi I2C, mereka berkomunikasi dengan Arduino hanya menggunakan 2 pin.

Langkah 10: Keuntungan dan Kerugian

Keuntungan dan kerugian
Keuntungan dan kerugian

KEUNTUNGAN

* Komunikasi hanya membutuhkan dua jalur bus (kabel)

* Hubungan master/slave sederhana ada di antara semua komponen

* Tidak ada persyaratan baud rate yang ketat seperti misalnya dengan RS232, master menghasilkan jam bus

* Perangkat keras tidak terlalu rumit dibandingkan UART

* Mendukung banyak master dan banyak budak

* Bit ACK/NACK memberikan konfirmasi bahwa setiap frame berhasil ditransfer

* I2C adalah 'bus multi-master sejati' yang menyediakan arbitrase dan deteksi tabrakan

* Setiap perangkat yang terhubung ke bus dapat dialamatkan melalui perangkat lunak dengan alamat unik

* Sebagian besar perangkat I2C dapat berkomunikasi pada 100kHz atau 400kHz

* I²C sesuai untuk periferal di mana kesederhanaan dan biaya produksi rendah lebih penting daripada kecepatan

* Protokol terkenal dan banyak digunakan

KEKURANGAN

* Kecepatan transfer data lebih lambat dari SPI

* Ukuran bingkai data dibatasi hingga 8 bit

* Diperlukan perangkat keras yang lebih rumit untuk diimplementasikan daripada teknologi SPI

Direkomendasikan: