Yeni: Yapay zekâ güvenlik duvarı tüm platformu izliyor ve her olayı sade bir dille açıklıyor. Nasıl çalıştığını görün

SCD30 Pi’de Remote I/O hatası veriyor, I2C’yi Python’da bit-bang ile mi yazmalıyım?

SCD30 Pi’de Remote I/O hatası veriyor, I2C’yi Python’da bit-bang ile mi yazmalıyım?

Çözüldü 5 3

Toplantı odaları için CO2 ölçüyoruz, Pi 3B+ ve Sensirion SCD30. Pi her 30 saniyede okuyup Hermetry’ye co2, temp, rh gönderiyor. Okumaların bir kısmı şu hatayla patlıyor:

OSError: [Errno 121] Remote I/O error
  File "scd30.py", line 58, in read_measurement
    data = bus.read_i2c_block_data(0x61, 0x03, 18)

Saatte 20-30 kez. Grafikte boşluklar oluyor. Okuduğum kadarıyla SCD30 clock stretching yapıyor ve Pi’nin donanım I2C’si bunu düzgün desteklemiyor. Düşündüğüm şey RPi.GPIO ile I2C master’ı Python’da bit-bang olarak yazmak. Mantıklı mı, daha önce yapan var mı? Zamanlama Python’da tutar mı emin değilim.

Ağ geçidi yine bağlanıyor…
♥ 2

Hızı düşürmeyi denediniz mi? config.txt’de i2c_arm_baudrate ile.

♥ 0

10000’e indirdim, hata saatte 5-6’ya düştü ama bitmedi.

Ağ geçidi yine bağlanıyor…
♥ 0

Python’da kendin yazma, çekirdekte zaten hazır bir yazılım I2C var, bit-bang’i o yapıyor ve clock stretching’i doğru izliyor. SCD30’u ben de tam bu yüzden ona taşıdım. /boot/config.txt (Bookworm’da /boot/firmware/config.txt):

dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=2

Yeniden başlat, i2cdetect -y 3 ile 0x61’i gör. Kodda SMBus(1) yerine SMBus(3). Sensörü GPIO 23/24’e taşı, 3.3V’a 4.7k pull-up koy (donanım I2C pinlerindeki dahili pull-up’lar burada yok). Diğer sensörlerin varsa onlar bus 1’de kalabilir.

Bir de okumayı sensörün “data ready” komutuna (0x0202) göre yap, ölçüm hazır değilken okursan da saçmalıyor. Arada bir hata yine olursa bir kez tekrar dene, o okumayı atla; boş geçen okuma için bir şey gönderme, Hermetry’de son değer kalır.

Kabul edilen çözüm♥ 2

Overlay ile bus 3’e aldım, 2 gündür tek Errno 121 yok. Pull-up’ları unutmuştum, ilk açılışta i2cdetect boş geldi, 4.7k’ları takınca göründü. Bit-bang yazmaya girişmediğim iyi olmuş.

Ağ geçidi yine bağlanıyor…
♥ 0

Hız düşürmek neden tamamen çözmedi peki? Merak ettim.

♥ 1
6 yazı görüntüleniyor – 1 ile 6 arası (toplam 6)
  • Bu konuyu yanıtlamak için giriş yapmış olmalısınız.

Sohbete katılın

Soru sormak ve yanıtlamak, yararlı gönderileri beğenmek ve sorununuzu çözen yanıtı işaretlemek için oturum açın. Her katkı puan ve seviye kazandırır.

Paylaş