Bought an ATOMSTACK A5 Pro Plus 40W from AliExpress https://www.aliexpress.com/item/1005003652763657.html
It was OK, but the firmware kinda sucks. Let's crack it open and see what the board is.
"ATOMSTACK Laser 32-A5 V1.0."
At a glance, unused features:
- WiFi
- SD Card
- HDMI (External Controller)
- Limit Switches
- Dual Y Motors
- Reset (E-Stop?)
- I2C Header
- Probe Servos
"ESP32-WROOM-32U"
> esptool --port COM5 chip_id
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
> esptool --port COM5 flash_id
Manufacturer: 20
Device: 4017
Detected flash size: 8MB
OK. Let's make a backup.
> esptool --port COM5 read_flash 0 0x800000 .\Laser_32-A5_v1.0_Factory.bin
"4988ET"
Texas Instruments SNx4HC595 8-bit, serial-in, parallel-out shift register
/-----------\
QB ---|1 O 16|--- Vcc
QC ---|2 15|--- QA
QD ---|3 14|--- Serial Input
QE ---|4 13|--- Output Enable
QF ---|5 12|--- Register Clock
QG ---|6 11|--- Storage Clock
QH ---|7 10|--- Storage Clear
GND ---|8 9|--- QH'
\-----------/
| # | Function | Destination |
|---|---|---|
| 1 | QB | 4988 (X) Pin 16 (Step) |
| 2 | QC | 4988 (X) Pin 19 (Dir) |
| 3 | QD | ??? |
| 4 | QE | ??? |
| 5 | QF | 4988 (Y) Pin 16 (Step) |
| 6 | QG | 4988 (Y) Pin 19 (Dir) |
| 7 | QH | HDMI 13 |
| 8 | GND | GND |
| 9 | QH' | ??? |
| 10 | Storage Clear | ??? |
| 11 | Storage Clock | ESP32 Pin 25 (GPIO16, RXD_2) |
| 12 | Register Clock | ESP32 Pin 27 (GPIO17, TXD_2) |
| 13 | Output Enable | ??? |
| 14 | Serial Data Input | ESP32 Pin 42 (GPIO21, VSPI_HD, SDA) |
| 15 | QA | 4988 (Both) Pin 2 (Enable) - Pulled up to 3.3V |
| 16 | Vcc | 3.3V |
Texas Instruments SNx4HC125 Quadruple Buffers with 3-State Outputs
/---------------\
Channel 1, Output Enable ---|1 O 14|--- Vcc
Channel 1, Input A ---|2 13|--- Channel 4, Output Enable
Channel 1, Output Y ---|3 12|--- Channel 4, Input A
Channel 2, Output Enable ---|4 11|--- Channel 4, Output Y
Channel 2, Input A ---|5 10|--- Channel 3, Output Enable
Channel 2, Output Y ---|6 9|--- Channel 3, Input A
GND ---|7 8|--- Channel 3, Output Y
\---------------/
| # | Function | Destination |
|---|---|---|
| 1 | Channel 1, Output Enable | GND |
| 2 | Channel 1, Input A | ESP32 Pin 34 (GPIO5, V_SPI_CS0, SS) |
| 3 | Channel 1, Output Y | ? 3 mid |
| 4 | Channel 2, Output Enable | GND |
| 5 | Channel 2, Input A | ESP32 Pin 14 (GPIO25, ADC2_8, RTC GPIO6, DAC 1) |
| 6 | Channel 2, Output Y | HDMI 12 |
| 7 | GND | GND |
| 8 | Channel 3, Output Y | HDMI 6 |
| 9 | Channel 3, Input A | ESP32 Pin 25 (GPIO16, RXD_2) [74HC595 Storage Clock] |
| 10 | Channel 3, Output Enable | GND |
| 11 | Channel 4, Output Y | HDMI 3 |
| 12 | Channel 4, Input A | ESP32 Pin 27 (GPIO17, TXD_2) [74HC595 Register Clock] |
| 13 | Channel 4, Output Enable | GND |
| 14 | Vcc | 3.3V |
Texas Instruments SN74LVC1T45 Single-bit noninverting bus transceiver
| # | Function | Destination |
|---|---|---|
| 1 | Vcca | 5V |
| 2 | GND | GND |
| 3 | A | TTL Header + |
| 4 | B | ESP32 Pin 39 (GPIO22, V_SPI_WP, SCL, RTS 0) |
| 5 | DIR | ??? |
| 6 | Vccb | 3.3V |
| Location | Function | # | Notes | Destination |
|---|---|---|---|---|
| Probe Header (Left) | S | Pull Up/Down 3.3V/GND | ESP32 Pin 22 (GPIO2, ADC2_2, HSPI_WP0, Touch2, RTC GPIO12) | |
| Probe Header (Right) | S | ESP32 Pin 10 (GPIO34, ADC1_6, RTC GPIO4, Input Only) | ||
| Blue Y Header | Y Endstop | S | ESP32 Pin 11 (GPIO35, ADC1_7, RTC GPIO5, Input Only) | |
| Red X Header | X Endstop | S | ESP32 Pin 5 (GPIO36, ADC1_0, SensVP, RTC GPIO0, Input Only) | |
| I2C Header | 1 | (Top) | ESP32 Pin 24 (GPIO4, ADC2_0, HSPI_HD, Touch0, RTC GPIO10) | |
| I2C Header | 2 | ESP32 Pin 23 (GPIO0, ADC2_1, CLK1, Touch1, RTC GPIO11) | ||
| I2C Header | 3 | GND | ||
| I2C Header | 4 | 3.3V | ||
| TTL Header | Laser Control | + | TA5 Bus Tranceiver Pin 3 (A) @ 5V | |
| SD | Card Detect | LED | ||
| SD | DAT1 | 8 | NC | |
| SD | DAT0 | 7 | ESP32 Pin 18 (GPIO12, ADC2_5, HSPI_Q, Touch5, RTC GPIO15) | |
| SD | VSS | 6 | GND | |
| SD | CLK | 5 | ESP32 Pin 17 (GPIO14, ADC2_6, HSPI_CLK, Touch6, RTC GPIO16) | |
| SD | VDD | 4 | 3.3V | |
| SD | CMD | 3 | ESP32 Pin 20 (GPIO13, ADC2_4, HSPI_ID, Touch4, RTC GPIO14) | |
| SD | CD | 2 | ESP32 Pin 21 (GPIO15, ADC2_3, HSPI_CS0, Touch3, RTC GPIO13) | |
| SD | DAT2 | 1 | NC | |
| Reset Header | L | ESP32 Pin 9 (EN) | ||
| Reset Header | R | GND | ||
| HDMI | 1 | (Bottom) | ??? | |
| HDMI | 2 | ??? | ||
| HDMI | 3 | HC125 11 (Output 4) | ||
| HDMI | 4 | ??? | ||
| HDMI | 5 | ??? | ||
| HDMI | 6 | HC125 8 (Output 3) | ||
| HDMI | 7 | ??? | ||
| HDMI | 8 | ??? | ||
| HDMI | 9 | ??? | ||
| HDMI | 10 | ??? | ||
| HDMI | 11 | ??? | ||
| HDMI | 12 | HC125 6 (Output 2) | ||
| HDMI | 13 | 74HC595 7 (QH) | ||
| HDMI | 14 | ??? | ||
| HDMI | 15 | ??? | ||
| HDMI | 16 | 3.3V | ||
| HDMI | 17 | GND | ||
| HDMI | 18 | 5V | ||
| HDMI | 19 | ??? |
- Step pin on Y driver goes to 74HC595D. So, it appears the board needs to use "I2S Stepper Stream".
- SD Card is running in SPI mode





