TitraLab MicroPython Curriculum
หลักสูตร MicroPython สำหรับ TitraLab
รายวิชา: 2302311 Integrated Chemistry Laboratory I
ภาควิชา: เคมี คณะวิทยาศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย
Department of Chemistry, Faculty of Science, Chulalongkorn University
โฟลเดอร์นี้ประกอบด้วยหลักสูตร MicroPython สำหรับบอร์ด TitraLab ESP32 ออกแบบมาเพื่อสอนนิสิตเคมีที่ไม่มีพื้นฐานการเขียนโปรแกรม ให้สามารถสร้างระบบไทเทรตกรด-เบสอัตโนมัติได้
This folder contains the MicroPython curriculum for the TitraLab ESP32 board, designed to teach chemistry students with no programming background to build an automated acid-base titration system.
กลุ่มเป้าหมาย (Target Audience)
นิสิตเคมีชั้นปีที่ 2-3 (2nd-3rd year Chemistry undergraduates)
มีพื้นฐานเคมีวิเคราะห์ ไทเทรชัน สมการ Nernst
ไม่ต้องมีพื้นฐานการเขียนโปรแกรมมาก่อน
เส้นทางการเรียนรู้ 3 สัปดาห์ (3-Week Learning Progression)
+===========================================================================+
| TitraLab Learning Progression |
| เส้นทางการเรียนรู้ TitraLab |
+===========================================================================+
Week 1 Week 2 Week 3
สัปดาห์ที่ 1 สัปดาห์ที่ 2 สัปดาห์ที่ 3
===========================================================================
+-------------------+ +-------------------+ +-------------------+
| พื้นฐาน | | การสอบเทียบ | | ระบบเต็มรูปแบบ |
| Fundamentals | | Calibration | | Full System |
+-------------------+ +-------------------+ +-------------------+
| - LED, Button | | - pH Sensor Cal. | | - Auto Titration |
| - ADC, PWM | ----> | - Flow Rate Cal. | ----> | (HCl + NaOH) |
| - DS18B20, TFT | | - Inheritance | | - MicroPad + BLE |
| - OOP พื้นฐาน | | - Composition | | - Lean 3 Files |
+-------------------+ +-------------------+ +-------------------+
| | |
v v v
3 ชั่วโมง 3 ชั่วโมง 3 ชั่วโมง
3 hours 3 hours 3 hours
===========================================================================
ความซับซ้อน: ง่าย -----------------------------------------> ซับซ้อน
Complexity: Simple ---------------------------------------> Complex
===========================================================================
โครงสร้างโฟลเดอร์ (Folder Structure)
MicroPython/
+-- Week_1/ # พื้นฐานฮาร์ดแวร์และ OOP เบื้องต้น
| +-- core/ # ไฟล์หลักสำหรับการสอน (9 ไฟล์)
| +-- extras/ # สื่อเสริม, แบบฝึกหัด, ตัวอย่างเพิ่มเติม
| +-- lib/ # ไลบรารีที่จำเป็น (ili9341, xglcd_font, etc.)
| +-- fonts/ # ไฟล์ฟอนต์สำหรับจอ TFT
| +-- pins.py # การกำหนดขา GPIO มาตรฐาน
| +-- README.md # คู่มือ Week 1
|
+-- Week_2/ # การสอบเทียบเซ็นเซอร์และ OOP ขั้นกลาง
| +-- 01_pH_Sensor/ # การวัดและสอบเทียบ pH
| +-- 02_Pump_Control/ # การสอบเทียบอัตราการไหล
| +-- 03_OOP_Advanced/ # Inheritance, Composition, @property
| +-- lib/ # คลาส OOP สำหรับอ้างอิง
| +-- exercises/ # แบบฝึกหัดพร้อมเฉลย
| +-- README.md # คู่มือ Week 2
|
+-- Week_3/ # ระบบไทเทรตอัตโนมัติ (บทเรียน Lean สำหรับ MicroPad)
| +-- 01_titration_auto.py # โปรแกรมหลัก (ห้ามคัดลอกเป็น main.py!)
| +-- titration.py # โมดูลเคมี (calibration + ตรวจจับจุดสมมูล)
| +-- experiment.py # ค่าคงที่การทดลอง
| +-- USER_MANUAL.md # คู่มือผู้ใช้
| +-- LAB_DIRECTION.md # คู่มือปฏิบัติการ
| +-- README.md # คู่มือ Week 3
|
+-- SeniorProject/ # ตัวอย่างโปรเจกต์นิสิตรุ่นพี่
| +-- Hemmawan_Saon/
| +-- Nuttakit_Deemon/
|
+-- README.md # ไฟล์นี้ - ภาพรวมหลักสูตร
ตารางสรุปรายสัปดาห์ (Weekly Summary Table)
สัปดาห์
หัวข้อหลัก
แนวคิด OOP
ผลลัพธ์
Week 1
LED, Button, ADC, PWM, DS18B20, TFT, Buzzer
Class, Object, Constructor, Method
เข้าใจฮาร์ดแวร์ TitraLab
Week 2
pH Sensor Calibration, Pump Flow Rate
Inheritance, Composition, @property
ได้ค่าสอบเทียบ (R-squared >= 0.99)
Week 3
Full Auto Titration ผ่านแอป MicroPad (BLE)
การแบ่งโมดูล (titration.py, experiment.py)
ไทเทรตสำเร็จ + ไฟล์ CSV
สิ่งที่ต้องเตรียม (Prerequisites)
รายการ
คำอธิบาย
ดาวน์โหลด
Thonny IDE
IDE สำหรับเขียนและอัปโหลดโค้ด MicroPython
thonny.org
CP210x USB Driver
ไดรเวอร์สำหรับเชื่อมต่อ ESP32 ผ่าน USB
Silicon Labs
Python 3.x
(สำหรับ EquivPoint) วิเคราะห์จุดสมมูล
python.org
รายการ
คำอธิบาย
บอร์ด TitraLab
ESP32-WROOM-32 พร้อมอุปกรณ์ต่อพ่วง
เซ็นเซอร์ pH
พร้อมวงจรขยายสัญญาณ LMC6482
ปั๊มเพอริสตาลติก
12V DC ควบคุมด้วย PWM
สารละลายบัฟเฟอร์
pH 4.00, 7.00, 10.00 สำหรับสอบเทียบ
สารไทแทรนต์
เช่น NaOH 0.1M
เริ่มต้นอย่างรวดเร็ว (Quick Start)
ขั้นตอนที่ 1: ติดตั้ง Thonny และ Driver
ดาวน์โหลดและติดตั้ง Thonny IDE
ติดตั้ง CP210x USB driver (ถ้ายังไม่มี)
เชื่อมต่อบอร์ด TitraLab ผ่านสาย USB
ขั้นตอนที่ 2: ตั้งค่า Thonny สำหรับ ESP32
เปิด Thonny
ไปที่ Tools > Options > Interpreter
เลือก "MicroPython (ESP32)"
เลือก COM port ที่ถูกต้อง
คลิก OK
ขั้นตอนที่ 3: อัปโหลดไลบรารี
ไปที่ View > Files เพื่อเปิด File Browser
อัปโหลดโฟลเดอร์ Week_1/lib/ ไปยัง ESP32
อัปโหลดโฟลเดอร์ Week_1/fonts/ ไปยัง ESP32
ขั้นตอนที่ 4: เริ่มเรียนรู้
เปิดไฟล์ Week_1/core/01_led_class.py
กด F5 หรือคลิกปุ่ม Run
ดูผลลัพธ์ใน Shell panel
เส้นทางการเรียน (Learning Path)
เริ่มต้นที่นี่!
|
v
Week_1/README.md --> Week_2/README.md --> Week_3/README.md
| | |
v v v
พื้นฐาน การสอบเทียบ ระบบเต็มรูปแบบ
ไลบรารีที่จำเป็น (Required Libraries)
ไลบรารีทั้งหมดอยู่ในโฟลเดอร์ Week_1/lib/ ให้อัปโหลดไปยัง ESP32 ก่อนใช้งาน
ไฟล์
คำอธิบาย
จำเป็น
ili9341.py
ไดรเวอร์จอ TFT ILI9341
ใช่
xglcd_font.py
ไลบรารีแสดงฟอนต์
ใช่
sdcard.py
ไดรเวอร์ SD Card
ไม่*
titralab_simple.py
คลาสพื้นฐาน TitraLab
ใช่
*หมายเหตุ: Week 3 ใช้ ESP32 flash storage แทน SD Card
อยู่ในโฟลเดอร์ Week_1/fonts/:
ไฟล์
ขนาด
การใช้งาน
ArcadePix9x11.c
9x11 px
ข้อความเล็ก, ค่าตัวเลข
EspressoDolce18x24.c
18x24 px
หัวข้อ, ค่า pH หลัก
ตารางอ้างอิงขา GPIO (GPIO Pin Reference)
ตารางนี้แสดงขา GPIO หลักที่ใช้ในบอร์ด TitraLab (ดูรายละเอียดเพิ่มเติมที่ Week_1/pins.py)
ขาหลักที่ใช้บ่อย (Commonly Used Pins)
อุปกรณ์
GPIO
ค่าคงที่
ประเภท
หมายเหตุ
LED สีแดง
2
LED_RED
Output
แสดงข้อผิดพลาด
LED สีเขียว
4
LED_GREEN
Output
แสดงสถานะปกติ
Button 1
34
BUTTON1
Input-only
SELECT/ยืนยัน
Button 2
35
BUTTON2
Input-only
UP/เลื่อนขึ้น
Button 3
39
BUTTON3
Input-only
DOWN/เลื่อนลง
pH Sensor
32
PH_PIN
ADC1
อ่านแรงดัน 0-3.3V (ห้ามใช้ GPIO25 — ADC2 ชนกับ Wi-Fi)
Temperature
16
DS18B20_PIN
OneWire
เซ็นเซอร์อุณหภูมิ
Pump
21
PUMP_PIN
PWM
ควบคุมปั๊มไทแทรนต์
Buzzer
26
BUZZER_PIN
PWM
เสียงแจ้งเตือน
ข้อควรระวัง (Important Notes)
GPIO34, 35, 39 เป็นขา input-only ไม่มี internal pull-up/pull-down
GPIO0, 2, 5, 12, 15 มีข้อจำกัดในการใช้งาน (boot mode pins)
ดูรายละเอียดทั้งหมดที่ Week_1/pins.py
การไหลของข้อมูลใน Week 3 (Data Flow in Week 3)
+==========================================================================+
| TitraLab Data Flow (Week 3) |
| การไหลของข้อมูลในระบบ TitraLab |
+==========================================================================+
+-------------+ +-------------+ +-------------+
| Sensors | | ESP32 | | TFT Display |
| เซ็นเซอร์ | --> | ประมวลผล | --> | แสดงผล |
+-------------+ +-------------+ +-------------+
| - pH Probe | | |
| - DS18B20 | +------+------+
+-------------+ |
v
+----------------+
| Flash Storage |
| (ไฟล์ CSV) |
+----------------+
|
v
+----------------+
| Thonny IDE |
| (ดาวน์โหลด) |
+----------------+
|
v
+----------------+
| EquivPoint |
| (วิเคราะห์ข้อมูล) |
+----------------+
|
v
+----------------+
| จุดสมมูล (Ve) |
| Equivalence Pt |
+----------------+
==========================================================================
ขั้นตอนหลังการไทเทรต (Post-Titration Steps)
บันทึกข้อมูล - ระบบบันทึก pH, ปริมาตร, อุณหภูมิ ลง ESP32 flash
ดาวน์โหลดไฟล์ - ใช้ Thonny IDE ดาวน์โหลดไฟล์ CSV จาก ESP32
วิเคราะห์ข้อมูล - ใช้ EquivPoint (Python tool) หาจุดสมมูลที่แม่นยำ
คำนวณความเข้มข้น - ใช้สูตร C1V1 = C2V2
ลิงก์ไปยัง README รายสัปดาห์ (Links to Weekly READMEs)
การเชื่อมโยงโปรแกรมกับเคมี (Programming-Chemistry Connection)
การเรียนรู้การเขียนโปรแกรมผ่านบอร์ด TitraLab ช่วยให้นิสิตเห็นความเชื่อมโยงที่ชัดเจน:
แนวคิดโปรแกรม
แนวคิดเคมี
ตัวอย่างใน TitraLab
Variable/ตัวแปร
ค่าที่วัดได้
pH, temperature, volume
Loop/ลูป
การวัดซ้ำ
วัด pH ทุกวินาทีระหว่างไทเทรต
Conditional/เงื่อนไข
การตรวจสอบ
ถ้า pH > 7 แสดงว่าเป็นเบส
ADC
สมการ Nernst
แปลง mV -> pH
PWM
ควบคุมอัตราการไหล
ปรับความเร็วปั๊มตาม pH
Class/Object
พิมพ์เขียว/ของจริง
Class LED -> led_red, led_green
Inheritance
ประเภทเซ็นเซอร์
BaseSensor -> pHSensor, TempSensor
คำศัพท์สำคัญ (Key Terminology)
English
ภาษาไทย
คำอธิบาย
Class
คลาส
พิมพ์เขียวสำหรับสร้าง Object
Object
ออบเจกต์
สิ่งที่สร้างจาก Class (Instance)
Constructor
ตัวสร้าง
Method __init__ ที่ทำงานตอนสร้าง Object
Method
เมธอด
ฟังก์ชันที่อยู่ใน Class
Attribute
แอตทริบิวต์
ตัวแปรที่อยู่ใน Class
Inheritance
การสืบทอด
Class ลูกรับคุณสมบัติจาก Class แม่
Composition
การประกอบ
Object มี Object อื่นเป็นส่วนประกอบ
คำศัพท์ฮาร์ดแวร์ (Hardware Terms)
English
ภาษาไทย
คำอธิบาย
GPIO
จีพีไอโอ
General Purpose Input/Output - ขาอเนกประสงค์
ADC
เอดีซี
Analog-to-Digital Converter - ตัวแปลงสัญญาณ (12-bit, 0-4095)
PWM
พีดับเบิลยูเอ็ม
Pulse Width Modulation (10-bit, 0-1023)
Duty Cycle
ดิวตี้ไซเคิล
สัดส่วนเวลาที่สัญญาณอยู่ที่ HIGH
คำศัพท์เคมี (Chemistry Terms)
English
ภาษาไทย
คำอธิบาย
Titration
ไทเทรชัน
การหาปริมาณสารด้วยการเติมสารไทแทรนต์
Equivalence Point
จุดสมมูล
จุดที่สารทำปฏิกิริยาพอดีกัน
Calibration
การสอบเทียบ
การปรับค่าเซ็นเซอร์ให้อ่านค่าถูกต้อง
Nernst Equation
สมการเนิร์นสต์
E = E0 - (2.303RT/nF) x pH
Buffer Solution
สารละลายบัฟเฟอร์
สารละลายที่มี pH คงที่
เกณฑ์ความสำเร็จ (Success Criteria)
เกณฑ์รายสัปดาห์ (Weekly Criteria)
สัปดาห์
เกณฑ์
สถานะ
Week 1
เข้าใจ LED, Button, ADC, PWM และสร้าง Class ง่ายๆ ได้
[ ]
Week 2
สอบเทียบ pH (R-squared >= 0.99) และ Flow Rate (%RSD < 5%)
[ ]
Week 3
ไทเทรตสำเร็จ พบจุดสมมูล และวิเคราะห์ด้วย EquivPoint ได้
[ ]
ผลลัพธ์สุดท้าย (Final Deliverables)
โปรเจกต์นิสิตรุ่นพี่ (Senior Project Examples)
โฟลเดอร์ SeniorProject/ ประกอบด้วยตัวอย่างโปรเจกต์จากนิสิตรุ่นก่อน:
โฟลเดอร์
นิสิต
คำอธิบาย
Hemmawan_Saon/
เหมวรรณ สาออน
โค้ดไทเทรตเวอร์ชัน 2023
Nuttakit_Deemon/
ณัฐกิตติ์ ดีมอญ
โค้ดไทเทรตเวอร์ชัน 2024
นิสิตสามารถศึกษาโค้ดเหล่านี้เป็นแนวทางในการพัฒนาโปรเจกต์ของตนเอง
การแก้ไขปัญหาเบื้องต้น (Troubleshooting)
ปัญหาที่พบบ่อย (Common Issues)
ปัญหา
สาเหตุ
วิธีแก้
เชื่อมต่อ ESP32 ไม่ได้
Driver หรือสาย USB
ติดตั้ง CP210x driver, ลองสายอื่น
No module named 'ili9341'
ไม่ได้อัปโหลดไลบรารี
อัปโหลด Week_1/lib/ ไปยัง ESP32
ค่า pH ไม่เสถียร
หัววัดสกปรก
ล้างด้วยน้ำ DI
R-squared < 0.99
สารละลายบัฟเฟอร์หมดอายุ
ใช้บัฟเฟอร์ใหม่, ล้างหัววัด
ปั๊มไม่ทำงาน
สายไฟหลุด
ตรวจสอบการเชื่อมต่อ
ขอความช่วยเหลือ (Getting Help)
ดู README ของแต่ละสัปดาห์
ตรวจสอบ error message ใน Thonny Shell
สอบถามอาจารย์ผู้สอนหรือ TA
ผู้ออกแบบบอร์ด (Board Designers)
รศ.ดร.วิวัฒน์ วชิรวงศ์กวิน (Assoc. Prof. Dr. Viwat Vchirawongkwin)
ศ.ดร.สัมฤทธิ์ วัชรสินธุ์ (Prof. Dr. Sumrit Wacharasindhu)
ผู้พัฒนาโค้ด (Code Contributors)
เหมวรรณ สาออน (Hemmawan Saon)
ณัฐกิตติ์ ดีมอญ (Nuttakit Deemorn)
รายวิชา: 2302311 Integrated Chemistry Laboratory I
สถาบัน: ภาควิชาเคมี คณะวิทยาศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย
Version 1.0.0 - MicroPython Curriculum Overview
สร้างเมื่อ: มกราคม 2026