Precision 4-Point Probe Controller
Windows GUI for operating a 4-point probe system and logging sheet resistance measurements.
P4PP is the control application for a custom 4-point probe measurement setup.
It provides:
- motion and hardware control through serial communication
- measurement execution (single or multi-cycle)
- live result visualization
- automatic CSV reporting
Target metric: Sheet Resistance (Rs, Ohm/sq).
- Download latest release: https://github.com/changhwang/P4PP/releases/latest
- In release assets, download
P4PP.zip. - Extract to a stable folder (example:
C:\Tools\P4PP). - Open extracted
P4PPfolder and runP4PP.exe. - In the app, keep the default
R_set = 681 ohm, then selectMOCKand validateConnect -> Home -> Measure.
Important:
- Keep the extracted
P4PPfolder structure as-is. - Do not move
P4PP.exeoutside theP4PPfolder.
- Live GUI for connect/home/move/measure workflow
MOCKmode for validation without hardware- Real-time status + graph updates
- Auto-save per-measurement CSV reports
- History CSV export
- Explicit controller state handling
Before using real hardware:
- Flash firmware:
firmware/p4pp_firmware/p4pp_firmware.ino - Confirm COM port in Windows Device Manager.
- Complete wiring and calibration checks in docs below.
R_set guidance:
- Default startup mode is
681 ohm(~0.1 mA), which is the safer general-purpose option for initial bring-up. - Switch to
68.1 ohm(~1 mA) for lower-resistance samples such as ITO when you need stronger signal.
Read docs in this order:
- Pass full
MOCKworkflow first. - Switch to real COM port and connect.
- Run one low-risk test sample.
- Confirm graph updates and CSV output in
data/.
- Recheck COM port in Device Manager.
- Ensure no other application is holding the port.
- Re-test with
MOCKmode first.
- Use the official release package (
P4PP.zip) from Releases. - If you built locally, use Python 3.11 and rebuild with
P4PP.spec.
- Confirm the Arduino firmware is updated together with the PC app.
681 ohmmode is intended for higher-resistance samples; low-resistance films may require68.1 ohm.
- Build with
main.pyas entry script. - Use the provided
P4PP.spec.
- Build using a clean Python 3.11 virtual environment.
- Clear
PYTHONPATHbefore packaging to avoid external site-package contamination.
P4PP/
|- assets/ # logo/icons
|- data/ # measurement outputs
|- docs/ # English docs
|- firmware/ # Arduino firmware
|- src/p4pp/ # application source
|- main.py # app entry point
|- P4PP.spec # PyInstaller spec
`- setup.py # package metadata
py -3.11 -m venv venv
.\venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -e .
python main.pypy -3.11 -m venv build_venv
.\build_venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install pyserial customtkinter matplotlib Pillow pyinstaller
$env:PYTHONPATH = ""
python -m PyInstaller --noconfirm --clean P4PP.specOutput:
dist/P4PP/P4PP.exe- optional archive:
dist/P4PP.zip
dist/is not tracked inmain(ignored by.gitignore).- Binaries are distributed via GitHub Releases assets.
build/is temporary and can be deleted safely.
Internal R&D project unless otherwise specified. Validate safety and calibration before production usage.
