Remove wiki from repo and add link to esp3d.io
27
.github/workflows/wiki.yml
vendored
@ -1,27 +0,0 @@
|
||||
name: Deploy Wiki
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
# Trigger only when wiki directory changes
|
||||
- 'wiki/**'
|
||||
branches:
|
||||
# And only on main branch
|
||||
- 2.1.x
|
||||
|
||||
jobs:
|
||||
deploy-wiki:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Push Wiki Changes
|
||||
uses: Andrew-Chen-Wang/github-wiki-action@v3
|
||||
env:
|
||||
# Make sure you have that / at the end. We use rsync
|
||||
# WIKI_DIR's default is wiki/
|
||||
WIKI_DIR: wiki/
|
||||
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
GH_MAIL: ${{ secrets.MY_EMAIL }}
|
||||
GH_NAME: ${{ github.repository_owner }}
|
||||
EXCLUDED_FILES: "a/ b.md"
|
@ -1,155 +0,0 @@
|
||||
# Command line commands for 2.0
|
||||
|
||||
## Format
|
||||
|
||||
Please note all commands are in format `[ESPxx]`. These first brackets `[]` are not optional.
|
||||
Most of the time givin no argument will return current configuration
|
||||
If authentication is on, somme commands will need admin password. They are recognised by the optional argument `[pwd=<admin password>]` in command line.
|
||||
|
||||
## Deviations from standard command line
|
||||
|
||||
Based on command line format from <http://docopt.org/>.
|
||||
|
||||
* `[ESPxxx]` the brackets are part of the command here and do not mean "optional argument"
|
||||
* ALL commands with `=` should be using long arg format `--arg=<val>` for example `[pwd=<admin password>]` should be `[--pwd=<admin password>]`
|
||||
|
||||
## Commands
|
||||
|
||||
### Get/change STA SSID
|
||||
`[ESP100] [<SSID>] [pwd=<admin password>]`
|
||||
|
||||
### Change STA Password
|
||||
`[ESP101] <Password> [pwd=<admin password>]`
|
||||
|
||||
### Get/change Hostname
|
||||
`[ESP102] [<hostname>] [pwd=<admin password>]`
|
||||
|
||||
### Get/change Wifi mode (STA/AP)
|
||||
`[ESP103] [STA | AP] [pwd=<admin password>]`
|
||||
|
||||
### Get/change STA IP mode (DHCP/STATIC)
|
||||
`[ESP104] [DHCP | STATIC] [pwd=<admin password>]`
|
||||
|
||||
### Get/change AP SSID
|
||||
`[ESP105] [<SSID>] [pwd=<admin password>]`
|
||||
|
||||
### Change AP Password
|
||||
`[ESP106] <Password> [pwd=<admin password>]`
|
||||
|
||||
### Get/change AP IP mode (DHCP/STATIC)
|
||||
`[ESP107] [DHCP | STATIC] [pwd=<admin password>]`
|
||||
|
||||
### Get/change wifi state (on/off)
|
||||
`[ESP110] [ON | OFF | RESTART] [pwd=<admin password>]`
|
||||
|
||||
### Get current IP
|
||||
`[ESP111]`
|
||||
|
||||
### Get/Change hostname
|
||||
`[ESP112] [<hostname>]`
|
||||
|
||||
### Get/Set pin value
|
||||
`[ESP201] P<pin> [V<value> PULLUP=YES RAW=YES ANALOG=NO ANALOG_RANGE=255 CLEARCHANNELS=NO pwd=<admin password>]`
|
||||
if no V<value> get P<pin> value
|
||||
if V<value> 0/1 set INPUT_PULLUP value, but for GPIO16 INPUT_PULLDOWN_16
|
||||
GPIO1 and GPIO3 cannot be used as they are used for serial
|
||||
if PULLUP=YES set input pull up, if not set input
|
||||
if RAW=YES do not set pinmode just read value
|
||||
|
||||
### Output to oled column C and line L
|
||||
`[ESP210] C=<col> L=<line> T=<Text>`
|
||||
|
||||
### Output to oled line 1
|
||||
`[ESP211] <Text>`
|
||||
|
||||
### Output to oled line 2
|
||||
`[ESP212] <Text>`
|
||||
|
||||
### Output to oled line 3
|
||||
`[ESP213] <Text>`
|
||||
|
||||
### Output to oled line 4
|
||||
`[ESP214] <Text>`
|
||||
|
||||
### Get full EEPROM settings content
|
||||
but do not give any passwords
|
||||
can filter if only need wifi or printer
|
||||
`[ESP400] <network/printer>`
|
||||
|
||||
### Set EEPROM setting
|
||||
`[ESP401] P=<position> T={B | I | S | A} V=<value> [pwd=<user/admin password>]`
|
||||
`T` type: B(byte), I(integer/long), S(string), A(IP address / mask)
|
||||
`P` position: address in EEPROM
|
||||
|
||||
* `EP_WIFI_MODE 0 //1 byte = flag`
|
||||
* `EP_STA_SSID 1 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_STA_PASSWORD 34 //65 bytes 64 +1 = string ;warning does not support multibyte char like chinese`
|
||||
* `EP_STA_IP_MODE 99 //1 byte = flag`
|
||||
* `EP_STA_IP_VALUE 100 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_STA_MASK_VALUE 104 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_STA_GATEWAY_VALUE 108 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_BAUD_RATE 112 //4 bytes = int`
|
||||
* `EP_STA_PHY_MODE 116 //1 byte = flag`
|
||||
* `EP_SLEEP_MODE 117 //1 byte = flag`
|
||||
* `EP_CHANNEL 118 //1 byte = flag`
|
||||
* `EP_AUTH_TYPE 119 //1 byte = flag`
|
||||
* `EP_SSID_VISIBLE 120 //1 byte = flag`
|
||||
* `EP_WEB_PORT 121 //4 bytes = int`
|
||||
* `EP_DATA_PORT 125 //4 bytes = int`
|
||||
* `EP_OUTPUT_FLAG 129 //1 bytes = flag`
|
||||
* `EP_HOSTNAME 130 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_DHT_INTERVAL 164 //4 bytes = int`
|
||||
* `EP_FREE_INT2 168 //4 bytes = int`
|
||||
* `EP_FREE_INT3 172 //4 bytes = int`
|
||||
* `EP_ADMIN_PWD 176 //21 bytes 20+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_USER_PWD 197 //21 bytes 20+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_AP_SSID 218 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_AP_PASSWORD 251 //65 bytes 64 +1 = string ;warning does not support multibyte char like chinese`
|
||||
* `EP_AP_IP_VALUE 316 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_AP_MASK_VALUE 320 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_AP_GATEWAY_VALUE 324 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_AP_IP_MODE 329 //1 byte = flag`
|
||||
* `EP_AP_PHY_MODE 330 //1 byte = flag`
|
||||
* `EP_FREE_STRING1 331 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_DHT_TYPE 460 //1 bytes = flag`
|
||||
* `EP_TARGET_FW 461 //1 bytes = flag`
|
||||
|
||||
### Get available AP list (limited to 30)
|
||||
`[ESP410] [plain]`
|
||||
Output is JSON or plain text according parameter
|
||||
|
||||
### Get current settings of ESP3D
|
||||
`[ESP420] [plain]`
|
||||
Output is JSON or plain text according parameter
|
||||
|
||||
### Get/Set ESP mode
|
||||
`[ESP444] [RESET | SAFEMODE | CONFIG | RESTART] [pwd=<admin password>]`
|
||||
if authentication is on, need admin password for RESET, RESTART and SAFEMODE
|
||||
|
||||
### Change / Reset user password
|
||||
`[ESP555] [<password>] [pwd=<admin password>]`
|
||||
If no password set it use default one
|
||||
|
||||
### Send GCode with check sum caching right line numbering
|
||||
`[ESP600] <gcode>`
|
||||
|
||||
### Send line checksum
|
||||
`[ESP601] <line>`
|
||||
|
||||
### Read SPIFFS file and send each line to serial
|
||||
`[ESP700] <filename>`
|
||||
|
||||
### Format SPIFFS
|
||||
`[ESP710] FORMAT [pwd=<admin password>]`
|
||||
|
||||
### Get SPIFFS total size and used size
|
||||
`[ESP720]`
|
||||
|
||||
### Get fw version and basic information
|
||||
`[ESP800]`
|
||||
|
||||
### Get fw target
|
||||
`[ESP801]`
|
||||
|
||||
### Check SD presence
|
||||
`[ESP802]`
|
@ -1,161 +0,0 @@
|
||||
# Command line commands for 2.1
|
||||
|
||||
## Format
|
||||
|
||||
Please note all commands are in format `[ESPxx]`. These first brackets `[]` are not optional.
|
||||
Most of the time givin no argument will return current configuration
|
||||
If authentication is on, somme commands will need admin password. They are recognised by the optional argument `[pwd=<admin password>]` in command line.
|
||||
|
||||
## Commands
|
||||
|
||||
### Get/change STA SSID
|
||||
`[ESP100] [<SSID>] [pwd=<admin password>]`
|
||||
|
||||
### Change STA Password
|
||||
`[ESP101] <Password> [pwd=<admin password>]`
|
||||
|
||||
### Get/change Hostname
|
||||
`[ESP102] [<hostname>] [pwd=<admin password>]`
|
||||
|
||||
### Get/change Wifi mode (STA/AP)
|
||||
`[ESP103] [STA | AP] [pwd=<admin password>]`
|
||||
|
||||
### Get/change STA IP mode (DHCP/STATIC)
|
||||
`[ESP104] [DHCP | STATIC] [pwd=<admin password>]`
|
||||
|
||||
### Get/change AP SSID
|
||||
`[ESP105] [<SSID>] [pwd=<admin password>]`
|
||||
|
||||
### Change AP Password
|
||||
`[ESP106] <Password> [pwd=<admin password>]`
|
||||
|
||||
### Get/change AP IP mode (DHCP/STATIC)
|
||||
`[ESP107] [DHCP | STATIC] [pwd=<admin password>]`
|
||||
|
||||
### Get/change wifi state (on/off)
|
||||
`[ESP110] [ON | OFF | RESTART] [pwd=<admin password>]`
|
||||
|
||||
### Get current IP
|
||||
`[ESP111]`
|
||||
|
||||
### Get/Change hostname
|
||||
`[ESP112] [<hostname>]`
|
||||
|
||||
### Get/Set pin value
|
||||
`[ESP201] P<pin> [V<value> PULLUP=YES RAW=YES ANALOG=NO ANALOG_RANGE=255 CLEARCHANNELS=NO pwd=<admin password>]`
|
||||
if no V<value> get P<pin> value
|
||||
if V<value> 0/1 set INPUT_PULLUP value, but for GPIO16 INPUT_PULLDOWN_16
|
||||
GPIO1 and GPIO3 cannot be used as they are used for serial
|
||||
if PULLUP=YES set input pull up, if not set input
|
||||
if RAW=YES do not set pinmode just read value
|
||||
|
||||
### Output to oled column C and line L
|
||||
`[ESP210] C=<col> L=<line> T=<Text>`
|
||||
|
||||
### Output to oled line 1
|
||||
`[ESP211] <Text>`
|
||||
|
||||
### Output to oled line 2
|
||||
`[ESP212] <Text>`
|
||||
|
||||
### Output to oled line 3
|
||||
`[ESP213] <Text>`
|
||||
|
||||
### Output to oled line 4
|
||||
`[ESP214] <Text>`
|
||||
|
||||
### Delay
|
||||
`[ESP290] <delayMs> [pwd=<admin password>]`
|
||||
|
||||
### Get EEPROM mapping version
|
||||
`[ESP300]`
|
||||
|
||||
### Get full EEPROM settings content
|
||||
but do not give any passwords
|
||||
can filter if only need wifi or printer
|
||||
`[ESP400] <network/printer>`
|
||||
|
||||
### Set EEPROM setting
|
||||
`[ESP401] P=<position> T={B | I | S | A} V=<value> [pwd=<user/admin password>]`
|
||||
`T` type: B(byte), I(integer/long), S(string), A(IP address / mask)
|
||||
`P` position: address in EEPROM
|
||||
|
||||
* `EP_WIFI_MODE 0 //1 byte = flag`
|
||||
* `EP_STA_SSID 1 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_STA_PASSWORD 34 //65 bytes 64 +1 = string ;warning does not support multibyte char like chinese`
|
||||
* `EP_STA_IP_MODE 99 //1 byte = flag`
|
||||
* `EP_STA_IP_VALUE 100 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_STA_MASK_VALUE 104 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_STA_GATEWAY_VALUE 108 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_BAUD_RATE 112 //4 bytes = int`
|
||||
* `EP_STA_PHY_MODE 116 //1 byte = flag`
|
||||
* `EP_SLEEP_MODE 117 //1 byte = flag`
|
||||
* `EP_CHANNEL 118 //1 byte = flag`
|
||||
* `EP_AUTH_TYPE 119 //1 byte = flag`
|
||||
* `EP_SSID_VISIBLE 120 //1 byte = flag`
|
||||
* `EP_WEB_PORT 121 //4 bytes = int`
|
||||
* `EP_DATA_PORT 125 //4 bytes = int`
|
||||
* `EP_OUTPUT_FLAG 129 //1 bytes = flag`
|
||||
* `EP_HOSTNAME 130 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_DHT_INTERVAL 164 //4 bytes = int`
|
||||
* `EP_FREE_INT2 168 //4 bytes = int`
|
||||
* `EP_FREE_INT3 172 //4 bytes = int`
|
||||
* `EP_ADMIN_PWD 176 //21 bytes 20+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_USER_PWD 197 //21 bytes 20+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_AP_SSID 218 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_AP_PASSWORD 251 //65 bytes 64 +1 = string ;warning does not support multibyte char like chinese`
|
||||
* `EP_AP_IP_VALUE 316 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_AP_MASK_VALUE 320 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_AP_GATEWAY_VALUE 324 //4 bytes xxx.xxx.xxx.xxx`
|
||||
* `EP_AP_IP_MODE 329 //1 byte = flag`
|
||||
* `EP_AP_PHY_MODE 330 //1 byte = flag`
|
||||
* `EP_FREE_STRING1 331 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese`
|
||||
* `EP_DHT_TYPE 460 //1 bytes = flag`
|
||||
* `EP_TARGET_FW 461 //1 bytes = flag`
|
||||
|
||||
### Get available AP list (limited to 30)
|
||||
`[ESP410] [plain]`
|
||||
Output is JSON or plain text according parameter
|
||||
|
||||
### Get current settings of ESP3D
|
||||
`[ESP420] [plain]`
|
||||
Output is JSON or plain text according parameter
|
||||
|
||||
### Get/Set ESP mode
|
||||
`[ESP444] [RESET | SAFEMODE | CONFIG | RESTART] [pwd=<admin password>]`
|
||||
if authentication is on, need admin password for RESET, RESTART and SAFEMODE
|
||||
|
||||
### Send GCode with check sum caching right line numbering
|
||||
`[ESP500] <gcode>`
|
||||
|
||||
### Send line checksum
|
||||
`[ESP501] <line>`
|
||||
|
||||
### Change / Reset user password
|
||||
`[ESP555] [<password>] [pwd=<admin password>]`
|
||||
If no password set it use default one
|
||||
|
||||
### Send notification
|
||||
`[ESP600] <message> [pwd=<admin password>]`
|
||||
|
||||
### Set/Get notification settings
|
||||
`[ESP610] type={NONE | PUSHOVER | EMAIL | LINE} T1=<token1> T2=<token2> TS=<Settings> [pwd=<admin password>]`
|
||||
Get will give type and settings only not the protected T1/T2
|
||||
|
||||
### Read SPIFFS file and send each line to serial
|
||||
`[ESP700] <filename>`
|
||||
|
||||
### Format SPIFFS
|
||||
`[ESP710] FORMAT [pwd=<admin password>]`
|
||||
|
||||
### Get SPIFFS total size and used size
|
||||
`[ESP720]`
|
||||
|
||||
### Get fw version and basic information
|
||||
`[ESP800]`
|
||||
|
||||
### Get fw target
|
||||
`[ESP801]`
|
||||
|
||||
### Get state / Set Enable / Disable Serial Communication
|
||||
`[ESP900] <{ENABLE | DISABLE}>`
|
@ -1,5 +0,0 @@
|
||||
# Command line commands
|
||||
|
||||
* [v2.0.x](https://github.com/luc-github/ESP3D/wiki/Command-line-2_0)
|
||||
* [v2.1.x](https://github.com/luc-github/ESP3D/wiki/Command-line-2_1)
|
||||
* [v3.0.x : work in progress](https://github.com/luc-github/ESP3D/blob/3.0/docs/Commands.md)
|
@ -1,26 +0,0 @@
|
||||
# Cybersecurity concerns
|
||||
|
||||
## Concerns
|
||||
|
||||
If you plan to have access to you ESP from outside of your private network than you need to apply some basic security rules to avoid anybody to be able to access your ESP.
|
||||
|
||||
__Disclaimer__ : this wiki is for reference - you are responsible of your board and internet network, we are not responsible for any damage to any of your network appliances.
|
||||
|
||||
## Recommendations
|
||||
|
||||
Following steps must be done **before** your ESP is visible from public internet:
|
||||
|
||||
- Activate authentication in config.h file
|
||||
- Change default user and password (this can be done from config.h or later with commands)
|
||||
|
||||
Is also strongly recommended to:
|
||||
|
||||
- Use strong passwords
|
||||
- Use unique passwords, not same as for other accounts
|
||||
- Change password regularly
|
||||
- Configure box to redirect a different port than 80 to the port 80 of ESP
|
||||
- Use [DMZ](https://en.wikipedia.org/wiki/DMZ_(computing)) feature of your box
|
||||
|
||||
## Additional tips
|
||||
|
||||
- Remember the web server is not https, this means the server will never be fully secure. In particular, avoid to connect to your printer from any public network you do not own. Stick to your 4G network or other safe places to avoid [MITM attack](https://en.wikipedia.org/wiki/Man-in-the-middle_attack)
|
@ -1,21 +0,0 @@
|
||||
# Email Notification using SMTP and HTTPS
|
||||
|
||||
`[ESP610]type=EMAIL T1=<token1> T2=<token2> TS=<settings>`
|
||||
|
||||
SMTP need several parameters:
|
||||
**token1** = ID to login to your email supplier
|
||||
**token2** = Password to login to your email supplier
|
||||
**settings** = `the_recipient#smtp_server:port` where **#** and **:** are fields separators.
|
||||
For example `luc@gmail.com#smtp.gmail.com:465`
|
||||
|
||||
1 - Type the parameters:
|
||||
`[ESP610]type=EMAIL T1=luc@gmail.com T2=mypassword TS=luc@gmail.com#smtp.gmail.com:465`
|
||||
|
||||
2 - Type `[ESP610]` to verify (T1 and T2 won't be displayed)
|
||||
|
||||
3 - Try to send message:
|
||||
`[ESP600]Hi there, test from ESP3D`
|
||||
|
||||
4 - **Important** : if you are using Gmail there is an additional step, as by default https access is disabled.
|
||||
go to : https://myaccount.google.com/lesssecureapps and allow less secure applications to connect
|
||||

|
@ -1,63 +0,0 @@
|
||||
# Arduino IDE board configuration
|
||||
|
||||
The ESP8266 comes in various models:
|
||||
|
||||
configure your Arduino IDE -> Tools -> Boards as:
|
||||
|
||||
## Known working configs
|
||||
|
||||
### The latest ESP01 and ESP12Es come with 4Mb of flash: For those
|
||||
|
||||
* Board: Generic ESP8266 Module
|
||||
* Upload Speed: 115200
|
||||
* CPU frequency: 160 MHz
|
||||
* Flash Size: 4M (3M SPIFFS)
|
||||
* Flash Mode: DIO
|
||||
* Flash Frequency: 40Mhz
|
||||
* Reset Method: CK
|
||||
* Debug Port: Disabled
|
||||
* Debug Level: None
|
||||
|
||||
### Some of the older devices come with 1M flash
|
||||
|
||||
* Board: Generic ESP8266 Module
|
||||
* Upload Speed: 115200
|
||||
* CPU frequency: 160 MHz
|
||||
* Flash Size: 1M (128K SPIFFS)
|
||||
* Flash Mode: DIO
|
||||
* Flash Frequency: 40Mhz
|
||||
* Reset Method: CK
|
||||
* Debug Port: Disabled
|
||||
* Debug Level: None
|
||||
|
||||
### Though now no longer supported, it is possible to run the firmware on devices like the ESP07 with 512K of flash:
|
||||
|
||||
* Board: Generic ESP8266 Module
|
||||
* Upload Speed: 115200
|
||||
* CPU frequency: 160 MHz
|
||||
* Flash Size: 512k (128K SPIFFS)
|
||||
* Flash Mode: DIO
|
||||
* Flash Frequency: 40Mhz
|
||||
* Reset Method: CK
|
||||
* Debug Port: Disabled
|
||||
* Debug Level: None
|
||||
|
||||
## Figuring out the Flash Size
|
||||
|
||||
If you are unsure how much flash memory your particular module has. you can figure it out from the Arduino IDE:
|
||||
|
||||
1. Open the Arduino IDE
|
||||
2. Click File, Examples, ESP8266, CheckFlashConfig
|
||||
3. Upload the sketch to the ESP8266
|
||||
4. View the Serial Monitor (115200 baud)
|
||||
5. This compares what you have in Tools -> Board -> Flash Size to what is actually on the board...
|
||||
|
||||
For example:
|
||||
`Flash real id: 001340C8`
|
||||
`Flash real size: 524288`
|
||||
`Flash ide size: 524288`
|
||||
`Flash ide speed: 40000000`
|
||||
`Flash ide mode: DIO`
|
||||
`Flash Chip configuration ok.`
|
||||
|
||||
(NB: If you dont get a 'Flash Chip configuration ok.' uploading will appear to work succesfully but the chip will crash on startup and never show an access point / serial output)
|
19
wiki/Home.md
@ -1,19 +0,0 @@
|
||||
# Welcome to ESP3D wiki
|
||||
|
||||
## Releases are vailable here
|
||||
|
||||
<https://github.com/luc-github/ESP3D/releases>
|
||||
|
||||
---
|
||||
|
||||
## Other nice things done using ESP3D
|
||||
|
||||
* [Rainmeter skin by @StArL0rd84](https://github.com/luc-github/ESP3D/wiki/Rainmeter-skin)
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
To update wiki please submit a PR to wiki directory content of default branch
|
||||
|
||||
Path for the wiki images will be `https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/...`
|
@ -1,81 +0,0 @@
|
||||
# IFTTT Notification (https://ifttt.com)
|
||||
|
||||
`[ESP610]type=IFTTT T1={event} T2={webhooks_key}`
|
||||
|
||||
IFFT is a wrapper that allows several kind of notifications, please refer to <https://platform.ifttt.com/docs>
|
||||
|
||||
1 - If you do not have IFTTT account you can create for free to use up to 5 applets.
|
||||

|
||||
|
||||
2 - Create New applet
|
||||

|
||||
|
||||
* Create new trigger
|
||||

|
||||
|
||||
* The trigger is a webhook
|
||||

|
||||
|
||||
* Choose Web request
|
||||

|
||||
|
||||
* Set the event name
|
||||

|
||||
|
||||
* Define the action you want
|
||||

|
||||
|
||||
* Select the service you want to use
|
||||
As you can see there are a lot, let use email as example, but you can select any one that fit your needs
|
||||

|
||||

|
||||
|
||||
* Define the message
|
||||
IFTTT allows some variables:
|
||||
* title from ESP3D --> value1
|
||||
* message from ESP3D --> value2
|
||||
* ESP3D hostname --> value3
|
||||
|
||||

|
||||
|
||||
* Applet is created
|
||||

|
||||
|
||||
3 - Retrieve the webhook key
|
||||
|
||||
* Go to settings
|
||||

|
||||
|
||||
* Select service
|
||||

|
||||
|
||||
* Select webhook
|
||||

|
||||
|
||||
* Choose documentation
|
||||

|
||||
|
||||
* Copy the key
|
||||

|
||||
|
||||
4 - Save the generate token and chatID in ESP3D, and set Telegram as notification supplier
|
||||
`[ESP610]type=IFTTT T1={event} T2={webhooks_key}`
|
||||
|
||||
5 - type `[ESP610]` to verify (T1/T2 won't be displayed)
|
||||
|
||||
6 - Try to send message:
|
||||
`[ESP600]Hi there, test from ESP3D`
|
||||
|
||||
7 - Verify the workflow
|
||||
|
||||
* Go to Applets
|
||||

|
||||
* Select Activity
|
||||

|
||||
* Select the flow to display
|
||||

|
||||
|
||||
Note: This documentation is not exaustive due to huge features of IFTTT notifications service but base is always same :
|
||||
|
||||
IFThis => webhooks based on webrequest
|
||||
THENThat => IFTTT notification service
|
@ -1,104 +0,0 @@
|
||||
# Buildind code
|
||||
|
||||
## Table of contents
|
||||
|
||||
- [Building with PlatformIO and VScode (recommended method)](#Building-with-PlatformIO-and-VScode-(recommended-method))
|
||||
- [Building with Arduino IDE](#Building-with-Arduino-IDE)
|
||||
- [Video guide by Chris Riley](#Video-guide-by-Chris-Riley)
|
||||
- [Written guide](#Written-guide)
|
||||
- [Common steps for all methods](#Common-steps-for-all-methods)
|
||||
- [Additional tips](#Additional-tips)
|
||||
- [Full ESP erase](#Full-ESP-erase)
|
||||
|
||||
## Building with PlatformIO and VScode (recommended method)
|
||||
|
||||
1. Download and install [Visual Studio Code](https://code.visualstudio.com/)
|
||||
2. Download [latest release](https://github.com/luc-github/ESP3D/releases/latest) of this project
|
||||
- Extract it anywhere
|
||||
3. Open the forlder containing the project from within VScode (file->open folder)
|
||||
4. Let VScode install exptension packages recommended by the project.
|
||||
- A popup should appear in lower right corner
|
||||
- It will install extensions listed in .vscode/extensions.json
|
||||
- Wait for complete installation
|
||||
5. Build with PlatformIO
|
||||
- Click to open the platformIO tab on the left (or ctrl+maj+P and type `View: Show PlatformIO`)
|
||||
- Unwrap target corresponding to your board
|
||||
- Click on `Upload` to build and upload FW to ESP board
|
||||
|
||||
Follow additional steps [here](#Common-steps-for-all-methods)
|
||||
|
||||
## Building with Arduino IDE
|
||||
|
||||
### Video guide by Chris Riley
|
||||
|
||||
[](https://www.youtube.com/watch?v=pJGBRriNc9I)
|
||||
|
||||
### Written guide
|
||||
|
||||
1. Arduino IDE
|
||||
- Download Arduino IDE version 1.x.y from <https://www.arduino.cc/en/Software>
|
||||
- Install the Arduino IDE
|
||||
2. Additional libraries
|
||||
- Open the Arduino IDE go to File -> Preferences
|
||||
- In the "Additional Boards Manager URL" field, add following URLs:
|
||||
- <https://arduino.esp8266.com/stable/package_esp8266com_index.json> details about installation [here](https://github.com/esp8266/Arduino#installing-with-boards-manager)
|
||||
- <https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json> details about installation [here](https://docs.espressif.com/projects/arduino-esp32/en/latest/installing.html)
|
||||
- Click OK
|
||||
- Click Tools -> Boards -> Board Manager
|
||||
- Scroll to near the bottom, and find "esp8266 by ESP8266 Community" and click on the row
|
||||
- On the "Select Version" dropdown, select version according to [ESP3D home page](https://github.com/luc-github/ESP3D)
|
||||
- Wait for the ESP8266 support to be installed
|
||||
3. Download [latest release](https://github.com/luc-github/ESP3D/releases/latest) of this project
|
||||
- Extract it to your sketchbook or other location
|
||||
- Copy the libraries present in the ESP3D-x.y.z/libraries directory into your Arduino/libraries directory. These versions are verified to work with ESP3D, any others (newer version) may cause untested behavior. More information about libraries installation options [here](https://docs.arduino.cc/software/ide-v1/tutorials/installing-libraries)
|
||||
- Open the Arduino IDE and open the project file esp3d/esp3d.ino (ESP8266/esp8266.ino for older versions)
|
||||
4. Configure for your board
|
||||
- [Get flash sise of your board](https://github.com/luc-github/ESP3D/wiki/Flash-Size#figuring-out-the-flash-size)
|
||||
- Apply [correct setting](https://github.com/luc-github/ESP3D/wiki/Flash-Size) in Arduinio -> tools ->board
|
||||
- Double check you have the clock speed set to 160Mhz
|
||||
- Double check you have the correct Flash size selected
|
||||
5. Upload the sketch
|
||||
- Configure your ESP8266 or ESP32 for upload (USB to serial plugged in, GPIO0 and GPIO15 pulled low, RST pulled high)
|
||||
- Click the Upload button in Arduino IDE (Or press Ctrl+U)
|
||||
|
||||
Follow additional steps [here](#Common-steps-for-all-methods)
|
||||
|
||||
## Common steps for all methods
|
||||
|
||||
6. Starting the board
|
||||
- Reboot the ESP8266 or ESP32 into run mode (USB to serial removed , GPIO0 pulled high, GPIO15 pulled low, RST pulled high)
|
||||
- Find the wifi AP (Access Point) called **ESP3D** (or ESP8266 in older versions)
|
||||
- Connect to the wifi AP using the default password of **12345678**
|
||||
7. Initial configuration
|
||||
- Open device web page on the AP connected device with one of 2 following options:
|
||||
- Accept Captive portal redirect
|
||||
- Open a web browser and navigate to <http://192.168.0.1>
|
||||
- Upload index.html.gz file to the SPIFFS filesystem using web page uploader
|
||||
8. Configure device
|
||||
- If authentication is enabled use pair user/password **admin**/**admin**
|
||||
- I recommend changing to Station mode and connecting to your home/office Wifi instead of staying in AP mode
|
||||
- You may want to change the Baud rate
|
||||
- You can change to DHCP, or at the very least setup a Static IP you are familiar with
|
||||
9. Connect ESP board to your printer motherboard
|
||||
- More details can be found [here](https://github.com/luc-github/ESP3D/wiki/Hardware-connection)
|
||||
|
||||
## Additional tips
|
||||
|
||||
- If you plan to access your ESP from public network, think about [cybersecurity](https://github.com/luc-github/ESP3D/wiki/Cybersecurity-concerns)
|
||||
|
||||
- You can use Arduino serial monitor or PlatformIO `Monitor` target to see debug info from ESP and send commends for configuration. Commands are documented in wiki/docs folder
|
||||
|
||||
- After applying power the ESP takes several seconds before it will send `M117 <ip address>` on the serial port. The delay can be up to 30 seconds depending on configuration. If your printer is connected to the ESP, and has an LCD connected, the M117 command is "Print this message to the LCD" - i.e after a successful boot it will print the IP address to the printer's LCD
|
||||
|
||||
- Depending on configuration file, you may pull down GPIO2 during reset/powerup to wipe the settings stored in EEPROM.
|
||||
|
||||
- If behavior is not consistent, you may need to erase the full flash on ESP board.
|
||||
|
||||
## Full ESP erase
|
||||
|
||||
There are several options to erase flash configuration:
|
||||
|
||||
- Execute `[ESP710]FORMAT` (or `[ESP710]FORMATFS` for newer versions) after upload and restart the board. It's also possible to do `[ESP444]RESET` to reset only EEPROM parameters without erasing SPIFF memory.
|
||||
- In Arduino IDE, you can configure erase method in tools->Erase Flash->All Flash content. This will erase whole memory at next upload.
|
||||
- Using PlatformIO if there is a target Patform->Erase Flash for your board
|
||||
- Using [esptool](https://github.com/espressif/esptool) with command `esptool.exe --chip auto erase_flash`
|
27
wiki/Line.md
@ -1,27 +0,0 @@
|
||||
Line Notification (https://line.me)
|
||||
`[ESP610]type=LINE T1=<token1>`
|
||||
|
||||
Considering you have line account and you already installed line on you phone/PC:
|
||||
|
||||
1 - Go to https://notify-bot.line.me/my/ and connect with email and password
|
||||

|
||||
|
||||
2 - Once connected you will be able to generate token
|
||||

|
||||
|
||||
3 - Type token name on top, select recipient(s) and press Generate token
|
||||

|
||||
|
||||
4 - Once token is created you need to copy it
|
||||

|
||||
|
||||
5 - You can create as many tokens you want, and delete the ones you do not need
|
||||

|
||||
|
||||
6 - Save the generate token in ESP3D, and set Line as notification supplier
|
||||
`[ESP610]type=LINE T1=xxxxxxxxxxxxxxxxxx`
|
||||
|
||||
7 - type `[ESP610]` to verify (T1 won't be displayed)
|
||||
|
||||
8 - Try to send message:
|
||||
`[ESP600]Hi there, test from ESP3D`
|
@ -1,29 +0,0 @@
|
||||
## From 2.1 version only
|
||||
### How to setup the parameters:
|
||||
|
||||
* Set/Get Notification settings
|
||||
`[ESP610]type=<NONE/PUSHOVER/EMAIL/LINE> T1=<token1> T2=<token2> TS=<Settings> [pwd=<admin password>]`
|
||||
Note:
|
||||
- Get will give type and settings only, not the protected T1/T2
|
||||
- Depending of notification supplier the parameters changes
|
||||
|
||||
### How to send message :
|
||||
Just add following command in your slicer's end script, or manualy on your GCODE file:
|
||||
`[ESP600]msg [pwd=<admin password>]`
|
||||
|
||||
### How to ask printer to send command from file played from SD:
|
||||
* on Repetier
|
||||
`M118 [ESP600]msg`
|
||||
|
||||
* on Marlin
|
||||
`M118 P0 [ESP600]msg`
|
||||
|
||||
* on Smoothieware
|
||||
`echo [ESP600]msg`
|
||||
|
||||
### Here the possible notifications setups:
|
||||
* [Line Notification](https://github.com/luc-github/ESP3D/wiki/Line) (https://line.me) Free
|
||||
* [Pushover Notification](https://github.com/luc-github/ESP3D/wiki/Pushover) (https://pushover.net/) not Free
|
||||
* [Email using SMTP and HTTPS](https://github.com/luc-github/ESP3D/wiki/Email_and_SMTP) Free
|
||||
* [Telegram Notification](https://github.com/luc-github/ESP3D/wiki/Telegram) Free (from ESP3D 3.0 version)
|
||||
* [IFTTT Notification](https://github.com/luc-github/ESP3D/wiki/IFTTT) Free up to 5 applets
|
@ -1,52 +0,0 @@
|
||||
# Printer firmware compatibility
|
||||
|
||||
## References
|
||||
|
||||
FW on Board | GCODE
|
||||
------------ | -------------
|
||||
Repetier | <https://github.com/repetier/Repetier-Firmware/blob/master/src/ArduinoDUE/Repetier/Repetier.ino#L39-L151>
|
||||
Repetier for Davinci | <https://github.com/luc-github/Repetier-Firmware-0.92/blob/master/src/ArduinoDUE/Repetier/Repetier.ino#L39-L144>
|
||||
Marlin | <http://marlinfw.org/meta/gcode/>
|
||||
Marlinkimbra |<https://github.com/MagoKimbra/MarlinKimbra/blob/V4_2_9/Documentation/GCodes.md>
|
||||
Smoothieware | <http://smoothieware.org/supported-g-codes>
|
||||
GRBL | <https://github.com/gnea/grbl/wiki/Grbl-v1.1-Commands>
|
||||
Reprap | <https://docs.duet3d.com/en/User_manual/Reference/Gcodes>
|
||||
|
||||
---
|
||||
|
||||
## Temperature query
|
||||
|
||||
FW on Board | GCODE | Answer | Note | Supported ?
|
||||
------------ | ------------- | ------------- | ------------- | -------------
|
||||
Repetier | M105 | T:24.59 / 0 B:29.17 / 0 B@:0 @:0 T0:24.59 / 0 @0:0 T1:25.68 / 0 @1:0 | T and T0 are E0, T1 is E1, B is bed | Yes
|
||||
Marlin | M105 | ok T:25.8 /0.0 B:26.1 /0.0 T0:25.8 /0.0 T1:25.5 /0.0 @:0 B@:0 @0:0 @1:0 |T and T0 are E0, T1 is E1, B is bed | Yes
|
||||
MarlinKimbra | M105 | ok T:26.4 /0.0 B:26.3 /0.0 T0:26.4 /0.0 T1:26.3 /0.0 @:0 B@:0 @0:0 @1:0 |T and T0 are E0, T1 is E1, B is bed | Yes
|
||||
Smoothieware | M105 | ok T:25.6 /0.0 @0 T1:24.5 /0.0 @0 B:25.7 /0.0 @0 | T is E0, T1 is E1, B is bed | Yes
|
||||
GRBL| N/A | | | N/A
|
||||
Reprap | M105 | T:26.5 /0.0 B:24.8 /0.0 | | TBA
|
||||
|
||||
---
|
||||
|
||||
## Position query
|
||||
|
||||
FW on Board | GCODE | Answer | Note | Supported ?
|
||||
------------ | ------------- | ------------- | ------------- | -------------
|
||||
Repetier | M114| X:0.00 Y:0.00 Z:0.000 E:0.0000 | | Yes
|
||||
Marlin | M114| X:0.00 Y:0.00 Z:0.00 E:0.00 Count X: 0 Y:0 Z:0 | | Yes
|
||||
MarlinKimbra | M114| X:0.00 Y:0.00 Z:0.00 E:0.00 Count X:0 Y:0 Z:0 | | Yes
|
||||
Smoothieware | M114| ok C: X:0.0000 Y:0.0000 Z:0.0000 E:0.000 | | Yes
|
||||
GRBL| ?| <Idle|MPos:10.000,0.000,0.000|FS:0,0 |Ov:71,100,147> | | Yes
|
||||
Reprap | M114 | X:0.000 Y:0.000 Z:0.000 E0:0.0 E1:0.0 E2:0.0 Count 0 0 0 User 0.0 0.0 0.0 | | TBA
|
||||
|
||||
---
|
||||
|
||||
## SD Card file list
|
||||
|
||||
FW on Board | GCODE | Answer | Note | Supported ?
|
||||
------------ | ------------- | ------------- | ------------- | -------------
|
||||
Repetier | M20 | Begin file list<br>sample1.g 599<br>MYFOLDER/<br>End file list<br> | filename and size, folder name end with / | Yes
|
||||
Marlin | M20 | Begin file list<br>`CURA~1.GCO` <br>`/MYFOLDER/CURA~1.GCO` <br>End file list | only filename, folder name start with / | Yes
|
||||
MarlinKimbra | M20 | Begin file list<br>cura.gcode<br>MYFOLDER/<br>MYFOLDER/cura.gcode<br>End file list | only filename, folder name end with / | Yes
|
||||
Smoothieware | M20 | Begin file list<br>myfolder/<br>config.txt<br>End file list | only filename, folder name end with / | Yes
|
||||
GRBL| N/A| | | N/A
|
||||
Reprap | M20 S2 P/ | {"dir":"/","files":["*System Volume Information","*sys","AxholderV5.gcode","*folder1","*New folder","New Text Document.txt","test.g","test - Copy.g","*folder1 - Copy","license.txt"],"err":0} | folder start with *, JSON format | TBA
|
@ -1,25 +0,0 @@
|
||||
# Pushover Notification (https://pushover.net/)
|
||||
|
||||
`[ESP610]type=PUSHOVER T1=<token1> T2=<token2>`
|
||||
|
||||
Considering you have pushover account (even just trial) and you already installed pushover client on you phone/PC:
|
||||
|
||||
1 - Go to <https://pushover.net/> and connect with email and password
|
||||

|
||||
|
||||
2 - Once connected you will be able to get the token 1, the user token
|
||||

|
||||
|
||||
3 - You also need to generate an application token, which is the token 2
|
||||

|
||||
|
||||
4 - The token 2 generation:
|
||||

|
||||
|
||||
5 - Save the generate token 1 and token 2 in ESP3D
|
||||
`[ESP610]type=PUSHOVER T1=xxxxxxxxxxxxxxxxxx T1=yyyyyyyyyyyyyyyyy`
|
||||
|
||||
6 - type `[ESP610]` to verify (T1 and T2 won't be displayed)
|
||||
|
||||
7 - Try to send message:
|
||||
`[ESP600]Hi there, test from ESP3D`
|
@ -1,5 +0,0 @@
|
||||
# Rainmeter skin
|
||||
|
||||
by @StArL0rd84
|
||||
|
||||
<https://forum.rainmeter.net/viewtopic.php?f=27&t=34867&p=173334#p173334>
|
@ -1,38 +0,0 @@
|
||||
# Telegram Notification (https://telegram.org/)
|
||||
|
||||
`[ESP610]type=TELEGRAM T1=<bot token> T2=<@chatID>`
|
||||
|
||||
Considering you have Telegram account and you already installed line on you phone/PC:
|
||||
You need a bot token and a channel id:
|
||||
1 - Create a bot with [BotFather](https://core.telegram.org/bots#3-how-do-i-create-a-bot)
|
||||
|
||||
* open telegram and chat with Botfather and type or select `/newbot`
|
||||

|
||||
* type the name of the bot (2) and its username (3)
|
||||

|
||||
* Doing this you will get your bot token (4) that you need for `T1=<bot token>`
|
||||
|
||||
2 - Create a public channel
|
||||
|
||||
* In telegram select new channel
|
||||

|
||||
* type channel name (1) and description (2)
|
||||

|
||||
* Now you have your chai name which is your chatid without the `@`
|
||||
|
||||
3 - Assign your bot as administrator of your channel so it can use it
|
||||
|
||||
* press your channel title, the top banner will expand
|
||||

|
||||
* Push Administrators
|
||||

|
||||
* Look for your bot in search and add it
|
||||

|
||||
|
||||
4 - Save the generate token and chatID in ESP3D, and set Telegram as notification supplier
|
||||
`[ESP610]type=TELEGRAM T1=<bot token> T2=<@channel name>`
|
||||
|
||||
5 - type `[ESP610]` to verify (T1/T2 won't be displayed)
|
||||
|
||||
6 - Try to send message:
|
||||
`[ESP600]Hi there, test from ESP3D`
|
@ -1,23 +0,0 @@
|
||||
# ESP3D Wiki
|
||||
|
||||
* [Home](https://github.com/luc-github/ESP3D/wiki)
|
||||
* Stating with ESP3D
|
||||
* [Hardware connection](https://github.com/luc-github/ESP3D/wiki/Hardware-connection)
|
||||
* [Install instructions](https://github.com/luc-github/ESP3D/wiki/Install-Instructions)
|
||||
* [Printer firmware compatibility](https://github.com/luc-github/ESP3D/wiki/Printer-firmware-compatibility)
|
||||
* Going further
|
||||
* [Command line commands](https://github.com/luc-github/ESP3D/wiki/Command-line-commands)
|
||||
* [v2.0.x](https://github.com/luc-github/ESP3D/wiki/Command-line-2_0)
|
||||
* [v2.1.x](https://github.com/luc-github/ESP3D/wiki/Command-line-2_1)
|
||||
* v3.0.x : work in progress
|
||||
* [Cybersecurity concerns](https://github.com/luc-github/ESP3D/wiki/Cybersecurity-concerns)
|
||||
* [Notifications](https://github.com/luc-github/ESP3D/wiki/Notifications)
|
||||
* [Line](https://github.com/luc-github/ESP3D/wiki/Line)
|
||||
* [Pushover](https://github.com/luc-github/ESP3D/wiki/Pushover)
|
||||
* [Email and SMTP](https://github.com/luc-github/ESP3D/wiki/Email_and_SMTP)
|
||||
* [Telegram](https://github.com/luc-github/ESP3D/wiki/Telegram)
|
||||
* [IFTTT](https://github.com/luc-github/ESP3D/wiki/IFTTT)
|
||||
* Needing help
|
||||
* [Discussion FAQ](https://github.com/luc-github/ESP3D/discussions/categories/f-a-q)
|
||||
* [Issues FAQ](https://github.com/luc-github/ESP3D/issues?q=is%3Aissue+is%3Aclosed+label%3AFAQ)
|
||||
* [How to get the ESP Flash-Size](https://github.com/luc-github/ESP3D/wiki/Flash-Size)
|
@ -1,410 +0,0 @@
|
||||
# Hardware connection
|
||||
|
||||
If your motherboard doesn't support wifi, this repo will help you add an ESP board flashed with ESP3D firmware. The ESP32 or ESP8266 MCU on ESP board supports wifi and will connect to your printer using a serial UART port thus acting as a wifi to UART bridge. The board needs to be programmed and connected properly to your printer to work. The printer motherboard will also need to be reprogrammed to enable the UART port that will be used with ESP board.
|
||||
|
||||
Connection between ESP and printer board needs 4 wires:
|
||||
|
||||
- ESP Tx needs to connect to Rx on MCU of printer board.
|
||||
- ESP Rx needs to connect to Tx on MCU of printer board.
|
||||
- You also need to power supply ESP board with with GND and 3V3 or 5V.
|
||||
|
||||
## Connecting ESP board (ESP MCU is 3.3V) to 5V printer board
|
||||
|
||||
__Disclaimer__ : this wiki is for reference - you are responsible of your board supporting or not 5V, we are not responsible for any damage of wrong wiring.
|
||||
|
||||
ESP32 and ESP8266 MCU are supporting only 3V3. Power supply them with 5V will likelly fry them immediatelly. As MCU is supplied at 3.3V, Tx and Rx signals will be at 3.3V even when board is supplied with 5V. Wether Rx pin is supporting 5V is controversial so we will keep on the safe side and only take datahseet as reference. It's not recommended to have any signal (including Rx) be higher than power supply (3.3V here).
|
||||
|
||||
There are several points to take care. One should check that
|
||||
|
||||
1. MCU1 Tx voltage is lower than MCU2 supply voltage
|
||||
2. Voh_min of Tx is higher than Vih_min of Rx (to check both ways)
|
||||
3. Vol_max of Tx is lower than Vil_max of Rx (to check both ways)
|
||||
|
||||
1 is mandatory and [resistor voltage divider bridge](https://en.wikipedia.org/wiki/Voltage_divider) or level shiffter is recommended
|
||||
2 & 3 are not destructive there is just a slight risk signals are not read correctly. But it will work in most case as the limit values given by datasheets are rarelly met in mild conditions (using near 25°C and low current flowing from Tx to Rx)
|
||||
|
||||
For the divider bridge a value of R1=1k and R2=2.2k will be fine.
|
||||
You could also use 10k and 22k or anything near a factor 2.
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/dividerBridge.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
|
||||
## Connection diagrams for some printers and ESP boards
|
||||
|
||||
- [Printer motherboards](#Printer-motherboards)
|
||||
- [Anet A8 boards](#Anet-A8-boards)
|
||||
- [Anycubic i3 mega - Trigorilla 8bit board](#Anycubic-i3-mega---Trigorilla-8bit-board)
|
||||
- [AZSMZ LCD board](#AZSMZ-LCD-board)
|
||||
- [AZSMZ-mini board](#AZSMZ-mini-board)
|
||||
- [Azteeg X5 mini board](#Azteeg-X5-mini-board)
|
||||
- [BIQU KFB2.0 board](#BIQU-KFB2.0-board)
|
||||
- [Creality CR10 Ender 3 board](#Creality-CR10-Ender-3-board)
|
||||
- [Creality Ender 4 board](#Creality-Ender-4-board)
|
||||
- [Davinci 1.0/2.0 board](##davinci-1020-board)
|
||||
- [Davinci 1.0A board](#Davinci-1.0A-board)
|
||||
- [MKS boards](#MKS-boards)
|
||||
- [MKS Smoothieware board](#MKS-Smoothieware-board)
|
||||
- [RADDS board](#RADDS-board)
|
||||
- [RAMPS 1.4/Re-ARM board](#ramps-14re-arm-board)
|
||||
- [Smoothieboard board](#Smoothieboard-board)
|
||||
- [Weedo Tina2 board](#Weedo-Tina2-board)
|
||||
- [SKR Mini E3 board](#SKR-Mini-E3-board)
|
||||
- [For printer boards not listed here](#For-printer-boards-not-listed-here)
|
||||
- [ESP boards](#ESP-boards)
|
||||
- [ESP-01](#ESP-01)
|
||||
- [ESP-01 serial wifi module](#ESP-01-serial-wifi-module)
|
||||
- [ESP-12E/F](#esp-12ef)
|
||||
- [ESP 12F serial wifi module](#ESP-12F-serial-wifi-module)
|
||||
- [ESP32-Cam](#ESP32-Cam)
|
||||
- [NodeMCU V2/V3](#nodemcu-v2v3)
|
||||
- [Sonoff](#Sonoff)
|
||||
- [Wemos D1 mini](#Wemos-D1-mini)
|
||||
|
||||
|
||||
## Printer motherboards
|
||||
|
||||
### Anet A8 boards
|
||||
|
||||
#### Anet boards up to v1.5
|
||||
|
||||
#### Step 1
|
||||
|
||||
You will also have to unsolder the resistors R52 and R53 – they are zero ohm resistors, and serve no other purpose than connecting the atmega chip directly to the onboard USB to UART converter (the CH340 chip). Do it VERY careful – you don’t want to damage your board. If you don’t feel confident – don’t do it.
|
||||
|
||||
<img src='http://lokspace.eu/wp-content/uploads/2017/01/image08-300x300.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
#### Step 2
|
||||
|
||||
Now prepare the printer’s motherboard. It requires a simple modification, that does not interfere with it’s operation afterwards – just solder 3 pin x 2 row male header on J8, and add 2 jumpers (or jumper wires) as shown on the picture:
|
||||
|
||||
<img src='http://lokspace.eu/wp-content/uploads/2017/01/image05-300x300.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
#### Step 3
|
||||
|
||||
Connect the ESP to J3 repsecting pinout
|
||||
|
||||
<img src='http://lokspace.eu/wp-content/uploads/2017/01/image00-232x300.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
|ESP|J3|
|
||||
|:---:|:---:|
|
||||
|Tx|Rx|
|
||||
|Rx|Tx|
|
||||
|GND|GND|
|
||||
|VCC|3.3V|
|
||||
|CH_PD|3.3V|
|
||||
|
||||
For more Info check <http://lokspace.eu/anet-a8-wifi-mod/>
|
||||
|
||||
#### For connecting version 1.7 Anet boards
|
||||
|
||||
Unlike older boards this board does not require you to remove any resistors.
|
||||
You will have to solder two wires from number 9 and number 10 its recommender to connect these to pin 1 and 2 of J3 connector.
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Anet/board.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### Anycubic i3 mega - Trigorilla 8bit board
|
||||
|
||||
To connect the ESP12e to the UART0. (Credits:<https://www.lesimprimantes3d.fr/forum/profile/197-murdock/>).
|
||||
(Green = RX, Blue = TX)
|
||||
5V (buck to 3.3v if directly connect to ESP - most development ESP boards already have this voltage limited built-in - but check!) and GND can be taken from the AUX3 exposed connector.
|
||||
UART0 is normally used by USB port so don't use both together - so this hack piggybacks on that same port at UART level.
|
||||
|
||||
<a href="https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Trigorilla/board.jpg" target="_blank"><img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Trigorilla/board.jpg' width='200'></a><br>
|
||||
click to enlarge
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Trigorilla/nodemcu.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### AZSMZ LCD board
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/AZSMZ-mini/AZSMZ-12864-LCD.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### AZSMZ-mini board
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/AZSMZ-mini/AZSMZ-mini.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
If you don't have the soldering skills to grab the connectors from the unpopulated ethernet connection, you can also get 3.3v and GND from the ISP header (bottom left on the diagram above).
|
||||
|
||||
---
|
||||
|
||||
### Azteeg X5 mini board
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/AzteegX5-mini/azteeg.PNG' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### BIQU KFB2.0 board
|
||||
|
||||
all in one Ramps1.4/Mega2560 R3 controller based
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/BIQU-KFB2.0/board.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### Creality CR10 Ender 3 board
|
||||
|
||||
For the Sanguino based CR-10 and Ender printers you will need to solder to any of the via circled (can also be done in the backside of board), or to the legs of the Arduino or ftdi. Connect TX from the board to RX of Wemos D1 mini and RX from board to TX of Wemos D1 mini. 5v and GND are located in the six pin header next to the LCD connector.
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/CR10/board.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
Since soldering might be difficult because the solder points are so close to each other, another option is to scrape off the insulation from the traces on the backside and solder there. Be extra careful not to scrape the surrounding ground plane. You need suitable fine scraping tools for this. The picture below shows an Ender-2 PCB.
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/CR10/traces.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### Creality Ender 4 board
|
||||
|
||||
You will need to solder to small circle, or to the legs of the ATmega2560 (RXD0 pin 2, TXD0 pin 3)
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/ender4/board.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### Davinci 1.0/2.0 board
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/davinci.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/board.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/boardconnected.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/backside.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/screen.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### Davinci 1.0A board
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/davinciA-1.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/davinciA-4.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/davinciA-2.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
Alternate Module placement for increased WiFi range (outside metal chassis, antenna has vertical polarization)
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Davinci/davinciA-3.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### MKS boards
|
||||
|
||||
To connect the ESP3D to the MKS GEN v1.2 (but the v1.3 and above 1.4 is the most used today).
|
||||
|
||||
I have used an ESP12E with the standard schematics, with one important difference, the two resistor connected to the RX pin are substituted by a 1N4148 diode, like in the Adafruit Huzzah board.
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/MKS-1.2/wires.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
ESP12E is connected to the AUX1
|
||||
|
||||
ESP12E RX is connected to the pin NEAR GND of the upper row (Marked TXD on pinout.)
|
||||
ESP12E TX is connected to the adiacent pin at the end of the upper row (Marked RXD on pinout.)
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/MKS-1.2/board.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### MKS Smoothieware board
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/MKS-SMOOTHIEWARE/MKS-smoothie.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### RADDS board
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/RADDS/RADDS.png' width='200'><br>
|
||||
click to enlarge
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/RADDS/screen.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### RAMPS 1.4/Re-ARM board
|
||||
|
||||
Ramps 1.4 can be used on Arduino Mega (repetier/marlin) and Re-ARM for ramps boards (smoothieware/marlin)
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/RAMPS1.4/RAMPS.PNG' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
Alternative pins if use Re-ARM (J4/UART port)
|
||||
|
||||
<img src='https://i.ibb.co/cDMKGbK/Screenshot-20190803-022151.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### Smoothieboard board
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Smoothieware/smoothieboard-wiring.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### Weedo Tina2 board
|
||||
|
||||
This printer is also brand labelled as **Monoprice MP cadet 3D printer**
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/TINA2/weedo_tina2.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
In marlin this connection is **serial port 3**.
|
||||
|
||||
Note the Mega2560 is 5V powered and ESP is 3V3 powered.
|
||||
|
||||
---
|
||||
|
||||
### SKR Mini E3 board
|
||||
|
||||
This board is from Bigtreetech and went through various hardware revisions; all of them still feature a TFT pin header which is where you can tap the TX and RX needed. The wiring below is made with a 1.2 board, but the same applies for the other revisions as well; if you need the exact schematic for your mainboard version, you can check [Bigtreetech's github repository](https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/tree/master/hardware).
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/SKR-Mini-E3/mini_12_board.jpg' width='200'>
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/SKR-Mini-E3/skr_mini_12_schematic.png' width='200'><br>
|
||||
|
||||
|
||||
You literally cannot miss it because the TFT connector is labeled on the board; you can use dupont connectors for the wiring job, no soldering skills needed as long as your ESP comes with pre soldered headers.
|
||||
Just a heads up: the TFT connector provides 5V DC, so be sure to provide them on the correct ESP pin and, most importantly, if your ESP can work with 5 volts as input. You should also pay attention on the board orientation in the schematic, although I oriented it the same way as the actual picture on the left so it's easier for you.
|
||||
|
||||
---
|
||||
|
||||
### For printer boards not listed here
|
||||
|
||||
Vast majority of printers have an USB port that is converted to UART before going to MCU. Many printers also have additional (unused) UART port you can use. When possible, always use the additional port for connecting ESP to printer board. When no additional UART port is available you might use the Tx and Rx lines between USB/UART converter and MCU but it's recommended to cut (in a reversible way) the line to USB/UART converter to avoid conflicts.
|
||||
|
||||
If the board is ATmega based the simplest way to find a usable UART port for the ESP is to open ATmega datasheet.
|
||||
|
||||
## ESP boards
|
||||
|
||||
### ESP-01
|
||||
|
||||
- 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 an hard recovery for settings
|
||||
- Use GPIO0 to ground to be in update mode
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/HW/Wires.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### ESP-01 serial wifi module
|
||||
|
||||
<img src='https://www.keyestudio.com/u_file/1901/products/11/ff587ce89a.jpg' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
more info about the Breakout PCB: <https://www.keyestudio.com/keyestudio-esp-01s-wifi-to-serial-shield-module-for-arduino-esp8266-wifi-p0499-p0499.html>
|
||||
|
||||
---
|
||||
|
||||
### ESP-12E/F
|
||||
|
||||
ESP need 3.3v, it is not 5v tolerant, if printer board use more than 3.3V like 5V on ramps.
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/HW/WiresESP12E.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
you can also use Logic LevelConverter Bi-Directional
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/HW/logic.PNG' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
In order to flash some ESP12E/F boards via their UART interface, the following pins need to be connected:
|
||||
|
||||
- VCC to GPIO2
|
||||
- GND to GPIO0
|
||||
|
||||
This has been tested with ESP-12-E boards labeled "ESP8266 For ESP3D FYSETC.COM"
|
||||
|
||||
---
|
||||
|
||||
### ESP 12F serial wifi module
|
||||
|
||||
We can flash our loved ESP3D to cheap ESP-12F based serial wifi module (eg [from aliexpress](https://www.aliexpress.com/item/ESP8266-ESP-12F-Serial-WIFI-Wireless-Transceiver-Module-For-Arduino-ESP-12F-Adapter-Expansion-Board-For/32804504326.html) ). It contains built in 2-way levelshifter/bi-directional logic level converter. So we can power and use via 5V uart from the 3d printers' motherboard.
|
||||
|
||||
- We need to manualy ground the ```IO0``` while powering up to start in flash mode while powering up (there is no switch for that, neither for reset)
|
||||
- <img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/ESP/ESP12.png' width='200'><br>click to enlarge
|
||||
- I used FTDI adapter as usb2serial
|
||||
- We have to see in console/serial monitor boot mode is (**1**,7).
|
||||
- baudrate: 74880
|
||||
- ```rst cause:2, boot mode:(3,7)```
|
||||
- Then flash like other esp based board for esp3d
|
||||
- [check flash size](https://github.com/luc-github/ESP3D/wiki/Flash-Size). Mine has 4M
|
||||
- [Install](https://github.com/luc-github/ESP3D/wiki/Install-Instructions)
|
||||
|
||||
---
|
||||
|
||||
### ESP32-Cam
|
||||
|
||||
Once the board is programmed, the wiring to the printer board should be like this:
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/ESP/ESPcam32.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
Note: 5V is power supply input and 3V3 is output from regulator. UART Tx and RX signals will be 3.3V
|
||||
|
||||
---
|
||||
|
||||
### NodeMCU V2/V3
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/NodeMCU/NodeMCU.PNG' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
---
|
||||
|
||||
### Sonoff
|
||||
|
||||
<img src='https://raw.githubusercontent.com/wiki/luc-github/ESP3D/images/Sonoff/Sonoff.png' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
Relay is connected by GPIO12, it can be handled using ESP201 command:
|
||||
|
||||
*Get/Set pin value
|
||||
[ESP201]P<pin> V<value> [PULLUP=YES RAW=YES]
|
||||
if no V<value> get P<pin> value
|
||||
if V<value> 0/1 set INPUT_PULLUP value, but for GPIO16 INPUT_PULLDOWN_16
|
||||
GPIO1 and GPIO3 cannot be used as they are used for serial
|
||||
if PULLUP=YES set input pull up, if not set input
|
||||
if RAW=YES do not set pinmode just read value
|
||||
|
||||
So `[ESP201]P12 V0` should be off and `[ESP201]P12 V1` should be on
|
||||
|
||||
---
|
||||
|
||||
### Wemos D1 mini
|
||||
|
||||
Connection with logic level conveter:
|
||||
<img src='https://github.com/jayjojayson/ESP3D/blob/2.1/images/D1_mini/wemos-d1-mini_logic-level-converter.jpg?raw=true' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
example:
|
||||
<img src='https://github.com/jayjojayson/ESP3D/blob/2.1/images/D1_mini/wemos-d1-mini_logic-level-converter-2.jpg?raw=true' width='200'><br>
|
||||
click to enlarge
|
||||
|
||||
printed cases:
|
||||
* <https://www.thingiverse.com/thing:4128593>
|
||||
* <https://www.thingiverse.com/thing:2671591>
|
Before Width: | Height: | Size: 47 KiB |
Before Width: | Height: | Size: 100 KiB |
Before Width: | Height: | Size: 414 KiB |
Before Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 35 KiB |
Before Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 264 KiB |
Before Width: | Height: | Size: 62 KiB |
Before Width: | Height: | Size: 1018 KiB |
Before Width: | Height: | Size: 809 KiB |
Before Width: | Height: | Size: 1018 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 368 KiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 75 KiB |
Before Width: | Height: | Size: 192 KiB |
Before Width: | Height: | Size: 303 KiB |
Before Width: | Height: | Size: 106 KiB |
Before Width: | Height: | Size: 329 KiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 433 KiB |
Before Width: | Height: | Size: 4.2 MiB |
Before Width: | Height: | Size: 93 KiB |
Before Width: | Height: | Size: 65 KiB |
Before Width: | Height: | Size: 184 KiB |
Before Width: | Height: | Size: 134 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 191 KiB |
Before Width: | Height: | Size: 61 KiB |
Before Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 88 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 110 KiB |
Before Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 52 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 89 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 130 KiB |
Before Width: | Height: | Size: 129 KiB |
Before Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 59 KiB |
Before Width: | Height: | Size: 40 KiB |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 48 KiB |
Before Width: | Height: | Size: 66 KiB |
Before Width: | Height: | Size: 126 KiB |
Before Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 77 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 76 KiB |
Before Width: | Height: | Size: 85 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 36 KiB |
Before Width: | Height: | Size: 266 KiB |
Before Width: | Height: | Size: 226 KiB |
Before Width: | Height: | Size: 300 KiB |
Before Width: | Height: | Size: 196 KiB |
Before Width: | Height: | Size: 263 KiB |
Before Width: | Height: | Size: 158 KiB |
Before Width: | Height: | Size: 101 KiB |
Before Width: | Height: | Size: 179 KiB |
Before Width: | Height: | Size: 2.0 MiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 213 KiB |