Le port série? Pas si simple...  [RESOLU]

Vous venez de déballer votre Raspberry Pi et vous vous posez des questions ? C'est ici que ça se passe !

Modérateurs : Francois, EVOTk

alematt
Messages : 13
Enregistré le : dim. 19 juin 2016 14:14

Le port série? Pas si simple...  [RESOLU]

Message par alematt » dim. 19 juin 2016 14:48

Bonjour à tous,

Tout neuf dans le monde des Raspberry, et sur ce forum, la première difficulté sera de poster au bon endroit! :mrgreen:

Voila, je cherche à faire dialoguer un RPI3 et un Arduino par le port série. Coté Arduino, cela fonctionne bien, coté RPI3, ça se corse...

Voici un état des lieux:
TX -> GPIO14
RX -> GPIO15

Je suis initialement parti sur /dev/ttyAMA0
je l'ai donc dé-configuré de la console en suivant divers posts:

cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait


Le fichier inittab n'existant pas, je n'ai su quoi faire par le suite.


Mais lorsque je connecte le RPI3 sur mon PC via une interface RS232 (MAX3232), mon terminal reçoit en boucle:

¤Òþ³Æó„n-^Âê{ÚÎhc{n-Çþ¹X.‰•ÉÉåÁ¥login: Raspbian GNU/Linux 8 raspberrypi ttyS0

Ce n'est donc pas le /dev/ttyAMA0 sur ce port, mais apparemment /dev/ttyS0
Pourtant j'ai bien activé un port série avec : sudo raspi-config, mais est-ce le bon?

J'ai pensé à un problème de Baud Rate, mais pour savoir, je rencontre ce soucis :
stty -F /dev/ttyS0
stty: /dev/ttyS0: Permission denied

En effet, si je comprend bien, dialout ne fait pas partie des autorisations pour /dev/ttyS0

ls -l /dev/tty*
crw-rw---- 1 root dialout 204, 64 Jun 19 13:51 /dev/ttyAMA0
crw--w---- 1 root tty 4, 64 Jun 19 14:29 /dev/ttyS0

Comment faire?

J'ai aussi installé Minicom et l'ai configuré comme suit:

| A - Serial Device : /dev/ttyS0
| B - Lockfile Location : /var/lock
| C - Callin Program :
| D - Callout Program :
| E - Bps/Par/Bits : 9600 8N1
| F - Hardware Flow Control : Yes
| G - Software Flow Control : No

Mais ce que je recois sur mon terminal, n'est pas vu par Minicom

j'ai aussi repris un petit script en python pour d'autres essais, mais rien ne se passe (sous Putty)

Donc comme vous pouvez le voir, je m'enlise, et avant de m'enfoncer plus à même dans des recherches abyssales, et perdre le gout de la vie, je voudrais comprendre le principe des ports séries sur le RPI3.
Quel port est sur le GPIO ttyS0? ttyAMA0?

Auriez vous quelques explications à me donner pour appréhender la bête, quelques pistes?

Mille merci d'avance!! ;)
Modifié en dernier par alematt le lun. 20 juin 2016 21:23, modifié 1 fois.

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Le port série? Pas si simple...

Message par spourre » dim. 19 juin 2016 19:35

Bonjour,

C'est une question récurrente de tous les débutants.
Par défaut, le port UART disponible sur le connecteur GPIO du Raspberry est utilisé par le noyau comme port console.
Il faut donc indiquer à Linux de ne pas l'utiliser par défaut, dans ce mode.
Comme tout port série dans UNIX, il se configure facilement avec la commande stty. Il faut, en particulier, supprimer le mode echo.
Ce n'est pas une interface RS232 complète, il manque les signaux de handchecking (DTS, RTS...) il faut donc utiliser le contrôle de flux logiciel (xon, xoff).
Que votre Aduino affiche le prompt du Rasperry est plutôt bon signe. Un petit tuto, en français:
http://poivron-robotique.fr/Liaison-UAR ... ry-Pi.html

Sylvain

bruno83
Messages : 72
Enregistré le : lun. 11 mai 2015 13:29

Re: Le port série? Pas si simple...

Message par bruno83 » dim. 19 juin 2016 20:06

bonjour,
attention aux changements sous jessie et pi3
http://www.briandorey.com/post/Raspberr ... y-Part-Two

essais sur le pi2 et jessie aucun soucis en python3
j'ai fait fonctionner un journal lumieux en rs 232 et gsm GL865-DUAL/QUAD V3
A+ bruno

alematt
Messages : 13
Enregistré le : dim. 19 juin 2016 14:14

Re: Le port série? Pas si simple...

Message par alematt » lun. 20 juin 2016 10:46

Bonjour,

Merci à vous deux pour vos réponses. ;)

@Sylvain,

Oui j'ai déja suivi à la lettre ce tuto, c'est d'ailleurs pour cela que je viens vers vous, car je ne sais plus trop quoi faire!

Pour le tuto, comme indiqué dans mon premier post, j'ai bloqué ici:

Pour désactiver le terminal sur l’UART, il faut éditer le fichier /etc/inittab et supprimer ou commenter (en ajoutant un # en début de ligne) les lignes faisant référence à notre UART :

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

Ce fichier n'existant pas, que dois-je faire?.

Concernant le prompt sur la réception, pourquoi celui ci affiche ttyS0 et non ttyAMA0? La plupart des tutos parle du ttyAMA0!


@Bruno

Je n'ai pas de RPI2 pour essais! Mais il n'y a pas de raisons pour que je n'y arrive pas sur le 3?! Si?

Sur le lien que vous m'avez proposé (merci), il est dit: "Pour Raspbian Jessie avant/après le 18 Mars 2016"
Comment puis-je savoir de quel génération est le Raspbian Jessie de mon PI3 ?

En suivant ces tutos, qui n'ont pas tous les mêmes méthodes, pour un même résultat, j'ai l'impression de suivre des instructions sans toutes les comprendre...C'est assez frustrant! Et ce au risque de mettre un bazar dans les configs!
Si j'y parviens, je ferais un tuto in french pour les nuls (comme moi) :D

bruno83
Messages : 72
Enregistré le : lun. 11 mai 2015 13:29

Re: Le port série? Pas si simple...

Message par bruno83 » lun. 20 juin 2016 12:27

bonjour,
Mettre la dernière mise à jour tu vas voir le logo Bluetooth ou bien avec la commande sudo uname –a tu connaitras ta version jessie.
J’ai testé sur pi2 i : https://github.com/InitialState/rpi-gps ... y-Pi-Setup
Pour le pi3 sur le uart il y a un soucis de fréquence je crois(j'ai lu ça sur des forums anglais) mais je ne me suis pas encore penché dessus (j'ai reçu un pi3 je vais essayer mon journal lumineux et je te dirais si aucun soucis) sur le pi2, je tourne avec la dernière version jessie.
A+ bruno

alematt
Messages : 13
Enregistré le : dim. 19 juin 2016 14:14

Re: Le port série? Pas si simple...

Message par alematt » lun. 20 juin 2016 12:40

Merci Bruno pour ces nouvelles infos. Je n'ai pas mon PI3 sous la main, je regarde tout cela dés ce soir!

alematt
Messages : 13
Enregistré le : dim. 19 juin 2016 14:14

Re: Le port série? Pas si simple...

Message par alematt » lun. 20 juin 2016 18:53

D'aprés les conseils de Bruno, Sylvain et ce lien
http://www.briandorey.com/post/Raspberr ... y-Part-Two


# Rechercher la version de Rasbian Jessie (ici après le 18 mars 2016)

Code : Tout sélectionner

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.4.13-v7+ #894 SMP Mon Jun 13 13:13:27 BST 2016 armv7l GNU/Linux
# Activer le port série

Code : Tout sélectionner

pi@raspberrypi:~ $ sudo raspi-config 
9 Advanced Options Configure advanced settings
A7 Serial Enable/Disable shell and kernel messages on the serial connection
Would you like a login shell to be accessible over serial? --> YES
Reboot now -->No

# D'apres le tuto, cette étape désactive le bluetooth sur les pin GPIO14 et 15 (Pour ma part, cela fonctionne très bien sans, mais pas avec, donc...)

Code : Tout sélectionner

sudo nano /boot/config.txt
# ajouter à la fin

Code : Tout sélectionner

dtoverlay=pi3-miniuart-bt
#Faire une sauvegarde de /boot/cmdline.txt, au cas zoù!

Code : Tout sélectionner

pi@raspberrypi:~ $ sudo cp /boot/cmdline.txt /boot/cmdline.txt.back200616
pi@raspberrypi:~ $ cat /boot/cmdline.txt.back200616
dwc_otg.lpm_enable=0 console=tty1 console=serial0,115200 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
#Modifier /boot/cmdline.txt

Code : Tout sélectionner

pi@raspberrypi:~ $ sudo nano /boot/cmdline.txt 
#supprimer:

Code : Tout sélectionner

 console=serial0,115200

Code : Tout sélectionner

pi@raspberrypi:~ $ cat /boot/cmdline.txt
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
#Reboot du PI3

Code : Tout sélectionner

pi@raspberrypi:~ $ sudo reboot now
# Contrairement à ce que donne le tuto, ce n'est plus ttyAMA0 qui est actif, mais ttyS0
#Configurer le baud de ttyS0

Code : Tout sélectionner

pi@raspberrypi:~ $ stty -F /dev/ttyS0 115200

############################## ESSAIS SOUS PUTTY avec les pins 14 et 15 connectées ensemble #############################
# Script Python

Code : Tout sélectionner

#!/usr/bin/env python
# -*- coding: utf-8 _*

# Import des modules
import serial
import time

ser = serial.Serial(
     port='/dev/ttyS0',
    baudrate = 115200,
    parity=serial.PARITY_NONE,
    stopbits=serial.STOPBITS_ONE,
    bytesize=serial.EIGHTBITS,
    timeout=0.1)

# le programme redemarre toutes les 3s  
while True:
    print("Preparation de l'envoi")
    StrSend = "Hello word!"
    ser.write(StrSend)
    print("Envoi OK: " + StrSend)
    time.sleep(1)
    rcv = ser.readline() # lit jusqu a CRLF
    time.sleep(1)
    print("Recu: " + repr(rcv)) 
    break
print("c'est fini")
# ESSAIS SOUS PUTTY

Code : Tout sélectionner

pi@raspberrypi:~ $  sudo python Essai_Serial.py
Preparation de l'envoi
Envoi OK: Hello word!
Recu: 'Hello word!'
c'est fini
Merci mille fois à Bruno et Sylvain, qui m'ont sauvé de longue soirée de solitude!

spourre
Raspinaute
Messages : 735
Enregistré le : lun. 22 déc. 2014 16:50
Localisation : 67380 LINGOLSHEIM

Re: Le port série? Pas si simple...

Message par spourre » lun. 20 juin 2016 20:01

alematt a écrit : ...
Merci mille fois à Bruno et Sylvain, qui m'ont sauvé de longue soirée de solitude!
A charge de revanche, il y a bien un domaine où, un jour, tu nous aideras.
En attendant, dans l'esprit du libre, tu pourras aider un plus débutant que toi.
Je me plais à souligner régulièrement que l'on a tous été débutant et qu'on est toujours le débutant dans un nouveau domaine ;)

Nota: du dois pouvoir mettre le message à "résolu" pour indiquer que tu as trouvé la solution à ton problème.

Sylvain
Modifié en dernier par spourre le mar. 21 juin 2016 17:06, modifié 1 fois.

alematt
Messages : 13
Enregistré le : dim. 19 juin 2016 14:14

Re: Le port série? Pas si simple...

Message par alematt » lun. 20 juin 2016 21:20

Avec grand plaisir!

bruno83
Messages : 72
Enregistré le : lun. 11 mai 2015 13:29

Re: Le port série? Pas si simple...

Message par bruno83 » mar. 21 juin 2016 15:50

Bonjour,
Super en plus pour le pi3 c’est ttyAMA0 qui n’est plus actif, mais ttyS0 ,ça va m’avancer pour mes essais sur le pi3 donc merci.
Pour le programme python je chipote mais while True : avec break pas trop compris :?: !!
A+ bruno

Répondre

Retourner vers « Débutants »