GithubHelp home page GithubHelp logo

luc-github / esp3d Goto Github PK

View Code? Open in Web Editor NEW
1.7K 102.0 464.0 127.69 MB

FW for ESP8266/ESP8285/ESP32 used with 3D printer

License: GNU General Public License v3.0

C++ 74.75% HTML 5.63% Shell 0.33% Batchfile 0.03% JavaScript 1.69% CSS 0.47% C 17.09% Makefile 0.01%
arduino esp8266 esp32 3d-printer firmware repetier wifi esp8285 marlin smoothieware

esp3d's Introduction

Firmware for ESP8266/ESP8285 and ESP32 used with 3D printer

All Contributors

Latest stable release Release Version Release Date github-ci Release Version
please use Arduino ide 1.8.9+ with Release Version or Release Version

Latest development version Development Version GitHub last commit (branch) github-ci Development  Version
please use Arduino ide 1.8.9+ with Release Version or Release Version Project Page ESP3D 3.0

All releases

Warning

Disclaimer

The software is provided 'as is,' without any warranty of any kind, expressed or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, and non-infringement. In no event shall the authors or copyright holders be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software. It is essential that you carefully read and understand this disclaimer before using this software and its components. If you do not agree with any part of this disclaimer, please refrain from using the software.

This firmware allows not only to have a cheap bridge between Wifi and serial, but also to have a web UI to configure wifi, to monitor 3D printer and even control it, and to make things easy, UI is fully customizable without reflashing FW.

Firmware should work with any 3D printer firmware (repetier/marlin/smoothieware using GCODE) if serial connection has a correct setup. I currently use it with my personnal flavor of repetier for Due based boards.

The web interface files are present in data directory but UI has it's own repository ESP3D-WEBUI.

  • Be aware ESP3D-WEBUI is for firmware 0.9.99 minimum - previous released version use tpl files which are no more used.
  • Note for ESP8266 1MB flash : FW is now too big will all features you need to chose strip the FW and select only some features, also WebUI is now also too big for full multilanguage support to fit the 128K SPIFFS so please use pack with limited language (en +another) https://github.com/luc-github/ESP3D-WEBUI/tree/2.1/languages

This branch does not take any new features, only bug fix, for new feature please use https://github.com/luc-github/ESP3D/tree/3.0, thank you.

Sponsors

  

Supporters

Become a sponsor or a supporter

  • A sponsor is a recurent donator
    If your tier is 10 US$/month or more, to thank you for your support, your logo / avatar will be added to the readme page with eventually with a link to your site.
  • A supporter is per time donator If your donation is over 120 US$ per year, to thank you for your support, your logo / avatar will be added to the readme page with eventually with a link to your site.

Every support is welcome, indeed helping users / developing new features need time and devices, donations contribute a lot to make things happen, thank you.

  • liberapay Donate using Liberapay
  • Paypal PayPal – The safer, easier way to pay online.
  • ko-fi ko-fi

Features

  • Serial/Wifi bridge using configurable port 8888
  • Use GPIO2 to ground to reset all settings in hard way - 2-6 sec after boot / not before!! Set GPIO2 to ground before boot change boot mode and go to special boot that do not reach FW. Currently boot take 10 sec - giving 8 seconds to connect GPIO2 to GND and do a hard recovery for settings
  • Complete configuration by web browser (Station or Access point) or by Serial/telnet commands
  • Authentication (optional) for better security
  • Update firmware by web browser
  • Captive portal in Access point mode which redirect all unknow call to main page
  • mDNS which allows to key the name defined in web browser and connect only with bonjour installed on computer
  • SSDP, this feature is a discovery protocol, supported on Windows out of the box
  • Fail safe mode (Access point)is enabled if cannot connect to defined station at boot.
  • Embedded FS uploader and updater.
  • OLED screen support
  • Notifications using Line / Pushover / email
  • The web ui add even more feature : https://github.com/luc-github/ESP3D-WEBUI/blob/2.1/README.md#features

Default Configuration

Default Settings:

  • Access Point: ESP3D
  • PW:12345678
  • Authentification: WPA
  • IP: 192.168.0.1
  • Baud rate: 115200
  • Web port:80
  • Data port: 8888
    if Authentication is enabled :
  • User: admin
  • Password: admin
  • User:user
  • Password: user

Direct commands:

Check Documentation

Installation instructions

See Documentation

Installation

Feedback on 2.0 was : ESP3D being a library is not really useful and make setup more complex, so now we are back to simple application.

  1. If you haven't already set up Arduino IDE for ESPs then do so for ESP8266 or ESP32 core version.
  2. Download the latest release and manually copy the libraries present in the ESP3D-x.y.z/libraries directory into your Arduino/libraries directory. (no need if using platformIO). These versions are verified to work with ESP3D, any others (newer version) may cause untested behavior.
  • Use webserver support (recommended as stable), asyncwebserver support is no longer stable on ESP3D
    • arduinoWebSockets from @Links2004

Generic ones:
Specific for ESP32

  • ESP32SSDP If you want OLED support:
  • oled-ssd1306 from @squix78

If you want DHT11/22 support:

  • DHT_sensor_library_for_ESPx from @beegee-tokyo
  1. Compile project esp3d.ino according target: ESP8266 board or ESP32 board, please review config.h to enable disable a feature, by default athentication is disabled and most others are enabled.
  • for ESP8266 set CPU freq to 160MHz for better
  1. Upload the data content on ESP3D file system
  • Using SPIFFS uploader, this plugin and install instructions is available on each ESP core - please refere to it or
  • Using embedded uploader (you may need to format SPIFFS using : [ESP710]FORMAT on ESP8266 first)
    if embedded uploader does not show up you can force it ti display using : http://your_IP_address?forcefallback=yes

Update

  • Generate a binary using the export binary menu from Arduino IDE and upload it using ESP-WEBUI or embedded interface

⚠️Do not flash your Printer fw with ESP connected on Serial - it bring troubles, at least on DaVinci, but no issue if you update using web UI

Contribution/customization

  • To style the code before pushing PR please use astyle --style=otbs *.h *.cpp *.ino
  • The embedded page is created using nodejs then gulp to generate a compressed html page (tool.html.gz), all necessary modules will be installed using the build.bat, you also need bin2c tool (https://sourceforge.net/projects/bin2c/) to generate the h file from the binary, installation and build is done using the build.bat.
  • The corresponding UI is located here

Need more information about supported boards or wiring ?

Check Hardware support and Wiring support

❓Any question ?

Check Documentation or Join the chat at Discord server

The reference site: http://esp3d.io/

❗Any issue/feedback ?

Check FAQ If you still have issue: submit ticket
If it is not an issue join discussion here

ESP3D is used by :

This is for information only - I am not linked to these products, it is just a search result of a query using ESP3D as keyword. So I am not responsible of any usage of them.

⚠️ Do not use this repository for boards using custom firmware, you will lose several features.

  • More to come...

👍Thanks

  • to @disneysw for bringing this module idea
  • to @lkarlslund for suggestion about independent reset using GPIO2
  • to Roy Cortes from http://www.panucatt.com for supporting and pushing me implementing great features
  • to all contributors, feedbacks owners and donations.

If you use ESP3D on your product, drop me a message so I can link your product page here.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Harald Wagener
Harald Wagener

📖
Luke
Luke

📖
Julien Staub
Julien Staub

📖
John Bain
John Bain

💻
Xstasy
Xstasy

💻
Семён Марьясин
Семён Марьясин

💻
Pascal de Bruijn
Pascal de Bruijn

🤔 💻
jschwalbe
jschwalbe

📖
Matthias Hryniszak
Matthias Hryniszak

💻
T. Reepleks
T. Reepleks

💻
Austin St. Aubin
Austin St. Aubin

💻
Patrick José Pereira
Patrick José Pereira

💻
John Little
John Little

💻
david gauchard
david gauchard

💻 🤔
coliss86
coliss86

📖
Farkas Péter
Farkas Péter

💻
Panucatt
Panucatt

🤔 📣 🐛
makerbase
makerbase

📦 💵 🐛
liqijian101
liqijian101

🤔 🐛 📦
disneysw
disneysw

🤔
FYSETC.COM
FYSETC.COM

💵 🐛 📦
BIGTREETECH
BIGTREETECH

📦
David Buezas
David Buezas

💻 🐛
E2D
E2D

💻 🐛
rondlh
rondlh

💻 🐛
Levak
Levak

💻 🐛

This project follows the all-contributors specification. Contributions of any kind welcome!

esp3d's People

Contributors

a7f avatar alhirzel avatar allcontributors[bot] avatar atsju avatar austinsaintaubin avatar coliss86 avatar dependabot[bot] avatar fape avatar gitter-badger avatar j0hnlittle avatar jschwalbe avatar kingbain avatar luc-github avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

esp3d's Issues

Unable to compile because class IPAddress has no member named 'toString'

Hi im unable to compile the code, because:

Arduino: 1.6.5 (Windows 7), Platine: "Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS)"

command.cpp: In static member function 'static void COMMAND::execute_command(int, String)':
command.cpp:44: error: 'class IPAddress' has no member named 'toString'
    if (wifi_get_opmode()==WIFI_STA)currentIP=WiFi.localIP().toString();
                                                             ^
command.cpp:45: error: 'class IPAddress' has no member named 'toString'
    else currentIP=WiFi.softAPIP().toString();
                                   ^
'class IPAddress' has no member named 'toString'

  Dieser Report hätte mehr Informationen mit
  "Ausführliche Ausgabe während der Kompilierung"
  aktiviert in Datei > Einstellungen

Please help me Oo.
Thanks in advance

Handle serial commands for configuration

module should be able to be configured by serial if no available wifi client
back bone is ready, [ESPxxx] is the template where xxx is command number and are the parameters
need to define what command are useful :
status
set ap/station mode (done) [ESP103]APP or [ESP103]STA
set SSID/password (done)[ESP100] and [ESP101]
set PHY mode
set authentification mode
set channel
set IP/GW/subnet
Get mode (ap/sta)
Get SSID
Get IP/GW/subnet IP done: [ESP111]
Get connection status
Restart [ESP888]RESTART
Reset Config [ESP444]RESET
Write Config [ESP444]CONFIG

Error while esp8266 is running the code

I connected HX711 to my arduino uno and trying to upload the data from it through the digital pins (7,8) to an website . The code is uploading perfectly but when I open the serial monitor im getting this....

ets Jan 8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld

is thrown by device via serial interface.
any idea what i`m making wrong?

Web Front End for handling printer

need to define features:
current test code is able to get temperatures from M105 command, every second, but no UI is defined, plan to use some svg images to enhance UI
front end should allow to:
check printer status
edit eeprom?
pause/stop print
restart printer
list SD content
start a print using SD file ?
control temperature ?
change speed ?
jog axis ?

advanced:
send email is issue detected? print is done?

any comment suggestion is welcome

When printer is busy web ui is moved to processing

if printer is in busy loop that take more than 3s ( like homing) ESP considers data out of date and switch off the temperature UI and display processing, which is initially to prepare data only not for printer busy
Would be better to always display even no data refresh, and use the timer to display a status: printer online or printer busy

SOFTAP is broken due to memory overload

I cannot use AP mode anymore - need to disable CSS to get display when it was working before - no idea where this come from - I tried http://arduino.esp8266.com/versions/1.6.5-1084-ga39ce29/package_esp8266com_index.json and it is working

As I am rewriting UI using template engine and SPIFFS this will decrease usage of PROGMEM and string manipulation
Page will also be created and send part by parts to avoid usage of whole memory for the page - instead of creating a 8K page then cut it to be send by 2k parts - I will create 2k then send - then continue to redo 2K then send, etc... so page will not be complete in memory and so won't have any size limitation.

AP Configuration shows Station SSID and Password

Feature request: Separate SSID and password for AP and station.
I guess if you apply on on the AP Configuration page it`ll take over the SSID and will try to start an own AP with the values of my existing router.

UI enhancement/optimization

Basic UI is done / back end is ready - but I am not a designer anyone want to improve or have suggestion - please feel free

Randomly module reset

this can be seen when using a long time (memory leak ?) but memory says 24k when going to Home

result is connection is lost need refresh page manually, all history of status/error/info is lost

Any configuration of Repetier needed ?

Hi,

id souccessfully flashed the ESP and id got it connected with the DaVinci.
But it cant connect to the printer because the printer do not answer.
Id also checked if id miss cabled RX/RX or TX/TX, there is no communication.
The ESP sends a lot of gcode to the printer, but it dont get any answer.

Do i have to change something in the Repetier Firmware to let it work ?

Thanks in advance.

UI refresh issue

time to time
UI display
X:.00 Y:0.00 Z:0.000 Speed:100% Flow:100%
instead of
X:0.00 Y:0.00 Z:0.000 Speed:100% Flow:100%

because it is a modification of stored string it means original data is corrupted or replace is buggy in some way

Does the DaVinci 1.0 have enough power ?

Hi, id would like to test your ESP8266 firmware, but do the DaVinci really have enough power on the connector ? Or should i connect the esp to the main 5V rail ? Im just asking because i dont know where the 5V line is connected, i dont want to burn the poor SAM....

Sorry for my english.

Thanks in advance.

Error Wifi AP! M117 192.168.0.1

compiled without change anything in source give error
after try with change ip, name etc nothing to do and print "Error Wifi AP! M117 192.168.0.1"

i think not initialize esp to ap mode
my version of esp8266 is 01
http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-01
arduino version 1.6.5

esp compiled with other source working
for example this is ok and esp go to ap mode
https://github.com/esp8266/Arduino/blob/ea302aab05480ad36c076b618abb642b1eb1893b/hardware/esp8266com/esp8266/libraries/DNSServer/examples/CaptivePortal/CaptivePortal.ino

Need light CSS extracted from bootstrap one

to avoid to be dependent from web connection - a light css with only necessary items would be easy to be embedded in web page to give nice use experience when disconnected from internet - like in AP mode - here the current UI when connected to internet

image

Random Exception (28) - Memory capacity + Captive portal problem

randomly this exception apear but I was not able to reproduce it on simple sketch so it is not module issue but code issue.
I do not know where the issue come from - I know urldecode function may bring this issue as it is not secured yet but this happen just on page navigation not on queries so it is not urldecode.

As I will rewrite UI engine with a template engine, I will review all pages and enhance memory checking, I hope this will fix this issue

Add Hostname as configuration option

To be able to change hostname from configuration web page (system page) and use same for bonjour protocol
currently : ESP+mac number for hostname and esp8266.local for bonjour

better to be able to customize use same for both

Reset

Thanks for a very good project 👍 and thanks for sharing it.

When I applay a page, and there is a EPS8266.restart(), it will not boot up again. There is no debug messages (which at first start up) and there will be no life in the wireless network (ESP8266).

Do I something wrong, I use a NodeMCU 1.0

Best regards
Per

reset after connecting to webserver

ets Jan 8 2013,rst cause:4, boot mode:(3,6)

wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld

is thrown by device via serial interface.
any idea what i`m making wrong?

Best regards,
CaptBlaubaer

printer.tpl is too big and need to be optimized on 64K SPIFFS

It use 26K eating 50% of available SPIFFS - and no favicon.ico can be added - neither UI for SDCard management and EEPROM management - reducing fancy UI will allow to add the missing space for additional feature on on 64K SPIFFS
Target is less than 10K :
possible ideas :

  • remove range controls
  • using button instead of picture for up and down and home
  • use radio button to set the step 0.1/1/10

Change send function to limit string size in memory

currently one big string is used to store the whole page which is used by send function which will cut the string in part because sending is limited to a size under 4K

so we can have 2x the size of the page a once which can lead to out of memory
the best is to add the page content until buffer is full then send - then refill the the buffer and purge the buffer at the end.
the issue is the content-length is not defined but browser will display page anyway and cut connection after 2s so should be ok

test, errors and urgent options

program works at 250.000 baud, no problem to connect
stability is ok with good power supply
first problem detected: printer status not update and remain stopped if you use browser update (chrome browser)
For restart connection to printer you need to select "station configuration" and reconnect to "printer status"
i suggest to add this options for productive use:

  • movement icons: home buttom for axis, up/down and left/right at step of 1mm and 10mm (i think easy to add this options)
  • real time temperature control
  • stop/pause/restart button
  • sd_memory: upload, delete and select file to print
  • feed speed direct control

advanced option:

  • use low price I2C webcam as Ov7670 for direct printing remote monitoring

professional option:

  • 3d model preview :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.