luc-github / ESP3D

FW for ESP8266/ESP8285/ESP32 used with 3D printer
GNU General Public License v3.0
1.73k stars 465 forks source link

ESP 3D 3.0 Status #239

Closed luc-github closed 3 years ago

luc-github commented 6 years ago

Ok time to prepare 3.0

What is the plan ? Do what was not done in 2.0/2.1 :wink:

1 - Nextion Screen support ((ESP3D + Nextion FW) (postponed / cancelled) use touch tft instead 2 - M408 support according target FW support (WebUI) (ongoing) 3 - Reprap support 4 - MKS TFT WiFI support (Simulate MKS-WiFi module behavior to use the connector) 5 - ESP3D as Library as part of main board FW (eg Marlin) Code is emmbedded in Marlin ESP3DLib or GRBL_ESP32 firmware so will be a porting when 3.0 stand alone is done _6 - UI improvement :

Amtho commented 6 years ago

Nice list of work. Sorry i think i cant help you much to accomplish all. Im more from the electrician/hardware site... But as you may have noticed ;) SD Card support directly on the ESP32 would be my top wish ;)

luc-github commented 6 years ago

No worry, testing and feedback are great help, so you help ^_^

luc-github commented 6 years ago

PR for sync webserver (esp8266/ESP32) have beed done - first one is in waiting list for 2.5 and second one is merged already

I am spending some time on UI to get consistent UI across browsers and devices - especially mobile devices - seems response behvior of bootstrap 3.0 is little bit messy sometimes - so need to be managed

ModMike commented 6 years ago

Marlin library is brilliant!

luc-github commented 6 years ago

About Marlin library code is under early development here : https://github.com/luc-github/Marlin/tree/esp32 because hard to separate both code
Latest Status is here: https://github.com/luc-github/Marlin/issues/1
it is alpha state and need code cleaning as I currently I focus on 'feasability' first - once everything is working / code will be cleaned for sure

vivian-ng commented 5 years ago

Another feature request (wishlist?): display the interface on a touch screen (not just the Nextion) so that it can be used with generic TFT screens which we usually use with Arduino or STM32 dev kits. This is probably quite a major undertaking with a total design of the menu tree plus touch interface. Maybe start small without touch (use buttons or rotary encoder for inputs). Just an idea that makes the ESP3D effective the "OS" for MKS TFT alternative.

luc-github commented 5 years ago

Currently Oled screen is supported Having TFT or Nextion make sense only if ESP3D become a Host or you have something else in mind ?

So first step is to add full host feature - which is planned then TFT

Do you have TFT screen to recommend ? One you already used and happy with Nextion is nice for easy customization but I am not really happy with touch responsiveness - so TFT support should happen before Nextion

vivian-ng commented 5 years ago

@luc-github Yes, full host feature is what I was thinking about. The web interface is great already, but without a local interface, it is still somewhat hard to use. So a screen and input (rotary encoder or buttons) would be great. But that only comes after full host feature.

As for screens, I have a few lying around, using ILI9341 (need additional 8 pins), ILI9225 (SPI), ILI9486 (need additional 8 pins), and ST7735S (SPI). I also have a M5Stack, which comes with its own screen and 3 buttons (so it already has all the stuff required to be a host). I am not a very good programmer, but I hope to help by testing and debugging.

luc-github commented 5 years ago

@vivian-ng thanks for the feedback - I have ordered a couple of ILI9341 which seems well supported by ESP32 I will received them in 2 weeks I guess - I will start to check then

luc-github commented 5 years ago

GRBL-ESP32 and Marlin-ESP32 are now using using ESP-WEBUI 2.1 I will create an ESP3D 2.1 branch soon to sync latest bug fixes and features to ESP3D itself

2.1 is mostly ESP32 focused because more and more possibilities / features come with ESP32 the top 2 I am exited to integrate : 1 - Touch Screen TFT for ESP32 as host (got ILI9341 screen to play with) 2 - Camera (just got couple of OV2640 modules and M5Stack ESP32 camera modules )

luc-github commented 5 years ago

Ok I have re-ordered TFT as the ones I got were without touch :disappointed: this time the Touch is confirmed to be XPT2046 spi port ....

luc-github commented 5 years ago

I rename topic 3.0 - I am rewriting the complete core because I want to add more cross platform functions and simplify the code by splitting files by functions So it will be easier to add new features or modify existing ones because it is big rewrite - I thing it make sense to change the major version number

luc-github commented 5 years ago

I remove Reprap support as there Marlin Emulation I add Fat File System for ESP32 I add Serial Bluetooth for ESP32 also I remove ESP3D as Library as part of main board FW because now already part of GRBL and Marlin

just-jason commented 5 years ago

Hi Luc, the M5 stack camera modules look great, I also found these, and was wondering what you think of them as candidates of ESP3D. The thing that catches my eye is the built in SD card. This opens a few possibilities for host function, or at least file upload to sd card. https://www.aliexpress.com/item/1pcs-ESP32-CAM-WiFi-WiFi-Module-ESP32-serial-to-WiFi-ESP32-CAM-Development-Board-5V-Bluetooth/32955484091.html

luc-github commented 5 years ago

Hi Yes I have M5 stack camera and was in plan to work on it but I am not really familar on video coding During my tests the board was really hot - make me wonder it use mcu a lot so I am not sure it can handle more but need to test. I have also saw the other board and did not noticed the SD card reader ... which is better candidate for sure - but again I am not familiar with video coding so it could take some time but I agree would be great combo

vivian-ng commented 5 years ago

Hi Luc, the M5 stack camera modules look great, I also found these, and was wondering what you think of them as candidates of ESP3D. The thing that catches my eye is the built in SD card. This opens a few possibilities for host function, or at least file upload to sd card. https://www.aliexpress.com/item/1pcs-ESP32-CAM-WiFi-WiFi-Module-ESP32-serial-to-WiFi-ESP32-CAM-Development-Board-5V-Bluetooth/32955484091.html These cameras are not as easy to flash as they do not come with USB port.

Even the new M5Cam with PSRAM is working quite hard to stream the video. Without PSRAM, video streaming will have lag. I am not sure if it can handle the additional load of running ESP3D if video streaming is already such a burden. Instead, I intend to use my ESP32CAM and M5CAM modules to monitor my prints. They can be configured to connect to the home router, and then it is just a matter of inserting "http://192.168.x.x/jpg_stream" as the link for camera streaming in Octoprint or ESP3D.

luc-github commented 5 years ago

@vivian-ng ok you confirm my fears

luc-github commented 5 years ago

there a recent sample add : https://github.com/espressif/arduino-esp32/tree/master/libraries/ESP32/examples/Camera/CameraWebServer it may worth to try it

luc-github commented 5 years ago

Quick note, 3.0 have several settings simplifications:

Feel free to comment if any issue

luc-github commented 5 years ago

I am starting working on Ethernet support - I have a board for ESP32 (olimex gateway) but none for ESP8266 .

So currently only the ESP32 Olimex gateway should be supported.

Ethernet will have DHCP / Static IP and can be act as DHCP server, by default not So network modes will be : 1 - Nothing 2 - Wifi AP (static IP only) 3- Wifi STA (static or DHCP IP) 4 - Ethernet Client (static or DHCP IP) 5 - Ethernet Server (static IP only) Not supported by API 6 - Serial Bluetooth I think it should cover all needs, to clarify acting as gateway (WiFi / Ethernet) is out of current specs so far. Feel free to comment

EDIT: Removing Ethernet Server because DHCP server is currently only for WIFI AP not ethernet :sob:

luc-github commented 5 years ago

I see several libraries for ILI9341 and Touch XPT2046 SPI -> TFT_eSPI (esp8266/esp32) https://github.com/Bodmer/TFT_eSPI -> ESP32_TFT_library (esp32) https://github.com/loboris/ESP32_TFT_library

I did not play with any yet

Looks like TFT_eSPI is multiplatform which would be easier to implement Anyone used these libraries or any others ones ? Any comment ?

vivian-ng commented 5 years ago

@luc-github I can see merits of both, so I am quite torn over which to suggest too. -> TFT_eSPI (esp8266/esp32) https://github.com/Bodmer/TFT_eSPI Bodmer seems to be very active in development of drivers for displays, so it is likely that this library is going to be stable and capable, and can probably rely on Bodmer to help if problems are encountered.

-> ESP32_TFT_library (esp32) https://github.com/loboris/ESP32_TFT_library I thought I recognized the name loboris, then I saw the repos and yup, this is the same person who has a fork of MicroPython working on the ESP32 with PSRAM. So it is again someone who can be relied on to help if any problems are encountered.

Similar to you, I think TFT_eSPI seems to be easier to implement, since it is an Arduino library (ESP32_TFT_library doesn't have any Arduino examples, so it is going to be a bit harder to try an figure it out). It also looks to be easier to configure for different displays through the User_Setup_Select.h header file. This makes the implementation more high-level, and we just need to worry more about how to implement features, and let the library handle the backend low-level driver portion. End users will then just need to change the config file to select their specific display, and can then compile.

DerKrawallkeks commented 5 years ago

I just wanted to tell you how great this project is, since I just installed it with an esp8266 on my printer. Again, is there any chance to increase the speed of upload to SD?

luc-github commented 5 years ago

@DerKrawallkeks I have just created a FAQ for this question : https://github.com/luc-github/ESP3D/issues/292, please have a look

luc-github commented 5 years ago

I am now rewriting the web events part to use same api as async with sync webserver - this would simplify the ESP3D and ESP3D-WebUI code not using the Websocket for sync instead, it will also be implemented in embedded page for communication control

IInickII commented 5 years ago

Great work, do you have any guess when can be avaible version with SD print support and what type of ESP32 board do you prefer let I can order one from ebay? Thanks a lot

luc-github commented 5 years ago

this year for sure, ASAP I can do , now an exact date - no sorry - I do others projects in parallele and 3.0 is a big rewrite which also include the WEB-UI, currently I am working on web events, then will implement WebSockets for printer feedback , once done I will work on Embedded Web page to support new communication way, then update webUI to support new communication way also. Then will add SD support, and also time server for file upload, then will be back to webUI to check if everything is Ok, then will add host support and again will have to add this feature to WebUI

So as you see many to be done before something usable - no mention DHT support and TFT screen support and some others minor features I need to work on

About ESP32 any would fit I think, I have several ones - and will I try all during test - do not use the too cheapest chinese ones - I got some really cheap ESP8266 / ESP32 which were actually really crappy and not working... Choose the one you are confortable with , with SD reader is convenient butyou may need the check what SPI pins are used, if you buy without SD you need to buy a SD card reader but this one can have a SD detect feature which is may not the case of embedded ones, but with external SD read it is also easier to use the right pins for connection

IInickII commented 5 years ago

Thank you for reply. Can you give me some link on ebay or somewhere for type of board example which you use? Thanks

luc-github commented 5 years ago

https://www.aliexpress.com/wholesale?spm=2114.search0104.8.11.2951ba86EQdEqQ&initiative_id=QRW_20190124063635&SearchText=t8+v1.7+ttgo+esp32&productId=32853967655

They also have ESP32 with 128Mb flash (16MB) which allow to use FAT ( instead of SPIFFS 11MB)

I usually buy from them : https://www.aliexpress.com/store/1983387?spm=2114.search0104.8.7.46a71368F1Pioi

luc-github commented 5 years ago

But now it is Chinese New year so I think nothing will be sent before 3 weeks

luc-github commented 5 years ago

Testing ILI9143 + ESP32, so far so good ^_^

Just need to solder the SD card reader header, connect all wires, and compile sample accessing JPEG from SD and render image image Everything work out of the box - very nice - back screen is little bit too hot (the LED part) almost burned my fingers... Touch screen reactivity is better than nextion IMHO, but precision is just Ok - need big buttons I think - the keypad sample and calibration sample are working as expected. The embedded SD reader is working well - just miss an SD detect pin, but can use without it

Now need to read ESP32_TFT API and write some code :smile_cat:

luc-github commented 5 years ago

Another change in 3.0 as be a library seems not really a need - be back to single app - and as I got several people not able to install external libraries - everything will be included files organization has been also modified to become simple (1 ino file, 1 configuration file, all others files are in subdirectories - including necessary libraries) Current structure as of today (still miss telnet, websocket, oled, tft, host, etc...) : image This should avoid end user installation issues (I hope) :crossed_fingers:

rikaige commented 5 years ago

Hi Luc, I'm writing you about Nextion display integration... In these days I'm starting to develop something new for my RADDS+Due running MalinKimbra firmware, I have a Nextion display on my shelf but don't really like the MK graphics so I'm drawing a new interface and then I'll make them communicate... Looking for some WiFi implementation I found your project and your will to implement this display that sounds really cool to me :) because this will be totally cross-firmware&hardware compatible, I have never worked with ESP mcu but I will be happy to help with the graphics and Nextion coding ;) In the meanwhile I ordered a couple of ESP (8266 & 32) boards to test the WiFi connectivity and look into the code!

Rikaige

luc-github commented 5 years ago

Thank you - I won't recommend to use ESP8266 as host + screen support + wifi with all ESP3D feature, not enough power - ESP32 is the board I will test only Not acting as host would be a solution for esp8266 but lot of people feel disapointed when they try the SD upload which is slow like hell because of current protocole not really file oriented, acting as host would avoid this.

Sure every help is welcomed - I am definitly not a good designer - I started to write Nextion UI some time ago : nextion1 nextion2 nextion3 nextion4 nextion6 nextion7 nextion8

but result is not really nice, so I moved on to other topics until I get an UI I like and so work on its implementation.

I am also starting to work on ili9143 Touch screen implementation, and design will become soon the problem, I am just at reading API and testing code, I wish to use same UI for Nextion and TFT

What Nextion screen do you have ?

rikaige commented 5 years ago

I have a 3,5" 480x320 basic display now, but it was meant to be used in an other project so when I'll have defined the graphics I'll think about the proper screen size, even if it this seems big enough to me... The cool thing about Nextion, or similar displays, is it is self-sufficient and needs only serial communication to interact with it, thus I was thinking , but not verified yet, about retrieving data using GCode commands as any other host, but leaving all the printing control on the printer hardware, more or less as the ESP is doing I guess...

Do you think having the ESP wired to the printer hardware on Serial and the Nextion on another ESP Serial (HW or SW) with the ESP that handles the display informations will be too demanding for ESP?

As soon as I have something ready I'll share some screenshots of the idea.

luc-github commented 5 years ago

No, Nextion is just a display - it cannot be used as standalone unlike MKS-TFT which is actually a M0 +TFT

The Nextion strength is the ease of use to change UI - you can add code to the UI to simplify the back end and so the communication with ESP but not so much actually.

Yes the ESP must be between Printer and Nextion - ESP32 have Serial + Serial 1 (serial 2 seems having hardware bug for what I read) if no host ESP8266 must use Software Seria,l but I would prefer to start with ESP32 to be sure solution is working first, and see if it is can be optimized for ESP8266 after

On my side : 4.3″ 480X272 normal, 2.4″ 320X240 normal, 3.5” 480x320 enhanced The 4.3″ is perfect size IMHO, the enhanced has rtc included which is nice and some GPIO, 3.5” is really limit for printer UI but can fit, 2.4″ is too small for such UI per my tests

just-jason commented 5 years ago

Hey Luc , how about some beeps from the printer eg, when commanded to start printing, file upload starts / ends? I am sure you can think of a few more good ideas .

luc-github commented 5 years ago

Well could be an idea. But need to be an option as not all Printers/FW support M300 command. Also these commands are time consuming so if use music instead of few beep. Another solution would be to add buzzer on ESP, it won t bother printer with additional command and will work as stand alone what you think ?

just-jason commented 5 years ago

I agree , options are always great. I would be happy to have the option for the printer buzzer. Every one can turn in on/ off according to their setup.

luc-github commented 5 years ago

Just did a sync with my repo to add support for DHT , Reset Pin and Time management https://github.com/luc-github/ESP3D/commit/b0375a3541eca974f88302e5568d71782a92651f Next modules on a way :

dremeier commented 5 years ago

sorry, but where do I find the ESP3D 3.0? I´ve no luck with 2.0.

luc-github commented 5 years ago

3.0 is in 3.0 branch but not yet usable, not in pre alpha as I did not rewrote the webui yet - current webui is not compatible as I have rewritten lot of things. I am first working on pure FW part I have recently pushed the notification port for pushover/Line/Email Next step is the basic host and autostart, then Oled support if you have issue with 2.0 please open issue

dremeier commented 5 years ago

Ok, thank you will fight with 2.0 :-)

luc-github commented 5 years ago

3.0 will be nice I think, but I need time to work on it, sorry

aganov commented 5 years ago

@luc-github Do you have any plans for the web ui. My proposal is to use webpack for the build process and then we can use https://github.com/developit/preact (3kb) or https://github.com/choojs/choo (4kb) to organise the UI into components and bring some reactivity. Also we can replace glyph icons with some svg based icons like https://feathericons.com/ for example... What do you think?

luc-github commented 5 years ago

Not yet, I was planning to reuse the existing javascript I have wrote for 3.X as I do not want online dependency in case printer is not connected to internet - but I am open to new solutions I never used these projects do you ? about glyph currently I use svg extracted from bootstrap, but I am also Ok to change - and there was a request to be able to add new ones so I am fine as soon the size is kept small

To sum up I open to everything but I am not sure I can study all solutions by my own, especially because I do not know them so any proposal is welcome

luc-github commented 5 years ago

@aganov I have created https://github.com/luc-github/ESP3D-WEBUI/issues/47 - which explain also size constraint and I have moved your comment here : https://github.com/luc-github/ESP3D-WEBUI/issues/48

just-jason commented 5 years ago

I am starting working on Ethernet support - I have a board for ESP32 (olimex gateway) but none for ESP8266 .

Anyone know an existing solution for ESP8266 or one that does not need to solder component ? - I am not good at it 😢

If you are still thinking about this , then take a look here

https://esp8266hints.wordpress.com/2018/02/13/adding-an-ethernet-port-to-your-esp-revisited/

luc-github commented 5 years ago

Yes I know this one - it need to do some soldering ^_^, I addition of not beeing good at it - I am lazy, that is why I was looking for a ready solution 😉

luc-github commented 5 years ago

LittleFS is now in esp8266 core git - it should allow time/date unlike current esp8266 SPIFFS, but need to check if current implementation allow it - TBC