Daftar Isi:

Raspberry PI Beberapa Perangkat I2C: 3 Langkah
Raspberry PI Beberapa Perangkat I2C: 3 Langkah

Video: Raspberry PI Beberapa Perangkat I2C: 3 Langkah

Video: Raspberry PI Beberapa Perangkat I2C: 3 Langkah
Video: I2C on the Raspberry Pi - HOW TO use I2C with Python 2024, Juli
Anonim
Raspberry PI Beberapa Perangkat I2C
Raspberry PI Beberapa Perangkat I2C
Raspberry PI Beberapa Perangkat I2C
Raspberry PI Beberapa Perangkat I2C

Frustrasi karena Anda tidak dapat menggunakan beberapa perangkat I2C yang sama dalam proyek Anda. Tidak perlu menggunakan multiplexer lambat. Kernel raspbian terbaru mendukung pembuatan beberapa bus I2C menggunakan pin GPIO. Solusi ini sangat cepat.

Langkah 1: Beberapa Perintah Shell

Beberapa Perintah Shell
Beberapa Perintah Shell

Hubungkan salah satu perangkat i2c Anda saat raspberry pi Anda menyala, mulai raspberry pi Anda dan jalankan

sudo i2cdetect -y 1

Anda akan melihat tabel seperti pada gambar terlampir. Saya telah memasang sensor suhu dan tekanan udara BMP280. Alamat i2c adalah 0x76 menurut tabel. Perhatikan alamat ini.

Lakukan ini untuk semua perangkat i2c Anda.

Langkah 2: Kasus Satu: Perangkat I2c Memiliki Alamat yang Sama

Kasus Satu: Perangkat I2c Memiliki Alamat Yang Sama
Kasus Satu: Perangkat I2c Memiliki Alamat Yang Sama

Ini selalu menjadi kasus yang bermasalah. Bus i2c dapat menangani banyak perangkat, tetapi mereka harus memiliki alamat i2c yang berbeda. Beberapa perangkat i2c memiliki jumper untuk mengatur alamat i2c lainnya, tetapi banyak yang tidak. Dalam hal ini Anda dapat menggunakan i2c multiplexer (perangkat keras) untuk memutar i2c SDA (Data) dan SCL (Jam) atau Anda dapat membuat bus i2c tambahan atau lebih.

Saya akan membuat dua bus tambahan, nl bus 3 dan 4

Buka cli dan jalankan

cd / boot

sudo nano config.txt

Tambahkan baris kode berikut, lebih disukai di bagian di mana spi dan i2c diaktifkan.

dtoverlay=i2c-gpio, bus=4, i2c_gpio_delay_us=1, i2c_gpio_sda=23, i2c_gpio_scl=24

Baris ini akan membuat bus i2c tambahan (bus 4) pada GPIO 23 sebagai SDA dan GPIO 24 sebagai SCL (GPIO 23 dan 24 adalah default)

Tambahkan juga baris berikut untuk membuat i2c bus 3

dtoverlay=i2c-gpio, bus=3, i2c_gpio_delay_us=1, i2c_gpio_sda=17, i2c_gpio_scl=27

GPIO 17 akan menjadi SDA dan GPIO 27 akan menjadi SCL untuk i2c bus 4.

Tipe kontrol X untuk keluar.

Catatan tentang Penomoran dan Urutan Bus:

Jangan pernah menggunakan bus 0 dan 2, itu digunakan untuk hal-hal lain di papan seperti eprom di topi dll

Untuk rilis raspbian April 2019:

Anda harus selalu memulai dengan bus tertinggi (Bus 4 dalam hal ini) di config.txt Anda dan bekerja hingga bus terendah (bus 3).

Bus terendah harus selalu bus 3

Jika Anda membutuhkan 5 bus tambahan, bus harus bi dalam urutan 7, 6, 5, 4, 3

Masalah pada pesanan bus ini tidak ada ketika Instruksi ini awalnya ditulis. Sepertinya ada perubahan pada kernel.

Matikan PI Anda, matikan. Hubungkan perangkat i2c Anda ke bus 4 (SDA ke GPIO 23 dan SCL ke GPIO 24) dan yang lainnya ke i2c bus 3 (SDA ke GPIO 17 dan SCL ke GPIO 27).

Nyalakan pi.

Lari:

sudo i2cdetect -l (Huruf Kecil L)

Anda sekarang akan melihat bahwa i2c bus 3 dan 4 juga terdaftar. Juga jalankan:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

Sekarang Anda dapat menggunakan sensor Anda dalam bahasa pemrograman Anda. Ingatlah untuk menentukan bus i2c yang benar.

Lampirkan adalah contoh untuk sensor Suhu dan Tekanan BMP280 yang populer. Tidak ada multiplexer yang dapat membaca 2 BMP280 secepat ini.

Contoh 2 sensor SDP 810 juga terpasang. Sekali lagi bekerja jauh lebih cepat daripada multiplexer yang saya gunakan di masa lalu

Saya membuat kode python untuk membaca dua BMP388 baru dari adafruit.

Saya juga dapat menambahkan sensor lain di masa mendatang ke

Langkah 3: Kasus 2: Alamat I2c yang berbeda

Sederhana. i2c adalah bus. Tujuan bus adalah untuk berkomunikasi dengan beberapa perangkat. Hubungkan perangkat paralel ke bus i2c yang sama. Anda dapat menggunakan bus satu.

Lari:

sudo i2cdetect -y 1

Anda akan melihat perangkat yang terdaftar.

Direkomendasikan: