Neu: Die KI-Firewall überwacht die gesamte Plattform und erklärt jeden Vorfall in einfachen Worten. So funktioniert es

JSN-SR04T wasserdichter Ultraschallsensor an einem Pi 3 liefert für unseren Wasserspeicher im Wohnheim 0 cm oder Timeouts

JSN-SR04T wasserdichter Ultraschallsensor an einem Pi 3 liefert für unseren Wasserspeicher im Wohnheim 0 cm oder Timeouts

Gelöst 9 7

Von English mit KI übersetzt ·

Hallo zusammen, Student, mein erstes richtiges Projekt. Der Wasserspeicher auf dem Dach unseres Wohnheims läuft alle paar Tage leer, und die Heimleitung wünscht sich eine Warnung. Ich habe einen Raspberry Pi 3 auf dem Dach (in einer Box) und einen wasserdichten Ultraschallsensor JSN-SR04T v2.0, der von oben in den Tank zeigt.Ich habe den Standard-Python-Code für den HC-SR04 mit RPi.GPIO verwendet: 10 us Trigger, dann While-Schleifen, die auf Echo high und low warten. Das Echo läuft über einen 1k/2k-Spannungsteiler. Ergebnisse: etwa die Hälfte der Messwerte ist 0.0 cm, der Rest sind Timeouts, sehr selten ein echter Wert wie 87 cm. Mit einem HC-SR04 auf dem Labortisch funktioniert derselbe Code einwandfrei.

dist: 0.0
dist: timeout
dist: timeout
dist: 87.4
dist: 0.0

Sobald es funktioniert, möchte ich den Füllstand an Hermetry senden und bei niedrigem Stand einen Alarm erhalten.

♥ 0

Von English mit KI übersetzt ·

Teiler am Echo, gut. Wie weit ist der Sensor vom Wasser entfernt, wenn der Tank voll ist?

Ground loops are my cardio.
♥ 0

Von English mit KI übersetzt ·

Der Tank ist jetzt voll, vielleicht 15-20 cm?

♥ 0

Von English mit KI übersetzt ·

Welche Platinenversion ist auf Ihrer aufgedruckt? Die v2 und v3 verhalten sich unterschiedlich.

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

Von English mit KI übersetzt ·

Auf der Rückseite steht JSN-SR04T-2.0.

♥ 0

Von English mit KI übersetzt ·

Vielleicht zwischen den Messungen ein time.sleep(0.5) einfügen? Ich habe gelesen, dass sie Zeit brauchen, um sich einzupendeln.

Measure twice, poll once.
♥ 0

My pool sensor did weird stuff when there was condensation on the face, worth wiping it.

♥ 0

The JSN has a blind zone of roughly 20-25 cm. Anything closer and it either returns nonsense or nothing. HC-SR04 goes down to 2 cm, that’s why the bench test lies to you.

Modbus is just registers until it isn't.
♥ 0

Jessica nailed the main issue: at 15-20 cm you’re inside the blind zone. Mount it higher, a short PVC pipe section as a stand-off works, so full tank is at least 30 cm away.

Second issue is the Python timing. Busy-wait loops on a Pi 3 miss edges whenever the scheduler steps in. Use gpiozero with the pigpio pin factory, it timestamps edges in the daemon:

from gpiozero import DistanceSensor
from gpiozero.pins.pigpio import PiGPIOFactory
import statistics, time

s = DistanceSensor(echo=24, trigger=23, max_distance=4.5,
                   pin_factory=PiGPIOFactory())

def level_cm():
    vals = []
    for _ in range(7):
        vals.append(s.distance * 100); time.sleep(0.1)
    return statistics.median(vals)

Median of 7 throws away the odd echo off the tank wall. Then send {"distance_cm": d, "level_pct": ...} as numbers and put an alarm rule on level_pct below 20 with a debounce of 3 readings, so one bad echo doesn’t wake the warden.

Akzeptierte Lösung♥ 3

Raised it on a 20 cm pipe piece and switched to your gpiozero code. Now steady readings, 43-45 cm when full, no zeros. Alarm rule is set at level_pct < 20 with 3 readings. Warden got his first real warning yesterday at 6 am.

♥ 1
Ansicht von 10 Beiträgen – 1 bis 10 (von insgesamt 10)
  • Du musst angemeldet sein, um auf dieses Thema antworten zu können.

Mitdiskutieren

Melde dich an, um Fragen zu stellen und zu beantworten, hilfreiche Beiträge mit „Gefällt mir“ zu markieren und die Antwort zu kennzeichnen, die dein Problem gelöst hat. Jeder Beitrag bringt Punkte und Stufen.

Teilen