Dans ce guide, nous allons vous montrer comment envoyer un SMS à l’aide d’un bouton connecté aux broches GPIO d’un Rasberry Pi Zero.
Pour ce guide, le modem GSM que nous utilisons pour envoyer le SMS est le BerryGPS-GSM.
Côté logiciel, nous utiliserons Gammu, qui est spécialement conçu pour contrôler les téléphones et les modules GSM.
Python sera utilisé pour surveiller certains boutons connectés aux broches GPIO et les liaisons python Gammu seront utilisées pour envoyer un SMS.
Les boutons sont utilisés ici à titre d’exemple, mais vous pouvez utiliser n’importe quoi pour déclencher le SMS, par exemple un capteur de température, un capteur de niveau d’eau, un capteur de lumière, etc.
Nous avons inclus des LED afin que nous puissions voir quand les boutons sont enfoncés.
Nous utiliserons les trois broches GPIO en bas à droite sur l’en-tête Raspberry Pi. Ce sont les GPIO 16, 20 et 21.
Chacun est connecté à un bouton et à une LED de couleur différente comme indiqué ci-dessus. Les résistances pull-down internes seront utilisées sur ces GPIO.
3.3v et GND sont connectés aux rails d’alimentation de la planche à pain.
Les résistances utilisées sont de 330 Ohm et la broche GND (broche la plus courte) des LED est connectée au rail d’alimentation GND.
Installer
Installez les liaisons Gammu et Python ;
pi@raspberrypi ~ $ sudo apt-get mise à jour
pi@raspberrypi ~ $ sudo apt-get install gammu-smsd python-gammu
Modifiez le fichier de configuration ;
pi@raspberrypi ~ $ sudo nano /etc/gammu-smsdrc
Trouvez les lignes ci-dessous et ajoutez le port et la vitesse.
Pour le BerryGPS-GSM, utilisez /dev/ttyACM1 pour le port et at115200 pour la vitesse
port = /dev/ttyACM1 connection = at115200
Nous allons faire un test rapide. Redémarrez le service gammu pour que la nouvelle configuration prenne effet ;
pi@raspberrypi ~ $ sudo /etc/init.d/gammu-smsd redémarrer
Envoyez un SMS de test à un numéro de mobile. Le numéro de mobile ci-dessous est un exemple, vous devrez le mettre à jour ;
pi@raspberrypi ~ $ echo « Ceci est un test d’un Raspberry Pi » | /usr/bin/gammu –sendsms TEXTE +614123456789
Avant de créer le script python, vous devrez désactiver le démon gammu car il verrouillera le port utilisé pour communiquer avec le modem GSM. Ce script python doit accéder à ce port.
pi@raspberrypi ~ $ sudo systemctl désactiver gammu-smsd.service
import RPi.GPIO as GPIO from time import sleep import gammu RED_LED = 21 GREEN_LED = 20 BLUE_LED = 16 #The phone number where you want the SMS to be received phoneNumber="+614123456789" sendSMS = False #setup GPIO pins GPIO.setmode(GPIO.BCM) GPIO.setup(RED_LED, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(GREEN_LED, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(BLUE_LED, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Create state machine object sm = gammu.StateMachine() # Read ~/.gammurc sm.ReadConfig(Filename="/etc/gammu-smsdrc") # Connect to phone sm.Init() try: while True: if(GPIO.input(RED_LED)): print "RED" messageText="Red button" sendSMS = True elif(GPIO.input(GREEN_LED)): print "GREEN" messageText="Green button" sendSMS = True elif(GPIO.input(BLUE_LED)): print "BLUE" messageText="Blue button" sendSMS = True if(sendSMS): #Update the message content message = { 'Text': messageText, 'SMSC': {'Location': 1}, 'Number': phoneNumber, } # Actually send the message sm.SendSMS(message) sendSMS = False sleep (2) #Allow time for the SMS to be sent sleep (0.1) finally: GPIO.cleanup()