Skip to content

Commit 3ba8fbe

Browse files
ibbnogIbbnog
andauthored
Project/elian daniel.enache hardware update (#1232)
* complete milestone 1 documentation and architecture diagram * fix: changed the svg file to get rid of the pngs hidden inside * added kicad schematic and logs with photos for hardware deadline, changed the display, added more parts --------- Co-authored-by: Ibbnog <ibbnog@192.168.0.28>
1 parent 4fe3d56 commit 3ba8fbe

9 files changed

Lines changed: 35 additions & 11 deletions

File tree

website/versioned_docs/version-fils_en/project/2026/elian_daniel.enache/RustyPlotter-main_schematic.svg

Lines changed: 1 addition & 0 deletions
Loading

website/versioned_docs/version-fils_en/project/2026/elian_daniel.enache/RustyPlotter-stepper_subcircuit_schematic.svg

Lines changed: 1 addition & 0 deletions
Loading
221 KB
Loading
36.4 KB
Loading
41 KB
Loading

website/versioned_docs/version-fils_en/project/2026/elian_daniel.enache/index.md

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ The main components of the plotter work together to complete the build:
2525
- **NEMA17 Stepper Motors (with A4988 Drivers)**: Provide X and Y-axis planar motion via GPIO step/direction signals
2626
- **JF-0530B Solenoid (with a Dual MOSFET Module)**: Moves the pen up and down, actuated via PWM
2727
- **Mechanical Endstops**: Get the origin (home) 0,0 position for X and Y-axis via GPIO input
28-
- **RepRapDiscount Full Graphic Smart Controller (with an SD-card)**: Manages the entire user interface and reads the .gcode files for plotting over SPI
28+
- **MKS MINI 12864 V2.0 Display (with an SD-card)**: Manages the entire user interface and reads the .gcode files for plotting over SPI
2929

3030

3131
![RustyPlotter Architecture](rustyplotterschematic.svg)
@@ -49,13 +49,32 @@ I started more research on the components, especially what solenoid to use and w
4949

5050
I mapped out the hardware architecture diagram and wrote the system documentation for the first documentation milestone.
5151

52+
### Weeks 10-11
53+
54+
I planned, cut and assembled the aluminum frames for the new skeleton of the frame. I connected all the main components together and tested them, all working. Changed the display as the old one gave me trouble (lack of proper documentation). Bought another set of useful motion parts. Finished the KiCAD schematic of the circuit.
55+
56+
![Frame](frame.webp)
57+
The frame of the plotter
58+
![Render](render.webp)
59+
The render of the frame
60+
![Components](components.webp)
61+
The connected components
62+
![Cutting the profiles](cut_profile.webp)
63+
Cutting the aluminum profiles
64+
![Thread tapping](thread_tap.webp)
65+
Tapping threads into newly made holes
66+
67+
5268
## Hardware
5369

54-
The plotter is built upon a rigid skeleton of 2020/2040 aluminum extrusions. Planar motion across the X and Y-axis is achieved using GT2 belts, pulleys, and V-slot wheels driven by two NEMA17 stepper motors. The electrical components are all connected through an 830-point breadboard with breadboard wires and jumpers. The NEMA17 steppers are driven by 2 A4988 stepper drivers, interfacing with the STM32 NUCLEO-U545RE-Q via GPIO. For protection of said drivers, 100uF 35V decoupling capacitors are added to help against voltage spikes. For the pen actuation, a JF-0530B 12V push-pull solenoid is used. It is controlled by a 15A 400W Dual Mosfet module, interfacing with the microcontroller via PWM. To prevent reverse voltage spikes from the solenoid getting to the MOSFET module, a 1N4007 flyback diode is used. The mechanical endstops, via GPIO, establish a known origin position for the X and Y-axis. In order to not get false triggers, 10kOhm external pull-up resistors and 0.47uF 50V debouncing capacitors are added. The machine is controlled (via SPI) with the help of the RepRapDiscount Full Graphic Smart Controller, which contains a 12864 LCD with a rotary encoder, used for navigating through the menus, showing status and selecting the .gcode files for plotting, which are stored on an SD-card plugged into the SD-card reader, the other component of the Smart Controller. The entire system is powered by a 12V 6A power supply with a DC barrel-jack, with 5V particularly going to the STM32 via a 12-24V to 5V 5A step-down module.
70+
The plotter is built upon a rigid skeleton of 2020/2040 aluminum extrusions. Planar motion across the X and Y-axis is achieved using GT2 belts, pulleys, and V-slot wheels driven by two NEMA17 stepper motors. The electrical components are all connected through an 830-point breadboard with breadboard wires and jumpers. The NEMA17 steppers are driven by 2 A4988 stepper drivers, interfacing with the STM32 NUCLEO-U545RE-Q via GPIO. For protection of said drivers, 100uF 35V decoupling capacitors are added to help against voltage spikes. For the pen actuation, a JF-0530B 12V push-pull solenoid is used. It is controlled by a 15A 400W Dual Mosfet module, interfacing with the microcontroller via PWM. To prevent reverse voltage spikes from the solenoid getting to the MOSFET module, a 1N4007 flyback diode is used. The mechanical endstops, via GPIO, establish a known origin position for the X and Y-axis. In order to not get false triggers, 10kOhm external pull-up resistors and 0.47uF 50V debouncing capacitors are added. The machine is controlled (via SPI) with the help of the MKS MINI 12864 V2.0 Display, which contains a 12864 LCD with a rotary encoder, used for navigating through the menus, showing status and selecting the .gcode files for plotting, which are stored on an SD-card plugged into the SD-card reader, the other component of the Smart Controller. The entire system is powered by a 12V 6A power supply with a DC barrel-jack, with 5V particularly going to the STM32 via a 12-24V to 5V 5A step-down module.
5571

56-
<!--### Schematics
72+
### Schematics
5773

58-
Place your KiCAD or similar schematics here in SVG format.-->
74+
![RustyPlotter Main Schematic](RustyPlotter-main_schematic.svg)
75+
![RustyPlotter Stepper Subcircuit Schematic](RustyPlotter-stepper_subcircuit_schematic.svg)
76+
77+
<!--Place your KiCAD or similar schematics here in SVG format.-->
5978

6079
### Bill of Materials
6180

@@ -74,7 +93,7 @@ The format is
7493
| [x1 STM32 NUCLEO-U545RE-Q](https://www.st.com/en/evaluation-tools/nucleo-u545re-q.html) | The microcontroller | [112.47 RON](https://ro.mouser.com/ProductDetail/STMicroelectronics/NUCLEO-U545RE-Q?qs=mELouGlnn3cp3Tn45zRmFA%3D%3D) |
7594
| [x1 12V 6A Power Supply](https://www.optimusdigital.ro/ro/surse-ac-dc-de-12-v/8016-alimentator-stabilizat-12-v-6000-ma.html) | Supplies power to the board and the other components | [49.99 RON](https://www.optimusdigital.ro/ro/surse-ac-dc-de-12-v/8016-alimentator-stabilizat-12-v-6000-ma.html) |
7695
| [x1 12/24V to 5V 5A Step-down Module](https://www.optimusdigital.ro/ro/surse-coboratoare/12484-sursa-coboratoare-dc-dc-de-la-24v12v-la-5v-5a.html) | Provides the STM32 with 5V | [already owned](https://www.optimusdigital.ro/ro/surse-coboratoare/12484-sursa-coboratoare-dc-dc-de-la-24v12v-la-5v-5a.html) |
77-
| [x1 RepRapDiscount Full Graphic Smart Controller](https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller) | The display with encoder and SD-card reader | [already owned](https://sigmanortec.ro/modul-control-imprimanta-3d-display-12864-ramps-14-card-sd?SubmitCurrency=1&id_currency=2&gad_source=5&gad_campaignid=23069763085&gclid=EAIaIQobChMIvdmqh96JlAMV0KeDBx3roxqiEAQYASABEgJshfD_BwE) |
96+
| [x1 MKS MINI 12864 V2.0](https://reprap.org/wiki/MKS_MINI_12864) | The display with encoder and SD-card reader | [already owned](https://www.reprapmania.ro/cumpara/bigtreetech-lcd-display-mini-12864-v2-1575) |
7897
| [x1 SanDisk microSDHC Ultra 16GB C10/UHS-I](https://www.evomag.ro/foto-video-carduri-memorie/sandisk-card-de-memorie-sandisk-ultra-android-microsdhc-16gb-80-mb-s-citire-clasa10-uhs-i-3645969.html) | MicroSD-card (with SD-card adapter) | [already owned](https://www.evomag.ro/foto-video-carduri-memorie/sandisk-card-de-memorie-sandisk-ultra-android-microsdhc-16gb-80-mb-s-citire-clasa10-uhs-i-3645969.html) |
7998
| [x2 NEMA17 SL42STH40-1684A-23 Stepper Motor](https://forum.duet3d.com/assets/uploads/files/1694961895301-sl42sth40-1684a-23%E7%94%B5%E6%9C%BA%E5%9B%BE.pdf) | The motors that will move the pen on the X and Y axis | [already owned](https://www.aliexpress.com/i/1005008532513345.html) |
8099
| [x2 A4988 Stepper Driver](https://www.pololu.com/file/0j450/a4988_dmos_microstepping_driver_with_translator.pdf) | The drivers that control the stepper motors | [15.98 RON](https://www.optimusdigital.ro/ro/drivere-de-motoare-pas-cu-pas/866-driver-pentru-motoare-pas-cu-pas-a4988-rosu.html) |
@@ -94,27 +113,31 @@ The format is
94113
| [x6 Bed Screws with Springs](https://sigmanortec.ro/set-surub-m3-cu-arc-si-piulita-pat-imprimanta-3d?SubmitCurrency=1&id_currency=2) | For securing the bed and making sure it's flat | [already owned](https://sigmanortec.ro/set-surub-m3-cu-arc-si-piulita-pat-imprimanta-3d?SubmitCurrency=1&id_currency=2) |
95114
| [GT2 Belt](https://sigmanortec.ro/Curea-GT2-6mm-p125814436?SubmitCurrency=1&id_currency=2) | X and Y axis motion | [already owned](https://sigmanortec.ro/Curea-GT2-6mm-p125814436?SubmitCurrency=1&id_currency=2) |
96115
| [GT2 Pulleys](https://www.optimusdigital.ro/ro/mecanica-roti-scripete/12641-roata-scripete-din-aluminiu-cu-diametru-intern-de-8-mm-30-dinti-pentru-curea-gt2-6mm.html) | Guides the belt | [already owned](https://www.optimusdigital.ro/ro/mecanica-roti-scripete/12641-roata-scripete-din-aluminiu-cu-diametru-intern-de-8-mm-30-dinti-pentru-curea-gt2-6mm.html) |
97-
| [V-Slot Wheels](https://sigmanortec.ro/Rola-V-Slot-POM-p128663792) | X and Y axis motion | [already owned](https://sigmanortec.ro/Rola-V-Slot-POM-p128663792) |
98-
| Total | Total cost of the components | 271.23 RON |
116+
| [x9 V-Slot Wheels](https://hobbymarket.ro/rola-mare-openbuilds-pentru-profil-v-slot-cu-rulment-625-forma-v-set-2-buc.html) | X and Y axis motion | [51.52 RON](https://hobbymarket.ro/rola-mare-openbuilds-pentru-profil-v-slot-cu-rulment-625-forma-v-set-2-buc.html) |
117+
| [x3 Eccentric Nuts](https://zyx3d.ro/produs/distantier-excentric) | X and Y axis motion | [18.00 RON](https://zyx3d.ro/produs/distantier-excentric) |
118+
| Total | Total cost of the components | 340.75 RON |
99119
## Software
100120

101121
| Library | Description | Usage |
102122
|---------|-------------|-------|
103123
| [embassy-stm32](https://crates.io/crates/embassy-stm32) | Embassy Hardware Abstraction Layer (HAL) for ST STM32 series microcontrollers | Async task management |
104124
| [embassy-executor](https://crates.io/crates/embassy-executor) | Async/await executor designed for embedded usage | Runs the asynchronous tasks |
105-
| [gcode](https://crates.io/crates/gcode) | A gcode parser for no-std applications | For parsing the .gcode files |
106-
| [st7920](https://crates.io/crates/st7920) | SPI driver for the ST7920 LCD display controller | Display driver library |
125+
| [embassy-time](https://crates.io/crates/embassy-time) | Instant and Duration for embedded no-std systems, with async timer support | Times the motor step pulses and delays |
126+
| [embedded-hal](https://crates.io/crates/embedded-hal) | A Hardware Abstraction Layer (HAL) for embedded systems | PWM for solenoid control |
127+
| [st7567s](https://crates.io/crates/st7567s) | Driver for the ST7567S LCD controller | Display driver library |
107128
| [embedded-graphics](https://crates.io/crates/embedded-graphics) | Embedded graphics library for small hardware displays | For displaying the system on the screen |
129+
| [display-interface-spi](https://crates.io/crates/display-interface-spi) | Generic SPI implementation for display interfaces | SPI communication layer for display driver |
108130
| [embedded-sdmmc](https://crates.io/crates/embedded-sdmmc) | A basic SD/MMC driver for Embedded Rust | For storing and using the .gcode files |
109131
| [micromath](https://crates.io/crates/micromath) | Embedded-friendly math library | For calculating motion |
132+
| [gcode](https://crates.io/crates/gcode) | A gcode parser for no-std applications | For parsing the .gcode files |
110133
| [defmt](https://crates.io/crates/defmt) | A highly efficient logging framework that targets resource-constrained devices, like microcontrollers | For debugging |
111134

112135
## Links
113136

114137
<!-- Add a few links that inspired you and that you think you will use for your project -->
115138

116139
1. [Embassy Framework Documentation](https://embassy.dev/book/)
117-
2. [RepRapDiscount Full Graphic Smart Controller Wiki](https://reprap.org/wiki/RepRapDiscount_Full_Graphic_Smart_Controller)
140+
2. [MKS MINI 12864 V2.0 Documentation](https://reprap.org/wiki/MKS_MINI_12864)
118141
3. [A4988 Stepper Driver Datasheet](https://www.pololu.com/file/0j450/a4988_dmos_microstepping_driver_with_translator.pdf)
119142
4. [JF-0530B Solenoid Datasheet](https://www.hobbytronics.co.za/Content/external/1274/D2512640695.pdf)
120143
5. [STM32 NUCLEO-U545RE-Q Specifications](https://www.st.com/en/evaluation-tools/nucleo-u545re-q.html)
24.2 KB
Loading

website/versioned_docs/version-fils_en/project/2026/elian_daniel.enache/rustyplotterschematic.svg

Lines changed: 0 additions & 1 deletion
Loading
15.6 KB
Loading

0 commit comments

Comments
 (0)