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

probleme avec UART
#1

bonjour a tous,

voila j'envoie via un microcontrôleur le message suivant: "10101010" à la vitesse de 9600bps, cette transmission fonction très bien ( vérification par oscilloscope) , et j'aimerais que ma raspberry reçoive ce message mais mon code ne marche pas, j'espere que vous serez m'aider.

voici mon code (en python ):
Code :
[== Perl ==]
import serial
import string

port=serial.Serial("/dev/ttyAMA0", baudrate=9600, timeout=1.0)
while True:
          data=port.read()
          X=str(data)
          print"data : "+X

mais il me met sur mon terminal:
data : ?
ou des fois :
date : [

en gros je vois pas mon fameux 10101010 qui est pourtant le message que j'attend..
je precise que les masses sont communes et que j'ai bien initialisé l'UART.

merci d'avance pour votre aide
#2

Salut

Tu as désactivé la console qui est activée par défaut sur le port série dans le fichier cmdline.txt ?
(http://poivron-robotique.fr/Liaison-UART...ry-Pi.html)

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#3

oui il me reste que cette ligne la :
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p6 rootfstype=ext4 elevator=deadline rootwait

et :
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100

je coince vraiment car j'ai bien initialisé l'UART et mon code me semble bon, pourtant je devrais bien recevoir 10101010 et il n'en est rien Sad est ce possible que de demander l'affichage de 10101010 coince dans le print ?
#4

Possible. Voici un exemple qui fonctionne entre un Arduino et un Raspberry : http://www.pihomeserver.fr/2015/01/23/ra...serieuart/

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#5

je me suis déja inspiré de ce code la, mais ca ne marche pas...

personne n'a déja utilisé l'UART pour récupérer un octet?
#6

Le 10101010 c'est des bits ou bien une suite de caractere 1 et 0 ?

Le code fonctionne nickel pour la reception de caractere mais pas de bit.

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#7

c'est des bits Sad

comment je fais?
#8

Tu lis des octets avec ta commande en python. Tu peux verifier que la valeur que tu lis est bien égale à ce que tu envois : 10101010 doit être égale à 170. Si tu affiches ce caractère c'est un caractère étendu donc ca peut donner des trucs bizarres à l'écran en fonction du tty de ton terminal.
Affiche déjà la valeur numérique brute plutôt qu'une chaine.

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#9

Oui c'est ca, ca m’affiche des trucs bizarre...
Je suis parti sur ton idée d'afficher directement le nombre correspondant a l'octet, dans mon cas il s'agit de 170.
j'ai mis le code suivant:

Code :
[== Indéfini ==]
import serial
import string

port=serial.Serial("/dev/ttyAMA0", baudrate=9600, timeout=1.0)
while True:
          data=port.read()
          if data == 170 :
                 print"data : 170 "
          else :
                 print"non"

mais ca ne m'affiche que des "non" Sad pourtant j'émet bien 10101010
#10

Mais si tu affiches data ca donne quoi ? Sans faire de convertion

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#11

Au passage tu devrais forcer la taille d'un octet à 8 bits pour être certain de bien lire le bloc d'un coup. Je sais pas la configuration par defaut, si c'est pas 7 bits

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#12

ca m'affiche des :
x
x
?
?
#13

j'ai forcé la taille d'un octet à 8 bits :
port=serial.Serial("/dev/ttyAMA0", baudrate=9600, bytesize=8, timeout=1.0)

mais toujours rien,
ca affiche:
?
?
?
#14

J'ai l'impression qu'il ne recoit pas qq chose de correct plutot qu'un problème python.
C'est quoi l'émetteur ? Y a mouen de le debugguer ? Il ajoute pas à ta trame des bits de ack, nack, controle, etc ?

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#15

l’émetteur est un pic12F1840 de chez microchip.
pour moi il fonctionne très bien car je vois sur un oscilloscope qu'il émet bien un bit start ( à 0 ) puis un octet( 10101010) puis un bit stop ( à 1 ) et tout ca a la vitesse de 9600bps. l état haut est à 3v3 et l'état bas est à 0v et les masses sont bien communes
#16

Peut etre faudrait il faire un programme plus bas niveau pour valider que l'uart recoit bien les bits que tu envois ... Mais là je sèche !

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#17

ok bah merci quand meme Chris, j'espere que quelqu'un d'autre pourra m'aider dans mon probleme.

j'avais également essayé de recevoir les données à partir du TX du rasp pi, mais ca me mettait également des "?"
#18

Tu es connecté sur quel GPIO ?

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#19

pour le RX je suis connecté au port GPIO15 :p
#20

j'ai essayé a partir du terminal d'envoyer le mot bonjour :
sudo echo -e -n "Bonjour\x00" > /dev/ttyAMA0

mais ca me met : " permission non accordée"

j'ai peut etre oublié une configuration a faire ... c'est peut etre ca qui pose probleme.
mais je sais pas quelle config il me reste a faire Sad
j'ai pourtant fait tout ce qui disait sur le site :http://poivron-robotique.fr/Liaison-UART-du-Raspberry-Pi.html
#21

Je pense que le echo c'est normal vu le type de "fichier".

A part refaire une installation depuis le début et/ou tout recontrôler ...

Les fils sont bons ? C'est idiot mais si le fil a un faux contact ...

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#22

Hello je n'ai pas tout lu ton problème mais jette un oeil sur le lien, ca pourra peut être aider.

https://www.ciscomadesimple.be/2013/08/ … /#more-972

ou

http://forum.raspfr.org/viewtopic.php?id=961


je reviens car ton code python me semble bizarre. Je dialogue sans problème avec un MicroControleur du type PIC16F ou 18F avec la librairie Pyserial : http://pyserial.sourceforge.net/pyserial.html

Voici les lignes de codes que j'utilise pour recevoir un OCTET du microcontroleur:

Code :
[== Indéfini ==]
x = ser.read(1)                  # (1) est le nombre de Octet que tu veux recevoir
recp = int.from_bytes(x,'big')

Ton Octet reçu se trouve dans recp (pour réception) tu peux vérifier avec print(recp)
Vérifie également avec une table ascii car tu devras probablement convertir ton octet reçu dans le format qui te convient ( dec, hex, chr ).


Voila si ca peut aider.

david84
#23

pas de faux contact sur le fil et j'ai déja refait une installation :/

personne sur le forum a déja fait de la communication UART ?
#24

Le message d'avant semble donner de nouvelles pistes surtout que c'est dans la meme config que toi

Raspberry Pi Home Server : http://www.pihomeserver.fr
Hotspot Wifi avec portail captif pour Raspberry Pi: Kupiki Hotspot
#25

bonjour david84,

je viens de tester ton code:
Code :
[== Indéfini ==]
import serial
import string

ser=serial.Serial("/dev/ttyAMA0", baudrate=9600, bytesize=8, timeout=1.0)
while True:
          data=ser.read(1)
          recp = int.from_bytes(data,'big')
          print recp
et ca me met le message d'erreur:
AttributeError: type object 'int' has no attribute 'from_bytes'
Sujet fermé


Atteindre :


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