Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5

Apprentissage des GPIO
#1

Salut,

j'ai reçu le Raspberry B ce week end et après les premières configurations (installation du wifi) et apprentissages logiciels (prise en main du bureau à distance, prise en main avec ssh et Putty) je commence à regarder comment fonctionnent les gpio.

Premier tuto, je regarde celui ci, manipulation des gpio dans la console à la ligne de commande :
http://www.blaess.fr/christophe/2012/11/...pberry-pi/

J'ai compris l'idée, il faut d'abord "exporter" une broche, par exemple le gpio24, ensuite définir dans quel sens l'info circule "in/out" puis ensuite on initialise value à 1 ou 0 suivant qu'on veut fermer le circuit ou l'ouvrir.

Mais curieusement, je n'ai pas le fonctionnement attendu... Lorsque je prends la tension entre les bornes 18 (gpio24) et 17 (+3.3V) j'ai +3.3V quand Value = 0 et 0V quand Value = 1.
Alors que dans le tuto c'est le contraire (et la logique aussi qui voudrait que 0=éteint et 1=+3.3V)

Dans le sens contraire, direction "in" ça fonctionne correctement : value=1 quand le circuit est fermé, 0 quand il est ouvert.

Merci,

~
Répondre
#2

Citation :Mais curieusement, je n'ai pas le fonctionnement attendu... Lorsque je prends la tension entre les bornes 18 (gpio24) et 17 (+3.3V) j'ai +3.3V quand Value = 0 et 0V quand Value = 1.
C'est parce qu'on mesure normalement une tension par rapport à la masse, donc le 0V et pas par rapport au 3.3V.

A+
Répondre
#3

Hello,

merci pour ta réponse.C'est parce que normalement j'aurais dû brancher le 2nd fil à la masse plutôt que le 3,3V ? Je viens de tester cette solution, ça fonctionne normalement.
Le premier montage correspond à du normalement fermé en fait. C'est possible d'avoir cette configuration de branchement ou j'ai fait une connerie à ne jamais faire ?

~
Répondre
#4

Citation :Le premier montage correspond à du normalement fermé en fait.
C'est une réponse d'électricien ça Smile
D'un point de vue électronique, pour simplifier, la sortie est connectée par un transistor au +3V3 et par un autre au 0V. Ces deux transistors fonctionnent comme des interrupteurs et de manière opposée. Si un se ferme, l'autre s'ouvre, et inversement.

Si on applique un '0' sur le GPIO, le transistor entre la sortie et le 0V se ferme et c'est pour cela qu'on mesure 0V.
Répondre
#5

Une réponse d'électricien, je ne sais pas, une réponse d'un mec qu'a du mal à comprendre, assurément ! :lol:

OK, je vais essayer de digérer ça ! Le tout, c'est que ça fonctionne Smile

Merci jack,

~
Répondre
#6

Comme indiqué par Jack, la mesure de la tension est une différence de potentiel.
Tu mesures donc la différence de potentiel entre la sortie de la GPIO et un autre point du circuit.

- Si cet autre point est deja à 3.3V, ca te fait :
a 1: 3,3V-3,3V = 0V
à 0: 0V-3,3V = -3.3V (et non +3,3V comme tu indiquais Wink sauf si tu avais en plus inversé les fils de ton multimètre Wink )

- Si cet autre point est à 0V, ca te fait:
à 1: 3,3V-0V = +3,3V
à 0: 0V-0V= 0V

La tension se mesure donc par rapport à la masse (0V) comme point de référence.
Sinon, c'est un peu la merde.. il y a ausi 5V sur le GPIO, pouquoi ne pas mesurer la tension par rapport au 5V pendant qu'on y est ? Tongue
Répondre
#7

Tout à fait ! j'avais du -3.3V lors de mes premières mesures.

J'ai reçu les fils avec les petits connecteurs en plastique avant-hier et ce matin j'ai reçu la carte 4 relais et la sonde DHT22. Je peux enfin faire des tests d'une façon un peu plus confortable que les jours précédents Smile

Donc voilà mon premier test, qui donne un résultat inverse à celui que j'attendais et qui a probablement un rapport avec ce qui est dit plus haut. Pouvez vous me dire où je me plante ?

Voilà le branchement :
[Image: a03301e59535ab971b217252c31e142f4a7e34b3.jpg]
Le +5V du Raspi branché sur la broche VCC de la carte
Le Ground du Raspi branché sur la broche GND de la carte
Le GPIO24 branché sur la broche IN1 de la carte.

Et le code associé :
Code :
/ # cd /sys/class/gpio/
/sys/class/gpio # echo 24 > export
/sys/class/gpio # cd gpio24/
/sys/devices/virtual/gpio/gpio24 # echo out > direction
et là, CLIC ! la diode INS1 de la carte relais s'allume...
Je vérifie :
Code :
/sys/devices/virtual/gpio/gpio24 # cat value
0
Le relais est alimenté alors que j'envoie 0 au GPIO...

Evidemment, si je fais :
Code :
/sys/devices/virtual/gpio/gpio24 # echo 1 > value
La diode IN1 s'éteint.
Le relais n'est plus alimenté alors que j'envoie 1 au GPIO.

C'est le fonctionnement normal ? Je sais bien qu'ensuite je peux inverser ce signal avec le NO/NF du relais, mais ça me semble bizarre de devoir envoyer 1 pour éteindre et 0 pour allumer.

Merci pour vos explications

~
Répondre
#8

Çà me semble logique étant donné le schéma de la carte: fermeture du relais en appliquant un niveau bas ou fermeture d'un contact sec.

http://www.sainsmart.com/zen/documents/2...Module.rar
Répondre
#9

OK, merci jack Smile
Un commentaire sur Amazon disait que cette carte fonctionnait "à l'envers", j'en avais parlé dans ce message et Uggly m'avait répondu que peut être c'était une histoire de mauvais branchement NO/NF. Mais en fait, c'est le fonctionnement normal de la carte. Dommage car ça n'assure pas une compatibilité parfaite si je dois un jour changer ces relais par d'autre plus costaud (solid state relay de 16A).

Maintenant que j'ai validé le fonctionnement des relais, je vais aller voir un électronicien pour qu'il me soude la résistance et les fils sur la sonde température humidité DHT22 et ainsi tester son fonctionnement avec le Raspberry.

Ensuite, restera à faire le plus long, c'est à dire faire l'interface logicielle. Je sais à peu près ce que je veux faire (commande + reporting/monitoring) mais je réfléchit encore à la façon de le faire. L'idéal serait via une interface html, mais j'ai bien peur d'atteindre mes limites car ça veut dire installation d'un serveur Apache + écriture de scripts en php (que je ne connais pas) donc je pense que je vais me rabattre sur de simples scripts en Python lancés par tabcron dans un premier temps avec des fichiers logs envoyés sur un serveur ftp que je pourrai traiter plus facilement via du vba sur Excel par exemple où je suis très à l'aise.

~
Répondre
#10

Hello again !

je continue sur ma lancé sans ouvrir de nouveau sujet.

Je suis en train de tester différents exemple de scripts python trouvés sur le net, ça marche pas mal. Le seul truc un peu galère, c'est que je me tape tous les code ou bouts de code à la main, avec les erreurs de frappe et de syntaxe inévitables car le copier coller n'est pas possible avec putty.
J'ai essayé cette méthode : http://mchobby.be/wiki/index.php?title=R...ipt_Python
Citation : Copier/coller le code

Voici une méthode Copier/Coller super simple

On commence par demander la création du fichier

cat <<! > raspi-blink.py

On fait ensuite le copier/coller du code
....

On termine l'opération de saisie simplement avec:

!
mais j'ai dû rater quelque chose car ça ne fonctionne pas.

J'ai essayé de copier le code dans un fichier txt sous windows, le transférer via Filezilla en sftp mais Raspberry ne semble pas apprécier cette manip car le fichier ne fonctionne pas (les accents éèà etc. sont changés en carré dans Raspberry donc j'imagine que les retours chariots ne sont pas compris non plus) et j'ai un message d'erreur quand je lance le script après avoir changé les droits en +x. Surement une histoire de codification des caractères, mais je n'ai jamais rien compris aux UTF-8 ou ISO machin truc et comment éviter les erreurs.

Comme je commence à apprendre le Python (qui ne semble pas trop compliqué, il n'y a même pas à déclarer ses variables !) je fais pas mal d'erreurs et de recherche de syntaxe et ce n'est pas très pratique en ligne de commande avec putty. Quand on a goûté au débogueur de visualstudio ou de vba, c'est difficile de revenir à un truc entièrement manuel et ne pas savoir où le code plante.

Auriez vous une solution plus facile pour faire et tester du code autre que ce que je fais aujourd'hui à me conseiller ?

Déjà, par exemple, si je pouvais directement taper du code Python sur une ligne de commande, valider et que ça me donne le résultat ça serait plus rapide que d'éditer le fichier, le modifier, l'enregistrer et l'exécuter pour voir si la syntaxe que j'ai écrite retourne quelque chose...

Merci

~
Répondre
#11

Citation :Déjà, par exemple, si je pouvais directement taper du code Python sur une ligne de commande
Je ne comprends pas ce qui empêche d'entrer des commandes une fois connecté avec putty.

Pour ma part, je ne maîtrise pas trop python mais j'ai fait quelques tests tout de même avec une raspberry pi et son GPIO. Comme je préfère écrire mes script dans des fichiers plutôt que de les entrer en ligne de commande, j'ai utilisé un logiciel qui me permet d'éditer le script avec notepad++ sous windows. Il s'agit de winscp. C'est très pratique et facile à prendre en mains.
Répondre
#12

Salut jack,

si je tape du code Python directement sur la ligne de commande dans le shell, j'ai un message d'erreur, Raspi ne sais pas que c'est du Python ! -> Edit : OK, c'est résolu, il suffisait simplement de tape sudo python dans une console... plus simple que d'installer Python sur Windows !

Je vais regarder winscp. J'utilise Filezilla qui a aussi un protocole SFTP, mais comme je disais, un script tapé dans le notepad de Windows 8 ne passe pas une fois transféré via Filezilla. A moins que ça ne soit le notepad qui fait ça ? Je vais réessayer avec Notepad+ que j'ai déjà utilisé il y a quelques années.

Quel est ton langage de prédilection pour les scripts si tu n'utilises pas Python ? Le shell Linux ?


Edit 8h35 :
Je viens d'essayer d'éditer un fichier avec Notepad+ transféré avec Filezilla en SFTP.
- un fichier texte créé sur le Raspi avec du code Python est lu correctement : les retours à la ligne fonctionnent, alors qu'avec MS-Notepad le retour à la ligne n'est pas respecté.
- par contre, un fichier créé sous Win8 et enregistré sous .py (encodage des caractère en UTF8 without BOM) et transféré sur Raspi avec Filezilla, le fichier changé en exécutable, j'ai ce message d'erreur :
Code :
[email protected] ~ $ ls -l
total 24
-rw-r--r-- 1 root root 1465 juil. 27 00:10 log.txt
-rwxr-xr-x 1 pi   pi    894 juil. 27 08:22 TestLed.py
-rwxr-xr-x 1 pi   pi    868 juil. 27 00:09 tt.py
[email protected] ~ $ sudo ./TestLed.py
: Aucun fichier ou dossier de ce type
[email protected] ~ $

Quand j'édite ce fichier, il y a un mieux par rapport à hier car les accents éà etc. sont conservés et les commentaires (après #) sont tous reconnus (ils sont en coloration syntaxique rouge) alors qu'hier, avec MS Notepad, les commentaires comportant un accent n'était pas écrits en rouge.

~
Répondre
#13

Citation :Quel est ton langage de prédilection pour les scripts si tu n'utilises pas Python ? Le shell Linux ?
je programme surtout en C ou C++.

Concernant l'éditeur de texte, notepad++ est entièrement paramétrable, notamment au niveau du codage des caractères, des fin de ligne linux/windows, etc.

Ce que j'apprécie avec winscp (c'est peut-être comme ça également avec filezilla), c'est d'avoir une vue de l'arborescence des fichiers sur la raspi et de windows, de pouvoir faire des glisser/déposer, d'éditer avec notepad++ un ficher se trouvant sur la raspi en cliquant dessus, etc.

Je travaille avec win7, mais je pense qu'il ne doit pas y avoir de différence majeure avec win8
Répondre
#14

En C, c'est un cran au dessus ! Je n'ai jamais réussi à m'y mettre !

Après plusieurs tests, j'ai trouvé un truc pour qu'il n'y ait de de problèmes de conversions : il faut créer le fichier sur le Raspi et ensuite l'éditer via Filezilla et là, avec Notepad+ ça roule Smile C'est même très bien car Notepad+ fait de "l'autocompletion" quand il reconnait le langage Cool

Avec Filezilla, tu as aussi l'arborescence du Raspi, tu peux éditer, renommer, effacer, transférer, changer les droits des fichiers etc. Winscp semble être équivalent.

Je suis content, j'arrive à avancer et en partie grâce à ton aide. Merci Smile

~
Répondre
#15

Ravi de t'avoir aidé

Tu peux continuer avec python qui me semble un langage très intéressant et très adapté à la raspi
Répondre
#16

Comme indiqué par Jack, je serais toi, je ferais juste un copier coller en SSH (PuTTY si tu est sous Windows)
Répondre
#17

Hello,

le problème, c'est que le copié-collé ne fonctionne pas avec Putty. Ou alors, je l'ai mal configuré ?

~
Répondre
#18

Je ne crois pas qu'il y ai qqch a configurer.
Clic droit ou clic milieu doit coller par défaut (je n'ai pas de Windows pour tester)
Répondre
#19

Oui, le clic droit fonctionne, mais ça copie-colle que dans le terminal. Il n'est pas possible de passer d'une fenêtre Windows vers le terminal, les deux sont "étanches" Sad

~
Répondre
#20

Je ne comprend pas ton problème.. désolé.
Répondre
#21

Hello,

le problème que je trouve le plus contraignant, c'est de ne pas pouvoir faire un copier-coller d'un code trouvé sur le net. Je suis sur Windows, je consulte le net avec Firefox et j'ai un terminal ouvert où je suis logué "pi" sous puTTY.
Quand je trouve un code intéressant, je ne peux pas le sélectionner sur Firefox et le coller dans puTTY, je suis obligé de le taper à la main.
Quand il s'agit d'un fichier (une configuration par exemple) où tout taper serait trop long, j'ai une autre méthode : je crée un fichier vide sous Linux que je viens ensuite télécharger/éditer via Filezilla et Notepad+ où là je peux coller le code sélectionné. J'enregistre le fichier sous Notepad+ et Filezilla me le re-transfert sur le Raspi.
Ca fonctionne, mais c'est lourdingue comme façon de procéder !

Autre méthode : je peux aussi ouvrir une session graphique avec vncserver, et utiliser le navigateur internet du Raspi + un terminal mais je n'aime pas faire cela car la navigation est lente et l'affichage sur mon écran du bureau Raspi est trop petit, je me pète les yeux, sans compter que les pages web sont déformées et souvent illisibles.

~
Répondre
#22

Le soucis viens de l'encodage. quand tu créé un nouveau fichier avec Notepad+, tu dois pouvoir l'encoder en utf-8
Pour qu'il créé automatiquement en utf-8 essaye d'aller dans paramètres / nouveau document / encodage utf-8
Répondre
#23

Wave a écrit :Quand je trouve un code intéressant, je ne peux pas le sélectionner sur Firefox et le coller dans puTTY, je suis obligé de le taper à la main.

C'est bien le problème... Mais tu es seul a avoir ce problème. C'est donc que tu fais quelquechose pas comme il faut..
Tant que tu ne décriras pas avec précision ce que tu fais, on ne pourra pas te dire ce que tu fais mal.
Répondre
#24

Salut,

finalement, j'ai réussi Smile

Je ne sais pas pourquoi ça ne fonctionnait pas, mais maintenant si dans Windows je fais sélection>copier puis dans la console un clic droit ça colle ce qui a été copié. Et le contraire aussi, une sélection dans la console et un coller dans Windows transfère le texte.

C'est quand même plus facile !

Merci Smile

~
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)