othermod / PSPi-Version-6

https://othermod.com/pspi6
685 stars 23 forks source link

HW suggestions / discussion #1

Open mcer12 opened 11 months ago

mcer12 commented 11 months ago

As I have some experience with designing hardware and will want to make this as well, I think it might be worth it to throw ideas and discuss hw options in terms of simplifying the design and/or making it cheaper. So far I quickly glanced over the schematics, but it's kinda dificult to orient among the separate pages so excuse possible stupid questions. If there's a better place to discuss this please let me know.

othermod commented 11 months ago

This is a good enough place to discuss the hardware. Yea the schematics aren't easy to read, especially right now because I'm tweaking things after testing the prototypes.

andzejsp commented 11 months ago

As much this is interesting it its flawed by design. psp case is very out dated and not the most ergonomic solution. i agree the size of psp was perfect, not too small, not too large, easily fit in most pockets (unlike steamdeck), tho i would love to see some overall user interface design improvements. The thumbstick on psp was the most frustrating to me. it really didnt felt like a stick but a moving plate.

Imo if you gonna put in so much work into this, you better off with designing the case/shell of the device from ground up.

I hope you succeed, seem interesting. We need more open source HW in this world.

mcer12 commented 11 months ago

@andzejsp This project is about making a custom pcb for psp. Apart from your comment being off topic, it seems like this project isn’t for you.

mcer12 commented 11 months ago

@othermod Here's some questions, maybe we'll get to something useful.

  1. voltages - there seems to be several levels, 5V, 3V, 3.3V, display voltage etc. I don't fully understand this to be honest :) Also, what's the display voltage? Do I understand correctly that atmega runs at 3.0V and some other stuff runs at 3.3V?
  2. atmega - those are currently quite overpriced for what they do, even the budget ones. Did you consider using STM32 (STM32F030 or STM32F103 - has usb and it's FAST)? I wouldn't rule out ESP32, even without wifi it has many periferals like DAC that can prove useful.
  3. USB connector - I didn't find the part that's being used. I understand it's USB-mini with only power lines? How about switching to microusb? There's plenty on lcsc to choose from, some countersank look very robust like C2842942
  4. battery charging - I think something like the ubiquitous TP4056 should work just fine, just lower the charging current if it feels little too hot? It also has a heat pad at the bottom so a little pcb heatsink can be designed just in case
  5. usb data from the pi - there's already jst connectors on the board so I'd probably use that, solder the other end to the pads on the Pi. Pogo pins don't seem like a reliable choice for portable device.

As I said, I'm just glancing over the board, it's quite a lot so bear with me :D

mcer12 commented 11 months ago
  1. depending on the display voltage, MT3608 could be used - cheaper
  2. I see usage of BAT54C with ends tied together, if there's no particular reason for it, maybe use B5819W or similar schottky diode since it's already used.
  3. I don't fully understand how sound output works. Pi Zero PCM output doesn't seem to be used, also I don't see headphone output. I suppose this is one of the things that are being worked on?
MP991 commented 11 months ago

Thank you for all the work you've put into this project. I was wondering if this could be compatible with other PSP models?

othermod commented 11 months ago

@mcer12 I'll sit down and answer all your questions in a couple hours. @MP991 Just the original PSP 1000 @andzejsp I like the PSP shell. There is always room for improvement though, and maybe someday there we can make a custom aftermarket one that's even better.

othermod commented 11 months ago
  1. voltages - there seems to be several levels, 5V, 3V, 3.3V, display voltage etc. I don't fully understand this to be honest :) Also, what's the display voltage? Do I understand correctly that atmega runs at 3.0V and some other stuff runs at 3.3V? a. This is definitely the most complex part. b. V_3V0MEGA is just for the atmega, buttons, and joystick. c. V_3V3RPI is the 3.3v that’s created by the raspberry pi and its used for the USB mux, LCD IC (internal to the LCD panel), and some LEDs d. V_3V0AUDIO is the clean power for audio e. V_5V0 is the 5v that goes to the raspberry pi f. Display backlight voltage isn’t exactly set, and that IC just regulates the amperage going to the backlight. Usually it runs at like 20v.
  2. atmega - those are currently quite overpriced for what they do, even the budget ones. Did you consider using STM32 (STM32F030 or STM32F103 - has usb and it's FAST)? I wouldn't rule out ESP32, even without wifi it has many periferals like DAC that can prove useful. a. I’m able to get the atmega8 for around $1, sometimes less. I used it mainly because I am very familiar with it. Every pin is used up, so if I replace it I would have to use something comparable. I’m transferring data over I2C, so USB isn’t a big deal to me. I also want to make sure power consumption is low, and I’m not sure where how STM chips compare in that area.
  3. USB connector - I didn't find the part that's being used. I understand it's USB-mini with only power lines? How about switching to microusb? There's plenty on lcsc to choose from, some countersank look very robust like C2842942 a. I’m using this https://www.lcsc.com/product-detail/USB-Connectors_Jing-Extension-of-the-Electronic-Co-920-462A2021Y10102_C13453.html b. It does both power in/out and data
  4. battery charging - I think something like the ubiquitous TP4056 should work just fine, just lower the charging current if it feels little too hot? It also has a heat pad at the bottom so a little pcb heatsink can be designed just in case a. The TP4056 can’t work here. I’d have to lower the charge current so much that charging would take forever. The new one is pretty cheap, and worth the extra $ to me.
  5. usb data from the pi - there's already jst connectors on the board so I'd probably use that, solder the other end to the pads on the Pi. Pogo pins don't seem like a reliable choice for portable device. a. Pogo pins worked well in previous versions. I’ve actually had worse reliability using JST connectors for USB that I have using pogo pins. I’m not opposed to one method over the other really, and they both work fine enough. The goal is to avoid making people do soldering, if possible.
  6. depending on the display voltage, MT3608 could be used – cheaper a. I tried that chip and a few others, and most of them have switching noise at various brightness levels. I went with a nicer chip because it uses a different internal voltage reference to generate the different brightness levels, and this eliminates the high pitch noise.
  7. I see usage of BAT54C with ends tied together, if there's no particular reason for it, maybe use B5819W or similar schottky diode since it's already used. a. I’m just re-using to reduce the number of different components to make prototypes cheaper. I may end up doing single diodes by the time I’m ready to call it done.
  8. I don't fully understand how sound output works. Pi Zero PCM output doesn't seem to be used, also I don't see headphone output. I suppose this is one of the things that are being worked on? a. The audio is all there, but it’s hard to decipher. b. PWM audio comes from GPIO12 on the Pi Zero c. AUDIO_L and AUDIO_R go to a 6pin connector, and that goes to a separate headphone board. That separate board disables the speaker amplifier when headphones are plugged in.
mcer12 commented 11 months ago

@othermod Thank you for comprehensive answers!

  1. voltages - if I understand this correctly, atmega runs at 3V to save power. I'm not sure if 1-2 mA is worth it since Pi will be using order of magnitude more power. How about running the atmega from Pi 3.3V? Saves LDO, level shifting etc.
  2. atmega - I respect the choice though cheaper STM32 provides much more bang for the buck, STM32G030C8T6 would be my choice. These chips are not ancient like atmega and they are very well supported by Arduino IDE. Plus more pins so maybe no need for shift registers :) Power consumption is comparable while much faster.
  3. This is one thing I don't see as reasonable. Using vertical connector in a horizontal position like this... Firstly jlcpcb probably won't be able to do assembly and I wonder how durable this is. Countersunk connector should be used here. What do you think about the microusb connector I suggested? Or I found this U213-051N-4BH84 but microusb has more options and countersinking distance.

Other points make perfect sense :)

othermod commented 11 months ago
  1. The atmega powers on first, and then it enables the boost IC that powers the Pi. This was the only way I could implement a reliable poweron/off circuit that doesn't leach power when the board is off and that is reliable. I had to go with 3.0v instead of 3.3v because the input of the LDO may go lower than 3.3v and cause issues with battery calculations. There are maybe better options, but this is the most reliable method I've used so far.
  2. I'll look into the STM32 you linked. These were almost entirely unavailable during the great chip shortage, and I never put any effort into researching them.
  3. I've tried every connector I could find, and none of them have properly aligned with USB hole in the plastics. This is one of the few components that I'm not having assembled, and I solder them manually at the moment. I'll look at the mounting height of the one you sent, but if its like the others it may not work. Getting this component assembled would be great though.
mcer12 commented 11 months ago
  1. makes sense.
  2. definitely, these can do everything atmega328 can do and much more at 10x the speed at a price of atmega8, while fully arduino compatible... ridiculous.
  3. To see only counter sunk connectors, select in filters Mounting Style -> Sink board. The one I suggested seems like a good fit from eyeballing the original board but it won't hurt ordering few more by different sink height

One more thing I can't quite understand is buffering the LEDs with mosfets. Why not run them directly from GPIO?

othermod commented 11 months ago

@mcer12 I'll try ordering a few connectors. There seem to be more available than there were last time I looked. The GPIO bank on the Pi has a max amperage before issues occur, so I add the buffer that to avoid issues. It's probably overkill, but the RPi designers do the same on their boards and I copied it.

mcer12 commented 11 months ago

a) this looks like a better fit, 1.6mm sink, so if the board is 1.2mm thick, it will be perfectly centered. C2842941 b) gotcha

othermod commented 11 months ago

I definitely want to stick with miniUSB and not micro. Also, the board is 0.8mm thick.

mcer12 commented 11 months ago

@othermod understood :)

othermod commented 11 months ago

@mcer12 I appreciate the help. I can't imagine how hard it it to absorb the years of things I've done and the reasons for the choices. I'll try to help as much as I can. My focus is a bit all over the place handling my 15 mins of fame.

ShadeTechnik commented 10 months ago

Great project. I never owned a PSP but I love things like this and I have 2 2gb CM4s sitting in a drawer for about 3 years now. Thinking about forking this and converting it to KiCAD I initially thought of using it as is as I don't want alot of development time but I'm curious about a couple of things......

I'm not a huge fan of the 0W pin header and converter PCB for the CM4, I know the CM4 is a bit tough to find but the zero w seems too weak to even bother with. I would just slap the CM4 connectors on the main PCB and be done. If there were a purpose for possibly using a higher end module I would use a SODIMM slot to the Nvidia Jetson pinout and make a CM4 converter PCB for that, but I really don't see the point in using above a CM4 for this. Obviously you want to be able to use a zero W but these are just my thoughts.

2nd question is about that Atmega MCU, why are you using that? I'll be honest, I'm not hugely knowledgeable about AVRs but I've been using Attiny424/426 and 3224/3226 for a project and they're cheaper, IMO better, and work from 1.8 to 5.5v so I would definitely swap that out. I haven't studied the schematic, if it needs that many IO I would just use a 3227 which at Digikey is $1.28 so if you can get that Atmega for $1 when it's over $2 at Digikey, an Attiny is a no brainer unless there's something I'm missing.

othermod commented 10 months ago

I personally prefer to use the Zero or Zero 2 when I'm not doing stuff that needs the extra power, so I can get the extra play time. Also, the Zero 2 is fairly capable.

The atmega8 is used because I need the large quantity of digital and analog pins, because they also work at low voltages, and because they cost < $1.

othermod commented 10 months ago

@mcer12 I ordered some of the U213-051N-4BH84 connectors you found, and they look promising. They aren't exactly right, and the board has to flex ever so slightly, but they might be close enough. I'm ordering some blank PCBs to test them out.

ShadeTechnik commented 10 months ago

I personally prefer to use the Zero or Zero 2 when I'm not doing stuff that needs the extra power, so I can get the extra play time. Also, the Zero 2 is fairly capable.

The atmega8 is used because I need the large quantity of digital and analog pins, because they also work at low voltages, and because they cost < $1.

Well I assume since this is all done on EasyEDA that you're referring to it being available for <$1 @ LCSC? Domestically that is generally not the case.....

https://www.digikey.com/en/products/detail/microchip-technology/ATMEGA8A-AU/1914637

vs

https://www.digikey.com/en/products/detail/microchip-technology/ATTINY3227-MU/15520368

Which has more flash and ram and actually is available for ~$1 in the US at least

othermod commented 10 months ago

The extra flash and ram don't benefit this project, and that attiny doesn't have enough pins to do what this atmega does.

I'm not saying the atmega8 is the best chip out there, but so far you've compared it to chips that don't have enough IO. Something like the STM32 would even be a good fit, but just not worth the effort it would take to rethink the board layout to save $0.25.

If you're trying to redesign the board entirely, then one of the attiny chips can probably be made to work, and you just give up or tweak a few features. There is no one right option.

ShadeTechnik commented 10 months ago

It's not about saving $0.25, looks like this whole thing is setup to be purchased and assembled by JLCPCB/LCSC. That's fine for making it easy for people to just order one but I do my own assembly. A 3227 has 22 IO vs 23 IO and you aren't using PD2. Attiny has all of the port functions so I'm not really sure why you keep saying it doesn't have enough IO. I haven't studied the schematic in great detail so maybe I'm missing something.

This is mostly about the fact that I'd have to pretty much reroute the whole thing anyway for the CM4 connector which I don't even know if it can fit. I might as well get rid of that 3.0v regulator and whatever else is going on there like that I2C level shifter for the Atmega. Not really sure at the moment, I'll know more once I get everything converted to something I'm used to looking at.

othermod commented 10 months ago

This project uses 24 inputs on the atmega

ShadeTechnik commented 10 months ago

Just as easy to fit an 828 @$1.59 domestically which is still a 20mhz part that runs on 1.7-5.5v if 24 IO is necessary necessary, and this is 28 IO.

I'm not knocking your choice of parts, if that's what's available at the manufacturer than that's completely fine. I didn't realize it was geared towards JLCPCB production at first. Just an opportunity to shorten up the BOM and simplify it a bit while still sticking with a Microchip part.

othermod commented 10 months ago

The 828 seems like a good fit.

The atmega chips were also a lot cheaper when I started making this board. Even the atmega328p was only $1.70 last time I bought them in 2021.

RagingRoosevelt commented 8 months ago

Just the original PSP 1000

Does that include PSP 1001 model psps?

othermod commented 8 months ago

Just the original PSP 1000

Does that include PSP 1001 model psps?

It does.

spleeeb commented 7 months ago

Hello, sorry for the dumb dumb question, but I couldn't seem to find the info specifically anywhere. But the screen - can it be any LCD 800x480, or is this built off a specific display?

Edit: Embarassing. No answer needed found the hyperlink on the readme. Sorry. I'm sure I'll outdo myself with upcoming questions. Very excited to give this project a go. Great work Othermod!

othermod commented 7 months ago

spleeeb

The documentation is also a bit rough at the moment. I'm working on it.

JamesK48 commented 4 weeks ago

I was wondering if you had ever thought about modding a second analogue stick to the psp with this project? I think it would be an awesome addition and allow for lots of other games that also use a second analogue stick and can run on a raspberry pi. Thanks

Here's an example of someone doing it https://www.youtube.com/watch?v=H7OqdUDciTg

othermod commented 4 weeks ago

I was wondering if you had ever thought about modding a second analogue stick to the psp with this project? I think it would be an awesome addition and allow for lots of other games that also use a second analogue stick and can run on a raspberry pi. Thanks

Here's an example of someone doing it https://www.youtube.com/watch?v=H7OqdUDciTg

Yes, I added the capability to the board already. It has solder pads for a second stick and two extra buttons.