ESP32-S3 Bench Guide
ESP32‑S3 N16R8 벤치 가이드: 실시간 핀아웃, 강의, 시뮬레이터 및 벤치 로그
pH와 적정곡선·완충·지시약을 배우고, 합성 적정 데이터로 식초 농도 계산
Learn pH, titration curves, buffers and indicators, and find a vinegar concentration from synthetic titration data.
교육Python · Jupyter NotebookGitHub @KrunalPanchal1995최근 접속 확인 실패운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 README에서 읽을 수 있습니다. 저장소 README ↗
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Find an unknown acid concentration from a titration curve, in three sessions.
openphtitration teaches how a pH curve reveals the concentration of an acid, from the pH scale to a numerical weak-acid titration solved with your own root finder, using only Python and a browser.
Target · Who is this for · Quick start · Sessions · Roadmap · Contribute · Explainer PDF
This repo is incomplete on purpose. Sessions 1 to 3 are here and fully working. The finished Target below is a preview of what the community can build next. We show you the path, not the code. Sessions 4 and up are yours.
An animated burette drips 0.1 mol/L base into a flask of diluted vinegar. The flask turns pink as the pH passes the phenolphthalein range, the measured pH points (with realistic noise) appear one by one, and below them the slope of the curve spikes at the equivalence point. The final frame reads the peak and prints the vinegar concentration, about 0.83 mol/L or 5 g per 100 mL. Your goal over the coming sessions: build the numerical engine and the analysis behind that animation.
Target: a burette titration of vinegar with a live pH curve and a derivative peak at the equivalence point
Target, final frame: the derivative peak gives the equivalence volume and the vinegar concentration
Target analysis: more dilute acids give a smaller jump; 200 noisy runs show how well the peak is located
Try it live:
How the Target was made is shown only as a path in promo/roadmap.md.
secondary school to diploma / undergraduate (levels 3-5). Topic area: Chemistry and Materials Science.
Prerequisites:
python --version works, you are ready. PRIMER.md explains the rest.New to Python? Read PRIMER.md first (10 minutes).
No installation knowledge needed. You need Git and Python 3.10+ (Windows: tick "Add Python to PATH"). On Mac and Linux type python3 wherever this page says python.
git clone https://github.com/KrunalPanchal1995/openphtitration.git
cd openphtitration
python start.py 1
start.py creates a private environment, installs what is needed and runs Session 1 with its checkpoint. Next: python start.py 2, python start.py 3, or python start.py test to check everything. Only a checkpoint: python start.py check 1.
Four lines turn the idea of Session 1 into a result (they work as they are): Save it as try.py and run it with python start.py run try.py (this uses the private environment, where NumPy is installed):
import numpy as np
x = (0.1 * 25 - 0.1 * 10) / (25 + 10) # leftover acid after 10 mL of base, mol/L
print(round(-np.log10(x), 3)) # -> 1.368 the pH of the flask
print(0.1 * 25 / 0.1, 'mL of base reach the equivalence point') # -> 25.0
Every session also opens in your browser with sliders (no install): live apps. Or use the Colab badge above for the notebook.
| # | Session | Model level | Time | Live app |
|---|---|---|---|---|
| 1 | Acids, bases and the shape of a titration curve | Level 1: conceptual interactive model | 60 min | open |
| 2 | pH, pOH and the mathematics of the strong acid - strong base curve | Level 2: mathematical engineering model | 75 min | open |
| 3 | Weak acids: buffers, the numerical curve and the noisy endpoint | Level 3: simulation and validation | 90 min | open |
Each session follows the same six steps: A real-world problem, B concept and theory, C visual explanation, D interactive simulation, E worked example and experiment, F assessment and design challenge. Each ends with checkpoint.py, which prints PASS or FAIL against reference numbers. Session 3 also contains the real-world mini-project: Find the acid in a bottle of vinegar.
flowchart LR
S1[Session 1<br/>Acids, bases and the shape of a titration curve]
S2[Session 2<br/>pH, pOH and the mathematics of the strong acid - strong base curve]
S3[Session 3<br/>Weak acids: buffers, the numerical curve and the noisy endpoint]
R[Roadmap S4+<br/>YOU build this]
T((Target))
S1 --> S2 --> S3 --> R --> T
| Folder or file | What is inside |
|---|---|
sessions/ | three sessions: README (A-F), lesson.py, notebook, live app, exercises, activity sheet, checkpoint |
promo/ | the Target: media, live links, and the roadmap (path only) |
docs/ | explainer.tex and the built explainer.pdf |
tests/ | runs every lesson and checkpoint headless |
start.py | one command to set up and run anything |
QUALITY.md, RUBRIC.md | the quality checklist and the scoring rubric |
.github/ | CI, PDF build, Pages deploy, issue and PR templates |
| Milestone | What you will build | Difficulty |
|---|---|---|
| Session 4: Fit the whole curve | A fitting routine that adjusts the concentration (and pKa) to minimise the squared pH residuals. | intermediate |
| Session 5: Identify an unknown acid by its pKa | A function that estimates pKa and the concentration from one run and names the closest acid in a small table. | intermediate |
| Session 6: A diprotic acid with two jumps | A charge-balance solver for a diprotic acid titrated with a strong base. | advanced |
| Session 7: When 25 C is not enough | A solver whose Kw is a parameter, with a neutral-pH function. | advanced |
| Session 8: Animate the titration | A GIF of at most 60 frames and 3 MB in which the burette empties, the flask colour changes and the derivative peak is marked. | advanced |
Full detail with a checkpoint per milestone: promo/roadmap.md.
New to GitHub? Read CONTRIBUTING.md; it starts from zero. Pick an issue labelled good first issue. Translations into Hindi, Telugu, Tamil and Malayalam are welcome.
python start.py test # runs every lesson and checkpoint
Lessons use # %% cell markers so they open as notebooks in VS Code. See QUALITY.md for the standard every session meets.
MIT. See LICENSE. Media in promo/media is (c) Krunal Panchal, CC BY 4.0.
Part of the PAN IIT OSS open-source teaching collection, modelled on the structure of openspline. Built on ideas from the Math Visual Studio at https://krunalpanchal1995.github.io/studio/.