Tous ces aspects ont été revisités dans mon livre Java avec le Raspberry Pi 3B (Janvier 2019).

Cet ouvrage nous montre comment déposer nos composants sur des planches à pain (breadboards) avec des schémas Fritzing, les tester avec des scripts Python, avant de développer de jolies classes et petites applications Java.


Lors du design d'un petit projet, même avec seulement quelques composants, on est vite arrivé à se mélanger les pinceaux.
On a par exemple la nécessité d'utiliser deux fois le 5V et plus pour la masse, le Gnd.

Nous allons commencer par un petit exemple, avec un relais et un senseur de mouvement:

Ces deux composants auront besoin les deux du 5V et du Gnd.  

Le troisième fil de chacun de ces modules viendra sur un pin GPIO, et différent évidemment.

Il est important de consulter le schéma et le numéro des pins GPIO pour définir ce qu'on va utiliser pour ces troisième fil. Par exemple: Gordons Projects.

Dans une première phase, il est plus facile de se connecter directement sur le Raspberry Pi, pour chaque module et de les tester séparément. Dans le cas du PIR, on aura directement les 3 trois fils qui partiront du senseur pour aller sur le Raspberry.

Nous avons choisi le header 26 qui correspond au pin 11 et au GPIO BCM 7.

La démarche la plus simple est de commencer par un script python, pour vérifier que le senseur fonctionne:

Fichier senseur_mvt_2.py


 #!/usr/bin/python

import RPi.GPIO as GPIO
import time 

GPIO.setmode(GPIO.BCM)

PIR_PIN = 7

GPIO.setup(PIR_PIN, GPIO.IN)

nbmvt = 1

try:
    print "PIR Module Test (CTRL+C to exit)"
    time.sleep(1)
    print "Ready"

    while True:
       if GPIO.input(PIR_PIN):
            print "Mouvement %d!" % nbmvt
            nbmvt = nbmvt + 1

       time.sleep(.2)

except KeyboardInterrupt:
               print " Quit"
               GPIO.cleanup()


En exécutant le programme:


pi@raspberrypi ~$ sudo python senseur_mvt_2.py

PIR Module Test (CTRL+C to exit)
Ready
Mouvement 1!
Mouvement 2!
Mouvement 3!
^C Quit


C'est important de vérifier qu'il réagit correctement aux mouvements.

Si un des fils est en l'air, le script retournera une détection en continu, donc à corriger. 

Lorsque cette première phase est terminée, nous savons que notre senseur fonctionne et que nous pouvons passer à la phase de la programmation Java. 

 

Pour la partie du relais, on fait la même chose, le 5 Volt et le Gnd. 
Nous utiliserons 

#!/usr/bin/python
import RPi.GPIO as GPIO, time
print "Start"
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
PiPin = 18
GPIO.setup(PiPin, GPIO.OUT)
GPIO.output(PiPin, True)
time.sleep(2.0)
GPIO.output(PiPin, False)
print "End"