Bagaimana saya bisa menggunakan I2C untuk berbicara dengan sensor?

29

Bagaimana saya bisa berbicara dengan sensor digital melalui antarmuka I²C?

Perangkat keras:
Pin mana pada GPIO Raspberry Pi yang dapat saya gunakan?

Perangkat lunak:
Pustaka I²C apa yang tersedia?

Alex L
sumber

Jawaban:

23

Ada banyak informasi tentang GPi RPi di sini: http://elinux.org/Rpi_Low-level_peripherals

Menurutnya, Anda dapat memprogram pin GPIO apa pun untuk I²C, tetapi:

Pin 3 (SDA0) dan Pin 5 (SCL0) ditetapkan untuk digunakan sebagai antarmuka I²C. Jadi ada 1,8 kilohm yang menarik resistor di papan untuk pin ini.

Halaman wiki itu juga memiliki beberapa contoh kode GPIO tingkat rendah untuk berbagai bahasa yang harus Anda mulai. Jika Anda memerlukan penyegaran tentang apa sebenarnya I²C, inilah yang juga memperhitungkan RPi.

Untuk pengendalian I²C tertentu, pustaka python ini mungkin bermanfaat, dibahas dalam posting blog ini , yang mencakup contoh kode.

Tapio
sumber
Adakah komentar tentang potensi untuk mengadaptasi pin GPIO Edison Sparkfun untuk I2C?
geoteori
7

Banyak diskusi terjadi tentang ini. Inilah yang ditunjukkan oleh bacaan dan kekacauan saya kepada saya:

  1. Dukungan I2C tidak dibangun ke dalam kernel default dengan "pemerasan" Debian
  2. Kernel khusus harus dikompilasi dengan modul i2cspi ( Berikut adalah kutipan pohon GIT )
  3. Driver yang telah ditulis sejauh ini hanya untuk kernel 3.2 dan yang lebih baru, dan penulis tidak memiliki niat untuk mendukung 3.1.9+ karena celah keamanan yang menganga ( Chris Boot membahas driver )
  4. Dengan keberuntungan, distribusi "wheezy" Debian, saat ini dalam versi beta untuk RasPi, akan memiliki driver ini. Muncul dengan kernel 3.2.
zerolagtime
sumber
2
Ya, seperti yang Anda sebutkan itu dibangun ke dalam kernel standar sekarang - baik distro Wheezy Raspbian dan resmi. Saya mengikuti beberapa saran di sini yang mudah diikuti dan saya memiliki perangkat I2C muncul di / dev ... raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 Ada sedikit lebih detail di sini jika diperlukan: robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder
Untuk mendapatkan lebih detail, simpan data di sini daripada di tautan web, dan berharap ini tidak ketinggalan zaman: Pada gambar Wheezy 2012-09-18, Anda mengedit /etc/modprobe.d/raspi-blacklist.confdan mengomentari entri untuk i2c-bcm2708; lalu edit /etc/modulesdan tambahkan i2c-dev; lalu reboot. Anda sekarang harus memiliki /dev/i2c-0file khusus, yang sangat mudah digunakan.
damian
2

Perangkat keras:

Seperti disebutkan oleh Tapio, perangkat keras didokumentasikan dengan baik di http://elinux.org/Rpi_Low-level_peripherals

Perangkat lunak:

Ada header i2c-dev di ruang pengguna Linux ( #include <linux/i2c-dev.h>). Selain itu, Anda memerlukan karakter yang dapat dibaca. Ini dapat dilakukan dengan memuat modul yang benar. i2c_bcm2708untuk pengemudi tingkat rendah dan i2c-devuntuk menghasilkan tipuan karakter untuk bus. Menerapkan ...

sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708 baudrate=<your preferred baudrate>

untuk memuat mereka dengan cepat. Menerapkan ...

sudo sh -c 'echo "i2c-dev" >> /etc/modules'
sudo sh -c 'echo "options i2c_bcm2708 baudrate=<your preferred baudrate>\n" > /etc/modprobe.d/custom.conf

dan unblacklist i2c_bcm2708di /etc/modprobe.d/raspi-blacklist.confuntuk membuat /dev/i2c-0dan /dev/i2c-1muncul secara permanen.

Mulai sekarang Anda dapat mengikuti petunjuk tentang cara menggunakan I²C del maestro sendiri.

Saya lebih suka metode ini daripada yang lain, karena ini platformagnostik. Anda dapat menggunakan linux/i2c-dev.hdengan perangkat lain juga, selama ada driver I²C tingkat rendah.

Salam

ManuelSchneid3r
sumber