vendredi 29 décembre 2017

Raspberry épisode 29 : Module LDR ou Photorésistance





Le Module est analogique et ne peut marcher que sur une entrée analogique de Arduino. (Le raspberry n'en n'ayant pas).

ou passer par un autre module de convertion analogique/numerique (ADC)
https://leanpub.com/RPiMRE/read

ou passer par un condensateur
https://www.youtube.com/watch?v=dPwW9zmX84E
https://pimylifeup.com/raspberry-pi-light-sensor/
http://www.instructables.com/id/Raspberry-Pi-GPIO-Circuits-Using-an-LDR-Analogue-S/

ou un controlleur Texas Instrument (TI)
http://marcandreuf.blogspot.fr/2015/06/how-to-photoresistor-on-raspberry-pi.html

ou n'avoir qu'un resultat 1 ou 0
https://www.raspberrypi.org/magpi/raspberry-pi-fridge-monitor/

C'est cette dernière solution que j'ai retenu, car mon Raspberry est  dans un placard et je souhaite savoir si le placard est ouvert (et reçoit de la lumière) ou fermé (et ne reçoit rien)

Mes branchements :

sur PI0:
#PIN S :  1 (3.3V)
#PIN centre: 12 (BCM18)
#PIN - : 6 (Masse)

sur PI2
#PIN S :  non branché
#PIN centre: 12 (BCM18)
#PIN - : 6 (Masse)

Étrangement le code qui fonctionne bien avec le Raspberry PI 0 ne fonctionne pas avec le PI2.
en débranchant le PIN S du module tout fonctionne avec le PI2.




Le Code en Python:
J'ai repris le code suivant :
https://www.raspberrypi.org/magpi/raspberry-pi-fridge-monitor/
et l'ai adapté pour moi:

 ldr_num.py:

import time
import RPi.GPIO as GPIO
import urllib2

LIGHT_PIN = 18   # photoresistor pin
EVENT = 'fridge_alert'

# Configure the GPIO pin
GPIO.setmode(GPIO.BCM)
GPIO.setup(LIGHT_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)

if GPIO.input(LIGHT_PIN) == 0:
            # Its light (door open)
    print("ouvert")
#            time.sleep(3)
else:
    print("ferme")
#            time.sleep(3)

GPIO.cleanup()

mon script lancé par CRON: (lance le script Python et recupère en variable l'état du placard

#recupération des information de l'unite photosensible
placard=$(python /home/pi/LDR/ldr_num.py)
 et
#enregistrement dans fichier Log
sudo echo $jour"    "$temperature"    "$humidite"    "$placard";" >> /home/pi/dhtxx/logtemp.txt

#enregistrement inversé dans un fichier ilog
valeur=$(echo $jour"    "$temperature"    "$humidite"    "$placard";")
sudo echo $valeur | cat - /home/pi/dhtxx/ilog.txt > temp && mv temp  /home/pi/dhtxx/ilog.txt

Aucun commentaire:

Enregistrer un commentaire