Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Divers scripts, source code pour Raspberry Pi
#1
Salut,

Un sujet pour parler programmation python et C sur Raspberry :-)

Voici un premier source code permettant d'utiliser un capteur ultrasonique type hc-sr04 pour la mesure de niveau de citerne(eau de pluie dans mon cas).

Schéma de cablage du capteur HC-SR04(disponible en soirée)

Code python

Code :
#!/usr/bin/python

# Importation des lib.

import RPi.GPIO as GPIO
import time

# Mode BCM pour GPIO
GPIO.setmode(GPIO.BCM)

# Paramétrage des broches GPIO à utiliser (au choix)
GPIO_PULSE = 24

GPIO_MESURE = 25

# Paramétrage des GPIO
GPIO.setup(GPIO_PULSE,GPIO.OUT)  # Sortie pour pulse de démarrage mesure

GPIO.setup(GPIO_MESURE,GPIO.IN)  # Entrée du signal de mesure

# Forcage de la sortie pulse à zéro
GPIO.output(GPIO_PULSE, False)

# pause
time.sleep(0.5)

# On génère un pulse en passant à l'état haut la sortie pulse pendant 10µS
GPIO.output(GPIO_PULSE, True)

time.sleep(0.00001)

GPIO.output(GPIO_PULSE, False)

# On va mesurer le temps à l'état haut de l'entrée mesure.
# Le temps à l'état haut est le temps de propagation de l'onde ALLER/RETOUR

debut = time.time() # reset

while GPIO.input(GPIO_MESURE) == 0:
  debut = time.time() # début

while GPIO.input(GPIO_MESURE) == 1:
  fin = time.time() # fin


mesuretemps = fin-debut

# Le son parcours +-340m/s ou 34000cm/s, multiplié par le temps donne la distance

mesuredistancetotale = mesuretemps * 34000

# Dans la var. mesurereelle on trouvera la mesure finale, exploitable pour la visu et log SQL.

mesurereelle = mesuredistancetotale / 2


# fin de mesure, on sort proprement

GPIO.cleanup()

Concrètement comment utiliser ce code ?

Il faut l'intégrer dans votre visu, executer toutes les heures par exemple.. et stocker la valeur de "mesurereelle" dans une base de donnée si vous souhaitez faire des graphiques de conso.

Sauver le code dans un fichier, genre mesureciterne.py


Dans smarthome.py/smartvisu:

- Au préalable il faut déclarer un "item" pour recevoir la valeur de lecture. Par exemple:

Sans envoi sur le bus knx, uniquement dans DB SQlite
Code :
[exterieur]
   [[mesure]]
      [[[citerne]]]
      type = num
      sqlite = yes
Avec envoi sur le bus knx, et log dans DB SQlite(gad à changer selon votre config)

Code :
[exterieur]
   [[mesure]]
      [[[citerne]]]
        type = num
        knx_dpt = 9
        knx_send = 5/1/3
        sqlite = yes


Editer logic.conf (/usr/local/smarthome/etc/logic.conf ou via le partage de fichiers par défaut)

Code :
# /usr/local/smarthome/etc/logic.conf
[Mesureciterne]
    filename = mesureciterne.py
    cycle = 3600

Et dans mesureciterne.py, il faut ajouter la ligne suivante, afin d'assigner la mesure à une variable de smarthome:

Code :
sh.exterieur.mesure.citerne() = mesurereelle
Dans smarthome le "import time" en début de code n'est pas nécéssaire car déjà chargé.

Répondre


Messages dans ce sujet
Divers scripts, source code pour Raspberry Pi - par RemyB - 09/04/2014, 11:59:48

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)