Isi kandungan:
- Langkah 1: Keperluan Perkakasan
- Langkah 2: Topik yang Diliputi
- Langkah 3: Asas Bas I2C
- Langkah 4: Modul Multiplexer TCA9548A I2C
- Langkah 5:
- Langkah 6: Bagaimana Master Menghantar & Menerima Data
- Langkah 7: Kod
- Langkah 8: Pengimbas I2C
- Langkah 9: Pendawaian dan Demo
- Langkah 10: Kelebihan dan Kekurangan
- Langkah 11: Terima kasih
Video: Modul Multiplexer TCA9548A I2C - Dengan Arduino dan NodeMCU: 11 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:10
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
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
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
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:
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
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
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
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:
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
* 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:
Cara Membuat dan Memasukkan Jadual dan Menambah Lajur Tambahan dan / atau Baris ke Jadual Itu di Microsoft Office Word 2007: 11 Langkah
Cara Membuat dan Memasukkan Jadual dan Menambah Lajur Tambahan dan / atau Baris ke Jadual Itu di Microsoft Office Word 2007: Pernahkah anda mempunyai banyak data yang anda gunakan dan fikirkan sendiri … " bagaimana saya dapat membuat semua data ini kelihatan lebih baik dan lebih mudah difahami? " Sekiranya demikian, maka jadual di Microsoft Office Word 2007 mungkin adalah jawapan anda
Menghubungkan Pemprosesan dan Arduino dan Membuat 7 Segmen dan Pengawal GUI Servo: 4 Langkah
Menghubungkan Pemprosesan dan Arduino dan Membuat 7 Segmen dan Pengawal Servo GUI: Untuk beberapa projek yang anda buat perlu menggunakan Arduino kerana menyediakan platform prototaip yang mudah tetapi memaparkan grafik dalam monitor bersiri Arduino boleh memakan masa cukup lama dan bahkan sukar untuk dilakukan. Anda boleh memaparkan grafik di Arduino Serial Monitor dengan
Mengawal LED Menggunakan Modul WiFi NodeMCU dan Aplikasi Blynk: 7 Langkah
Mengawal LED Menggunakan Modul WiFi NodeMCU dan Aplikasi Blynk: Instructable ini akan menunjukkan kepada anda cara mengawal LED menggunakan modul WiFi NodeMCU ESP8266 melalui aplikasi telefon pintar Blynk. Sekiranya anda seorang pemula, baca terus. Sekiranya anda lebih berpengalaman, anda mungkin berminat untuk melangkau ke akhir, di mana saya bercakap mengenai
HALL MULTIPLEXER: 4 Langkah
HALL MULTIPLEXER: (Dikemas kini 24 Mei 2019, kemas kini akan datang) Hai. Saya membaca di forum lain, (tidak ingat yang mana?), Lelaki ini yang mencari kaedah pintar untuk mengukur tahap sebilangan "cecair" dalam tangki besar (dalam)? Masalah baginya adalah keperluan
Modul RF 433MHZ - Buat Penerima dan Pemancar Dari Modul RF 433MHZ Tanpa Mikrokontroler: 5 Langkah
Modul RF 433MHZ | Buat Penerima dan Pemancar Dari Modul RF 433MHZ Tanpa Mikrokontroler: Adakah anda ingin menghantar data tanpa wayar? dengan mudah dan tanpa mikrokontroler diperlukan? Ini dia, dalam arahan ini saya akan menunjukkan kepada anda pemancar dan penerima rf asas yang siap digunakan! Dalam arahan ini, anda boleh menghantar dan menerima data dengan menggunakan