v20180620
home >> hardware >> rs232

Opgelet
Heden is de PiSerial module een onderdeel van het besturingssysteem geworden.
Een paar zaken zijn veranderd, maar nog niet verwerkt in deze webpagina.

RISC OS en RS232

Mijn Raspberry Pi heeft geen RS232 aansluiting, heeft het zin verder te lezen ?
Zijn de GPIO pinnen TxD en RxD te gebruiken als RS232 ?
Wat is het verschil tussen TTL en RS232 ?
Kan ik beter een USB gebruiken ?
Kan ik mijn projecten met RS232 nog op de Pi gebruiken ?
Ja.
Zeker, maar ...
Wordt uitgelegd.
Misschien.
Natuurlijk.

Deze "serial.zip" bevat RISC OS drivers en programma's.

Inhoud
- Seriële verbinding ?
- TTL of RS232 op mijn computer ?

OS en drivers nakijken
- Stappenplan: OS en drivers in orde ?
- App "Show devices" toont OS devices
- App "!Serial" toont serial drivers
- Drivers toevoegen/verwijderen

De TTL/RS232 testen
- We gebruiken de app "!Connector"
- Controle met sub-D loopback stekker
- Controle met loopback op de RPI
- Controle met een Arduino
- Controle met seriele hardware
- Controle met ¨Null Modem¨ tussen 2 computers

TTL/RS232 in een programma

Varia
- Converters TTL, RS232, USB, ...
- Enkele bronnen en nuttige links

     

top

Seriële verbinding ?

Een UART of Universal Asynchronous Receiver/Transmitter is een van de eerste en belangrijkste bouwstenen van een computer.
Volgens een vaste snelheid (baudrate) worden een aantal bits na elkaar naar buiten geschoven of ingelezen, respectievelijk verzonden (TxD) of ontvangen (RxD).
TTL 3.3/5V betekent dat we werken met een spanning op het niveau van de computer/processor zelf.
RS232 betekent dat we versterken om langere afstanden te kunnen overbruggen.
.
    In de verkleinde afbeelding hiernaast (bron), zien we bovenaan het seriele signaal op TTL niveau en onderaan op RS232 niveau.
Klik op de afbeelding en deze wordt in een apart venster op ware grootte weergegeven.
De computer verzendt de hoofdletter ¨J¨ (74 decimaal / 4A hexidecimaal of 01001010 binair).
Eerst wordt een startbit verzonden: gedurende de ingestelde baudrate-tijd gaat de uitgang van de UART laag, het RS232 signaal (steeds omgekeerd) gaat naar plus, mogelijk zelfs tot +15V.
Dan worden de bits doorgegeven, beginnend met b0, de bit met de laagste binaire waarde.
.... enz.
Nu kennen we vele verbeteringen/variaties, maar eigenlijk zijn het allemaal seriele communicaties: RS485, I2C, ISP, SBus, CAN, SATA, USB (of de "Universele Seriele Bus"), ..... maar eigenlijjk ook LAN, Bleutooth, WiFi, LoRa, .... .

Verbindt deze verschillende soorten van nooit met elkaar want
- de logische niveau's zijn misschien verwisseld
- de volgorde en/of codering is anders
- de spanningen zijn verschillen, bv. de 12V van de RS232 kan een TTL ingang stuk maken, dus de hardware van uw computer wordt beschadigd is alles wordt onbruikbaar.

Een RS232 aansluiting zie je tegenwoordig steeds minder op een computer, maar de UART kan wel ter beschikking staan en/of intern gebruikt worden voor iets anders.
Zo heeft de Raspberry Pi 3 wel 2x een UART
- eentje voor de bluetooth en
- eentje voor de gebruiker op de GPIO pinnen.

Omzetters (convertors) bestaan er in alle soorten en maten. Misschien is de USB naar RS232 wel de meest bekende met zijn ingebouwde FTDI chip..

top

TTL of RS232 op mijn computer ?

Een nakijken m.b.v. dit eenvoudig overzicht
computer aansluiting driver mijn bron
Acorn Archimedes
A5000
Acorn RISC PC
Volledige RS232 sub-D 9p
pinout van de 9p sub-d connector
Dummy
InternalPC
InternalNH (OS 5+)
BBC
IyonixPC 2x volledige RS232 sub-D 9p
Dummy
InternalNH (1ste poort)
Internal32 (2de poort)
XAT
A9
volledige (?) RS232 sub-D 9p
Dummy
InternalNH
BeagleBoard
on volledige (?) RS232 sub-D 9p
Dummy
InternalNH
PandaBoard
onvolledige RS232 sub-D 9p
Dummy
InternalNH
Raspberry Pi TTL 3.3 V met enkel Rx en Tx Dummy
PiSerial*
Tank Stage
RPi + S&P HAT RS232 sub-D 9 met Rx, Tx, RTS en CTS Dummy
PiSerial*
Elesar Ltd
ARMX6 (imx6) RS232 sub-D 9 met Rx, Tx, RTS en CTS Dummy
InternalNH*
BBC
Titanium 2x RS232 (full?) Elesar Ltd
Evt. ook PipeA = Communiceert met Pipe B
PipeB = Communiceert met Pipe A
TelNet = Verbindig via TCP/IP
BBC
Niet vermeld of grijs, dan heb ik het nog niet persoonlijk kunnen testen.
* Vanaf 10-10-2016 driver in het OS, dus niet meer apart inlagen !

Als we de laatste versie van ons besturingssysteem hebben geinstalleerd, zou de poort kunnen werken.
We kunnen onderstaande stappen overslaan en gaan direct naar controlen met "!Connector".

top

OS en drivers nakijken

Stappenplan: OS en drivers in orde ?

Helaas, meestal niet ..... Maar we kunnen het wel gemakkelijk in orde brengen.
In bovenstaande tabel staat bij elke RISC OS computer de driver die we nodig hebben.
Alle drivers zitten in de zip, zie bij de inleiding bovenaan.

Stappenplan
- App "Show devices" toont OS devices
- App "!Serial" toont huidige
- Drivers toevoegen/verwijderen

top

App "Show devices" toont OS devices

Ik heb een Rasapberry Pi of ik zie een RS232 aansluiting, maar ...
icoon show devices     In "serial.zip" zit o.a. "het programma Show Devices". Ik schrijf het tussen aanhalingstekens, want het is slechts 1 commando lang. Gewoon dubbel-klikken.
Mijn versie van het OS voor deze Raspberry Pi ondersteunt 1 seriele poort en 5 usb's.
resultaat show devices
Dat is een goed begin, maar nog geen garantie dat de poort zal werken want we hebben
- nog een universele driver nodig, meestal via het programma !SerialDev",
- ofwel een programma dat rechtstreeks met dit device kan werken.

top

App "!Serial" toont serial drivers

icoon programma serial     "!Serial" is een programma dat een mooi overzicht geeft van alle actieve (block-)drivers.
Voor mijn Raspberry Pi geeft dit:
overzicht drivers
Dit komt mooi overeen met het overzichtje van hierboven.
Als het niet overeen komt, dan gaan we naar de volgende stap hieronder

top

Drivers toevoegen/verwijderen

icoon boot     We openen (met shift+klikken) !Boot en daarna Resources.
Is het programma "!SerialDev" aanwezig ?
icoon programma serialdev     Neen ? Dan uit "serial.zip" halen en hierin plaatsen.
Ja ? Dan gaan we de drivers binnenin !SerialDev nakijken.
afbeelding resourses
We openen "!SerialDev" (met shift+klikken) en daarin zijn voor ons 2 mappen belangrijk
- Inactive (of Unused) en
- Modules
We openen de map Modules
afbeelding modules
"Dummy" en "PiSerial", dat zijn de juiste drivers voor mijn Raspberry Pi, cfr. tabel TTL of RS232 op mijn computer ?
Alle andere drivers kunnen we verwijderen of misschien beter, bewaren in de map Inactive (of Unused).

top

De TTL/RS232 testen

We gebruiken de app "!Connector"

afbeelding programma connector De app "!Connector" is een eenvoudig, maar krachtig terminal programma.
Configuratie:
- driver instellen: menu-klikken op programma icoontje van ¨!Connector¨ (staat recht-onder op de iconenbalk) >> klik op Choices... >> klik op Serial >> selecteer de driver PiSerial voor de Raspberry Pi.
- juiste baudrate ed. instellen aan de onderzijde van het programma venster.
- evt. de help raadplegen
Als we iets typen, zien we niets gebeuren. Dat komt omdat dit programma enkel de binnenkomende tekens (via de RxD) laat zien. Andere programma's hebben bv. 2 vensters en/of een echo functie.

Test opstellingen
- loopback verbinding
- een apperaat of sensor aan aansluiten
- een arduino, micrfocontroller, ... sturen een aantal tekens naar onze computer
- andere computer met een nul-modem aansluiten
In de meeste gevallen zijn we al blij dat er iets getoond wordt in het programma venster.

Correcte gegevens verzenden en ontvangen kan enkel en alleen bij
- gelijke baudrate voor het zenden/ontvangen, bv. sensor verstuurt tegen 9600 baud, dan moeten we ook met 9600 baud ontvangen
- gelijke instelling van het aantal bits, pariteit en aantal stopbits. Tegenwoordig meestal 8N1 = 8 bits, no parity en 1 stopbit.
- gelijke flow, bv. met/zonder hanshake signalen RTS/CTS.

top

Controle met een sub-D loopback stekker

We verbinden de TxD naar de RxD waardoor alles wat we verzenden, direct terug wordt inlezen.
Ook de handshake signalen (indien aanwezig) sturen elkaar aan.
pinout van de 9p sub-d connector aansluiting loopback stekker 3 + 2 = Tx met Rx = verzonden data wordt terug ontvangen
7 + 8 = RTS verbinden met CTS
1 + 6 + 4 of ....
We kunnen zelfs een zuinig ledje met een 2k2 weerstand aansluiten tussen 5=GND en 2+3=RxTx.
Hoe trager de snelheid of baudrate, hoe duidelijker het ledje zal flikkeren.

top

Controle met een loopback verbinding op de RPI

Met een jumper verbinden we headerpin 8 met 10 = GPIO14 met GPIO15 = TxD met RxD.
Alles wat we verzenden, wordt nu direct terug inlezen.
pinout rpi gpio header

top

Controle met een Arduino

top

Controle met seriele hardware

top

Controle met een ¨Null Modem¨ tussen 2 computers

Dit is een hele speciale situatie ! De RS232 aansluiting op de computers zijn gelijk waardoor we
- ofwel een speciale kabel moeten gebruiken, een Null Modem kabel
- ofwel een speciaal tussen stekkertje, een Null Modem
Hieronder een schema van de standaard Null Modem verbinding.
null modem with full handshaking tabel null modem with full handshaking
De Raspberry Pi heeft enkel RxD en TxD, daarom aan de andere zijde - gebruik als instelling no-flow (geen handshaking)
- gebruik loopback handshaking, cfr. Controle met sub-D loopback stekker

top

Converters TTL, RS232, USB, ...

Zoek naar RS232 bij Adafruit, Antratek, Watterott, ... en de vele verschillende converters, oplossingen, ...vullen het scherm, de mogelijkheden lijken onbeperkt !
image rs232 to ttl converter     Vooral de industrie, samen met µControllers & het IoT, blijven de seriele poort in vele variaties gebruiken.
Converters TTL/UART naar RS232, RS232 naar USB, of direct TTL naar USB
Converters naar Bluetooth, LAN, WiFi, GSM, (Touch-)Display...
Converters naar RS485, I2C, CAM, MIDI, DMX, ...

Voor de meeste projecten met de Raspberry Pi heb je geen converter nodig.
Toch een echte RS232 nodig ? Neem een kijkje bij de vele accessoires voor de Pi
- een eenvoudige TTL naar RS232 converter, bv. Antratek artikelnr. S3ED/101990008
- een speciale HAT, bv. https://www.antratek.nl/raspberry-pi-rs232-board

top

Enkele bronnen en nuttige links

Vooral de engelstalige Wikipedia geeft veel uitleg over RS232.
Een meer technische uitleg vinden we bv. bij ARC Eletronics.

Big Ben Club, url <http://www.bigbenclub.nl/>

icoon asterisk     In het tijdschrift Asterix 31-04 staat een artikel over de ¨Siemens Pocket Reader¨. Henri geeft hier ook een hele duidelijk uitleg over "!SerialDev". Hierin vond ik vele recent versies van verschillende (block-)drivers. Ook een aantal extra bestanden en mappen met uitleg: ReadMe, Help, Info en Info32

XAT, blockdrivers, url <http://xat.nl/riscos/sw/bd/index.htm>
Veel uitleg en o.a. ook het handige programma "!Serial".

Tank Stage, url <http://www.tankstage.co.uk/Software>
"PiSerial" staat zonder link, maar dit is de link <http://www.tankstage.co.uk/Software/PiSerial.zip> (letop voor die hoofdletter S).
De zip bevat ook een help file voor programmeurs.
Op deze website vinden we ook de module voor het gebruikt van de GPIO voor het Beagle- en Pandaboard en de RPi.

Lammert Bies, RS232 connectors en kabels, url <https://www.lammertbies.nl/comm/cable/RS-232.html>

UART Communication Tutorial
http://www.8051projects.net/wiki/UART_Communication_Tutorial

RISC OS Open, forum, url <https://www.riscosopen.org/forum/>

ARMX6 serial port: <https://www.freelists.org/post/armini-support/ARMinisupport-ARMini-Serial-Port,1>
ARMX6 OS update 6 released: <http://www.freelists.org/post/armini-support/ARMinisupport-ARMX6-OS-update-6-released,8>

top