Afficher et commander les signaux de sortie d'un port parallèle : Différence entre versions

De L'abscisse - FabLab et Hackerspace de Dijon
Aller à : navigation, rechercher
m (Sous Ubuntu)
m (Regroupement des pages dans la catégorie Électronique/HackLab)
 
(29 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
{{redac}}
 +
 
Construire un petit circuit qui permet de visualiser et de récupérer les signaux de sortie d'un port parallèle. Les signaux seront activés par programmation du port //.
 
Construire un petit circuit qui permet de visualiser et de récupérer les signaux de sortie d'un port parallèle. Les signaux seront activés par programmation du port //.
  
Ligne 29 : Ligne 31 :
  
 
[[Fichier:Schema_fonctionnel_parport.png]]<br />
 
[[Fichier:Schema_fonctionnel_parport.png]]<br />
Schéma réalisé avec Dia
+
Schéma réalisé avec Dia ([[:Fichier:Schema_fonctionnel_parport.zip |fichier source]])
 +
 
 +
=== Principe de fonctionnement ===
 +
 
 +
Rien d’exceptionnel sur ce schéma mis à part la [[protection des LEDs à l'aide de résistance]].
  
=== tracé du circuit imprimé ===
+
=== Tracé du circuit imprimé ===
 +
{{fixme}}
  
 
==Étape par étape==
 
==Étape par étape==
Ligne 76 : Ligne 83 :
 
==== Installation du paquetage parport ====
 
==== Installation du paquetage parport ====
  
Le paquet parport est une interface pour le port //
+
Le paquet parport est une interface pour le port //, voici la page qui lui est dédiée : http://npmjs.org/package/parport
  
Page du paquetage : http://npmjs.org/package/parport
+
Se placer dans un répertoire dédié au développement pour centraliser les fichiers dans votre système :
 
 
Se placer dans un répertoire dédié au développement :
 
 
     $ mkdir dev
 
     $ mkdir dev
 
     $ cd dev
 
     $ cd dev
Ligne 86 : Ligne 91 :
  
 
==== Code Javascript ====
 
==== Code Javascript ====
 +
 +
===== Code Javascript minimal =====
  
 
Dans le répertoire de dev, éditer un nouveau fichier nommé par exemple '''test.js''' et saisir le code suivant :
 
Dans le répertoire de dev, éditer un nouveau fichier nommé par exemple '''test.js''' et saisir le code suivant :
Ligne 136 : Ligne 143 :
 
valeur décimal:_128_64_32_16_8_4_2_1<br />
 
valeur décimal:_128_64_32_16_8_4_2_1<br />
 
ex:______________0___0__1__1_0_1_0_0 =32+16+4=52<br />
 
ex:______________0___0__1__1_0_1_0_0 =32+16+4=52<br />
 +
 +
{| centre" width="80%"
 +
|+ Calcul des valeurs en décimal
 +
|-
 +
! scope=col | Valeur du bit
 +
! scope=col | Calcul
 +
! scope=col | Valeur décimale
 +
|-
 +
| width="33%"  align="center" |
 +
b3 = 1
 +
| width="34%" align="center" |
 +
1 x 2³ = 1 x 2 x 2 x 2
 +
| width="33%" align="center" |
 +
8
 +
|-
 +
| width="33%" align="center" |
 +
b2 = 0
 +
| width="34%" align="center" |
 +
0 x 2² = 0 x 2 x 2
 +
| align="center" |
 +
0
 +
|-
 +
| align="center" |
 +
b1 = 0
 +
| align="center" |
 +
0 x 2¹ = 0 x 2
 +
| align="center" |
 +
0
 +
|-
 +
| align="center" |
 +
b0 = 1
 +
| align="center" |
 +
1 x 2⁰ = 1 x 1
 +
| align="center" |
 +
1
 +
|}
 +
 +
{| centre" width="80%"
 +
|+ Valeur décimal de chaque bit
 +
|-
 +
| B7
 +
| B6
 +
| B5
 +
| B4
 +
| B3
 +
| B2
 +
| B1
 +
| B0
 +
|-
 +
| 128
 +
| 64
 +
| 32
 +
| 16
 +
| 8
 +
| 4
 +
| 2
 +
| 1
 +
|}
 +
 +
===== Documentation du module parport =====
 +
 +
https://npmjs.org/package/parport
  
 
===== D'autres programmes =====
 
===== D'autres programmes =====
Ligne 146 : Ligne 215 :
  
 
=== python ===
 
=== python ===
Il existe un module nommé pyParallel. Celui-ci encapsule l'accès pour le port parallèle. Il fournit des outils pour de Python fonctionnant sous Windows et Linux.
+
Il existe un module nommé pyParallel. Celui-ci encapsule l'accès pour le port parallèle. Il fournit des outils pour de Python fonctionnant sous Windows et Linux.<br />
 
 
 
http://pyserial.sourceforge.net/pyparallel.html
 
http://pyserial.sourceforge.net/pyparallel.html
  
==== Installation manuelle ====
+
Site de la version officielle : http://pyserial.sourceforge.net/pyparallel.html
  
Télécharger la dernière version de pyParellel sur le site officiel à l'adresse suivante :<br />
+
Version de pyParellel du dépôt de makerbot http://github.com/makerbot/pyserial
http://sourceforge.net/projects/pyserial/<br />
 
  
Ou utiliser la commande wget pour récupérer la version 2.5<br />
+
==== Installation manuelle ====
    $ wget http://downloads.sourceforge.net/project/pyserial/pyserial/2.5/pyserial-2.5.tar.gz
 
  
Désarchiver<br />
+
Télécharger la version de pyParellel depuis le dépôt de makerbot à l'adresse suivante : http://github.com/makerbot/pyserial
    $ tar -xvf pyserial-2.5.tar.gz
 
  
Installer<br />
+
    $ git clone https://github.com/makerbot/pyserial.git
 +
    $ cd pyserial/pyparallel
 
     $ su
 
     $ su
     # python setup.py install
+
     $ python setup.py install
  
 
==== Paquet pour Ubuntu ====
 
==== Paquet pour Ubuntu ====
  
 
https://launchpad.net/ubuntu/+source/pyparallel
 
https://launchpad.net/ubuntu/+source/pyparallel
 +
 +
==== Code python ====
 +
 +
===== Code python minimal =====
 +
 +
    $ python
 +
    >>> import parallel
 +
    >>> p = parallel.Parallel()    # open LPT1
 +
    >>> p.setData(0x55)
 +
    >>> quit()
 +
 +
Les 8 LEDs vertes doivent s'allumer une sur deux.
 +
 +
===== Documentation de l'API =====
 +
 +
http://pyserial.sourceforge.net/pyparallel.html#module-parallel
 +
 +
===== D'autres programmes =====
 +
 +
Un exemple d'utilisation ici : http://sourceforge.net/p/pyserial/code/461/tree/trunk/pyparallel/examples/
 +
 +
Retrouvez de nombreux scripts à l'adresse suivante :
 +
https://gitorious.org/lpp
 +
 +
Cloner le dépôt :
 +
    $ git clone git://gitorious.org/lpp/lpp.git lpp
 +
 +
=== C ===
 +
 +
La programmation du port parallèle en C est très bien expliqué sur le site de UnixGarden à l'adresse :
 +
http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/programmation-du-port-parallele
 +
 +
L'assemblage du code proposé sur le site UnixGarden est téléchargeable sur le dépôt Gitorious du projet lpp : https://gitorious.org/lpp/lpp/source/8efa486ca351c4ceb57bb6ccec90363b6d4c01a6:c/testParport.c
 +
 +
===== Obtenir le fichier source =====
 +
 +
====== Recopier les sources ======
 +
 +
Copier coller les sources depuis https://gitorious.org/lpp/lpp/source/8efa486ca351c4ceb57bb6ccec90363b6d4c01a6:c/testParport.c dans un fichier nommé testParport.c
 +
 +
====== Cloner le dépôt ======
 +
 +
    $ git clone git://gitorious.org/lpp/lpp.git lpp
 +
    $ cd lpp/c
 +
    $ cat testParport.c
 +
 +
===== Compilation =====
 +
 +
GCC doit être installé sur votre système.
 +
 +
    $ gcc testParport.c -o testParport
 +
 +
La compilation doit en principe ne renvoyer aucune erreur.
 +
 +
===== Exécuter le programme =====
 +
 +
    $ ./testParport
 +
 +
Le programme ne fait rien de particulier, il affiche "Test port parallèle". Il ne doit pas retourner d'erreur.
 +
 +
===== D'autres programmes =====
 +
 +
Retrouvez de nombreux scripts à l'adresse suivante :
 +
https://gitorious.org/lpp
 +
 +
Cloner le dépôt :
 +
    $ git clone git://gitorious.org/lpp/lpp.git lpp
  
 
==Liens==
 
==Liens==
Ligne 190 : Ligne 323 :
 
https://npmjs.org/package/parport
 
https://npmjs.org/package/parport
  
[[Catégorie:HackLab]] [[Catégorie:Les projets du HackLab]] [[Catégorie:Fiches Pratiques]] [[Catégorie:Montages faibles coûts]] [[Catégorie:Montages faciles]]
+
==Auteurs==
 +
 
 +
[[Utilisateur:Dlareg|Dlareg]] et [[Utilisateur:Fenwe|Fenwe]]
 +
 
 +
[[Catégorie:Les_projets_du_HackLab]]
 +
 
 +
[[Catégorie:Électronique/HackLab]] [[Catégorie:Fiches Pratiques]] [[Catégorie:Montages faibles coûts]] [[Catégorie:Montages faciles]]

Version actuelle datée du 10 juin 2014 à 20:41

Dialog-warning.png Article en cours de rédaction Dialog-warning.png


Construire un petit circuit qui permet de visualiser et de récupérer les signaux de sortie d'un port parallèle. Les signaux seront activés par programmation du port //.

Présentation

Ce petit circuit permettra d'allumer une LED par sortie activée. 8 LEDs vertes pour les données (DATA) et 4 LEDs rouges pour les contrôles. Les connecteurs à plots permettent de récupérer le signal vers un autre montage si besoin. Il est possible de réaliser ce circuit sur une plaque d'expérimentation ou sur une plaque de cuivre. Les signaux seront activés par programmation du port // en Javascript, en C ou encore en python.

IMG 4357.jpg

Niveau de difficulté

Orange.png

Outillage nécessaire

Composants nécessaires

  • un câble port parallèle DB 25
  • 8 LED vertes
  • 4 LED rouges
  • 12 résistances 150 Ohms (Marron Vert Marron)
  • 12 PIN - Barrette sécable à plots
  • plaque d'expérimentation à pastilles de 9 × 36

Schémas

Schéma de principe

Schema fonctionnel parport.png
Schéma réalisé avec Dia (fichier source)

Principe de fonctionnement

Rien d’exceptionnel sur ce schéma mis à part la protection des LEDs à l'aide de résistance.

Tracé du circuit imprimé

Dialog-warning.png Fix Me !

Vous pouvez ajouter les informations manquantes !!!

Étape par étape

Préparation du connecteur DB25

Le but est de conserver le connecteur mâle DB25, celui qui se branche sur l'ordinateur. Il faut donc couper le câble du côté opposé au connecteur que vous souhaitez conserver. Il faut ensuite enlever un bon bout de gaine, environ 5 cm, puis dénuder les 25 fils un à un. Enfin il faut étamer les fils un à un. Notre câble est prêt.

Repérer les fils

Avec le testeur de continuité, il faut tester les fils pour déterminer la couleur de chacun. On prendra soin de noter sur une feuille la correspondance entre le numéro de PIN du connecteur et la couleur du fil.

Préparation de la plaque

Découper une plaque 9 × 36 pastilles (3 pastilles par LED sur la longueur) qui va accueillir les quelques composants nécessaires au montage.

Souder les composants

On commence par les composants les plus bas, les résistances. Ensuite les LEDs, on prendra soin de les tester avant, certaines peuvent être défectueuses. Enfin on soude les PINs. Pour qu'elles soient soudées droites on peut les tenir avec un connecteur PIN femelle, ça évite également de se brûler les doigts.

Souder les fils du câble port parallèle

On essaye d'écarter les fils qui ne servirons pas avant de commencer. Puis on commence à souder les fils par l'une des extrémités de la carte. Par exemple de D7 à D0 puis les contrôles ou l'inverse.
Au fur et à mesure on prendra soin de démêler les fils pour les faire aller au plus court avant de les souder.

Programmation du port //

NodeJS

Node.js est un framework libre événementiel en JavaScript orienté vers les applications réseau.
Source : http://fr.wikipedia.org/wiki/Node.js

Site officiel de NodeJS: http://nodejs.org/

Installation de NodeJS

Sous Debian et dérivé (Ubuntu) :

   # apt-get install nodejs

Sous Mageia :

   # urpmi nodejs

Installation du paquetage parport

Le paquet parport est une interface pour le port //, voici la page qui lui est dédiée : http://npmjs.org/package/parport

Se placer dans un répertoire dédié au développement pour centraliser les fichiers dans votre système :

   $ mkdir dev
   $ cd dev
   $ npm install parport

Code Javascript

Code Javascript minimal

Dans le répertoire de dev, éditer un nouveau fichier nommé par exemple test.js et saisir le code suivant :

  console.log('Lancement du programme !');
  var par = require('parport');
  var port = new par.Port();
  port.writeData(255);

Pour lancer le programme, utiliser la commande suivante :

   $ node test.js

Les 8 LEDs vertes doivent s'allumer.

Régler les droits de l'utilisateur

L'utilisateur doit avoir les droits suffisants pour utiliser le périphérique /dev/parport0
Si ça n'est pas le cas un message d'erreur apparaît :

   Error: Unable to open /dev/parport0

Pour ajouter votre utilisateur dans le bon groupe il est possible d'éditer le fichier /etc/group et d'ajouter à la main le nom de votre utilisateur comme ci-dessous (modification en root):

   lp:x:7:nom_utilisateur

Sinon utilisez la commande usermod

   # usermod -a -G lp nom_utilisateur

L'ajout au groupe est effectif mais il faut relancer la session pour sa prise en compte.

Explications du code source
   console.log('Lancement du programme !'); // affichage d'un message en console
   var par = require('parport');  // chargement du module porpart
   var port = new par.Port();     // connexion au port parallèle
   port.writeData(255); // écrire sur le registre de données, la valeur 255 allumera les 8 LEDs du registre de données
   // pour activé 1 ou plusieurs LEDs ils faut additionner l'équivalence décimal du bit souhaité
   // bit:____________ 7___6__5__4_3_2_1_0
   // valeur décimal:_128_64_32_16_8_4_2_1
   // ex:______________1___0__1__1_0_1_0_0 =128+32+16+4=180
   // a vérifier la gestion du signe (+-127 ou 0..255)
   port.writeControl(20); // écrire sur le registre de contrôle
   // pour écrire sur les 4 bits relié au registre de contrôle :
   // valeur décimal:_16_8_4_2_1
   // ex:______________1_0_1_0_0 =16+4=20
   // a noté que les registres et le rôle des bits n'ont plus de sens ici (DATA,CONTROL,STATUS et ACK/INIT/etc) sont utilisés indépendamment.
Manipuler l'affichage des 8 LEDs, manipuler un octet en décimale

255 allumera les 8 LEDs du registre de données
pour activer 1 ou plusieurs LEDs ils faut additionner l'équivalence décimal du bit souhaité
bit:____________ 7___6__5__4_3_2_1_0
valeur décimal:_128_64_32_16_8_4_2_1
ex:______________0___0__1__1_0_1_0_0 =32+16+4=52

Calcul des valeurs en décimal
Valeur du bit Calcul Valeur décimale

b3 = 1

1 x 2³ = 1 x 2 x 2 x 2

8

b2 = 0

0 x 2² = 0 x 2 x 2

0

b1 = 0

0 x 2¹ = 0 x 2

0

b0 = 1

1 x 2⁰ = 1 x 1

1

Valeur décimal de chaque bit
B7 B6 B5 B4 B3 B2 B1 B0
128 64 32 16 8 4 2 1
Documentation du module parport

https://npmjs.org/package/parport

D'autres programmes

Retrouvez de nombreux scripts à l'adresse suivante : https://gitorious.org/lpp

Cloner le dépôt :

   $ git clone git://gitorious.org/lpp/lpp.git lpp

python

Il existe un module nommé pyParallel. Celui-ci encapsule l'accès pour le port parallèle. Il fournit des outils pour de Python fonctionnant sous Windows et Linux.
http://pyserial.sourceforge.net/pyparallel.html

Site de la version officielle : http://pyserial.sourceforge.net/pyparallel.html

Version de pyParellel du dépôt de makerbot http://github.com/makerbot/pyserial

Installation manuelle

Télécharger la version de pyParellel depuis le dépôt de makerbot à l'adresse suivante : http://github.com/makerbot/pyserial

   $ git clone https://github.com/makerbot/pyserial.git
   $ cd pyserial/pyparallel
   $ su
   $ python setup.py install

Paquet pour Ubuntu

https://launchpad.net/ubuntu/+source/pyparallel

Code python

Code python minimal
   $ python
   >>> import parallel
   >>> p = parallel.Parallel()     # open LPT1
   >>> p.setData(0x55)
   >>> quit()

Les 8 LEDs vertes doivent s'allumer une sur deux.

Documentation de l'API

http://pyserial.sourceforge.net/pyparallel.html#module-parallel

D'autres programmes

Un exemple d'utilisation ici : http://sourceforge.net/p/pyserial/code/461/tree/trunk/pyparallel/examples/

Retrouvez de nombreux scripts à l'adresse suivante : https://gitorious.org/lpp

Cloner le dépôt :

   $ git clone git://gitorious.org/lpp/lpp.git lpp

C

La programmation du port parallèle en C est très bien expliqué sur le site de UnixGarden à l'adresse : http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/programmation-du-port-parallele

L'assemblage du code proposé sur le site UnixGarden est téléchargeable sur le dépôt Gitorious du projet lpp : https://gitorious.org/lpp/lpp/source/8efa486ca351c4ceb57bb6ccec90363b6d4c01a6:c/testParport.c

Obtenir le fichier source
Recopier les sources

Copier coller les sources depuis https://gitorious.org/lpp/lpp/source/8efa486ca351c4ceb57bb6ccec90363b6d4c01a6:c/testParport.c dans un fichier nommé testParport.c

Cloner le dépôt
   $ git clone git://gitorious.org/lpp/lpp.git lpp
   $ cd lpp/c
   $ cat testParport.c
Compilation

GCC doit être installé sur votre système.

   $ gcc testParport.c -o testParport

La compilation doit en principe ne renvoyer aucune erreur.

Exécuter le programme
   $ ./testParport

Le programme ne fait rien de particulier, il affiche "Test port parallèle". Il ne doit pas retourner d'erreur.

D'autres programmes

Retrouvez de nombreux scripts à l'adresse suivante : https://gitorious.org/lpp

Cloner le dépôt :

   $ git clone git://gitorious.org/lpp/lpp.git lpp

Liens

Afficheur à LED par Frédéric Jolliton
http://www.linux-france.org/prj/ledpanel/ledpanel.html

Le programme qui va avec (le lien est mort sur la page du dessus) mais que je n'ai pas réussi à compiler
ftp://linux-france.com/pub/prj/ledpanel/

Programmation en C sur le port // avec le schéma du port, les broches E/S sont bien décrites
http://www.unixgarden.com/index.php/gnu-linux-magazine-hs/programmation-du-port-parallele (bonne vulgarisation technique)

Un tutos en PDF pour remplacer l'imprimante par un autre périphérique : des explications, les schémas et la programmation en Basic
http://www.epi.asso.fr/fic_pdf/b81p227.pdf

ECP Parallel LPT port (IEEE-1284A) pinout
(en) http://pinouts.ru/ParallelPorts/ParallelECP_pinout.shtml (en haut de la page se trouve des images pour cabler les fils, coté pc et coté soudure)

Le paquetage parport pour NodeJS
https://npmjs.org/package/parport

Auteurs

Dlareg et Fenwe