cheap 2.8 inch ili-9341 SPI screen retropie 60 FPS Juj method tutorial
HTML-код
- Опубликовано: 14 июл 2024
- definitive step by step tutorial for ili-9341 SPI screen 60 fps.
huge thank you to Juj who wrote the code.
visit his github page here;
github.com/juj/fbcp-ili9341
sudomod guide here;
sudomod.com/forum/viewtopic.p... - Игры
Awesome! I stayed up way to late last night trying to get this screen to work. I can’t wait to get home (after work) and try this out!! Thank you so much!!
Nice video! One note about frame rates on RUclips: when RUclips gear icon on bottom right says Quality "1080p", it means either 24fps or 30fps, so this video does not actually show the content at the same 60fps that the display is updating at with fbcp-ili9341. RUclips has a special Quality option "1080p60" that it shows in the Gear icon when the video is at 60fps. So if this video does not look like any improvement over EmulatedBen's earlier video about ILI9341 at 30fps, that's exactly right and it's not your eyes or the display, but it's just RUclips :)
absolutely correct, my crappy smartphone camera hasnt done the justice with the framerate of the screen. but this is definately better than the framebuffer fbtft method.
nice vid very informative, however the background music got annoying quick and was super distracting as its louder than your voice.
Rams Gonzalez thanks for the feedback. I will lower the background music in the future videos.
Thanks for sharing mate!
I want to inform you guys that adjusting the screen brightness on this screens is very easy:
Connect LCD --> GPIO18
sudo apt-get purge wiringpi
sudo apt-get install wiringpi
gpio -g mode 18 pwm
gpio -g pwm 18 value
where value can be anything between 0 and 255 but you can also try higher values.
This is perfect for hooking up a poti or some buttons and let a python script run wich changes the brightness accordingly
You can also hook up your arduino to the LCD pin and use
analogWrite(LcdPin, value); // value can be 0-255
You will get a brighter screen using the Arduino, since the Pi only delivers 3,3V at PWM while the Arduino does 5V (I measured 4.6V and the image is slighty darker compared to using the 5V pin of the Pi)
Not sure if this will work on any pcb. I have exaclty the same one as in the video
You can also simply put a potentiometer between 5V and you LCD LED pin. But I dont know how much energy would be wasted in that setup
In the future you might want to lower the background music it was very distracting I couldn't barely hear you.
I got an error that I needed a DSPI_BUS_CLOCK_DIVISOR and based on Juj's documentation on GitHub the following cmake command worked for me:
cmake -DCMAKE_BUILD_TYPE=Release -DADAFRUIT_ILI9341_PITFT=ON -DILI9341=ON -DSPI_BUS_CLOCK_DIVISOR=6 ..
This video needs an update
@@bamsegod Same. Is there an easy way to get around this? Thanks!
@@antmusic97 the script is changed now asks you to put commands with each attribute. Try one above from John
@@bamsegod appreciate the quick reply, realised another comment had what I needed. Although when I entered sudo ./fbcp-ili9341 screen just stayed white. No luck. Doing a fresh install and starting back at square 1!
@@antmusic97 you need to double check the pin numbers I think you have one of the pins other way around hence the white screen. Either change the pins or change the script pointing to the correct pin
Can you hook me up with a documentation to this display? I am trying to figure out if I can set the screen brightness via PWM at the LED pin
how did you pass this error? "CMake Error at CMakeLists.txt:136 (message):
Please define -DSPI_BUS_CLOCK_DIVISOR= on the CMake
command line! (see files ili9341.h/waveshare35b.h for details) This
parameter along with core_freq=xxx in /boot/config.txt defines the SPI
display speed. Smaller divisor number=faster speed, higher number=slower.
-- Configuring incomplete, errors occurred!
See also "/home/pi/fbcp-ili9341/build/CMakeFiles/CMakeOutput.log".
cmake -DCMAKE_BUILD_TYPE=Release -DADAFRUIT_ILI9341_PITFT=ON -DILI9341=ON -DSPI_BUS_CLOCK_DIVISOR=6 ..
Please do an updated video with a RPi3B+ and a current version of RetroPie.
Hi Matt I don't have a 3b but I am working on an update. Got it working on Gameboy zero and 3
Great video! The only drawback for me is that it won't work on Raspberry pi zero. Because according to the creator of the driver it won't work on single-core-processor computers. :( . Sad, thanks for the video anyway!
sorry to know that. I was hoping that it would work but its ok. for me the key advantage is to use this screen with RPI3 is that i can fit it within some confined spaces like a orginal gameboy case. the analogue screens are too bulky and power hungry
EmulatedBen Hi can you help me pls i installed PuTTY Connected the PI and my Pc to The Same Network and it Says To me
„Network error: Connection refused“
EmulatedBen okay i fixed it ist was The wrong ip but next Problem if i Type make -j it says
Make : *** No targets specified and no makefile found. Stop.
R3D T1G3R did you download the file. You want to be in that extracted folder to make -j
I don't have the wireless version, what should I do?
I would like to try this out on a pi zero w with this exact screen. I'm very new to this stuff so bear with me...
I have two questions:
Will this have any sort of impact on the Pi's CPU/GPU performance at such speeds?
And second question... Will 5v be harsh on the backlight?
If you are worried about 5v to led backlight just supply 3.3 via pin 17. I haven’t noticed any impact on gpu performance on rpi3. I haven’t got a rpi zero w to try. I am going to do some tests on the rpi zero in future so I will report back. Good luck
Unfortunately Zero is out of the question at this point. Added a note to Readme about this, github.com/juj/fbcp-ili9341/commit/9926321d3d0270e324d9d8879e00456fa0a97aa3 . I've been hacking to try to get DMA working, and if it works out in the future, then perhaps that will enable the driver to be used on Zero as well.
Is there any way to adjust the screen brightness on those red pcb panels?
Rodja Raskolnikow if you supply 5v it would be brighter and 3 v would be dimmer those are the only 2 options
I have the same panel but with a different PCB (Watterott) and it's possible to adjust brightness via PWM. I was hoping that, since in your last video you connected the LED-Pin to GPIO18 (PWM0) the same would be possible with this board. do you have an old setup at hand where you connected your LED pin to GPIO18? Then try adjusting your brightness with this commands: $ gpio -g mode 18 pwm
$ gpio -g pwm 18 X //where X is a value between 0 and 1023
I find adjustable screen brightness very pleasent especially when playing in bed or in bright sunlight. It also saves a lot battery time.
@@bamsegod What if we put a potentiometer on the LED line?
So its all running, but my framerate is horrible. Can't even run sonic, its like a slideshow. Tried messing with the SPI bus settings, tried overclocking but its just unplayable. Any ideas? Thanks!
You can just use the adafruit pitft software with these.
Probably not. The refresh would crap the colours
Hi, I bought the wrong one. The ones for Arduino. Is there a way to connect those kind to the raspberry pi? Thanks.
Yes should be ok as long as it has SPI interface
Thank you so much for this video! It worked, my SPI display is running at 60fps, but the display is backwards and the colors are screwed up. Can anybody help?
What do you mean by backward?
nvr mind. I fixed it by disabling my old fbcp driver and setting "display_rotate=2". By backwards i meant that everything on the display was flipped like a mirror of what it should be.
end mii glad you fixed it. You do need to disable fbcp as shown in the video. Enjoy.
Thanks!
I was done with the background music @ 0:40....
Yeah I hear you. Wannabe content creator. 😂😂😂
Thanks for the video. Im using a 2.2" ili9341 screen and got it working with a pi zero W. Just 2 issues i need help with. On the top part of the screen there is some stats permanently being displayed and constantly refreshing (CPU, GPU, SPI etc). How do I remove this? Secondly I am getting 60fps from nes games but mame is slow and I'm not getting 60fps. I only tested these 2 emulators so far. Any help?
Yes I have noticed that as well. I will check with Jun on how to remove it. Also it uses one hour core for acceleration of the screen so some games could run slow. What did card are you using?
So did you use the same solution to get this working on ZERO? It was said this is only working on 4-core CPU...
@@BobrDrob Yes I did.
Altaaf Sayedabdurrahaman share the how-to please
@@yingbxua6240 I've done this with my LCD and Zero on the weekend. Everything is very straightforward. Just use the Sudomod link in the video description. The only thing was a bit off - you need to specify the SPI clock divisor. So your cmake command will look like that:
cmake -DCMAKE_BUILD_TYPE=Release -DADAFRUIT_ILI9341_PITFT=ON
-DSPI_BUS_CLOCK_DIVISOR=6 -DSTATISTICS=0 ..
The last option disables the Statistics on the screen
Just go and try, it is10 mins not more
Can I use the Raspberry Pi 3B+ and follow this tutorial?
yes it should work on 3B+
EmulatedBen , I followed all instructions carefully , paused your video sometimes to follow pin connections , etc .... and all I get is a white screen. Any idea what went wrong?
I have one of the red PCB ili9341 2.4 inch 240x320 LCD screens
Sean can you post a picture of the pinout of your screen. it seems like you have D/C and one other pin mixed up or may be its slightly different on your screen. white screen occures when you have pins not transmitting data.
@@bamsegod I will as soon as I am free to take photos. Thanks for your reply
First is the pins on the ILI9341 PCB i.imgur.com/0BsyGqR.jpg (the blurry wire for VCC is brown , which connects to top left pin on GPIO)
Raspberry pi I'm using is a Raspberry pi 3 B (not the B+ )
Then the view of the Raspberry pi GPIO from the left of GPIO: i.imgur.com/XSX23OU.jpg
Then the View of the Raspberry pi GPIO from the right of GPIO: i.imgur.com/6wIQeBU.jpg
I forgot to mention, the blue wire on the bottom of the GPIO is just a ground tap to go with the red wire at the top right GPIO for 5v power for a fan.
I just rewatched your video and followed the wires by hand and they all go where the beginning of the video says they should go, is there any configuration I need to do differently in the make / build for the "driver" ?
Can this be done on a TFT LCD 3.95 Inch Screen For Raspberry Pi 2/3 with a Graphic Chipset using the ILI9488? This is the 1 I have www.robotics.org.za/raspberry-pi-amp-accesories/RPA29501R . I dont know the pinouts on this board. Can you help please?
I am not too sure. give it a go. check the wiring on your screen before powering it on though
Can we make a dyi gameboy using this
i think its really possible
when i write make -j didn´t appear something, am i doing something wrong?
cmake -DILI9341=ON -DGPIO_TFT_DATA_CONTROL=24 -DGPIO_TFT_RESET_PIN=25 -DSPI_BUS_CLOCK_DIVISOR=6
Try above before make -j step
@@bamsegod ok, i will try it c:
@@bamsegod it compiles, but nothing appears in the tft screen, i think it is the same model that yours
@@abrahamsanchez2461 check the wiring make sure that you datacontrol pin is going to gpio 24 (not pin 24) and reset pin is going to gpio 25.
I make it Even longer, with all the information in they Github, but yeah thats my problem, pin isnt the dame as gpio
The cmake step failed on my zero W. Here's what it spit out (bottom 5 lines):
cmake -DCMAKE_BUILD_TYPE=Release -DADAFRUIT_ILI9341_PITFT=ON ..
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Doing a Release build
-- Board revision: 9000c1
-- Detected this Pi to be one of: Pi A, A+, B rev. 1, B rev. 2, B+, CM1, Zero or Zero W, with single hardware core and ARMv6Z instruction set CPU.
-- Targeting a Raspberry Pi with only one hardware core
-- Enabling optimization flags that target ARMv6Z instruction set (Pi Model A, Pi Model B, Compute Module 1, Pi Zero/Zero W)
-- Scaling source image to view. If the HDMI resolution does not match the SPI display resolution, this will produce blurriness. Match the HDMI display resolution with the SPI resolution in /boot/config.txt to get crisp pixel perfect rendering, or alternatively pass -DDISPLAY_CROPPED_INSTEAD_OF_SCALING=ON to crop instead of scale if you want to view the center of the screen pixel perfect when HDMI and SPI resolutions do not match.
-- Preserving aspect ratio when scaling source image to the SPI display, introducing letterboxing/pillarboxing if HDMI and SPI aspect ratios are different (Pass -DDISPLAY_BREAK_ASPECT_RATIO_WHEN_SCALING=ON to stretch HDMI to cover full screen if you do not care about aspect ratio)
CMake Error at CMakeLists.txt:130 (message):
Please define -DSPI_BUS_CLOCK_DIVISOR= on the CMake
command line! (see files ili9341.h/waveshare35b.h for details) This
parameter along with core_freq=xxx in /boot/config.txt defines the SPI
display speed. Smaller divisor number=faster speed, higher number=slower.
-- Configuring incomplete, errors occurred!
See also "/home/pi/fbcp-ili9341/build/CMakeFiles/CMakeOutput.log".
In the ../CMakeLists.txt there is a line around 130 where the SPI bus clock divisor is set to 0. The line looks like this:
set(SPI_BUS_CLOCK_DIVISOR 40 CACHE STRING "Specify the SPI0 CDIV ... blah blah blah
I think it wants an even number there. I tried 40, as it recommended, but the make -j failed at 94% while throwing errors about SPI_BUS_CLOCK_DIVISOR. Any idea what that number should actually be?
I figured it out! I left the CMakeLists.txt as it is. The clock divisor needed to be set with the cmake command. Instead of entering:
cmake -DCMAKE_BUILD_TYPE=Release -DADAFRUIT_ILI9341_PITFT=ON ..
I entered this and it worked:
cmake -DCMAKE_BUILD_TYPE=Release -DADAFRUIT_ILI9341_PITFT=ON -DSPI_BUS_CLOCK_DIVISOR=40..
That's all one line, btw. Not sure if 40 is the best value, since I just used it because the above txt file said it is safe, but the screen is working and the frame rate appears to be much better.
For some reason, there is a bunch of data at the top of the screen. It looks like frame rate, mbpa, some kind of frequency in Hz, temperature in c, CPU, DMAT, SPI MHz, and GPU. Anyone know how to get rid of it?
6:02 i get error
There is a new method now. You need to specify more parameters in cmake
6:05 doesnt work
The method is changed slightly, check some comments below
Dude... can you turn the music off while you talk? It's painful and hard to hear you.
Sorry can't do anything now. Rookie mistake on my part. If you have any trouble understanding anything let me know and I will try my best to resolve it. Cheers
@@bamsegod thanks, better luck next time.
@@BrainSlugs83 cheers.