<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
	<id>https://wiki.electroniciens.cnrs.fr/index.php?action=history&amp;feed=atom&amp;title=RS-232</id>
	<title>RS-232 - Historique des versions</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.electroniciens.cnrs.fr/index.php?action=history&amp;feed=atom&amp;title=RS-232"/>
	<link rel="alternate" type="text/html" href="https://wiki.electroniciens.cnrs.fr/index.php?title=RS-232&amp;action=history"/>
	<updated>2026-05-12T20:03:59Z</updated>
	<subtitle>Historique des versions pour cette page sur le wiki</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>https://wiki.electroniciens.cnrs.fr/index.php?title=RS-232&amp;diff=4082&amp;oldid=prev</id>
		<title>William.benharbone le 20 septembre 2019 à 22:05</title>
		<link rel="alternate" type="text/html" href="https://wiki.electroniciens.cnrs.fr/index.php?title=RS-232&amp;diff=4082&amp;oldid=prev"/>
		<updated>2019-09-20T22:05:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nouvelle page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Les_Groupes_ARM_:_Raspberry_Pi#Communication_avec_le_mat.C3.A9riel|Revenir au sommaire du RasberryPi]]&lt;br /&gt;
&lt;br /&gt;
= Choix et identification du port série =&lt;br /&gt;
&lt;br /&gt;
==  RaspberryPI (ttyAMA0) ==&lt;br /&gt;
&lt;br /&gt;
Pour pouvoir utiliser le port série disponible sur les broches &amp;#039;&amp;#039;&amp;#039;13&amp;#039;&amp;#039;&amp;#039; (GND) &amp;#039;&amp;#039;&amp;#039;14&amp;#039;&amp;#039;&amp;#039; (TxD) et &amp;#039;&amp;#039;&amp;#039;15&amp;#039;&amp;#039;&amp;#039; (RxD), nous allons suivre les étapes suivantes (basées sur une installation propre wheezy-raspbian)&lt;br /&gt;
&lt;br /&gt;
0. Ouvrons un terminal sur le Raspberry, ou connectons nous au Raspberry Pi par SSH.&lt;br /&gt;
&lt;br /&gt;
1. une copie de sauvegarde de notre fichier &amp;#039;&amp;#039;&amp;#039;/boot/cmdline.txt&amp;#039;&amp;#039;&amp;#039; pour pouvoir revenir si besoin à la configuration d&amp;#039;origine.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo cp /boot/cmdline.txt /boot/cmdline_backup.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Editons ce fichier &amp;#039;&amp;#039;&amp;#039;/boot/cmdline.txt&amp;#039;&amp;#039;&amp;#039; file :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo nano /boot/cmdline.txt&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ce fichier contient:&lt;br /&gt;
 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait&lt;br /&gt;
&lt;br /&gt;
Nous devons supprimer les paramètres référençant le port UART série (ttyAMA0), ce qui nous donne:&lt;br /&gt;
 dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Rappel&amp;#039;&amp;#039;&amp;#039; pour quitter nano et sauvegarder : CTRL+X et on répond aux questions.&lt;br /&gt;
&lt;br /&gt;
3. Nous Commentons la ligne suivante dans &amp;#039;&amp;#039;&amp;#039;/etc/inittab&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
 #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100&lt;br /&gt;
&lt;br /&gt;
4. Reboot du Raspberry Pi&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo reboot&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== interface RS232 par USB ==&lt;br /&gt;
&lt;br /&gt;
votre interface se connectera toute seule, il vous suffira de faire alors un &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 dmesg | grep tty&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
vous avez de visible &amp;#039;&amp;#039;&amp;#039;ttyUSBx&amp;#039;&amp;#039;&amp;#039; où &amp;#039;&amp;#039;&amp;#039;x&amp;#039;&amp;#039;&amp;#039; représente le numéro de votre interface (ttyUSB0)&lt;br /&gt;
&lt;br /&gt;
= Configuration =&lt;br /&gt;
&lt;br /&gt;
Pour connaitre la configuration actuelle :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 stty -F /dev/ttyUSB0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
qui nous reponds :&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
speed 9600 baud; line = 0;&lt;br /&gt;
-brkint -imaxbel&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
= Communication =&lt;br /&gt;
&lt;br /&gt;
Communiquer vers le périphérique par le shell est aisée :&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
echo &amp;quot;hello world&amp;quot; &amp;gt; /dev/ttyAMA0&lt;br /&gt;
# ou&lt;br /&gt;
echo &amp;quot;hello world&amp;quot; &amp;gt; /dev/ttyUSB0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ecriture RS232 via le shell ==&lt;br /&gt;
&lt;br /&gt;
créons un fichier nommé rs232.sh et éditons le !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 cd ~/www             # plaçons nous dans notre home/pi/www&lt;br /&gt;
 geany rs232.sh       # editons le fichier rs232.sh&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
plaçons y le code&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 #---------------------------------------------------------------------&lt;br /&gt;
 stty -F /dev/ttyAMA0 115200 cs8 -cstopb -parenb -cooked min 1 time 1&lt;br /&gt;
 #---------------------------------------------------------------------&lt;br /&gt;
 # -e     interpréter les caractères déspécifiés par une contre-oblique&lt;br /&gt;
 # \r = retour chariot&lt;br /&gt;
 # \n = nouvelle ligne&lt;br /&gt;
 #---------------------------------------------------------------------&lt;br /&gt;
 echo -e &amp;quot;hello \r\n&amp;quot; &amp;gt; /dev/ttyUSB0&lt;br /&gt;
 # ou echo -e &amp;quot;hello \r\n&amp;quot; &amp;gt; /dev/ttyAMA0&lt;br /&gt;
 #---------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
________ POUR ttyAMA0 (RS232 sur la carrte raspberryPI uniquement) ________&lt;br /&gt;
&lt;br /&gt;
Le problème principal de ce code est qu&amp;#039;il faut être root pour le lancer, l&amp;#039;utilisateur &amp;#039;&amp;#039;&amp;#039;pi&amp;#039;&amp;#039;&amp;#039; n&amp;#039;est pas autorisé à jouer avec :&lt;br /&gt;
&lt;br /&gt;
La méthode consiste à chercher qui gère les droits !&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo grep tty /lib/udev/* -iRH&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
nous donne le résultat suivant&lt;br /&gt;
&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:SUBSYSTEM==&amp;quot;tty&amp;quot;,                                GROUP=&amp;quot;dialout&amp;quot;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:# vc devices (all members of the tty subsystem)&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:KERNEL==&amp;quot;tty&amp;quot;,                   MODE=&amp;quot;0666&amp;quot;,    GROUP=&amp;quot;root&amp;quot;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:KERNEL==&amp;quot;tty[0-9]*&amp;quot;,                             GROUP=&amp;quot;root&amp;quot;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:KERNEL==&amp;quot;pty*&amp;quot;,                  MODE=&amp;quot;0666&amp;quot;,    GROUP=&amp;quot;tty&amp;quot;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:KERNEL==&amp;quot;iseries/vtty*&amp;quot;,                 GROUP=&amp;quot;root&amp;quot;&lt;br /&gt;
&lt;br /&gt;
notre idée est donc d&amp;#039;autoriser notre utilisateur pi ( puis www-data ) pour utiliser les interfaces&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo addgroup pi dialout&lt;br /&gt;
 sudo addgroup www-data dialout&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
donner des droits root peut s&amp;#039;averer dangereux et n&amp;#039;est jamais recommander, nous allons donc descendre les tty dans un groupe moins élevé&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo nano /lib/udev/rules.d/91-permissions.rules # et nous modifions les lignes&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:SUBSYSTEM==&amp;quot;tty&amp;quot;,                                GROUP=&amp;quot;dialout&amp;quot;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:# vc devices (all members of the tty subsystem)&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:KERNEL==&amp;quot;tty&amp;quot;,                   MODE=&amp;quot;0666&amp;quot;,    GROUP=&amp;quot;&amp;#039;&amp;#039;&amp;#039;dialout&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:KERNEL==&amp;quot;tty[0-9]*&amp;quot;,                             GROUP=&amp;quot;&amp;#039;&amp;#039;&amp;#039;dialout&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:KERNEL==&amp;quot;pty*&amp;quot;,                  MODE=&amp;quot;0666&amp;quot;,    GROUP=&amp;quot;tty&amp;quot;&lt;br /&gt;
 /lib/udev/rules.d/91-permissions.rules:KERNEL==&amp;quot;iseries/vtty*&amp;quot;,                 GROUP=&amp;quot;&amp;#039;&amp;#039;&amp;#039;dialout&amp;#039;&amp;#039;&amp;#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Maintenant le script peut être lancé sans le sudo&lt;/div&gt;</summary>
		<author><name>William.benharbone</name></author>
	</entry>
</feed>