iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

lancer un script apres appui sur un bouton poussoir ?

Sat Aug 12, 2017 5:51 pm

Bonjour , je ne sais pas du tout comment approché la question ...

j ' ai un pi 3 sous raspbian et un script python et un flotteur qui sert donc de BP .

Je voudrais que lorsque le niveau d' eau monte ( le flotteur se releve ) et donc ca execute mon script en python .

Le probleme est que je ne sais pas du tout comment faire pour coder cela sur le pi ni de quelle maniere s ' y prendre pour arriver au resultat attendu .

J ' ai quelques connaissances en bash , python , en PHP Xhtml CSS mysql et en C ++ .

j ' ai vu rapidement une fonction qui parait interressante : add_event_detect .

pourriez vous me donner les indications de base svp ?

Quel langage utiliser pour coder le " truc " :)

une adresse d ' un tutoriel d' apprentissage ?

Des conseils .

merci pour votre temps et votre aide a venir

Cordialement .

totoharibo
Posts: 3145
Joined: Thu Jan 24, 2013 8:43 am

Re: lancer un script apres appui sur un bouton poussoir ?

Sat Aug 12, 2017 7:46 pm

si ton RPi3 ne faits pas grand chose bash suffit et une scrutation permanente de ton entrée marchera très bien.
Après une recherche simple en python :
https://sourceforge.net/p/raspberry-gpi ... ki/Inputs/

rien ne t'empêches suivant la connection avec ton RPi d'envoyer un mail en même temps.

[complètement HS] si ton RPi3 ne fait que cela et que c'est indépendant un Arduino suffit et tu peux développer le programme avec ton RPI3 (ouf, je reviens en charte) [/complètement HS]

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Sat Aug 12, 2017 7:57 pm

le pi est deja present sur place et il a deja d ' autres fonctions , il n ' envoie pas de mail car le script python envoie un SMS que j ' ai logiquement plus rapidement et sans etre inondé ( de mails ) ;)

merci pour les infos je regarde cela de plus pret et vous tiens au jus :roll:.

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Sat Aug 12, 2017 8:21 pm

J ' ai regarder un petit peu , mais il reste des points obscurs ...

Quelle bibliotheque inclure pour un code de ce style ( en esperant que ca ne soit pas que des betises :mrgreen: ) :

Code: Select all

try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script")

GPIO.setmode(GPIO.BOARD) 
  
SMS_INPUT_PIN = 3

GPIO.setup(SMS_INPUT_PIN, GPIO.IN) # , initial=GPIO.HIGH


# wait for up to 5 seconds for a rising edge (timeout is in milliseconds)
channel = GPIO.wait_for_edge(SMS_INPUT_PIN, GPIO.RISING, timeout=5000) # Note that you can detect edges of type GPIO.RISING, GPIO.FALLING or GPIO.BOTH
if channel is None:
    print("nada")
else:
    print('Edge detected on channel', SMS_INPUT_PIN)
    sendSMS()
cela vous semble -t-il correct ?
Last edited by iznobe on Mon Aug 14, 2017 10:22 am, edited 2 times in total.

jelopo
Posts: 1117
Joined: Wed Oct 17, 2012 7:53 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Sun Aug 13, 2017 6:40 am

Bonjour,

Oui, ça semble correct. Qu'est-ce que ça donne si il est lancé sur le PI3 ?

A+

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Sun Aug 13, 2017 7:53 am

Bonjour et merci pour votre soutien .

A priori ca a l ' air de fonctionner , pas d' erreur .

Avec ce code il faut mettre la resistance de 10 K sur le 3.3v ou sur la masse ?

car sans rien branché dessus il envoie le sms ...

jelopo
Posts: 1117
Joined: Wed Oct 17, 2012 7:53 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Sun Aug 13, 2017 3:06 pm

Bonjour,

Dans le code, GPIO.RISING détecte un front montant donc avant détection l'état est bas. Pour détecter ce changement d'état en début d'évènement il faut une résistance de pull-down afin que le port soit à la masse. Et donc le capteur connecté entre le port GPIO et le 3,3V.

A+

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Mon Aug 14, 2017 10:23 am

Bonjour et merci a vous pour cette explication precise ;)

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Thu Aug 17, 2017 10:24 am

Bonjour ,
Voila , ca fait donc 3 jours que je galere avec ce script :( et je recois tout le temps des SMS alors qu il ne devrait pas en envoyer ...

De plus apres l ' envoi d ' un sms il s' arrete , pour qu il soit actif en permanence est ce que code la fait l ' affaire :

sinon comment faire pour que le code reconnaisse que le pin est repassé en LOW et dans ce cas etre pret a renvoyer un SMS ?

Code: Select all

try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script")

GPIO.setmode(GPIO.BOARD)   
SMS_INPUT_PIN = 3
GPIO.setup(SMS_INPUT_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # , initial=GPIO.HIGH

def sendSMS () :
   print(message.sid)
###########################################################
# wait for up to 5 seconds for a rising edge (timeout is in milliseconds)

while 1==1 :
	channel = GPIO.wait_for_edge(SMS_INPUT_PIN, GPIO.RISING, timeout=5000) 
	if channel is None:
		print("nada")
	else :
		print('Edge detected on channel', channel)
		sendSMS ()
Dans mon cas present vaut il mieux utiliser la fonction " wait_for_edge() " ou " add_event_detect() " ?

merci pour vos eclaircissements

ernesto
Posts: 106
Joined: Thu Jul 19, 2012 10:09 am

Re: lancer un script apres appui sur un bouton poussoir ?

Thu Aug 17, 2017 2:22 pm

Code: Select all

 je recois tout le temps des SMS alors qu il ne devrait pas en envoyer ...
la pin 3 n'est pas le meilleur choix car cette pin peut être utilisée pour d'autre fonctions. Il vaudrait mieux prendre une autre pin plus basic par exemple la 7 ..

Je viens de tester ton prog et pour simuler ton flotteur j'ai mis un bouton poussoir ...(lorsque j'appuie sur le BP cela applique 3.3V volt sur la pin SMS_INPUT_PIN)
Cela fonctionne parfaitement .
remarques:
- J'ai utilisé la pin 7 car sur la 3 il y a des parasites. Certainement du au fait que cette pin doit être encore configurée pour I2C ...
- Le timeout=5000 ne me semble pas util ... pas génant.

- Il faudrait rajouter un filtre anti rebond (time.sleep(1)) ( une tempo ) dans la boucle while . Mais je pense que l'appel de ta fonction send_sms doit faire office de tempo.

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Fri Aug 18, 2017 6:25 pm

Bonjour , et merci d' avoir pris le temps de tester .

Chez moi ca ne marche toujours pas :(

j ' ai branché le + 3.3 V sur le pin 1 qui va au relais contacteur piloter par le flotteur puis qui revient sur le pin 7 .

le pin 7 est branché sur la masse ( pin 9 ) , ( si j ' ai bien suivi , le fait de mettre dans le setup PULL_DOWN evite de mettre une resistance ) .

lorsque je lance le script pas d ' erreur , mais lorsque j ' actionne le flotteur rien ne se passe ...

ernesto
Posts: 106
Joined: Thu Jul 19, 2012 10:09 am

Re: lancer un script apres appui sur un bouton poussoir ?

Fri Aug 18, 2017 7:43 pm

iznobe wrote:
Fri Aug 18, 2017 6:25 pm
le pin 7 est branché sur la masse ( pin 9 ) ,
Surtout ne pas brancher la pin 7 à la masse !!! Danger de destruction du RPI

De la pin 1 vers la borne 1 du contacteur puis de la borne 2 du contacteur vers la pin 7. Et c'est tout !

Vérifier que le contacteur se ferme bien lorsque le flotteur est en positon haute.

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Fri Aug 18, 2017 8:43 pm

ernesto wrote:
Fri Aug 18, 2017 7:43 pm
iznobe wrote:
Fri Aug 18, 2017 6:25 pm
le pin 7 est branché sur la masse ( pin 9 ) ,
Surtout ne pas brancher la pin 7 à la masse !!! Danger de destruction du RPI

De la pin 1 vers la borne 1 du contacteur puis de la borne 2 du contacteur vers la pin 7. Et c'est tout !

Vérifier que le contacteur se ferme bien lorsque le flotteur est en positon haute.
Bonsoir et merci de la precision je testerai des que je pourrai
ben y a plein de schema qui dise le contraire sur le net :Image

Dans mon cas present vaut il mieux utiliser la fonction " wait_for_edge() " ou " add_event_detect() " ?

de quelle maniere peut on utiliser GPIO.BOTH ? ( pour faire un retour a la normale et se mettre en position pret a renvoyer un SMS une fois que le niveau d' eau est revenu a son point de depart ) .

Le contacteur se ferme sans soucis car il coupe aussi les pompes et le remplissage des cuves , et cela marche sans aucun probleme depuis deja longtemps .

les risques sont ?

( car quand je mesure le 3.3 V entre la masse et le pin 1 je n ' ai plus rien :evil: )
Last edited by iznobe on Fri Aug 18, 2017 9:48 pm, edited 1 time in total.

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Fri Aug 18, 2017 9:46 pm

J ' ai testé vite fait comme vous avez dit avec le pi 3 chez moi avec le pin 17 en + 3.3 v et le pin 11 en input , mais idem , pas d' erreur mais rien ne se passse :cry:

je precise que j ' ai bien changer le SMS_INPUT_PIN = 11 dans le programme .

j ' ai bien du 3.3v entre le pin 17 et 9 ainsi qu ' entre le pin 17 et 11 ...

aurais je oublier d ' installer ou d ' activer quelquechose sur le pi ?

le pi est mort ?

je commence vraiment a deseperer la ...

ernesto
Posts: 106
Joined: Thu Jul 19, 2012 10:09 am

Re: lancer un script apres appui sur un bouton poussoir ?

Sat Aug 19, 2017 6:57 am

j ' ai branché le + 3.3 V sur le pin 1 qui va au relais contacteur piloter par le flotteur puis qui revient sur le pin 7 .

le pin 7 est branché sur la masse ( pin 9 ) , ( si j ' ai bien suivi , le fait de mettre dans le setup PULL_DOWN evite de mettre une resistance ) .
voila le schéma que vous décrivez:
Image
Dans ce montage on voit que lorsque le contacteur sera fermé le 3.3V sera relié directement au 0V, donc court circuit et gros risque de griller l'alimentation 3.3V.
Voila pourquoi j'ai dit "Danger de destruction du RPI"

1ere étape: vérifier que l'alimentation 3.3 n'est pas grillée, pour cela mesurer avec un multimètre la présence de 3.3V par rapport a la masse sur les pin 1 et 17.
Si pas de 3.3V alors le RPI est "mort".

iznobe
Posts: 14
Joined: Sun Feb 05, 2017 4:14 pm

Re: lancer un script apres appui sur un bouton poussoir ?

Sat Aug 19, 2017 9:01 am

Bonjour ,

oui effectivement le schema correspond a ce que j ' ai decris et ce que j ' ai decris est bien ce que j' ai fait :mrgreen:

Donc , j ' ai grillé une sortie 3.3 v :evil: avec ma betise puisque je n' ai plus de 3.3 v entre le pin 1 et le pin 9 ...

il me reste quand meme le 3.3 v du pin 17 utilisable et fonctionnel .

comme decrit dans mon post precedent , j ' ai testé ce que vous m ' avez indiqué dans votre post precedent , mais sans resultat .

A savoir , j ' ai choisi le pin 11 en input dans mon prog , et me suis servi du pin 17 pour le contact du + .

j ' ai mis les 2 fils en contact apres avoir lancé le script python , et il reste en attente permanente d ' un changement d' etat . par acquis de conscience , j ' ai mis un coup de voltmetre : 3.04 v .

j ' ai testé les 2 fonctions idem .

je n ' y comprends rien .

j ' ai meme lancé un script basique pour verifier l ' etat du pin 11 une fois connecté au pin 17 donc avec 3.3v , il me renvoi un etat bas dont voici le code :

Code: Select all

try:
    import RPi.GPIO as GPIO
except RuntimeError:
    print("Error importing RPi.GPIO!  This is probably because you need superuser privileges.  You can achieve this by using 'sudo' to run your script")

GPIO.setmode(GPIO.BOARD)
SMS_INPUT_PIN = 11
GPIO.setup( SMS_INPUT_PIN, GPIO.IN, pull_up_down=GPIO.PUD_DOWN )
TIMEOUT=1000

def verification() :
	if GPIO.input(SMS_INPUT_PIN):
		print('Input was HIGH')
	else:
		print('Input was LOW')

verification()

ernesto
Posts: 106
Joined: Thu Jul 19, 2012 10:09 am

Re: lancer un script apres appui sur un bouton poussoir ?

Sat Aug 19, 2017 2:01 pm

Les pin 1 et 17 sont reliées entre elles par des pistes du circuit imprimé ... Si vous ne trouvez pas la même tension sur 1 et 17 (3.3V) c'est que les pistes qui les relies sont coupées ou grillées. Certainement il y a plus de dégâts car la lecture des GPIO donne toujours 0.
A mon avis le hardware qui gère les GPIO est HS. Vous pouvez toutefois continuez à l'utiliser si vous n'avez pas besoin des gpio ...

Si vous ne connaissez pas: voila l’outil qu'il est conseillé d'utiliser pour tester les GPIO : WIRINGPI
- installer wiringpi (apt-get install wiringpi)
- en ligne de commande taper : gpio readall
- vous aurez alors ce joli tableau qui vous donne l’état de toutes les gpio. Plus de doc ici
Image

A l'avenir voila le schéma que je vous conseille:
Image
La résistance R1 n'est pas obligatoire mais c'est une précaution au cas ou, par inadvertance le gpio 7 soit en mode output.
Puis par soft il faudra configurer une résistance de pull-UP sur le gpio 7.
Pour le soft il faudra être sur de ce qui se passe sur le contacteur: Le contacteur s'ouvre t-il ou se ferme t-il lorsque la cuve est pleine ?
si le contacteur s'ouvre alors -> GPIO.wait_for_edge(SMS_INPUT_PIN, GPIO.RISING)
si le contacteur se ferme alors -> GPIO.wait_for_edge(SMS_INPUT_PIN, GPIO.FALLING)

Bon courage ...

Return to “Français”

Who is online

Users browsing this forum: No registered users and 9 guests