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

Pi 4'te BME280 ve bir ışık sensörü varken i2cdetect boş bir tablo gösteriyor

Pi 4'te BME280 ve bir ışık sensörü varken i2cdetect boş bir tablo gösteriyor

Çözüldü 6 4

Yapay zekâ tarafından English dilinden çevrildi ·

Tamam, bu benim laboratuvar ortam izleme projem için (2. sınıf projesi). Pi 4, Raspberry Pi OS Bookworm, bir BME280 breakout ve bir VEML7700 lux breakout; ikisi de kendi regülatörleri olan Adafruit tarzı kartlar. Plan, Pi üzerinde Python ile ikisini de 30 saniyede bir okuyup Hermetry’ye yayınlamak. Hermetry tarafı zaten çalışıyor, sahte bir değerle test ettim ve kartımda görünüyor.Sensörler çalışmıyor. raspi-config’te I2C’yi etkinleştirdim, yeniden başlattım ve:

$ i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:                         -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
...
70: -- -- -- -- -- -- -- --

Bağlantı: VIN pin 1’e (3.3 V), GND pin 6’ya, SDA GPIO 3’e, SCL GPIO 5’e. İkisi de breadboard üzerinde zincirleme bağlı. Jumper kabloları zaten değiştirdim. İki sensörün de bozuk olması mümkün mü? Fena sayılmayacak kadar ucuzdular.

Timestamps in UTC or it didn't happen.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Neden bus 0 değil de bus 1? Bu komutlarla ilgili bunu hep merak etmişimdir

Timestamps in UTC or it didn't happen.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Bus 0, 27/28 numaralı pinlerdeki HAT ID EEPROM için ayrılmıştır. Bus 1 kullanıcıya aittir. Aoife, “GPIO 3” dediğinde fiziksel pin 3’ü mü yoksa BCM GPIO 3’ü mü kastediyorsun?

♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

…Breakout kablomun üzerinde yazan numaralara göre ilerledim; bunların GPIO numaraları olduğunu düşünüyorum. Yani GPIO3 ve GPIO5?

Timestamps in UTC or it didn't happen.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Sorun tam olarak bu, ilk kurulumumda da aynı şeyi yapmıştım. I2C pinleri fiziksel pin 3 (BCM GPIO2, SDA) ve fiziksel pin 5 (BCM GPIO3, SCL). Sen SDA’yı aslında SCL olan GPIO3’e, SCL’yi ise fiziksel pin 29 olan ve hiç I2C olmayan GPIO5’e bağlamışsın. Bu yüzden veriyolunda yanıt veren bir cihaz yok ve boş tablo görüyorsun. Sensörlerin büyük ihtimalle sağlam.SDA’yı fiziksel pin 3’e, SCL’yi fiziksel pin 5’e taşı; o zaman BME280 için 0x77 (ya da SDO jumper’ına bağlı olarak 0x76) ve VEML7700 için 0x10 görmelisin. Pi’nin bu iki pinde zaten 1.8 kΩ pull-up dirençleri var ve breakout kartları da kendi dirençlerini ekliyor, o yüzden fazlasını ekleme.Okuma ve gönderme kısmı da kısa. Ben Adafruit CircuitPython sürücülerini ve paho’yu kullanıyorum:

import json, time, board, adafruit_bme280.basic as bme, adafruit_veml7700
import paho.mqtt.client as mqtt

i2c = board.I2C()
env = bme.Adafruit_BME280_I2C(i2c, address=0x77)
lux = adafruit_veml7700.VEML7700(i2c)

c = mqtt.Client(client_id="lab-env-01")
c.username_pw_set(TOKEN)              # token as username, no password
c.tls_set()
c.connect(BROKER_HOST, 8883, 60)
c.loop_start()
while True:
    msg = {"temp_c": round(env.temperature, 2), "rh": round(env.humidity, 1),
           "pressure_hpa": round(env.pressure, 1), "lux": round(lux.lux, 1)}
    c.publish("v1/telemetry", json.dumps(msg), qos=1)
    time.sleep(30)

Düz bir nesne, bu yüzden Hermetry 30 saniyelik okumalar için alındığı zamanı damgalar, bu yeterli. Zaman damgası eklemek istersen payload kuralları burada: MQTT topics and payload reference.

QoS 1 and a lot of patience.
Kabul edilen çözüm♥ 4

Yapay zekâ tarafından English dilinden çevrildi ·

Evet, sorun buymuş 🤦 İki kabloyu yer değiştirdim ve her iki adres de gögöründü (0x10 ve 0x77). Betik ilk denemede çalıştı ve artık dört tuş kartımda. Öğrendiğim ders: fiziksel pin numaraları ile GPIO numaraları aynı şey değilmiş

Timestamps in UTC or it didn't happen.
♥ 0

Yapay zekâ tarafından English dilinden çevrildi ·

Bus 0 açıklaman için teşekkürler Lee, şimdi mantığını anladım

Timestamps in UTC or it didn't happen.
♥ 0
7 yazı görüntüleniyor – 1 ile 7 arası (toplam 7)
  • 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ş