Parallel Breakout - une première carte DIY pour redécouvrir le port parallèle en Python
Bonjour à tous,
Dans la foulée de la récupération et réutilisation du Dell Optiplex GX260 (sous Puppy Linux), je voulais m'attarder sur l'utilisation du port parallèle pour faire de hacking électronique sous MicroPython.
Quelques constats
Constat 1:
Souder une volée de fils sur un connecteur DB25 est une approche idéal pour favoriser un accident inopiné (mauvais raccordement, injection, court-circuit.
Constat 2:
Le port parallèle (DB25) est difficile d'accès puisqu'il est à l'arrière du PC. C'est très bien pour brancher une imprimante mais nettement moins pratique pour faire de l'électronique!
Le manque d'accessibilité n'est pas seulement un frein mais impose de se lever, lecture à l'envers, vérification fastidieuse... donc tout ce qui peut faciliter un raccordement accidentel.
Constat 3:
Le port parallèle ne transporte pas d'alimentation. Toute électronique externe devra donc disposer de sa propre alimentation.
Conception d'un carte breakout
Pour limiter les risques d'incidents, j'ai préparé une carte breakout permettant:
- D'exposer la connectique DB25 sur un connecteur IDC 2x20, permettant ainsi d'employer un câble/ruban GPIO Raspberry-Pi pour déporter la connectique vers une carte fille.
- De recevoir une tension de 5V via un port MicroUSB
- De créer une tension de 3.3V (800mA max)
- D'exposer les tensions de 5V et 3.3V sur le connecteur IDC (donc transporter vers la carte fille).
Les points GND, 5V, 3V3 sont positionnés aux les mêmes que pour un Pi. - Rail d'alimentation 5V et Rail 3V3
- Sérigraphie détaillées au dessus et en dessous de la carte!
Les libellés détaillés permettent de faire du prototypage directement avec la carte. Rien n'oblige d'utiliser un connecteur IDC et un ruban GPIO... il est possible de prototyper directement sur la carte mais cela n'est pas recommander.
Des idées de cartes filles
- Carte T-Cobbler pour prototyper (style Raspberry-Pi mais pour le port parallèle)
- Carte Parallèle vers I2C (qwiic et StemmaQT compatible)
- Carte 8 bit OUTPUT + 8 bit INPUT
- Carte 4 Relais
- Carte ADC capture analogique
- Carte 1Wire
Documentation du port parallèle
C'est aussi l'occasion de revenir sur la documentation du port parallèle.
Brochage Connecteur Parallèle sur PC (vue de Face) Source: ??? |
Broches de données
Les broches de données D0..D7 sont en sorties uniquement.
Elles permettent d'envoyer des données vers l'imprimante. L'ordinateur présente les données sur le bus puis pulse la broche Strobe (C0, pulse HIGH) pour indiquer à l'imprimante qu'elle peut capturer les données.
Broches de statut
Les broches de statut sont des broches en entrée uniquement.
Pin# | BitName | ShortName | Description |
---|---|---|---|
15 | S3 | ERROR | Printer signal an Error (set to LOW) |
13 | S4 | SELECT-IN | Select IN. Daisy chain Select signal. |
12 | S5 | PAPER-OUT | Paper Error/Paper Out. Inform that page is out or no more paper. |
10 | S6 | ACK | Acknowledge. The printer inform computer that data have been acquired and processed. Then it printed will reset Busy line to LOW. |
11 | S7 | BUSY | The printer set this line LOW when it is ready to receive data. When the printer acquire the data on the bus (following a strobe), it set this line HIGH to indicates data processing, then set ACK when finished, finally set Busy back to LOW |
Broches d'entrée/sortie
Certaines broches peuvent être configurées en entrée ou en sortie.
Ces broches sont configurées en sorties par défaut. Il faut donc les reconfigure et être très prudent sur l'électronique employée (afin de ne pas mettre à la masse une broche configurée en sortie).
Pin# | BitName | ShortName | Description |
---|---|---|---|
1 | /C0 | STROBE | IN/OUT. Pulse HIGH to inform the printer to fetch the data placed on the bus. |
14 | /C1 |
LINE-FEED | IN/OUT. Auto LineFeed. When LOW it does a LineFeed after each Carriage-Return. When HIGH it only do Carriage-Return. |
16 |
/C2 | RESET |
IN/OUT. Also named Initialize. Set LOW for 50ms to reset the printer and clear entry buffer. |
17 | /C3 |
SEL-PRN |
IN/OUT. Select IN. Host set this line LOW to select the device. Printer can be put online/offline from the computer. |
8 bits en entrées?
S'il est évident que le port parallèle dispose de sorties 8 bits (en sortie uniquement), comment faire pour disposer de 8 bits en entrées?
Il y a deux options:
Option 1: 8 broches en entrées
Source: ??? |
Option 2: 4 broches en entrées (Nibble)
Pour éviter de reconfigurer les broches Cx en entrée, il est tout à fait envisageable de diviser les 8 bits d'entrées en deux Nibbles de 4 bits. Les Nibbles seront alors lu consécutivement en deux opérations sur les bits de statut (Sx) qui sont déjàa préconfigurés en entrées.Source: ??? |
- lecture/acquisition plus lente puisqu'il faut deux opérations pour lire un octet.
- Pas de reconfiguration des sorties Cx en entré. Limite les risques
- Encore une broche de statut disponible (S3: Error). Entrée pouvant être réutilisée.
- Encore 3 broches C1..C3 disponibles. Etant configurées en sorties par défaut, elles peuvent servir à créer une logique de contrôle.
suggestion:
- Utiliser C1 pour générer un signal d'horloge (synchronisation)
- Utiliser C2 & C3 pour créer un sélecteur 4 bits (00,01,11,10)
Écrire un commentaire