IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Capteur de lumière: mesure pour faible intensité


Sujet :

Raspberry Pi

  1. #21
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Par défaut
    Citation Envoyé par boijea Voir le message

    Le point cependant essentiel: tous mes circuits sur breadboards, modifiés ou nouveaux, sont testés en Python.

    A+
    J'ai repris mon script Python ce matin, afin qu'il soit présentable (voir la pièce jointe). C'est pratiquement le même que j'avais au début, sans l'arrêt dans le comptage (level_limit).

    Le titre de cette discussion était "Capteur de lumière: mesure pour faible intensité". En fait c'est plus de déterminer un certain niveau de lumière pour en faire quelque chose et en utilisant une photorésistance sans convertisseur analogique/numérique (voir "La conversion analogique-numérique avec Raspberry Pi").

    Il suffit ensuite de modifier:

    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #Définition du pin sur la broche 13
    pin_to_circuit = 13
    level_limit = 800
    nbloop = 10
    nbignore = 2

    Il faudra sans doute changer d'abord les deux premières.
    Ici nous aurons 10 lectures et les 2 premières et dernières valeurs triées seront ignorées.

    Nous pourrons ensuite couvrir avec un chapeau noir notre circuit, mettre level_limit très très grand, aller nous préparer un ou deux cafés et nous convaincre qu'une réaction si lente serait inutilisable avec un capteur de mouvement. Donc level_limit doit être ajusté.

    La suite sera sans doute de retirer tous les prints (sauf le dernier) de notre script copié dans un autre nom et d'y introduire sans doutes des paramètres d'entrées ou alors de passer, pour moi, à une implémentation dans un autre langage pour une intégration dans une vraie application.

    Si on se réfère à la solution analogique-numérique indiquée ci-dessus, il ne faudra ici qu'une photo-résistance (bien choisi laquelle) et un condensateur.
    C'est évidemment meilleur marché et beaucoup plus simple pour les maker débutants.
    Si nous désirons convertir cette valeur en Lux, il faudra faire une calibration correcte et considérer que les valeurs à basse lumière sont inutilisables.
    Dans le cas de mon application, je définis level_limit 30% plus grand pour avoir une certaine marge de flexibilité (je termine la calibration fine avec la valeur retournée par mon serveur Web).

    Je montre ici quelques lignes qui viennent de mon serveur Web:


    (out) Mvt for at: Tue Aug 13 09:28:33 CEST 2019
    Relay is OFF from 130 minutes 8 secs

    On/Off/Mvt: 310 50 92 secs
    Light limit and value: 2100 797
    Temperature: 20.8 degrees
    La lumière actuelle ce matin à presque 10:00 est de 797.
    Le 2100 sera vite atteint si on a de gros nuages et en fin de journée.

    Il y a eu un mouvement à 9:28 mais la lumière était suffisante. Le relais ne s'est pas enclenché pour 92 secs.
    Le relais est OFF depuis plus de deux heures (soit un mouvement à basse lumière, soit ma période du matin de simulation de présence)
    Les 310 et 50 sont les périodes en secondes de l'enclenchement et déclenchement de mon luminaire pour simuler une présence.
    Ces deux valeurs sont soumises à une variation légèrement aléatoire.

    Si je veux changer le 2100, par exemple, pas de re-compilation. C'est dans un fichier de configuration.

    Oui, 20.8 degrés, c'est frais: on a ouvert toutes les fenêtres ce matin! Logique cet été.

    Je m'amuse bien!
    Fichiers attachés Fichiers attachés

  2. #22
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Novembre 2006
    Messages
    503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Transports

    Informations forums :
    Inscription : Novembre 2006
    Messages : 503
    Par défaut
    Citation Envoyé par boijea Voir le message
    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    def rc_time (pin_to_circuit):
        count = 0
     
        #Configuration en sortie
        GPIO.setup(pin_to_circuit, GPIO.OUT)
        GPIO.output(pin_to_circuit, GPIO.LOW)
        time.sleep(0.1)  #pause de charge
     
        #Configuration en entrée
        GPIO.setup(pin_to_circuit, GPIO.IN)
     
        #Comptage
        while (GPIO.input(pin_to_circuit) == GPIO.LOW):
            count += 1
     
        return count
    Bonjour,
    Je ferme la discussion, car cela marche bien pour moi et j'ai repassé à mes ESP32.
    On reprendra le diagram Fritzing ci-dessus pour comprendre le code.
    Voici encore une fois la conclusion.

    A basse lumière count deviendra très très grand et cela peut vite prendre une bonne minute!
    Il faut donc faire des essais et déterminer à quel moment il faut sortir de la boucle while.

    Dans mon cas cela se passe bien, et c'est vers la seconde.
    J'arrive donc à détecter un mouvement avec mon capteur PIR sans mettre le code ci-dessus dans un thread.

    Merci encore aux électroniciens plein de ressources "schématiques".
    A+ ici ou dans un autre groupe comme l'Arduino (ESP) par exemple.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. quoi mesurer pour la performance des applications web
    Par mannou1982 dans le forum Performance Web
    Réponses: 3
    Dernier message: 21/07/2012, 16h28
  2. afficher une mesure pour l'année n et année n-1
    Par alaabed dans le forum Cognos
    Réponses: 2
    Dernier message: 25/11/2010, 09h39
  3. Réponses: 12
    Dernier message: 05/11/2010, 17h58
  4. Utiliser un fichier de mesures pour asservir un moteur
    Par timay83 dans le forum LabVIEW
    Réponses: 0
    Dernier message: 14/06/2010, 16h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo