bigtreetech / BIGTREETECH-SKR-mini-E3

BIGTREETECH SKR-mini-E3 motherboard is a ultra-quiet, low-power, high-quality 3D printing machine control board. It is launched by the 3D printing team of Shenzhen BIGTREE technology co., LTD. This board is specially tailored for Ender 3 printer, perfectly replacing the original Ender3 printer motherboard.
1.97k stars 1.97k forks source link

[Display BTT 12864 V2.0 on BTT SKR E3 Mini V3] (How to adapt the BTT 12864 v2 to SKR E3 Mini V3) #728

Open PaulSolodovnikov opened 1 year ago

PaulSolodovnikov commented 1 year ago

Recently i bought the BTT SKR E3 mini V3 and a BTT mini 12864 V2.0 display [https://github.com/bigtreetech/MINI-12864/tree/master/mini12864_v2.0](BTT mini 12864 V2.0). Not the best decision, but done.

Found similar issue https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/issues/650 of BTT SKR E3 mini V3 and a BTT 12864 V1 display.

But pinout on BTT 12864 V1 and V2 are different.

Can anyone help me to make it work? ) BTT_SKR_E3_mini_V3_12864_V2

radek8 commented 1 year ago

Yes, bad decision and bad HW combination. :-( The pinout image defines different pins for a different driver than the V1.0 version. But the user manual says to use the same driver:

define BTT_MINI_12864_V1

BTT is quite chaotic when it comes to documentation and manuals...

Use the advice from the post https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/issues/650 Use the same pins in the connector. Orient yourself by pin GND and 5V It might work...

radek8 commented 1 year ago

image

PaulSolodovnikov commented 1 year ago

normal

Thaks for your reply!

Display started. Radek, Thanks!!! Now I know my display works )

The purchase decision was made based on the assumption that the products of one manufacturer will be not just compatible, but will have the best compatiblity. As far as I can see, I'm not the only one who stepped on this BTT rake (

Used wiring from this post https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3/issues/650

configuration.h - change neopixel type or Marlin will not compile

define NEOPIXEL_TYPE NEO_RGB

configuration_adv.h - adds item to control color from menu manually

define LED_CONTROL_MENU

Useless, setting are not stored in EEPROM. But makes possible to define the color to start with

define LED_USER_PRESET_RED 255 // User defined RED value

  #define LED_USER_PRESET_GREEN      128  // User defined GREEN value
  #define LED_USER_PRESET_BLUE         0  // User defined BLUE value
  #define LED_USER_PRESET_BRIGHTNESS 255  // User defined intensity
  #define LED_USER_PRESET_STARTUP       // Have the printer display the user preset color on startup

blackscreen

From time to time on POWER ON starts with LEDs on and black screen. M500, M502 does not help. Encoder click or turn changes nothing.

define LCD_CONTRAST 255 in pins_BTT_SKR_MINI_E3_V3_0.h does not help.

Only reset or power off/on.

Found what changes the situation. It's about reset connection. If reset from the board connected only on EXP1 - reset does not work but display starts 99%, if only on EXP2 - black screen always, if both EXP1 and EXP2 reset works but display on POWER ON may start or not, seems randomly, 50/50...

I give up with this variant, found another solution.

PaulSolodovnikov commented 1 year ago

In short I've configured Marlin and made the connections as if I had V3 Mini Screen adapter for Voron https://github.com/VoronDesign/Voron-Hardware/tree/master/SKR-Mini_Screen_Adaptor

Marlin 2.1.2, Sample config files for Creality Ender 3 as BTT SKR mini E3 V3 is designed for it.

configuration.h //#define CR10_STOCKDISPLAY //comment this

define FYSETC_MINI_12864_2_1 // Type A/B. NeoPixel RGB Backlight //uncomment this

define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0

define SKR_MINI_SCREEN_ADAPTER //add this line right after the previous

define NEOPIXEL_TYPE NEO_RGB //change value to NEO_RGB

Hardware connections made according to Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h SKR_MINI_SCREEN_ADAPTER section and checked with adapter layout https://github.com/VoronDesign/Voron-Hardware/blob/master/SKR-Mini_Screen_Adaptor/SRK%20Mini%20E3%20V3.0/Images/PCB_Layout.png

Voron-style-adapter

Voron_version_connection

Connections made as in SKR_MINI_SCREEN_ADAPTER: BOARD ----- SCREEN EXP1 GND ----- EXP1 GND EXP1 5V ----- EXP1 5V PB5 ---- PB5 PA9 ---- PA9 PA10 ---- PA10 PB9 ---- PB9 PB8 ---- PB8 PD6 ----- PD6 SCK ----- SCK MOSI ---- MOSI MISO ----- MISO PA15 ----- PA15

Add EXP1 pin4 RESET ----- EXP2 pin8 -- // it is reset

Change PA9 ---- PA9 PA10 ---- PA10 to PA10 ---- PA9 PA9 ---- PA10 to get correct encoder direction, otherwise you'll have to uncomment this in configuration.h //#define REVERSE_ENCODER_DIRECTION

Looks like it works, at least it starts every time) As expected no beeper or display SD-card.

(Found some info on attempts to make screen SD-card slot work under Klipper, but it seems to be rather complicated (setting card priority, sort order, some sync speeds and all the same remains too buggy - causes freezes or other unexpected behavior.)

Voron_version_ON

Need some time to test...

nghisus commented 1 year ago

@PaulSolodovnikov , will be trying your solution, even though Im using it for a CR-10 Pro V1 (SKR Mini E3 v3.0). I tried the solution for the BTT Mini12864 v1 but I just get a blank screen on startup. I used info around here and the 3Dsmith website but I think its specific to the mini12864 v1. The *.bin file is getting changed with the logo on the SDCard, but no joy. I like your rake analogy but it's definitely not an enjoyable process.

radek8 commented 1 year ago

Gentlemen, your nanology on the rake is out of place. If I buy a small city car and then buy SUV wheels from the same manufacturer. Also, will you be angry at the car manufacturer for making incompatible wheels with your car? BTT, MKS and others make different components for different printers and it's up to you which components you buy. We have a saying: Measure twice, but cut once. :-)

nghisus commented 1 year ago

In short I've configured Marlin and made the connections as if I had V3 Mini Screen adapter for Voron https://github.com/VoronDesign/Voron-Hardware/tree/master/SKR-Mini_Screen_Adaptor

Marlin 2.1.2, Sample config files for Creality Ender 3 as BTT SKR mini E3 V3 is designed for it.

configuration.h //#define CR10_STOCKDISPLAY //comment this

define FYSETC_MINI_12864_2_1 // Type A/B. NeoPixel RGB Backlight //uncomment this

define MOTHERBOARD BOARD_BTT_SKR_MINI_E3_V3_0 #define SKR_MINI_SCREEN_ADAPTER //add this line right after the previous

define NEOPIXEL_TYPE NEO_RGB //change value to NEO_RGB

Hardware connections made according to Marlin/src/pins/stm32g0/pins_BTT_SKR_MINI_E3_V3_0.h SKR_MINI_SCREEN_ADAPTER section and checked with adapter layout https://github.com/VoronDesign/Voron-Hardware/blob/master/SKR-Mini_Screen_Adaptor/SRK%20Mini%20E3%20V3.0/Images/PCB_Layout.png

Voron-style-adapter

Voron_version_connection

Connections made as in SKR_MINI_SCREEN_ADAPTER: BOARD ----- SCREEN EXP1 GND ----- EXP1 GND EXP1 5V ----- EXP1 5V PB5 ---- PB5 PA9 ---- PA9 PA10 ---- PA10 PB9 ---- PB9 PB8 ---- PB8 PD6 ----- PD6 SCK ----- SCK MOSI ---- MOSI MISO ----- MISO PA15 ----- PA15

Add EXP1 pin4 RESET ----- EXP2 pin8 -- // it is reset

Change PA9 ---- PA9 PA10 ---- PA10 to PA10 ---- PA9 PA9 ---- PA10 to get correct encoder direction, otherwise you'll have to uncomment this in configuration.h //#define REVERSE_ENCODER_DIRECTION

Looks like it works, at least it starts every time) As expected no beeper or display SD-card.

(Found some info on attempts to make screen SD-card slot work under Klipper, but it seems to be rather complicated (setting card priority, sort order, some sync speeds and all the same remains too buggy - causes freezes or other unexpected behavior.)

Voron_version_ON

Need some time to test...

Might I add some information for total noobs such as myself? Look for the Ender 3 Profile under Configurations-release-2.1.2 > config > example Make the changes to this Configuration.h file and save it.

Now open Marlin-2.1.2 as a folder. Delete the Configuration.h and Configuration_adv.h

Drag the modified Configuration.h tab and drop it into the "Marlin" folder on the tree. Open the Configuration_adv.h file from Configurations-release-2.1.2 for Ender 3, drag and drop it to "Marlin" From that same folder also do the same for Bootscreen and Statusscreen (also to "Marlin")

Go to platformio.ini and change: default_envs = STM32G0B1RE_btt

Build.

So Screen will be stuck on on the firmware version on first bootup. Turn off, remove SD card, turn on and it should function normally and display Ender 3, build version, then status screen.

Thank you so much for this information. I will now try to make it work with a CR10S Pro V1. Would it be ok if I contacted you for help from time to time?

Thanks again!

evgarthub commented 9 months ago

This post helped to adopt screen to board quickly and painless, huge thanks!

I was a bit confused by pins naming, so decided to post pins mappings as they called in official diagrams of boards (and not adapter diagram).

Pins mapping:

SKR Mini E3 v3 pin (PORT: pin) Mini 12864 pin (PORT: pin)
EX1: PB5 EXP1: BTN
EX1: TX1 EXP2: ENCB
EX1: RX1 EXP2: ENCA
EX1: PB8 EXP1: LCD-EN
EX1: GND EXP1: GND
EX1: PA15 EXP1: D5
EX1: RST EXP2: RST
EX1: PD6 EXP1: LCD-CS
EX1: 5v EXP1: 5v
SPI1: MOSI EXP2: SD-MOSI
SPI1: CLK EXP2: SD-SCK
SPI1: MISO EXP2: SD-MISO

My printer based on Ender 3v2 with Klipper software so I didn't need to do pin swap, I did it but then default config from Voron made my wheel direction opposite, so I had to adjust config, instead just do not swap PA9 and PA10 for Klipper setup:

Change PA9 ---- PA9 PA10 ---- PA10 to PA10 ---- PA9 PA9 ---- PA10 to get correct encoder direction, otherwise you'll have to uncomment this in configuration.h //#define REVERSE_ENCODER_DIRECTION

In case you did swap PA9 and PA10, change order of those pins:

[display]
encoder_pins: ^PA10, ^PA9

Klipper config was taken as is from adapter page: SKR-Mini_Screen_Adaptor/SRK Mini E3 V3.0/ScreenBreakout.cfg

[display]
#    MKS Mini 12864 V3.0 Your display might have to haver connectors flipped. If the neopixels doesnt light up and you are 100% sure you have EXP1 connected to EXP1, try flipping the connector.
lcd_type: uc1701
cs_pin: PB8
a0_pin: PD6
rst_pin: PB9
encoder_pins: ^PA9,^PA10
click_pin: ^!PB5
contrast: 63
spi_software_sclk_pin: PA5
spi_software_mosi_pin: PA7
spi_software_miso_pin: PA6

[neopixel SKR_screen]
pin: PA15
chain_count: 3
initial_RED: 0.4
initial_GREEN: 0.05
initial_BLUE: 0.0
color_order: RGB

[delayed_gcode welcome]
initial_duration: .1
gcode:
    SET_LED LED=SKR_screen RED=0.5 GREEN=0.0 BLUE=0.0 TRANSMIT=0
    SET_LED LED=SKR_screen RED=0.0 GREEN=0.0 BLUE=0.5 INDEX=1 TRANSMIT=1

Good luck people!

R2MGaming commented 9 months ago

I'm starting to have trouble with my Mini 12864 display on my BTT SKR Mini E3 V2 board using an adapter for it. Is there a good Marlin configuration for that?

Tholitz1124 commented 8 months ago

Just got mine working. Everything is good except for the SD card slot. I don't really care much about that since I have this on OctoPrint. Soon to move over to Klipper IMG_20231031_192412

R2MGaming commented 8 months ago

I already got a touch screen display for mine so I don't need to go through any trouble anymore. Thanks.

veluska commented 6 months ago

i have anet et4 pro i install btt skr mini e3 v3.0.1 with btt mini display12864 v2 please be aware for the pin of the version, the skr v.3.0 is diffrent with v3.0.1 also btt mini display

i use klipper , i get klipper.bin from the github (go to folder v.3.0.1, NOT folder v3.0) for more wiring discussion, you can go the facebook anet et4

video : https://www.youtube.com/shorts/BrisqOmM5BY

skr mini e3 v3.0.1 pinout :

btt skr mini e3 v301 pinout

for mini 12864 v2.0 pinout,you can go to the github with v2.0 version,

the printer.cfg is [include mainsail.cfg]

[stepper_x] step_pin: !PC11 dir_pin: PC12 enable_pin: !PC10 microsteps: 16 rotation_distance: 40 endstop_pin: ^!PB5

endstop_pin: ^!PC0

endstop_pin: tmc2209_stepper_x:virtual_endstop

SET_TMC_FIELD STEPPER=stepper_x FIELD=SGTHRS VALUE=255

homing_retract_dist: 0 position_min: -20 position_endstop: 0 position_max: 220 homing_speed: 20

[tmc2209 stepper_x] uart_pin: PC7 tx_pin: PC6 uart_address: 0 run_current: 0.580 stealthchop_threshold: 999999

[stepper_y] step_pin: !PB12 dir_pin: !PB10 enable_pin: !PB13 microsteps: 16 rotation_distance: 40 endstop_pin: ^!PB6

endstop_pin: tmc2209_stepper_y:virtual_endstop

SET_TMC_FIELD STEPPER=stepper_y FIELD=SGTHRS VALUE=255

homing_retract_dist: 0 position_min: -20 position_endstop: 0 position_max: 220 homing_speed: 20

[tmc2209 stepper_y] uart_pin: PC7 tx_pin: PC6 uart_address: 2 run_current: 0.580 stealthchop_threshold: 999999

[stepper_z] step_pin: PB1 dir_pin: !PB0 enable_pin: !PB2 microsteps: 16 rotation_distance: 8 endstop_pin: ^!PB7 homing_retract_dist: 0 position_endstop: 0.0 position_max: 250

[tmc2209 stepper_z] uart_pin: PC7 tx_pin: PC6 uart_address: 1 run_current: 0.580 stealthchop_threshold: 999999

[extruder] step_pin: PC2 dir_pin: !PC1 enable_pin: !PC3 microsteps: 16 rotation_distance: 33.500 nozzle_diameter: 0.400 filament_diameter: 1.750 heater_pin: PA15 sensor_type: EPCOS 100K B57560G104F sensor_pin: PC5 control: pid pid_Kp: 20.375 pid_Ki: 0.844 pid_Kd: 123.016 min_temp: 0 max_temp: 250

[tmc2209 extruder] uart_pin: PC7 tx_pin: PC6 uart_address: 3 run_current: 0.650 stealthchop_threshold: 999999

[heater_bed] heater_pin: PB3 sensor_type: ATC Semitec 104GT-2 sensor_pin: PC4 control: pid pid_Kp: 70.721 pid_Ki: 1.981 pid_Kd: 631.118 min_temp: 0 max_temp: 125 max_temp: 130

[heater_fan heatbreak_cooling_fan] pin: PC8

[heater_fan controller_fan] pin: PA8

[fan] pin: PC9

[mcu] serial: /dev/serial/by-id/usb-Klipper_stm32f401xc_h723-if00

[printer] kinematics: cartesian max_velocity: 500 max_accel: 3000 max_z_velocity: 12 max_z_accel: 50

[display] lcd_type: uc1701 cs_pin: PD2 a0_pin: PC0 #a0 is LCD_A0 rst_pin: PB4 encoder_pins: ^PA10,^PA9 click_pin: ^!EXP1_1 contrast: 63 spi_software_sclk_pin: PA5 spi_software_mosi_pin: PA7 spi_software_miso_pin: PA6

[neopixel btt_mini12864] pin: PB14 chain_count: 3 color_order: RGB initial_RED: 0.4 initial_GREEN: 0.05 initial_BLUE: 0.0

[board_pins] aliases:

EXP1 header

EXP1_1=PB15, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PD2, EXP1_9=, EXP1_2=PB14, EXP1_4=, EXP1_6=PB4, EXP1_8=PC0, EXP1_10=<5V>

[gcode_macro START_PRINT] gcode: {% set BED_TEMP = params.BED_TEMP|default(60)|float %} {% set EXTRUDER_TEMP = params.EXTRUDER_TEMP|default(210)|float %}

Start bed heating

M140 S{BED_TEMP}
# Use absolute coordinates
G90
# Reset the G-Code Z offset (adjust Z offset if needed)
SET_GCODE_OFFSET Z=0.0
# Home the printer
G28
# Move the nozzle near the bed
G1 Z5 F3000
# Move the nozzle very close to the bed
G1 Z0.15 F300
# Wait for bed to reach temperature
M190 S{BED_TEMP}
# Set and wait for nozzle to reach temperature
M109 S{EXTRUDER_TEMP}

[gcode_macro END_PRINT] gcode:

Turn off bed, extruder, and fan

M140 S0
M104 S0
M106 S0
# Move nozzle away from print while retracting
G91
G1 X-2 Y-2 E-3 F300
# Raise nozzle by 10mm
G1 Z10 F3000
G90
# Disable steppers
M84

See the sample-lcd.cfg file for definitions of common LCD displays.

SvoyakMartin commented 2 months ago

Greetings! I also turned out to be inattentive. I have BTT SKR MINI E3 V1.2 and BTT MINI 12864 V2.0. I just can't connect them. I tried different pinouts and firmware options. Or cyclic clicks and a blank screen without backlight, or only a working encoder and backlight. I would be grateful for any help!

BTT SKR MINI E3 V1.2 PIN MINI12864 V2.0-Pin Marlin-2.1.2.2 recommended: image