Introduction: Gérer Vos GPIO Raspberry Via Interface Graphique (Python/Tkinter)

About: Passionné d'électronique numérique et de nouvelle technologie ! https://www.youtube.com/channel/UCl9vi6y04pBl-RajOrFJI8g?view_as=subscriber

Salut à tous, Je suis ravi de pouvoir vous partager mon tout premier instructables !

Nous allons aujourd'hui voir comment gérer les GPIO de votre Raspberry Pi via une interfaces graphique via Python en utilisant la librairie standard Tkinter.

J'aborde entièrement le sujet sur ma vidéo mais je vais tout même poster cela à l'écrit.

Ce sera un petit projet qui vous permettra de contrôler une simple LED mais une fois que vous aurez compris comment réaliser le lien entre votre interface graphique et vos GPIO vous serez paré pour mener à bien vos propre projet, par exemple gérer des relais.

Dans ce tutoriel je vais utiliser la librairie gpiozero pour gérer les GPIO, si vous êtes familier avec la librairie Rpi.GPIO utilisez cette dernière il suffirait d'adapter mon code.

Concernant Python, il faut disposer de Python3, personnellement j'ai la version 3.5.3 et aucun problème.

Les prérequis :

-Raspberry Pi mis à jour (peu importe la version, j'ai le 3 B+)

-Python3 installé

-2 Wires de prototypages (femelles-mâles)

-LED Rouges

-Résistances de 85 Ω (tout dépend de la LED que vous utilisez)

Step 1: Câblage

Malgré qu'il n'y pas grand chose à câbler il faut tout de même aborder certain point,

Pour commander la LED Rouge nous allons la brancher sur la GPIO17 en numérotation BCM, ou bien la broche 11, ça revient au même mais la libraire gpiozero utilise la numérotation BCM nous verrons cela dans le code.

Contrairement à Arduino qui opère à 5V, les GPIO du Rasbperry délivrent du 3.3v.

Pour dimensionner la résistance que vous allez utiliser faite une

simple loi des maille, la tension de sortie des GPIO est de 3,3V et le courant est d'environ 20mA, référez vous au tableau (cf. lien) indique la tension approximative des LED, dans mon cas de figure une Led Rouge soit 1,6V.

Pour résumer nos avons :

Vled = 1.6V | tension de la led

Vs = 3.3V | tension de sortie des GPIO

Is = 20mA | Courant de sortie des GPIO

R = (Vs-Vled)/20*10^-3

R=85Ω Et voilà !

Donc il me faudra une résistance de 85Ω, si vous n'avez pas une valeur précise c'est pas très grave au pire votre LED aura une faible luminosité si la résistance à une grande valeur et dans le cas contraire chauffera légèrement.

Step 2: Code

#! /usr/bin/python<br># -*- coding:utf-8 -*-<br>#La led est branché sur la pin 17 (bga 11)<br>from tkinter import *<br>from gpiozero import LED,PWMLED<br>from time import sleep<br><br>led = PWMLED(17)<br><br># Définir la fonction qui permet d'allumer et d'éteindre la LED<br>def allumage():<br>    led.on()<br><br>def off():<br>    led.off()<br>    <br>def light(event):<br>    x=echelle.get()<br>    led.value=x<br><br># Page principale<br>root = Tk()<br>root.title("Gestion GPIO")<br>root.geometry("540x260")<br>root.minsize(480,360)<br>root.config(background='#C9C3AB')<br><br># Frame<br>frame = Frame(root, bg='#C9C3AB')<br><br>#Bouton<br>led_1= Button(frame, text="Allumer LED", font=("Courrier", 14), bg='white', fg='#9E946B', command = allumage)<br>led_1.pack(pady=5,fill=X)<br><br>led_2= Button(frame, text="Eteindre LED ", font=("Courrier", 14), bg='white', fg='#9E946B', command = off)<br>led_2.pack(pady=5,fill=X)<br><br>#Echelle<br>echelle = Scale(frame,from_=0,to=1,orient=HORIZONTAL,<br>      resolution=0.1, tickinterval=0.1, length=350,<br>      label='Intensité lumineuse',command=light, bg='white', fg='#9E946B')<br>echelle.pack(pady=5,fill=X)<br><br># ajouter frame<br>frame.pack(expand=YES)<br><br>#Barre de menu<br>menuprincipale = Menu(root)<br><br>#Créer un premier menu<br>file_menu= Menu(menuprincipale, tearoff=0)<br>file_menu.add_command(label="Quitter", command=root.quit)<br>menuprincipale.add_cascade(label="Fichier",menu=file_menu)<br>root.config(menu=menuprincipale)<br><br>root.mainloop()