Comment déterminer en interrogeant le GPIO si mon hat GSM est on ou off?

hello,

j"ai un hat GSM que je démarre et éteint avec ce programme python:

#!/usr/bin/python

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
while True:
. GPIO.output(7, GPIO.LOW)
. time.sleep(4)
. GPIO.output(7, GPIO.HIGH)
. break
GPIO.cleanup()

comment savoir s’il est actif ou inactif par un programme python ?

merci :wink:

Bonjour,

Avec GPIO.input ?
exemple :

A+

merci pour la réponse :wink:

alors j’ai testé la valeur du channel 7 et il est toujours à 1 ( high si j’ai bien compris )
import RPi.GPIO as GPIO
pin = 7
GPIO.setmode(GPIO.BOARD)
GPIO.setup(pin, GPIO.OUT)
if GPIO.input(pin):
. print "GSM On "
. print GPIO.input(pin)
else:
. print « GSM Off »
. print GPIO.input(pin)
GPIO.cleanup()

ce qui est assez cohérent avec le programme qui sert a allumé et éteindre puisqu apparement après l’avoir mis à zéro il le met à 1 …
mon idée c’est donc de faire des input sur les 40 broches a l’arrêt et en marche et voir si il y a des différences qui me permettrais de repérer l’état !
je suppose que je peux interroger toutes les broches sans problème ?

arghhhh

en essayant d’interroger le GPIO je tombe sur le problème suivant :
. je demande avec GPIO.gpio_function(pin) le status du setup des ports (input, output ) il me les donne…
. je voudrais connaitre ensuite l’état de ces ports ( 0 ou 1 )
mais là ça bloque quand je fais un GPIO.input(pin) il me demande d’initialiser le status du port qu il vient de me donner …
Help !

j’imagine que c’est pas la peine de préciser que je suis un gros noob ds la gestion du GPIO lol

Salut bof,
Quand tu fais un gpio readall dans le terminal la tu vois bien l’état ?
A plus
JC

Hey,
Tu peux nous donner le code complet ? J’ai un doute avec tes arguments finaux :no_mouth:

oui super c’est ce que j’essayais de faire par programme !
par contre que je fasse le gpio readall avant ou aprés avoir démarrer mon HAT c’est le même résultat.
en fait ce que je crois comprendre c’est que le programme python de démarrage (ds le premier post )
coupe et remet le « courant » sur le pin 7 ce qui doit changer sur le hat la position de l’interrupteur marche/arret du HAT.
donc au final je ne peux pas savoir en interrogeant le GPIO si le HAT est on ou off …
me goures je ? :wink:

Par les commandes AT répond ou pas ?
Comme il est sur le port série !:pleading_face:

#!/usr/bin/python
import RPi.GPIO as GPIO

def getPinFunctionName(pin):
functions = {GPIO.IN:‹ Input ›,
. GPIO.OUT:‹ Output ›,
. GPIO.I2C:‹ I2C ›,
. GPIO.SPI:‹ SPI ›,
. GPIO.HARD_PWM:‹ HARD_PWM ›,
. GPIO.SERIAL:‹ Serial ›,
. GPIO.UNKNOWN:‹ Unknown ›}

return functions[GPIO.gpio_function(pin)]

gpio = (3,5,7,8,10,11,12,13,15,16,18,19,21,22,23,24,26,29,31,32,33,35,36,37,38,40)

GPIO.setmode(GPIO.BOARD)
for pin in gpio:
. try:
… if getPinFunctionName(pin) == ‹ Input ›:
… print(« GPIO %s is an %s etat %s » % (pin,getPinFunctionName(pin),GPIO.input(pin)))
… else:
… print(« GPIO %s is an %s » % (pin,getPinFunctionName(pin)))
. except ValueError:
… pass

et a l’exécution il me dit :
RuntimeError: You must setup() the GPIO channel first
et si je ne fais pas le GPIO.input() il me donne bien le status (input ou output ou unknown)

existe t il une autre fonction qui me permettrais d’avoir l’état du pin ( 0, 1) sans redéfinir le status à la valeur que récupère GPIO.gpio_function() à part passer par un GPIO read ? ( le help(GPIO) n’est pas très bavard ! )

oui ça marche c’est une autre solution mais comme j’utilise un programme python pour le démarrer je me suis dit que je pourrais en profiter pour comprendre un peu comment fonctionne le GPIO … :wink:
j’espèrais trouver une pin qui aurait changer d’état …

Donc si je comprends bien la pine 7 sert de commande pour mettre en service le HAT , il est branché sur la pine 2 +5v et est piloté par la 7 pour valider la mise en service ,
c’est juste une commande furtive ou un 1 plus permanent ?
Pour l’arrêt qu’elle est la pine ?
La même ou la pine 11 ?
Quand tu le fais fonctionner sans python tu le fais démarrer comment ?
Autrement très bon projet :slightly_smiling_face:

A plus

JC

en fait j’acheté ce hat :
https://www.waveshare.com/gsm-gprs-gnss-hat.htm
que je peux démarrer aussi en appuyant 3 secondes sur un bouton situé dessus.
le script python qui l’allumer sert aussi à l’éteindre donc ça ne doit passer que par le pin 7.
J’ai trouvé ici le schéma du HAT ( https://www.waveshare.com/w/upload/2/20/GSM-GPRS-GNSS-HAT-Schematic_.pdf) moi je n’y comprend rien mais peut être ça répondra à ta question sur l-utilisation des pins.
Ceci dit pour l’instant je vais utiliser la solution d’utiliser une commande AT …

merci de ton aide :wink:

Bonjour @Bof,
J’ai regardé ton schéma, il y a que des plus ou moins permanent , et la fameuse P4, donc si tu l’utilise en commande gpio classique et que la force en niveau zéro que fait l’interface ?
Autre question , tu n’avais pas un hat officiel ?ou c’est celui-ci ?.
Autrement il est bien garni il y a plein d’options …

Bon courage :slightly_smiling_face:

Bonjour,

Pour une fois on trouve une doc assez complète (32 pages) sur le site waveshare. Je pense que c’est une bonne source pour commencer à utiliser les commandes AT. Regarder plus précisément la dernière partie « DEMO CODE (RASPBERRY PI) »

A+

j’ai modifier le script de démarrage/arret du HAT en n’envoyant que :
GPIO.output(7, GPIO.LOW)

et que le HAT soit allumer ou éteint les gpio readall envoie exactement le même résultat et les leds qui m’indique l’état du hat ne changent pas ( une led fixe dés que le Rpi est sous tension (noter PWR) une autre (STA) lorsqu’il est en fonction et ds ce cas une autre (NET) qui clignote.( rapidement si je ne saisie pas le code pin et toutes les 3 secondes dès que je lui donne le code pin ( le réseau est alors connecté ).
A noter lorsque le HAT est démarrer et après lui avoir envoyer GPIO.output(7, GPIO.LOW) les commandes AT fonctionnent toujours !

le HAT fonctionne très bien j’ai même réussi a envoyer des MMS ,a me connecter a internet et a utiliser le GPS mais c’est vrai que c’est un peu frustrant de pas pouvoir l’utiliser d’une autre manière que par les commandes AT …

sur le site du fabricant chinois de la puce j’ai aussi trouvé plein de docs :
https://simcom.ee/documents/?dir=SIM868
parfois un peu trop technique pour moi mais qui m’ont quant même permis de bidouiller quelques programme python surtout celle la : SIM800 Series_AT Command Manual_V1.10.pdf
comme ce sont des commandes hayes certaines sont peut être utilisables sur d’autres périphériques GSM moins documentés!

Alors

Ton chapeau ?
Question, côté internet le débit ?
Tu ne dois avoir que du 2G ! GPRS…

A plus

oui clair c’est pas de la 4G… :wink: ( GSM et GPRS autour de 100 Kbits/s) mais bon il m’a couté le prix de trois paquets de clopes et pour envoyer/recevoir des sms et des « petits » MMS ça suffit !
il m’aura aussi appris qu’avant d’acheter une autre clé plus moderne, je commencerai par chercher si on trouve des docs dessus !
Si j’arrive a refaire fonctionner mon vieux modem rtc j’essaierai aussi, pour tester, de créer une liaison avec PPP entre un PC et un raspberry.

bref clairement obsolète mais avec quant même un intérêt didactique lol

Oui le coup du modem rtc c’est bien, mais quand j’avais essayé , pour faire décrocher le distant modem GSM , j’ai jamais réussi !!!
Mais c’est très bien et je suis sur que tu vas y arriver :smiley:.
Mais pour du SSH c’est sympa …