[RESOLU] python commande ser.write

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

[RESOLU] python commande ser.write

Message par rasduino » ven. 2 janv. 2015 17:42

Bonjour,

je cherche à faire causer un PI et un UNO via USB série.
ça marche dans le sens uno->pi.
pour un test en bidirectionnel, j'ai trouvé ce bout de code:

Image

à l'exec en mode console j'obtiens une bordée d'injures:

Image

je suppose qu'une librairie n'est peut-être pas à jour ou qui est inexistante mais je ne sais pas laquelle.
(update et upgrade sont ok)

merci d'avance pour votre aide et tous mes voeux pour cette nouvelle année!
Modifié en dernier par rasduino le sam. 3 janv. 2015 13:59, modifié 1 fois.

Avatar du membre
EVOTk
Modérateur
Messages : 838
Enregistré le : sam. 20 sept. 2014 02:36

Re: python commande ser.write

Message par EVOTk » ven. 2 janv. 2015 18:22

Salut,

je vais peut etre dire une bétise ( qui a dit oui ? ) , mais

Code : Tout sélectionner

ser.write(5)
ne serait pas plus juste ?
NAS : DS3615xs Xpenology - 2x 8To + 2x 3To + 2x 4To WD Red - APC Back-UPS Pro 900
SeedBox / VPN : 1To / 20Gbps / Trafic illimité chez FeralHosting
Surveillance Réseau : Smokeping sur Rasp. B / Raspbian
Imprimante 3D : Dagoma DiscoEasy 200

rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

Re: python commande ser.write

Message par rasduino » sam. 3 janv. 2015 08:11

salut!

j'aurais dû joindre le code Arduino pour mieux montrer la manip'
Image

en fait, le caractère '5' est envoyé par le Pi à l'arduino pour déclencher une mesure, qui est renvoyée au Pi pour traitement.
c'est un peu 'sioux' comme combine mais c'est un peu l'intérêt de cette démo.
merci pour ton intérêt.
je pense vraiment que c'est une histoire de librairie mais je ne suis pas assez calé sur Linux pour trouver où... :oops:
ps: dans un autre script,

Code : Tout sélectionner

print(ser.readline())
fonctionne correctement.

mike913
Raspinaute
Messages : 125
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: python commande ser.write

Message par mike913 » sam. 3 janv. 2015 08:27

Bonjour,

Le message d'erreur est clair, on ne peu pas envoyer une variable de type "str" sur le port série. Ce n'est pas une question de librairie.
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.fr

rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

Re: python commande ser.write

Message par rasduino » sam. 3 janv. 2015 11:02

Merci pour cet éclaircissement.
Eh non, le message n'était pas clair pour moi...
je vais contourner.
Ce code n'a pourtant pas été publié par un débutant. Je vais poser la question.
D'après vous, pourrait-ce être dû à une version particulière de Python?
j'ai lu qu'il y avait des incompatibilités entre versions.

j'espère que l'Orge est restée dans son lit. ;)
(j'ai bossé longtemps à St Michel)

@EVOTk: d'une certaine manière, tu avais raison... :)

mike913
Raspinaute
Messages : 125
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: python commande ser.write

Message par mike913 » sam. 3 janv. 2015 11:40

Je t'ai peut-être dit une bêtise, car j' ai trouvé des exemples ou l' on envoie des variable de type str.
Par contre:
je cherche à faire causer un PI et un UNO via USB série.
dans ce cas le port n'est peut-être pas /dev/ttyAMA0 mais :/dev/ttyUSB0 ou /dev/ttyUSB1 suivant le nombre de périphériques branchés sur les ports USB
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.fr

rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

Re: python commande ser.write

Message par rasduino » sam. 3 janv. 2015 12:38

j'ai fait un test dans le sens uno->Pi avec /dev/ttyAMA0 et ça fonctionne.
je vais tester avec un numérique et avec d'autres versions de python car l'auteur du script n'a pas l'air de répondre.
http://electroniqueamateur.blogspot.fr/ ... berry.html
en fait, lorsqu'un uno est connecté au Pi par usb, le pi le 'voit' sur ttyAMA0.
bonne journée

mike913
Raspinaute
Messages : 125
Enregistré le : mar. 7 oct. 2014 09:46
Localisation : Morsang / Orge - Essonne
Contact :

Re: python commande ser.write

Message par mike913 » sam. 3 janv. 2015 13:34

As-tu installé la librairie PySerial ?
essaye la commande ls /dev/ttyUSB* dans putty. Il te feras la liste des périphériques connectés en USB
Si tu n'as que le Uno connecté en USB et qu'il te répond:
~$ ls /dev/ttyUSB*
/dev/ttyUSB0

c'est que le UNO est sur /dev/ttyUSB0.
si non il est bien sur /dev/ttyAMA0
DS712+ 2x Western Digital WD10EADS-00L 1000 GB (SHR) - Firmware: DSM 6.1.6-15266
Raspberry - RFXTRX433 - Aeon Labs ZStick V2 - Domoticz
FreeBox v6
https://meteo.folcke.net
https://wiki.folcke.fr

rasduino
Messages : 30
Enregistré le : ven. 10 oct. 2014 07:57

Re: python commande ser.write

Message par rasduino » sam. 3 janv. 2015 13:58

résolu!
j'ai remplacé (un peu au pif) la première ligne du script par:

Code : Tout sélectionner

#!/usr/bin/env python
et là, c'est tout bon, le Pi reçoit bien la valeur analogique lue sur A0 du Uno!
ça ouvre des horizons, tout ça...
Encore merci pour ton attention et pour ton aide.
ps: c'est bien /dev/ttyAMA0 qui est utilisé.
@+

Avatar du membre
dbrion0606
Raspinaute
Messages : 164
Enregistré le : ven. 30 janv. 2015 15:51

Re: [RESOLU] python commande ser.write

Message par dbrion0606 » jeu. 26 févr. 2015 15:50

http://stackoverflow.com/questions/2227 ... -my-string
donne la solution pour pouvoir utiliser python 3, qui fait une différence entre les "bytearray" s et les "string" s.
Au lieu de '5', il faudrait écrire '5'.encode() en utilisant ser.write(...

Répondre

Retourner vers « Python »