I2C'yi sensörlerle konuşmak için nasıl kullanabilirim?


29

I²C arayüzü üzerinden dijital sensörlerle nasıl konuşabilirim?

Donanım:
Ahududu Pi'nin GPIO'sunda hangi pinleri kullanabilirim?

Yazılım:
Hangi I²C kütüphaneleri mevcut?

Yanıtlar:


23

Burada RPi'nin GPIO'su hakkında birçok bilgi var: http://elinux.org/Rpi_Low-level_peripherals

Buna göre I²C için herhangi bir GPIO pinini programlayabilirsiniz, ancak:

Pin 3 (SDA0) ve Pin 5 (SCL0), bir I²C arayüzü olarak kullanılmak üzere önceden ayarlanmıştır. Yani bu pinler için tahta üzerinde 1.8 kilometrelik dirençler var.

Bu wiki sayfasında ayrıca, başlamanız gereken çeşitli diller için bazı düşük düzey GPIO kod örnekleri vardır. I²C'nin gerçekte ne olduğu hakkında bir tazeleme ihtiyacınız varsa, işte RPI'yi dikkate alan bir tazeleme.

Spesifik I²C kontrolü için, bu python kütüphanesi yardımcı olabilir , bir kod örneği içeren bu blog yazısında tartışılmıştır .


Edison Sparkfun GPIO pinlerini I2C'ye uyarlama potansiyeli hakkında herhangi bir yorumunuz var mı?
geotheory 9:15

7

Bununla ilgili birçok tartışma oluyor. İşte okuduğum ve uğraştığım şeyin bana gösterdiği şey:

  1. I2C desteği Debian "squeeze" ile varsayılan çekirdeğe eklenmemiş.
  2. Özel bir çekirdeğin i2cspi modülüyle derlenmesi gerekir ( İşte bir GIT ağacı alıntı )
  3. Şimdiye kadar yazılan sürücüler sadece 3.2 çekirdeği içindir ve daha sonra yazarın ağzı açık güvenlik delikleri nedeniyle 3.1.9'u destekleme niyeti yoktur ( Chris Boot sürücüyü tartışır )
  4. Şansınız varsa, şu anda RasPi için beta sürümünde olan Debian "wheezy" dağıtımı bu sürücüye sahip olacak. 3.2 çekirdeği ile birlikte geliyor.

2
Evet, bahsettiğiniz gibi, şimdi standart çekirdeğe yerleştirilmiştir - hem resmi Raspbian hem de Debian hırıltı dağıtımları. Ben takip etmek kolaydır burada bazı öneriyi ve ben / dev ... gösterilmesini I2C cihazları var raspberrypi.org/phpBB3/viewtopic.php?f=37&t=15511 gerekirse biraz daha ayrıntı var burada: robot- electronics.co.uk/files/rpi_i2c_setup.doc
dodgy_coder

Daha ayrıntılı bilgi almak için, web bağlantılarından ziyade verileri burada saklayın ve bunun güncel olmadığını umuyoruz: Wheezy 2012-09-18 görüntüsünden itibaren, /etc/modprobe.d/raspi-blacklist.confgirişini düzenleyip yorumluyorsunuz i2c-bcm2708; sonra düzenleyin /etc/modulesve ekleyin i2c-dev; sonra yeniden başlatın. Şimdi, /dev/i2c-0kullanımı çok kolay olan özel bir dosyaya sahip olmalısınız .
damian


2

Donanım:

Tapio tarafından belirtildiği gibi, donanım http://elinux.org/Rpi_Low-level_peripherals adresinde iyi belgelenmiştir.

Yazılım:

Linux kullanıcı alanında ( #include <linux/i2c-dev.h>) bir i2c-dev başlığı var . Ayrıca okumak için bir karakter decive gerekir. Bu, doğru modüller yüklenerek yapılabilir. i2c_bcm2708Düşük seviyeli sürücü i2c-deviçin ve otobüslerde karakter aldatmaları için. Uygulamak ...

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

onları anında yüklemek için. Uygulamak ...

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

ve unblacklist i2c_bcm2708içinde /etc/modprobe.d/raspi-blacklist.confyapmak /dev/i2c-0ve /dev/i2c-1kalıcı görünür.

Artık I²C del maestro'nun nasıl kullanılacağına dair ipuçlarını takip edebilirsiniz .

Bu metodu diğerlerine tercih ederim, çünkü platformagnostic. linux/i2c-dev.hDüşük seviye I²C sürücüsü olduğu sürece, diğer cihazlarla da kullanabilirsiniz .

Saygılarımızla

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.