Novedad: el cortafuegos de IA supervisa toda la plataforma y explica cada incidente con palabras sencillas. Vea cómo funciona

La Pi 4 marca 52 grados, que es la CPU. ¿Cómo leo la temperatura de la habitación y la envío?

La Pi 4 marca 52 grados, que es la CPU. ¿Cómo leo la temperatura de la habitación y la envío?

Resuelto 7 6

Traducido del English por IA ·

Soy un principiante total con la parte de la Pi. Quiero que mi Raspberry Pi 4 mida la temperatura de mi taller del sótano y la envíe a Hermetry cada minuto. Seguí un tutorial que usaba vcgencmd measure_temp y la parte de envío funcionó con paho, el número aparece en mi panel. Pero marca 52 grados y mi sótano definitivamente no está a 52 grados.Así que compré un DS18B20 (el impermeable con cable). Rojo a 5V, negro a GND, amarillo a GPIO4. No aparece nada en /sys/bus/w1/devices/, solo w1_bus_master1 o a veces ni eso. He visto que la gente menciona una resistencia, pero el kit no traía ninguna.

♥ 1

Traducido del English por IA ·

¿No tiene ya la Pi su propio sensor de temperatura? Eso es lo que lee vcgencmd, creo.

♥ 1

Traducido del English por IA ·

Sí, pero es la temperatura del chip de la CPU, por eso marca 52. Dentro de la caja nunca será la temperatura ambiente.

♥ 0

Traducido del English por IA ·

¿Habilitaste 1-Wire en raspi-config? Y la resistencia no es opcional, 4.7k entre datos y alimentación.

♥ 2

Traducido del English por IA ·

Además, no le des 5V. La línea de datos se eleva hasta la tensión con la que lo alimentes, y los pines GPIO de la Pi solo soportan 3.3V.

♥ 1

Traducido del English por IA ·

Me pasó lo mismo en primer año, la sonda funcionó después, pero tuve suerte. Lista de verificación completa:Cableado: rojo a 3V3 (pin 1), negro a GND (pin 6), amarillo a GPIO4 (pin 7), y una resistencia de 4,7k entre el amarillo y 3V3. Añade dtoverlay=w1-gpio a /boot/firmware/config.txt (o /boot/config.txt en imágenes antiguas) y reinicia. Deberías ver una carpeta 28-xxxxxxxxxxxx.Luego el script, con el mismo código paho que ya tienes:

import glob, json, time
import paho.mqtt.client as mqtt

dev = glob.glob('/sys/bus/w1/devices/28-*/w1_slave')[0]
def read_c():
    lines = open(dev).read().splitlines()
    if not lines[0].endswith('YES'):
        return None                      # CRC failed, skip this one
    return int(lines[1].split('t=')[1]) / 1000.0

c = mqtt.Client(mqtt.CallbackAPIVersion.VERSION2, client_id="basement-pi")
c.username_pw_set("YOUR_ACCESS_TOKEN")    # token as username, no password
c.tls_set()
c.connect("YOUR_BROKER_HOST", 8883, keepalive=60)
c.loop_start()
while True:
    t = read_c()
    if t is not None:
        c.publish("v1/telemetry", json.dumps({"temp_c": round(t, 2)}), qos=1)
    time.sleep(60)

Usa un nombre de clave nuevo como temp_c para que las lecturas de la CPU no se mezclen en el mismo gráfico. El host del broker está en la tarjeta Connection details del dispositivo.

Timestamps in UTC or it didn't happen.
Solución aceptada♥ 8

Traducido del English por IA ·

Conseguí una resistencia de un amigo, moví el cable rojo a 3V3, activé el overlay y apareció la carpeta 28-. La sonda sobrevivió al 5V. El sótano marca 17,8, lo cual parece correcto. Mantuve la de la CPU como una clave separada, podría ser útil.

♥ 1

Traducido del English por IA ·

Si alguna vez tiendes el cable a más de unos pocos metros y las lecturas empiezan a fallar, baja la resistencia a 2,2k.

♥ 0
Viendo 8 entradas – de la 1 a la 8 (de un total de 8)
  • Debes estar registrado para responder a este debate.

Únete a la conversación

Inicia sesión para preguntar y responder, dar me gusta a las publicaciones útiles y marcar la respuesta que resolvió tu problema. Cada aportación suma puntos y niveles.

Compartir