RepPanel - A DIY alternative to the PanelDue with WiFi support
-
@pandaym @seeul8er Glad you got it working and huge thanks for sharing your troubleshooting process. It's been incredibly valuable detailing everything you tried and has no doubt saved me hours. It seems I am in a similar situation with SPI for both the display and touch but have a different touch controller.
I am currently stuck with nothing being displayed. I have tried setting the touch to none as you did but no luck. You said you changed some GPIO? Could you share your sdkconfig file. I would very much appreciate it.
-
So I made some progress, I got the display working but no touch and the colours are all off. There are lots of posts in arduino forums of people having problems with ILI9488 displays and something about inverting the display but I can't make sense of how to do it in this application. I've tried changing a couple of parameters in the LVGL driver but to no avail. I think the RGB is in the wrong order but not entirely sure.
As far as the touch goes, I get responses with the monitor on but no co-ordinates, they're all 0,0.
-
@littlehobbyshop said in RepPanel - A DIY alternative to the PanelDue with WiFi support:
So I made some progress, I got the display working but no touch and the colours are all off.
Have you considered to use a Nextion display? These are smart displays that allow to design rich GUIs using a graphical editor and interact with it using simple commands over a serial interface. This will allow you to focus on functionality rather than the tedious work of dealing with hardware bits.
-
@zapta I think you misunderstand, I'm not the designer of this project, I'm try to implement it.
-
@littlehobbyshop Check the color depth in the config file. It should be 16bit. The swap can be set here. Maybe some of the settings in menuconfig broke during the port to your display.
Also check if it actually is compiled with that option.@zapta Yes I did. But they tend to be lower in quality - breaking a lot more often. The API on how to program them (request/display data) is not a good match to the RepRap API. You would need an additional microcontroller to translate the commands as far as I understood. So no real benefit on software nor hardware side.
-
@seeul8er said in RepPanel - A DIY alternative to the PanelDue with WiFi support:
You would need an additional microcontroller to translate the commands as far as I understood
Since you have an ESP32, it can send the command to the Nextion via a serial port. The commands are simple text such as field.val="123", and the field itself is designed with a GUI editor they provide.
What you are doing very good. However if you find yourself spending too much time on implementing the GUI that you want, switching to Nextion will speed up the process and will lower the hassle factor of adding new features. That was at least the case with one of my recent projects.
Anyway, I like your project very much.
-
@zapta I totally agree. That option was my favourite for a while. It can get the job done very quickly. However, I also do these projects to up my skills on a specific subject and I do not like to be constrained a lot when it comes to choosing my tools. The UIs produced by the more affordable nextion displays look kind of shitty in my opinion. Maybe due to a reduced feature/cpu power set.
The project is already in a released state and I am using it for my prints so the hard work is done
-
@seeul8er said in RepPanel - A DIY alternative to the PanelDue with WiFi support:
The project is already in a released state...
That's what count
I see that you use the lvgl library, I will check it out for my projects.
-
@seeul8er said in RepPanel - A DIY alternative to the PanelDue with WiFi support:
But they tend to be lower in quality - breaking a lot more often.
empirical data? genuinely curious if really inferior or if lending temselves to protptyping and rapid development just means they see more and harder use? waiting for my first one to try out with zapta's stepper analyzer and will perhaps borrow it for other one-off type projects.
-
@bearer said in RepPanel - A DIY alternative to the PanelDue with WiFi support:
empirical data?
I have a 3.5" and I don't see why it should be less reliable than similar TFT screens.
BTW, one cool feature of the Nextion is the ability to run the MCU code against a simulator on your computer, via serial over USB. A little bit tricky but doable. This is how I took the screenshots for the documentation.
However, the lvgl library is intriguing. I plan to play with it and see how easy it is to design and use GUIs. One thing I would like to try one day is a battery operated Duet monitor with ePaper display for a long battery life, maybe even with a small indoor solar panel.
-
@seeul8er Thanks for your help. Display is now working, the invert was on and now it's off.
Now struggling with the touch, it's an XPT2046 capcitive touch, I'm getting feedback on the monitor so at least the interrupt is wired correctly but no co-ordinates.
Looking through some LVGL posts others have had issues with the SPI speed and it looks like there have been updates to the XPT2046 driver in recent months but there's lots that is new here for me and I could be heading down the wrong rabbit hole.
Any pointers? -
Hi,
I ordered a display and ESP32, but all I get is a white screen. Looking at a serial console, I get the following output:rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0018,len:4 load:0x3fff001c,len:6960 ho 0 tail 12 room 4 load:0x40078000,len:14076 load:0x40080400,len:4352 entry 0x400806ec [0;32mI (74) boot: Chip Revision: 1[0m [0;32mI (74) boot_comm: chip revision: 1, min. bootloader chip revision: 0[0m [0;32mI (41) boot: ESP-IDF v4.0.1 2nd stage bootloader[0m [0;32mI (41) boot: compile time 13:22:55[0m [0;32mI (41) boot: Enabling RNG early entropy source...[0m [0;32mI (45) boot: SPI Speed : 40MHz[0m [0;32mI (49) boot: SPI Mode : DIO[0m [0;32mI (53) boot: SPI Flash Size : 4MB[0m [0;32mI (57) boot: Partition Table:[0m [0;32mI (61) boot: ## Label Usage Type ST Offset Length[0m [0;32mI (68) boot: 0 nvs WiFi data 01 02 00009000 00006000[0m [0;32mI (76) boot: 1 phy_init RF data 01 01 0000f000 00001000[0m [0;32mI (83) boot: 2 factory factory app 00 00 00010000 00200000[0m [0;32mI (91) boot: End of partition table[0m [0;32mI (95) boot_comm: chip revision: 1, min. application chip revision: 0[0m [0;32mI (102) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x80728 (526120) map[0m [0;32mI (299) esp_image: segment 1: paddr=0x00090750 vaddr=0x3ffb0000 size=0x041cc ( 16844) load[0m [0;32mI (306) esp_image: segment 2: paddr=0x00094924 vaddr=0x40080000 size=0x00400 ( 1024) load[0m [0;32mI (307) esp_image: segment 3: paddr=0x00094d2c vaddr=0x40080400 size=0x0b2e4 ( 45796) load[0m [0;32mI (334) esp_image: segment 4: paddr=0x000a0018 vaddr=0x400d0018 size=0xc0010 (786448) map[0m [0;32mI (616) esp_image: segment 5: paddr=0x00160030 vaddr=0x4008b6e4 size=0x0c68c ( 50828) load[0m [0;32mI (652) boot: Loaded app from partition at offset 0x10000[0m [0;32mI (652) boot: Disabling RNG early entropy source...[0m [0;32mI (653) cpu_start: Pro cpu up.[0m [0;32mI (656) cpu_start: Application information:[0m [0;32mI (661) cpu_start: Project name: reppanel_esp32[0m [0;32mI (666) cpu_start: App version: v1.0.2-dirty[0m [0;32mI (672) cpu_start: Compile time: Jun 22 2020 18:25:51[0m [0;32mI (678) cpu_start: ELF file SHA256: 8b85d585a6bdd293...[0m [0;32mI (684) cpu_start: ESP-IDF: v4.0.1[0m [0;32mI (689) cpu_start: Starting app cpu, entry point is 0x40081468[0m [0;32mI (0) cpu_start: App cpu up.[0m [0;32mI (699) heap_init: Initializing. RAM available for dynamic allocation:[0m [0;32mI (706) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM[0m [0;32mI (712) heap_init: At 3FFDA238 len 00005DC8 (23 KiB): DRAM[0m [0;32mI (718) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM[0m [0;32mI (725) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM[0m [0;32mI (731) heap_init: At 40097D70 len 00008290 (32 KiB): IRAM[0m [0;32mI (737) cpu_start: Pro cpu start user code[0m [0;32mI (755) spi_flash: detected chip: generic[0m [0;32mI (756) spi_flash: flash io: dio[0m [0;32mI (756) cpu_start: Starting scheduler on PRO CPU.[0m [0;32mI (0) cpu_start: Starting scheduler on APP CPU.[0m [0;32mI (210) ILI9488: ILI9488 initialization.[0m [0;32mI (510) ILI9488: Enabling backlight.[0m [0;32mI (510) FT6X36: Found touch panel controller[0m [0;31mE (510) FT6X36: Error reading from device: ERROR[0m [0;32mI (510) FT6X36: Device ID: 0x00[0m [0;32mI (520) FT6X36: Chip ID: 0x00[0m [0;32mI (520) FT6X36: Device mode: 0x00[0m [0;32mI (530) FT6X36: Firmware ID: 0x00[0m [0;32mI (530) FT6X36: Release code: 0x00[0m
I double checked the wiring twice, but cannot rule out the possibility of miswiring of course, but I also cannot find an error myself.
-
Reading more of the thread closely again, the display turns on when switching to 5V, but it looks like the touch controller is not being detected correctly.
-
@oliof What display? The recommended one? Can you post your wiring please, especially the touch panel stuff.
-
I got the recommended panel (ER-TFTM035-6). Wiring is as per README.md,
ESP32 GPIO TFT Pin Color 13 27 white 14 24 yellow 15 23 grey 22 30 orange 21 31 brown 4 21 violet 2 25 green 27 29 blue Some photos at https://photos.app.goo.gl/gmXPoCFF2FA5Ge2M8
NB: I can only get the display working with the precompiled binaries, building from source was quite hairy to set up, and all I get is a white screen. I didn't find documentation about how to configure the screen correctly, so I am fumbling around a bit there.
-
@oliof said in RepPanel - A DIY alternative to the PanelDue with WiFi support:
(510) FT6X36: Found touch panel controller (510) FT6X36: Error reading from device: ERROR (510) FT6X36: Device ID: 0x00 (520) FT6X36: Chip ID: 0x00 (520) FT6X36: Device mode: 0x00 (530) FT6X36: Firmware ID: 0x00 (530) FT6X36: Release code: 0x00
It looks like I ordered the screen with the resistive touch panel, so this can't work (FT6x36 is capacitative if I got it right). I will see if I can get my own build up.
-
@oliof Was about to suggest that. Your touch panel looks a little different than mine. You can check if J8 on the TFT is closed. Closed means resistive touch.
You can configure the build by dunning
idf.py menuconfig
Check the config options.
Set the display controller manually to ILI9488. The resistive touch panel is a XPT2046. Configure that one as well. You can choose the pins now. I recommend to go with the ones from the readme -
The RepPanel Readme or the LVGL Readme?
-
@oliof The RepPanel Readme. At least what the TFT is concerned. The touch controller should be SPI as far as I rememember. So you will need to hook it up to the VSPI of the ESP32. The default pins of LVGL should work fine I guess. I updated the repo a few days ago so make sure you use the latest lv_conf.h (copy content from lv_conf_back.h). It fixes random UI freezes.
-
@seeul8er I checked out master and will try to sort this out over the weekend. Thanks for your help so far!