Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vortigont/espiron-pts200
Alternative firmware for ESP32 based Feizer PTS200 soldering iron. Full asynchronous non-blocking code using RTOS threads and events
https://github.com/vortigont/espiron-pts200
soldering-controller soldering-iron soldering-station
Last synced: 2 months ago
JSON representation
Alternative firmware for ESP32 based Feizer PTS200 soldering iron. Full asynchronous non-blocking code using RTOS threads and events
- Host: GitHub
- URL: https://github.com/vortigont/espiron-pts200
- Owner: vortigont
- License: gpl-3.0
- Created: 2024-03-02T08:39:54.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2024-08-25T01:56:35.000Z (5 months ago)
- Last Synced: 2024-10-11T13:36:19.931Z (3 months ago)
- Topics: soldering-controller, soldering-iron, soldering-station
- Language: C++
- Homepage: https://t.me/LampDevs
- Size: 9.72 MB
- Stars: 15
- Watchers: 6
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[![PlatformIO CI](https://github.com/vortigont/ESPIron-PTS200/actions/workflows/pio_build.yml/badge.svg)](https://github.com/vortigont/ESPIron-PTS200/actions/workflows/pio_build.yml)
# ESPIron PTS200
Firmware for [Feizer PTS200](https://www.aliexpress.com/store/1102411999) soldering iron.
I've started this project as a fork of [Songguo PTS200](https://github.com/Eddddddddy/Songguo-PTS200) to completely rework original firmware.
My goals is to create a well-structured firmware with a flexible design.Currently project is in it's early development stage. Additional features and UI redesign will follow.
Discussion forum [thread](https://community.alexgyver.ru/threads/proshivka-dlja-pajalnika-feizer-pts200-v2-esp32.9930/) (in russian).
Telegram group [LampDevs](https://t.me/LampDevs) (Russian)
WIP:
- decomposite project into independent tasks and RTOS threads
- revised temperture probes scheduling
- exclude useless tight loops
- removed ALL blocking code, wiped arduino's `loop()` hooks, now all code is asynchronous
- rework UI into non-blocking event based configuration system
- Move configuration data to NVS key/value storage
- Reimplemented temperature and timers configuration
- use full-range PWM for heater
- enabled PID control for PWM (not optimized yet)### Key controls
| Mode | Key | Action | Function |
|-|-|-|-|
| Idle | `middle` | single click | Toggle heating mode on/off |
| Suspended | `middle` | single click | WakeUp |
| Working | `middle` | double click | Boost on/off |
| Idle/Working | `middle` | long press | Enter configuration menu |
| Working | `+`/`-` | single click | inc/decr working temperature in one step |
| Working | `+`/`-` | double click | inc/decr working temperature in 4 steps |
| Working | `+`/`-` | triple click | inc/decr working temperature in 6 steps |
| Menu navigation | `middle` | short press | enter menu section, comfirm action |
| Menu navigation | `middle` | long press | escape action, previous page, etc |
| Menu navigation | `+`/`-` | single click | move along menu items, inc/decr action |### Menu navigation
Menu navigation demo capture.
|
|-
|
|-### Features implementation progress
| Function | Status |
|-|-|
| standby timer | :white_check_mark: done |
| :hourglass: idle timer | :white_check_mark: done |
| :zzz: suspend timer | :white_check_mark: done |
| :hotsprings: Temperature control | :white_check_mark: done |
| :rocket: boost mode | :white_check_mark: done |
| :floppy_disk: (optionaly) save/restore last used temperature | :white_check_mark: done |
| PD Configuration | :white_check_mark: done |
| QC2/QC3 trigger | :white_check_mark: done (experimental) |
| :mountain_cableway: PWM Power ramping | :white_check_mark: done |
| :straight_ruler: Tip calibration | :x: Planned |
| :memo: Tip profiles | :x: Planned |
| :wavy_dash: Power profile | :x: Planned |
| :electric_plug: Power budget | :x: Planned |
| :part_alternation_mark: PID profiles | :x: Planned |
| PID tuning | :x: Planned |### Features
## QC Trigger
QC trigger is an __experimental__ feature. Since QC trigger uses same lines as USB data, those function co-exist pretty bad together. Due to lack of design schematics and documentaion it is not easy to implement it properly. When QC is activated __no other__ USB operation is possible, __including firmware download__! It also affects system message output to `Serial` line which migh result in UI slownes or freezes.> [!NOTE]
> Do **not** activate QC-trigger on permanent basis! Do this only when no other PD sources are available and you need to work with USB Type-A powerbanks, or PSUs. Disable it when not needed in configuration menu. On each QC mode change it is required to unplug/replug the Iron!## Build method
Use [PlatformIO](https://platformio.org/) to build the project.
Attach the iron to USB port and run `pio run -t upload` in project's directory. See [Update Guide](/docs/update_guide.md) for details.==========
## HW Details#### Schematics
Iron [Schematics](/docs/PTS200_Schematic_2022-07-10.pdf) (probably from similar iron, some items does not match with PTS-200 v2)#### Disassembly
Unscrewing - [link](https://github.com/Eddddddddy/Songguo-PTS200/issues/22)
## Introduction
1. PD3.0 and QC3 fast charge protocol2. 20V 5A 100W maximum power
3. Built-in IMU for sleep detection
4. PD protocol chip uses CH224K
5. MOSFET supports 30V 12A
6. MCU uses ESP32 S2 FH4
7. The power input uses a power-enhanced USB-C interface
8. Customized soldering tip with 4 ohm internal resistance. It can be powered by 20V with 100W.
9. 128x64 OLED screen
10. 3 buttons, the middle button is connected to GPIO0
11. MSC firmware upgrade, flash disk mode
12. With a portable tip cap