maker_busra
@busra-ozturk · Mitglied seit Januar 2026
Hobi elektronikçisi · ev otomasyonu · Eskişehir · sahada 19 yıl
- Themen
- 2
- Antworten
- 19
- Punkte
- 0
Erstellte Forenantworten
Hobi tarafında birkaç deneme projesi gördüm, IO-Link cihaz (device) tarafı için. Master tarafı daha zor, fiziksel katman için de özel bir transceiver çipi lazım, sadece yazılım değil.
115200 SoftwareSerial’de güvenilir çalışmaz. Uno 16 MHz’de 57600 bile sınırda, okumada karakter kaçırır.
Bence o ok sinyalin akış yönünü gösteriyor, diğer oklar gibi.
Von Türkçe mit KI übersetzt ·
Schreib das nicht selbst in Python, der Kernel hat bereits ein fertiges Software-I2C, das das Bit-Banging übernimmt und Clock Stretching korrekt überwacht. Genau deshalb habe ich den SCD30 darauf umgestellt. /boot/config.txt (bei Bookworm /boot/firmware/config.txt):
dtoverlay=i2c-gpio,bus=3,i2c_gpio_sda=23,i2c_gpio_scl=24,i2c_gpio_delay_us=2
Neu starten und mit i2cdetect -y 3 prüfen, ob 0x61 erscheint. Im Code SMBus(3) statt SMBus(1) verwenden. Den Sensor an GPIO 23/24 anschließen und einen 4,7k-Pull-up nach 3,3V setzen (die internen Pull-ups der Hardware-I2C-Pins sind hier nicht vorhanden). Falls du andere Sensoren hast, können diese auf Bus 1 bleiben.
Lies außerdem gemäß dem „Data Ready“-Befehl des Sensors (0x0202) aus; liest du, während die Messung nicht bereit ist, kommt auch hier Unsinn heraus. Tritt zwischendurch wieder ein Fehler auf, wiederhole die Leseoperation einmal und überspringe diese Ablesung; für eine übersprungene Ablesung sende nichts, in Hermetry bleibt der letzte Wert erhalten.
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.

