Nouveau : le pare-feu IA surveille toute la plateforme et explique chaque incident en termes simples. Découvrez comment ça marche

Le capteur ultrasonique étanche JSN-SR04T sur un Pi 3 donne 0 cm ou des timeouts pour le réservoir d'eau de notre résidence

Le capteur ultrasonique étanche JSN-SR04T sur un Pi 3 donne 0 cm ou des timeouts pour le réservoir d'eau de notre résidence

Résolu 9 7

Traduit de English par IA ·

Bonjour à tous, étudiant, mon premier vrai projet. Le réservoir d’eau en hauteur de notre résidence universitaire se vide tous les quelques jours et le responsable veut une alerte. J’ai un Raspberry Pi 3 sur le toit (dans un boîtier) et un capteur ultrasonique étanche JSN-SR04T v2.0 qui regarde vers le bas, dans le réservoir.J’ai utilisé le code Python standard du HC-SR04 avec RPi.GPIO : déclencheur de 10 us, puis des boucles while qui attendent que l’écho passe à l’état haut puis bas. L’écho passe par un diviseur 1k/2k. Résultats : environ la moitié des mesures donnent 0.0 cm, le reste sont des timeouts, et très rarement une vraie valeur comme 87 cm. Avec un HC-SR04 sur la paillasse, le même code fonctionne parfaitement.

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

Une fois que ça marche, je veux envoyer le niveau à Hermetry et recevoir une alarme quand il est bas.

♥ 0

Traduit de English par IA ·

Diviseur sur l’écho, c’est bien. À quelle distance se trouve le capteur de l’eau lorsque le réservoir est plein ?

Ground loops are my cardio.
♥ 0

Traduit de English par IA ·

Le réservoir est plein maintenant, peut-être 15-20 cm ?

♥ 0

Traduit de English par IA ·

Quelle version de carte est imprimée sur la vôtre ? Les versions v2 et v3 ne se comportent pas de la même façon.

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

Traduit de English par IA ·

Il est écrit JSN-SR04T-2.0 au dos.

♥ 0

Traduit de English par IA ·

Peut-être ajouter un time.sleep(0.5) entre les lectures ? J’ai lu qu’ils ont besoin de temps pour se stabiliser.

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.

Solution acceptée♥ 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
10 sujets de 1 à 10 (sur un total de 10)
  • Vous devez être connecté pour répondre à ce sujet.

Rejoignez la discussion

Connectez-vous pour poser et répondre à des questions, aimer les messages utiles et marquer la réponse qui a résolu votre problème. Chaque contribution rapporte des points et des niveaux.

Partager