Comment débuter avec raspberry pi et créer son premier programme en python ?

9127

Aujourd’hui on va apprendre à comment débuter avec raspberry pi et créer son premier programme en python ?
Nous allons installer raspbian sur notre raspberry pi, le paramétrer pour utiliser vnc (prise de contrôle à distance), créer notre premier programme en python et utiliser les GPIO pour allumer une led avec un bouton.

Rpi Led Python diagram

 

import RPi.GPIO as GPIO  
import time              

LED = 18
BUTTON = 23

GPIO.setwarnings(False) 
GPIO.setmode(GPIO.BCM)   # mode de numérotation des pins GPIO18
#or GPIO.setmode(GPIO.BOARD) #12
GPIO.setup(LED,GPIO.OUT)  
GPIO.setup(BUTTON,GPIO.IN) 

mode_auto = 0
last_button_statement = 0

try:
    while True:     

        if GPIO.input(BUTTON) == 1 and last_button_statement != 1:
            if mode_auto == 1:
                mode_auto = 0
                print("NoAuto")
            else:
                mode_auto = 1
                print("Auto")
            print("Bouton")
            last_button_statement = 1
        elif GPIO.input(BUTTON) == 0 :
            last_button_statement = 0

        if mode_auto == 1 :
            GPIO.output(LED,GPIO.HIGH)   
            time.sleep(1)               
            GPIO.output(LED,GPIO.LOW)    
            time.sleep(1)               
except KeyboardInterrupt:
        GPIO.output(LED, GPIO.LOW)      
        GPIO.cleanup()                  
        print("\nEnd of program\n")

En matériel il nous faut :

Pour commencer nous allons télécharger la dernière version de rasbian (RASPBIAN STRETCH WITH DESKTOP) sur le site raspberrypi.org et télécharger etcher (version portable pour ne pas l’installer) pour flasher notre carte micro sd.
Je lance etcher et je sélectionne l’image de raspbian et je flashe la carte mémoire ( attention bien choisir la carte à flasher ).

Mettre la micro sd dans les raspberry pi et connecter le nécessaire pour l’écran, souris, clavier, réseau. Raspbian se lance et nous arrivons sur le bureau, nous allons paramétrer le clavier en français pour ensuite configurer vnc.
Aller dans le menu “Preference”, “Mouse and Keyboard Setting”, “Keyboard”, “Keyboard Layout…”et choisir France, French (Azerty).

Dans le même menu “Preferences” aller dans “Raspberry Pi Configuration”, pui “Interfaces”, cocher SSH et VNC ( VNC va nous permettre de nous passer d’écran); on peut aussi passer raspbian en français onglet “Localisation”, “Set Locale”, langue “fr (French), Country “FR (France). On peut faire des modifications sur les autres onglets pour choisir la bonne zone.

Pour récupérer l’adresse ip de notre raspberry pi il faut ouvrir la console et taper “ifconfig” et récupérer la valeur après “inet” exemple : inet 192.168.1.24

Avec cette adresse ip et pour pouvoir se passer d’un écran supplémentaire avec le raspberry pi on va installer VNC Viewer sur le site realvnc.com .
Lancer vnc et connectez vous à l’adresse ip récupérée auparavant, le mot de passe et le login si vous ne les avez pas changé sur le raspberry sont “pi” pour le login et “raspberry” pour le mot de passe.
J’allais oublier tu peux configurer le wifi pour les rapberry pi pour eviter de brancher un câble, clique sur les deux flèches menu du haut et configure ton wifi.

Pour le câblage j’ai branché ma led sur le port 12(GPIO18) et mon bouton sur le port 16(GPIO23).

GpioRPIRetroetgeek

Passons au code et à python pour créer ton premier code soit tu crées un fichier dans un répertoire et tu le nommes avec l’extension “.py”, soit tu passes dans le menu “Programmation”, “Thonny Python IDE”.

Maintenant le code, python s’écrit différemment , tu ne trouveras plus les points virgules pour terminer sur une valeur de variable, ni les accolades dans les conditions if else etc …
Tout est question d’indentation dans les code ( indentation : décalage dans le texte fait avec des tabulations dans mon code)

Mon code va simplement allumer une led par intermitence quand on est dans le mode auto. Premierement j’appelle des librairies pour utiliser les GPIO et le temps avec les “import …” .
Je defini les valeurs pour la led et le bouton , ce sera leurs pin.
Je met les warning a false “GPIO.setwarnings(False) , je défini le mode d’appel des pin soit par leur numéro soit parle “nom numéro”.
GPIO.setmode(GPIO.BCM) # mode de numérotation des pins GPIO18
#or GPIO.setmode(GPIO.BOARD) #12

Je définis si les GPIO sont en entrée ou en sortie avec “GPIO.setup(LED,GPIO.OUT)” ici le pin LED est en sortie (OUT) ou avec “GPIO.setup(BUTTON,GPIO.IN)” ici le bouton est en entrée (IN).
J’ai ensuite quelques variables pour mon programme”mode_auto” et last_button_statement.

Je passe ensuite par un “try … exeption”, cela fonctionne un peu comme j’essaye de faire quelque chose et si j’ai une exeption ou quelque chose qui met un stop je ferai quelque chose d’autres; un peu comme un “if else” mais en restant tout le temps dans le if.

Dans mon try j’ai une boucle infinie avec “while True:”, attention l’indentation est importante je le répète.
J’ai une condition “if” avec contrôle de l’état de mon bouton et un “and” pour rajouter une autre condition.
Autre condition “if”, si je suis en mode auto alors je bascule en mode non auto et j’affiche sur la console “NoAuto” avec l’instruction “print(“NoAuto”)”.
Pour le else on fait l’inverse; j’ai ensuite une condition elseif qui va s’écrire “elif” de ma première condition “if” avec le bouton.

Ensuite hors de ses conditions j’ai une nouvelle condition pour savoir si je suis en mode auto ou non.
Si je suis en mode auto je met à l’état haut le pin de la led avec “GPIO.output(LED,GPIO.HIGH) “, suivi d’un “time.sleep(1)” pour mettre un temps d’arrêt de 1 seconde ( équivalent delay arduino). j’éteins la led ensuite et je reboucle tant que je suis en mode auto.

J’ai ensuite la partie “except KeyboardInterrupt” lors d’une interruption clavier, j’éteins la led avec un état bas, je libère les GPIO avec “GPIO.cleanup()” et j’affiche  “End of program”.

Le premier programme est terminé tu peux télécharger le code :
RaspberryLedBouton

N’hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne instagramtwitter , facebook ,youtube ; si vous ne comprenez pas certaines parties du tutoriel n’hésitez pas , me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel  et à partager les projets que vous aimeriez créer etc…

Comme toujours allez sur la page de C’est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne.

Merci les RetroGeeker et RetroGeekeuse