Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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.
|Menu Demo Volt
|-
|Menu Demo PWR
|-

### 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 protocol

2. 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