Daftar Isi:
- Langkah 1: Persyaratan Perangkat Keras
- Langkah 2: Topik yang Dicakup
- Langkah 3: Dasar-dasar Bus I2C
- Langkah 4: Modul Multiplexer TCA9548A I2C
- Langkah 5:
- Langkah 6: Bagaimana Guru Mengirim & Menerima Data
- Langkah 7: Kode
- Langkah 8: Pemindai I2C
- Langkah 9: Pengkabelan dan Demo
- Langkah 10: Keuntungan dan Kerugian
- Langkah 11: Terima kasih
Video: Modul Multiplexer TCA9548A I2C - Dengan Arduino dan NodeMCU: 11 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
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
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
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
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:
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
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
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
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:
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
* 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:
Cara Membuat dan Menyisipkan Tabel dan Menambahkan Kolom Dan/atau Baris Tambahan ke Tabel Itu di Microsoft Office Word 2007: 11 Langkah
Cara Membuat dan Menyisipkan Tabel dan Menambahkan Kolom Dan/atau Baris Tambahan ke Tabel Itu di Microsoft Office Word 2007: Pernahkah Anda memiliki banyak data yang sedang Anda kerjakan dan pikirkan sendiri…"bagaimana saya bisa membuat semua dari data ini terlihat lebih baik dan lebih mudah dipahami?" Jika demikian, maka tabel di Microsoft Office Word 2007 mungkin bisa menjadi jawaban Anda
Menghubungkan Pemrosesan dan Arduino dan Membuat Pengontrol GUI 7 Segmen dan Servo: 4 Langkah
Menghubungkan Pemrosesan dan Arduino dan Membuat 7 Segmen dan Pengontrol GUI Servo: Untuk beberapa proyek yang Anda buat perlu menggunakan Arduino karena menyediakan platform prototyping yang mudah tetapi menampilkan grafik di monitor serial Arduino bisa memakan waktu cukup lama dan bahkan sulit dilakukan. Anda dapat menampilkan grafik pada Arduino Serial Monitor bu
Mengontrol LED Menggunakan Modul WiFi NodeMCU dan Aplikasi Blynk: 7 Langkah
Mengontrol LED Menggunakan Modul WiFi NodeMCU dan Aplikasi Blynk: Instruksi ini akan menunjukkan kepada Anda cara mengontrol LED menggunakan modul WiFi NodeMCU ESP8266 melalui aplikasi smartphone Blynk. Jika Anda seorang pemula, baca terus. Jika Anda lebih berpengalaman, Anda mungkin tertarik untuk melompat ke akhir, di mana saya berbicara tentang t
HALL MULTIPLEXER: 4 Langkah
HALL MULTIPLEXER: (Diperbarui 24 Mei 2019, pembaruan di masa mendatang akan mengikuti) Hai. Saya membaca di forum lain, (tidak ingat yang mana?), tentang orang yang mencari cara cerdas untuk mengukur tingkat "cairan" dalam tangki besar (dalam)? Masalah baginya adalah kebutuhan
Modul RF 433MHZ - Membuat Penerima dan Pemancar Dari Modul RF 433MHZ Tanpa Mikrokontroler: 5 Langkah
Modul RF 433MHZ | Membuat Penerima dan Pemancar Dari Modul RF 433MHZ Tanpa Mikrokontroler: Apakah Anda ingin mengirim data nirkabel? dengan mudah dan tanpa mikrokontroler diperlukan? Ini dia, dalam instruksi ini saya akan menunjukkan kepada Anda pemancar dan penerima rf dasar mi siap digunakan! Dalam instruksi ini Anda akan dapat mengirim dan menerima data menggunakan