RS232 TTL module

Het komt niet vaak meer voor dat je een RS232 seriële poort nodig hebt. Maar omdat deze module nog niet als tutorial beschikbaar is en er nog genoeg systemen met een seriële poort in omloop zijn, vond ik het een aanvulling toch deze interface te bespreken. Misschien wil je twee Raspberry Pi's met elkaar via de seriële interface met elkaar verbinden. Dankzij de MAX3232 chip die dé standaard RS232 interface aanbiedt maak je in een handomdraai een seriële connectie. 

Daar gaan we!

Als eerste sluit je de module volgens onderstaande tabel als volgt aan op de Raspberry Pi.

Let op (instinker): Als technicus weet je dat de Tx (zender) van een apparaat voor de communicatie met de Rx (ontvanger) van het device verbonden moet worden. Dat gaat hier niet op! De Tx van de RS232-module wordt op de Tx (pin 8) van de Pi aangesloten omdat de module een onderdeel wordt van de Pi.

Het aansluitschema ziet er dan als volgt uit:

De connector van de module heeft de volgende pinbezetting.

Pinbezetting female connector (aanzicht)

Handshake
Om te communiceren heb je slechts de vier genoemde pinnen nodig. Wil je het heel netjes doen en ook de ‘handshake’ signalen RTS (request to send) en de CTS (clear to send) gebruiken, moet je er rekening mee houden dat de software hier mogelijk voor aangepast moet worden.

RTS van de ene apparaat wordt met de CTS van het andere apparaat aangesloten. Vervolgens wordt CTS van het ene apparaat met het RTS van het andere apparaat aangesloten. Bij gebruik van een 5-polige seriële kabel kent de kabel twee kruisverbindingen, te weten: Tx/Rx en RTS/CTS.

Moet je om de een of andere reden de handshake signalen gebruiken, maar wil je slechts Tx, Rx en GND voor de communicatie gebruiken, dan kun je RTS en CTS op hetzelfde apparaat met elkaar doorverbinden. Dit komt dan op hetzelfde neer als de aansluittabel die hierboven afgebeeld is, maar dan met een doorverbonden RTS en CTS.

Een andere formfactor van de module met uitgebreide pinnen voor handshake.

MAX3232
Er zijn veel verschillende modellen RS232 modules te koop. De meeste modules zijn voorzien van de MAX3232 chip waarmee dé RS232 communicatie tot stand gebracht kan worden.

TTL en de level shifter
TTL apparaten gebruiken een voedingsspanning van 5V. Een uitgang kan een hoog (logische 1) of laag (logische 0) spanningsniveau aannemen. Laag is maximaal 0,4 V. Hoog is minstens 2,4 V. Een TTL-ingang herkent een logische 1 bij een spanning van minstens 2,0 V en een logische 0 bij een spanning van hoogstens 0,8 V. De stroom die een TTL-uitgang kan leveren is meestal voldoende om tien ingangen te voeden. Dit heet de fan-out.

Als je wat ervaring hebt met de Pi, dan weet je dat de GPIO een maximaal spanningsniveau van 3,3V heeft. Gelukkig is de GPIO robuust en kan deze korte signalen van 5V prima verwerken. Mede hierom sluit ik 3,3V op de module aan, dit betekent dat de module een maximum spanningsniveau van 3,3V kan afgeven aan de GPIO. Dit is veilig en werkt prima als je bijvoorbeeld twee Pi’s op elkaar aansluit via de GPIO.

Echter, het kan zijn dat het apparaat dat je op de RS232 aansluit wel een 5V signaalniveau nodig heeft. Met andere woorden, de module zou dan met 5V gevoed moeten worden. Ook dit valt binnen de specificaties van de chip, maar sla wel even de datasheet erop na. Dit betekent namelijk dat de Pi dus ook 5V op de GPIO te verwerken krijgt. Om dit netjes op te lossen plaats je tussen de GPIO van de Pi en de Tx- en Rx-pinnen van de module een zgn. level shifter om de signalen naar het gewenste niveau te brengen. Kijk hier hoe dit werkt.

Configuratie aanpassen
We moeten als eerste de configuratie van de Pi aanpassen. In dit voorbeeld doen we het via de terminal. Vanuit de desktop is het ook mogelijk dit via de Raspberry Pi Configuratie te doen. Hier hoef je alleen maar de seriële poort te selecteren.

Geef in de terminal de opdracht:

sudo raspi-config

Ga naar de Interface Options

Selecteer Serial Port

Er wordt vervolgens de vraag gesteld of de poort gebruikt mag worden voor de login shell. Dat willen we nu niet. Selecteer hier <No>.

Er volgt een tweede vraag of de hardware van de poort ingeschakeld moet worden. Dat is wat wel willen. Klik hier <Yes>.

Na het selecteren zie je een beknopt overzicht. Klik op <Ok>.

Je bent terug in het hoofdmenu. Sluit deze door <Finish> te selecteren.

Om de instellingen te activeren dient de Pi opnieuw op te starten. Klik hiervoor op <Yes>.

Controleren of de poort beschikbaar is.
Bij de start van de Pi dient de seriële poort gestart te worden. Dit gebeurt doordat de poort in het config.txt-bestand geactiveerd moet zijn. Dit gaan we nu controleren. Geef in de terminal:

cd /boot

ls

We gaan het bestand config.txt openen. Hiervoor werk je vanuit sudo, de superuser.

sudo nano config.txt

Het bestand opent zich in de nano editor. Scroll helemaal naar beneden. Hier zie je dat de enable_uart=1 ingeschakeld is. Als we tijdens de configuratie <No> en <No> gekozen hadden, zou enable_uart=0 zijn.

Sluit nano af met Ctrl-x als enable_uart=1 (= seriële poort actief) er staat.

Aansluiten RS-3232 serieel omzetter
Sluit de serieel module met een kabel (zie hieronder) aan op bijvoorbeeld een pc of een ander apparaat waar een seriële poort op zit en deze met een terminal kunt uitlezen. Ik hoop dat je nog in het bezit bent van een pc of laptop met een 9-pins serieel poort.

Je kunt ook nog Raspberry Pi met een seriële module voorzien en daar een verbinding mee maken en hier Putty opstarten.


Seriële kabel

Je hebt maar drie draden, een male- en een female connector nodig voor een werkende seriële kabel. Als je een lange kabel (>5m) wilt maken, raad ik aan een afgeschermde kabel te gebruiken waar de GND op de afscherming en connector aangesloten is.

Seriële kabel (aanzicht male-female connectoren)

Er zijn veel manieren om naar Apparaatbeheer te gaan. Dit is er een van. Ga op de Windows pc naar de Verkenner en vervolgens naar Deze pc. Klik er met de rechter muisknop op en ga naar Beheren. Afhankelijk van de Windows versie kan het net even anders werken.

Het venster van Computerbeheer opent zich.

Klik op Apparaatbeheer.

Je ziet dat de seriële Communicatiepoort op de pc COM4 is.

Open op de PC Putty en selecteer Serial en geef COM4 in bij de seriële verbinding. De snelheid laten we op 9600 Baud staan.

Klik op [Open]

Het lege terminalscherm van Putty verschijnt.

Bericht versturen

Om een simpel bericht te versturen ga je naar de terminal op de Raspberry Pi en geef je hier het volgende in:

sudo echo -e “hallo \r\n” > /dev/serial0

De super-user stuurt tekst naar de uitgang (/dev/serial0) van de serieel poort.

Nadat je [ENTER] gegeven hebt op de Raspberry Pi, zou je op je PC in Putty de ontvangen tekst moeten zien staan. In dit geval “hallo”, gevolgd door een vrije regel. Hier zorgen /r en /n voor.

Stuur ik wel informatie uit?
Heb je geen mogelijkheid om de module op een pc of tweede Pi aan te sluiten? Een led kan een uitkomst bieden door deze op de 9-polige connector van de module aan te sluiten, te weten de anode (+) op (TxD, pin 2) en de kathode (-) op de GND die gelijk is aan de GND van de Pi.

Zodra je bovenstaande opdracht ingeeft zie je de led even oplichten. Maak je de tekst wat langer, dan zal de led langer oplichten. Je zou ook een oscilloscoop kunnen gebruiken om te zien wat je verstuurt, maar dan moet je die wel hebben.

Led op TxD (pin 2) licht op bij verzenden van data

Ja, ik weet het. De led zou een serieweerstand (minimaal 70Ω bij 3.3V modulevoeding) moeten hebben. In dit geval is de puls dermate klein en kort, dat de led er niet onder te lijden heeft.

Have A Nice Day!