! Deze pagina staat, binnen de structuur van deze website, waarschijnlijk maar tijdelijk op deze locatie. !

v20161130
home >> hardware >> rs232

RISC OS en de seriële poort RS232

Mijn Raspberry Pi heeft geen RS232 aansluiting, heeft het zin verder te lezen ? Ja.
Mijn Raspberry Pi heeft 2 GPIO pinnen TxD en RxD, zijn die te gebruiken als een seriële poort? Zeker, maar
Wat is seriële poort, een UART, RS232 en is dat nuttig ? Wordt direct uitgelegd.
Kan ik beter een USB gebruiken ? Kan ook, maar werkt toch een beetje anders.
Kan ik mijn projecten, gebaseerd op de seriële poort, nog met de Pi gebruiken ? Ja zeker.

Hieronder mijn beschrijving hoe we de seriële poort onder RISC OS kunnen blijven gebruiken.

In deze "serial.zip" heb ik voor RISC OS de nodige drivers en enkele programma's verzameld die ik hieronder zal gebruiken en bespreken.

Inhoud
- Seriële poort, UART, RS232 en USB ?
- RS232 op mijn computer ?
- Toon de devices van deze computer
- Drivers controlen met "!Serial"
- "!SerialDev" en (block-)drivers
- Controle met "!Connector"
- Controle met sub-D loopback stekker
- Controle met loopback op de RPI
- Twee computers met ¨null modem¨
- Converters TTL, RS232, USB, ...
- Enkele bronnen en nuttige links
      Toepassingen en projecten
- CNC
- Siemens Pocket reader
- IoT met ESP8266
- Meeluisteren mbv 3xUART/RS232 op de Arduino Mega
- Draadloos met Bluetooth
- GPS tracking en kaarten
- Serieel verbinden met Linux, MAC, Windows, ...
- Toegangscontrole met RFID
Aanverwante onderwerpen: RISC OS - FTDI - GPIO - I2C - parallel - USB - µControllers

top

seriële poort, UART, RS232 en USB ?

Meestal bedoelen we met "de seriële poort" de RS232 aansluiting op onze computer. De RS232 maakt het mogelijk dat de signalen van de interne UART over een langer afstand te gebruiken zijn.
Een UART of Universal Asynchronous Receiver/Transmitter is een van de eerste en belangrijkste bouwstenen van een computer. Volgens een vaste snelheid (baudrate) worden de 8 bits van een byte een voor een naar buiten geschoven, naar de TxD. Ook omgekeerd, de enen en nullen op de RxD worden terug naast elkaar gezet tot een byte.
Ondertussen zijn er vele verbeteringen en variaties ontstaan die we kennen als IIC, SBus, CAN, SATA, USB (of de "Universele seriële Bus"), ..... maar eigenlijjk ook LAN, WiFi, LoRa, .... .
Als we werken volgens de spanning van de computer/processor zelf, dan spreken we van bv. 3.3 of 5 Volt TTL.
Om deze "stroom van enen en nullen" over o.a. grotere afstanden, met minder storingen, te kunnen overbruggen, gaan we
- ofwel de spanning verhogen/omzetten en spreken we van RS232, RS485, ...
- ofwel de serieale gegevens converteren naar/door een andere protocol, bv. USB
- ofwel draadloos m.b.v. infrarood, radiosignalen, bluetooth, WiFi, ...
    In de verkleinde afbeelding hiernaast (bron), zien we bovenaan het seriële signaal op TTL of computerniveau (3.3 of 5V) 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.

Opgelet, verbindt nooit verschillende soorten van aansluitingen met elkaar want
- de logische niveau's zijn verwisseld
- door de hogere spanning van RS232 kan/zal een TTL ingang stuk gaan, dus de hardware van uw computer of microcontroller.

Geen RS232 aansluiting op bv. je laptop, of wil je een extra seriële poort, gebruik dan de FTDI converter.. Deze wordt eenvoudig aangesloten op een USB poort en kan, na de (automatische-) installatie, als een echte seriële poort gebruikt worden.

top

RS232 op mijn computer ?

Een 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 UART 3.3 V TTL met enkel Rx en Tx Dummy
PiSerial
Tank Stage
ARMX6 (imx6) RS232 sub-D 9, enkel Rx, Tx, RTS en CTS Dummy
InternalNH
BBC

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.

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

Toon de devices van deze computer

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 seriële 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

Drivers controle met "!Serial" van XAT

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

"!SerialDev" en de (block-) drivers

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
Volgens het eenvoudig overzicht van RS232 op mijn computer ? hierboven, staan hier voor mijn Raspberry Pi de juiste drivers: Dummy en PiSerial.
Alle andere drivers kunnen we verwijderen of misschien beter, bewaren in de map Inactive (of Unused). Dat doen we omdat sommige drivers elkaar kunnen storen.

Klaar ? Nu zou alles moeten werken en met de volgende stappen gaan we de goede werking van de seriële poort controleren.

top

Controle met "!Connector"

afbeelding programma connector Dit is een eenvoudig, maar krachtig terminal programma.
Versie 1.03 is een 26b programma, <http://connector.a-m-z.org/index.html>.
Versie 1.07 is de 32b versie, geschikt voor alle moderne machines.
Configuratie:
- eerst de driver instellen: menu-klikken op programma icoontje van ¨!Connector¨, het staat recht-onder op de iconenbalk >> klik op Choices... >> klik op Serial >> selecteer de driver PiSerial voor een Raspberry Pi.
- baudrate ed. kan je "on the fly" veranderen aan de onderzijde van het programma venster.

Als er geen serieel toestel is aangesloten, lijkt het programma niet te werken omdat standaard enkel de ontvangen tekens via de RxD in het venster worden weergeven.

top

Controle met een sub-D loopback stekker

Wat we verzenden, wordt direct terug inlezen (Tx >> Rx).
Ook de handshake signalen (indien aanwezig) sturen elkaar aan.
pinout van de 9p sub-d connector aansluiting loopback stekker 3 + 2 of Tx met Rx of verzonden data wordt terug ontvangen
7 + 8 of RTS 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


Wat we verzenden, gaan we direct terug inlezen (TxD > RxD).
pinout rpi gpio header
Met een jumper verbinden we headerpin 8 met 10, d.i. TxD met RxD (GPIO14 met GPIO15).

top

Twee computers verbinden met een ¨null modem¨

Normaal verbinden we de computer met een printer, plotter, modem, ... met een seriële kabel. Zo'n kabel heeft aan de ene zijde een vrouwelijke stekker en aan de andere zijde een mannelijke stekker.

Als we gegevens van de ene computer direct naar een andere andere computer willen doorgeven, zonder tussenkomst van modems, telefoonlijnen, ... , dan moeten we een speciale kabel gebruiken, een Null Modem kabel/verbinding.
Hieronder een schema van de standaard Null Modem verbinding.

null modem with full handshaking tabel null modem with full handshaking

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 seriële 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 of UART Communication Tutorial

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>
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