PSX->PC via Arduino Uno R3 (

General information to do with the PlayStation 1 Hardware. Including modchips, pinouts, rare or obscure development equipment, etc.
Post Reply
User avatar
sickle
Verified
C Programming Expert
C Programming Expert
Posts: 257
Joined: Jul 17, 2013
I am a: Chocolate-fueled pug fetish robot.
Location: Scotland

PSX->PC via Arduino Uno R3 (

Post by sickle » August 12th, 2015, 5:46 pm

Image

I'm not really an electronics kinda persion, but I managed to bodge this together and it works quite nicely with PSXSerial,

The R3 was the first board not to use an FTDI chip, so you can't solder directly to those pads, but pins 0 & 1 on some models still work nicely as a passthrough if you connect Reset to Ground; so no need for the SoftSerial library which is really too slow for 115200.

8K Seems about right for the resistor(s) - the ohmmeter is reading 7.4ish - too far either way and things don't work so well, but lemme know if the image needs changing ^^

User avatar
Shadow
Verified
Admin / PSXDEV
Admin / PSXDEV
Posts: 2670
Joined: Dec 31, 2012
PlayStation Model: H2000/5502
Discord: Shadow^PSXDEV

Post by Shadow » August 12th, 2015, 7:43 pm

Nice little diagram Sickle. Great for those that have Arduino's on hand :)
Development Console: SCPH-5502 with 8MB RAM, MM3 Modchip, PAL 60 Colour Modification (for NTSC), PSIO Switch Board, DB-9 breakout headers for both RGB and Serial output and an Xplorer with CAETLA 0.34.

PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.

User avatar
CyrusDevX
Active PSXDEV User
Active PSXDEV User
Posts: 47
Joined: Aug 07, 2015

Post by CyrusDevX » August 12th, 2015, 11:07 pm

Very nice bud ^^, this is something i have been wondering myself. +1

Meta
Active PSXDEV User
Active PSXDEV User
Posts: 40
Joined: Dec 14, 2015

Post by Meta » December 20th, 2015, 8:15 pm


User avatar
Shadow
Verified
Admin / PSXDEV
Admin / PSXDEV
Posts: 2670
Joined: Dec 31, 2012
PlayStation Model: H2000/5502
Discord: Shadow^PSXDEV

Post by Shadow » December 20th, 2015, 10:32 pm

Development Console: SCPH-5502 with 8MB RAM, MM3 Modchip, PAL 60 Colour Modification (for NTSC), PSIO Switch Board, DB-9 breakout headers for both RGB and Serial output and an Xplorer with CAETLA 0.34.

PlayStation Development PC: Windows 98 SE, Pentium 3 at 400MHz, 128MB SDRAM, DTL-H2000, DTL-H2010, DTL-H201A, DTL-S2020 (with 4GB SCSI-2 HDD), 21" Sony G420, CD-R burner, 3.25" and 5.25" Floppy Diskette Drives, ZIP 100 Diskette Drive and an IBM Model M keyboard.

Meta
Active PSXDEV User
Active PSXDEV User
Posts: 40
Joined: Dec 14, 2015

Post by Meta » December 21st, 2015, 5:34 am

Image

The scheme, resistor 8 K does not have to be there. You have to know whether the serial port O / I PSX works to 5V or more tension. Arduino operates at 5V it is to know whether to use the MAX232 between Arduino and PSX, by tensions or inverse data states as in the PC and Arduino if you connect directly without using USB.

Image

http://sodoityourself.com/max232-serial ... converter/

Image

I want to know if anyone has tested and works.

How do people know the commands needed PSX using the serial I / O port?

What you can control exactly PSX and Arduino?

;)

User avatar
sickle
Verified
C Programming Expert
C Programming Expert
Posts: 257
Joined: Jul 17, 2013
I am a: Chocolate-fueled pug fetish robot.
Location: Scotland

Post by sickle » January 20th, 2016, 2:55 am

Heyhey.
My Arduino has a 3.3v switch, so I've never used 232's. The resistor is needed, but it's not because of voltage issues - the resistor cleans up the signal a bit.


There are lots and lots of schematics for making your own hardware with 232's all over this forum and on places like hitmen's site though, so maybe it's worth double checking.

http://hitmen.c02.at/html/psx_siocable.html
http://hitmen.c02.at/html/psx_hardware.html
http://hitmen.c02.at/files/hardware/psx ... ter/ar.gif

The only thing I can think of is that the last schematic is using pins 7&8 ... which means you'd have to use SoftSerial.
SoftSerial is quite slow and not reliable. I'd say move TX/RX to pins 0 & 1 then connect the Gnd/Reset pins together.
This makes the Uno act like an FTDI chip and you don't need to upload a sketch.

You can't boot from the serial port and there's no special commands to load stuff - you definitely need a program like PSXSerial running on the playstation, so you'd have to ask Shadow about the exact protocol. All I know is it starts "abc".
(You can test by running "echo abc>com6" for example.
There are also SIO echo examples in the PsyQ SDK if you want to take a closer look. It's very useful to have a program that outputs serial data when you press buttons (to test things).

mrhaboobi
Active PSXDEV User
Active PSXDEV User
Posts: 59
Joined: Nov 18, 2012

Post by mrhaboobi » February 12th, 2016, 2:07 pm

do you have any pics of this in your machine, would it work with sicons etc? Cheers

User avatar
Greg
Verified
Serious PSXDEV User
Serious PSXDEV User
Posts: 101
Joined: Sep 09, 2013
PlayStation Model: SCPH-7501
Location: Port-au-Prince, HAITI

Post by Greg » February 13th, 2016, 2:11 am

Not work with siocons, for that look at: https://psx0.wordpress.com/2013/08/08/p ... ink-cable/ by danhans42
1 x SCPH-7501, 2 x SCPH-7001, 2 x SCPH-5501
1 x Pro Action Replay with "Dual Rom Mod", ROM 1: Caetla, ROM 2: UNIROM
1 x Xplorer V2 with Caetla
1 x GameShark V2.1
1 x GameShark Pro V3.0
1 x CommLinkUSB
1 x XLinkUSB

Meta
Active PSXDEV User
Active PSXDEV User
Posts: 40
Joined: Dec 14, 2015

Post by Meta » February 13th, 2016, 5:00 am

Hi there:

Knowing the pins and using the MAX232 and Visual Studio .NET.

Can you do something with the serial port of the PSX?

I want to know your commands and responses from the PSX.

Image


Regards.

User avatar
sickle
Verified
C Programming Expert
C Programming Expert
Posts: 257
Joined: Jul 17, 2013
I am a: Chocolate-fueled pug fetish robot.
Location: Scotland

Post by sickle » January 5th, 2018, 1:53 am

Wow, sorry, took like 2 years to get back to you there. My bad.

So there's really no point using SIOCONS nowadays; you're better with PSXSerial.psx (from this forum), it's also built into UniROM (from this forum). The advantages are:
-simple protocol
-decompilable (it's in C# .NET so... that's your visual studio question answered)
-fewer wires
-still supported

Once you're up and running you could go for something like this:
(that's the one I use spliced into an old link cable, and it has the extra pins if you do ever need them)


Just the three wires: gnd->gnd, tx->rx, rx->tx. I haven't needed a resistor. I connect with putty, set to serial (COM3 in this case and at 115200 baud. You can test by firing up UniROM or PSXSerial. PSXSerial will accept a transfer if you send like "A" "B" or "C", UniROM will print the first 10 chars you send to the screen.

Hope that helps!

Xavi92
Verified
C Programming Expert
C Programming Expert
Posts: 161
Joined: Oct 06, 2012
PlayStation Model: SCPH-5502
Contact:

Post by Xavi92 » January 5th, 2018, 4:04 am

My open-source tools OpenSend and QPSXSerial (http://www.psxdev.net/forum/viewtopic.php?f=62&t=1307) are more complete than PSXSerial and SIOCONS, as they also allow uploading external files e.g.: TIM, VAG... under request from the target. PSXSerial and SIOCONS would only upload an EXE file to the target, but nothing more. Below there is a YouTube video showing how games are uploaded without using a CD-ROM.

[youtube]http://www.youtube.com/watch?v=YyorqauWiPw&t=3s[/youtube]

My video game "Airport" is a good example on how to use OpenSend and QPSXSerial together with a PSX homebrew game: https://github.com/XaviDCR92/Airport

User avatar
TriMesh
Verified
PSX Aptitude
PSX Aptitude
Posts: 225
Joined: Dec 20, 2013
PlayStation Model: DTL-H1202
Location: Hong Kong

Post by TriMesh » January 5th, 2018, 7:06 pm

Xavi92 wrote: January 5th, 2018, 4:04 am My open-source tools OpenSend and QPSXSerial (http://www.psxdev.net/forum/viewtopic.php?f=62&t=1307) are more complete than PSXSerial and SIOCONS, as they also allow uploading external files e.g.: TIM, VAG... under request from the target. PSXSerial and SIOCONS would only upload an EXE file to the target, but nothing more.
Actually, SIOCONS can send arbitrary binary data to the console - just use the DLOAD command

DLOAD <filename> <target_address>

SIOCONS has lots of other deficiencies that you can validity criticize it over, but that isn't one of them :D

User avatar
sickle
Verified
C Programming Expert
C Programming Expert
Posts: 257
Joined: Jul 17, 2013
I am a: Chocolate-fueled pug fetish robot.
Location: Scotland

Post by sickle » January 5th, 2018, 11:41 pm

Xavi92 wrote: January 5th, 2018, 4:04 am My open-source tools OpenSend and QPSXSerial ...
Neat! I missed this being released! FWIW I have unirom uploading arbitrary binary chunks and (optionally) executing them too. When I find the time I'll have to make it compatible with the pc/CLI part of your tools ^^
If I ever find enough time, I intend to modify the arse end out of xflash to accept roms via serial... so much to do :|

bugmenot
Interested PSXDEV User
Interested PSXDEV User
Posts: 6
Joined: Oct 17, 2019

Post by bugmenot » May 11th, 2020, 6:52 am

Sorry to necro-post a bit, but according to this page ( https://forum.arduino.cc/index.php?topic=236581.0 ) it seems possible to power the 'duino at 3.3V directly through the Vin pin, provided you add a diode between 5V & 3.3V pins.

It looks like you could take the 3.3V provided by pin 7 of the PSX serial port to power the 'duino and not have to fiddle with a MAX233 ... Has anyone tried this ?

User avatar
fullmontis
What is PSXDEV?
What is PSXDEV?
Posts: 1
Joined: Sep 07, 2021
PlayStation Model: SCPH-7502
Discord: fullmontis#8046
Location: Italy
Contact:

Post by fullmontis » September 9th, 2021, 11:53 pm

Since I have a spare Arduino and wanted to have a serial connection with the PS1, I have been playing around with this and was able to make it work. However it was a little less intuitive than I expected, considering how simple the whole process actually is. I tried the schematics on the first post but without luck, and had to do some tinkering to make it work. So I thought I might as well post here what I found out so that I can save other people some time.

Abbreviations I'm going to use in this post to make it more readable:

ARx: Arduino's Rx PIN (PIN 1)
ATx: Arduino's Tx PIN (PIN 0)
PSRx: PS1's Rx Pin (PIN 8)
PSTx: PS1's Tx Pin (PIN 5)

Okay so, PS1 serial port uses 3.3v, but it is possibile to use a standard 5v Arduino after a little setup:

-- A jumper needs to be added between RESET and GND on the Arduino to disable the microcontroller and allow use of the board as a USB interface. So far so good.

-- Officially, on the Arduino PIN 0 is marked Rx and PIN 1 is marked Tx on the board and online references. HOWEVER those are not the USB to TTL pins, but the microcontroller's. The following diagram probably does a better job of what is going on here:
psx-arduino-img0.jpg
This means that the way it is marked on the board is actually inverted if we want to use it as an USB interface. That's why PIN 1 is actually Rx and PIN 0 is actually Tx for our case here.

Knowing this would have saved me a LOT of confusion, as I had my connections inverted for longer than I'd care to admit. Maybe this is common knowledge and I was just being dense, but in any case here it is.

-- ARx can be connected directly to PSTx. Even if the Arduino is 5v, ARx is designed to trigger with 3.3v (or at least it should, check it in case), so we're good here.

-- ATx needs to be connected to PSRx with a voltage divider. I tried a direct connection (5v), but while it didn't smoke or anything it doesn't allow communications. So we need to lower the voltage a bit with a voltage divider. This is very simple, but the values are a little finicky and required some testing. See the end schematic and resistance values, this gives a voltage of about 3.45v which is a little above 3.3v but seems to be required to make the pin trigger correctly.

Okay, so here's the final schematic I have been using:
psx-arduino-img1.jpg
I have done some testing and it seems to work perfectly! Never had problems with data transmission.

I like that this is a very cheap and reversible method of making serial connection with the PS1, compared to buying a Net Yaroze cable or making one (link cables are getting a little expensive where I live). It is just three soldered wires and that's it. Arduino is probably overkill for this but if you are like me then you probably have one already that is eating dust and might as well use it for something (I ended up buying a dedicated USB to TTL connector just to make things a little more compact though).
You do not have the required permissions to view the files attached to this post.

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests