โครงงานนี้ทำอะไรได้บ้าง?
เป้าหมายคือรวมการอ่าน pH, EC และอุณหภูมิน้ำไว้บนจอสัมผัสเดียว แต่ฟีเจอร์และผลวัดจริงต้องแยกออกจากกัน
ความเป็นกรด–ด่าง
มีโค้ด Calibration สองจุด แต่ยังต้องยืนยันกับน้ำยามาตรฐาน
CALค่าการนำไฟฟ้า
โมเดลคำนวณยังอยู่ระหว่างตรวจสอบ
CALอุณหภูมิน้ำ
ภาพต้นแบบแสดง 25.9°C ณ เวลาที่ถ่าย
VALID บนหน้าจอpH และ EC ยังแสดง CAL ในภาพจริง จึงไม่ใช่หลักฐานว่าเครื่องสอบเทียบครบหรือวัดได้แม่นยำแล้ว
ทำไมถึงอยากสร้างเครื่องวัดน้ำด้วย ESP32?

ใครที่ปลูกไฮโดรโปนิกส์น่าจะคุ้นกับการหยิบเครื่องวัด pH และ EC เดินเช็กค่าน้ำ แล้วจดตัวเลขไว้ทีละรอบ ถ้ามีหลายถัง การวัดและบันทึกข้อมูลซ้ำ ๆ ก็ใช้เวลาไม่น้อย ยิ่งต้องเช็กอุณหภูมิน้ำเพิ่มด้วย งานก็เพิ่มขึ้นอีก
ผมเลยลองพัฒนาโครงงานเครื่องวัดคุณภาพน้ำที่รวม pH, EC และอุณหภูมิน้ำ ไว้บนจอสัมผัสเดียว โดยใช้ ESP32 เป็นตัวควบคุม จุดมุ่งหมายคือทำให้การอ่านค่าจาก ชุดหัววัดที่ต่ออยู่กับเครื่อง สะดวกขึ้น และเปิดทางให้พัฒนาเป็นระบบตรวจวัด Smart Farm ในอนาคต
อย่างไรก็ตาม เวอร์ชันที่กำลังพัฒนานี้ ยังไม่ได้ออกแบบให้วัดหลายถังพร้อมกัน และไม่ได้ควบคุมการเติมปุ๋ยหรือปรับ pH อัตโนมัติ เราจึงต้องแยกเป้าหมายของระบบออกจากฟีเจอร์ที่ทำได้จริงในปัจจุบัน
บทความนี้จะพาดูว่าผมเลือกอุปกรณ์อะไร วางสถาปัตยกรรมการอ่านเซนเซอร์อย่างไร ทำไมต้องมีขั้นตอน Calibration และส่วนไหนยังต้องตรวจสอบก่อนนำไปใช้งานจริง
ค่า pH, EC และอุณหภูมิน้ำ บอกอะไรเรา?
ความเป็นกรด–ด่าง
การนำไฟฟ้าของน้ำ
อุณหภูมิน้ำ
- pH บอกความเป็นกรด–ด่างของสารละลาย มีผลต่อความพร้อมใช้ของธาตุอาหาร แต่ไม่ใช่ตัวเลขที่บอกปริมาณปุ๋ยโดยตรง
- EC (Electrical Conductivity) บอกความสามารถของสารละลายในการนำไฟฟ้า ใช้ประเมินความเข้มข้นไอออนโดยรวมได้ แต่ไม่ได้แยกว่ามีธาตุอาหารชนิดไหนมากหรือน้อย
- อุณหภูมิน้ำ เป็นข้อมูลสำคัญอีกตัวที่ต้องติดตาม และมีผลต่อการตีความ EC เมื่อใช้การชดเชยไปยังอุณหภูมิอ้างอิง
สำหรับการปลูกไฮโดรโปนิกส์ ค่าที่เหมาะสมจะขึ้นกับชนิดพืช ช่วงการเจริญเติบโต คุณภาพน้ำ และวิธีจัดการสารละลาย เราจึงไม่ควรนำตัวเลขตั้งต้นเพียงชุดเดียวไปฟันธงกับพืชทุกชนิด แหล่งข้อมูลอ้างอิง: Oklahoma State University — Electrical Conductivity and pH Guide for Hydroponics
อุปกรณ์ที่เลือกสำหรับโครงงาน
ใช้โมดูล TDS แบบแอนะล็อกพร้อมหัววัดและอ่านสัญญาณผ่าน ADS1115 ปรับเทียบตามคู่มือของโมดูล หากแสดงค่า EC จาก TDS ให้ติดป้ายว่าเป็นค่าประมาณและระบุตัวคูณที่ใช้
บทความนี้มีลิงก์ Affiliate เว็บไซต์อาจได้รับค่าคอมมิชชันเมื่อซื้อผ่านลิงก์

| อุปกรณ์ | หน้าที่ในระบบ |
|---|---|
| ESP32 DevKit V1 / ESP-WROOM-32 | อ่านข้อมูลเซนเซอร์ ประมวลผล และควบคุมหน้าจอ |
| ชุดวัด pH พร้อมหัววัด BNC | สร้างสัญญาณแรงดันสัมพันธ์กับค่า pH; ต้องสอบเทียบ |
| โมดูล TDS แบบแอนะล็อกพร้อมหัววัด | อ่านค่า TDS หลังปรับเทียบ หากแสดง EC ให้ระบุว่าเป็นค่าประมาณและบอกตัวคูณที่ใช้ |
| โมดูล ADS1115 | แปลงแรงดันจากโมดูล pH และ TDS เป็นข้อมูลดิจิทัลผ่าน I2C |
| DS18B20 แบบหัววัดกันน้ำ | วัดอุณหภูมิน้ำผ่าน 1-Wire |
| จอ TFT LCD 2.4 นิ้ว SPI จาก GusTron | ใช้แสดง Dashboard เลือกตัวเลือก 2.4 นิ้วและยืนยันไดรเวอร์กับร้านก่อนตั้งค่า เพราะตัวเลือกหน้าร้านระบุ ILI9341 แต่คำบรรยายระบุ ST7789 รุ่น 2.4 นิ้วยังไม่ได้ยืนยันว่ารองรับสัมผัส |
| แหล่งจ่ายไฟ 5V ที่เหมาะสม, สายและกล่อง | จ่ายไฟและประกอบเครื่องอย่างปลอดภัยตามสเปกของโมดูล |

ทำไมใช้ ADS1115? เพราะสัญญาณ pH/EC เป็น Analog เราจึงเลือกให้ ADS1115 ซึ่งเป็น ADC ความละเอียด 16 บิตอ่านก่อนส่งข้อมูลให้ ESP32 ทาง I2C แทนการใช้ ADC ภายในบอร์ดเพียงอย่างเดียว แต่ความละเอียด 16 บิตไม่ได้แปลว่าเครื่องแม่นยำระดับนั้นทันที ความแม่นยำจริงยังขึ้นกับหัววัด โมดูลขยายสัญญาณ สัญญาณรบกวน การสอบเทียบ และการเดินสาย
ผู้ผลิต TI ระบุว่า ADS1115 เป็น ADC 16 บิต รองรับ I2C และมี PGA ให้เลือกช่วงการวัด (ดู ADS1115 product page) ส่วน DS18B20 ใช้ 1-Wire และเลือกความละเอียดได้ถึง 12 บิต (ดู Analog Devices DS18B20)
ภาพรวมการทำงานของระบบ
เส้นทางสัญญาณหลักแยกออกเป็นสองชุด:
- pH / EC: หัววัด → โมดูลปรับสภาพสัญญาณ → ADS1115 → ESP32 → ตรวจสถานะและคำนวณ → จอแสดงผล
- อุณหภูมิ: DS18B20 → GPIO 1-Wire ของ ESP32 → ตรวจสถานะ → จอแสดงผล
ในซอฟต์แวร์ ค่าที่อ่านจาก ADS1115 ถูกเก็บเป็น Raw ADC และแรงดันไฟฟ้า จากนั้นใช้ตัวกรองแบบ Exponential Moving Average (EMA) สำหรับช่วยให้ค่าที่แสดงมีการเปลี่ยนแปลงนุ่มนวลขึ้น โดยโค้ดตั้งค่า alpha 0.20 ขณะที่กระบวนการสอบเทียบใช้ Raw Voltage ที่ผ่านการตรวจความสดใหม่และความนิ่งของสัญญาณ ไม่ใช่ดึงค่า EMA ที่แสดงบน Dashboard ไปสอบเทียบตรง ๆ

การต่อ ESP32 กับเซนเซอร์และจอสัมผัส

ตารางนี้อ้างอิงค่าที่กำหนดอยู่ในไฟล์ Project/include/config.h ของโปรเจกต์วันที่ 31 ตุลาคม 2026 เป็น Pin Map สำหรับต้นแบบ ไม่ใช่คำยืนยันว่าตรวจวงจรบนฮาร์ดแวร์ครบแล้ว
| สัญญาณ | GPIO / ช่องที่กำหนด |
|---|---|
| ADS1115 I2C SDA / SCL | ESP32 GPIO21 / GPIO22 |
| ADS1115 address | 0x48 (ต้องยืนยันการต่อขา ADDR) |
| pH / EC Analog | ADS1115 A0 / A1 |
| DS18B20 Data | ESP32 GPIO26 |
| SPI Clock ร่วมของ TFT และ Touch | GPIO18 |
| MOSI ร่วมของ TFT และ Touch | GPIO23 |
| MISO จาก Touch | GPIO19 |
| TFT CS / DC / RST | GPIO5 / GPIO27 / GPIO33 |
| Touch CS | GPIO25 |
| ควบคุม Backlight ตามแบบวงจรต้นแบบ | GPIO32 ผ่านสวิตช์ทรานซิสเตอร์ที่ต้องตรวจจริง |
ข้อดีของการแชร์ SPI คือใช้ SCK และ MOSI ร่วมกันได้ แต่ จอและ Touch ต้องมีขา CS แยกกัน และต้องยืนยันชนิดชิปจอให้ถูกต้องก่อนเลือกไดรเวอร์ โค้ดปัจจุบันเลือก ST7789 ไว้ ขณะที่หลักฐานจากฮาร์ดแวร์จริงยังต้องแยกให้ชัดว่าเป็น ST7789 หรือ ILI9341
หากยังไม่แน่ใจเรื่องขา GPIO อ่านบทความ ESP32 DevKit V1 Pinout และ ESP32 ADC คืออะไร เพิ่มเติมก่อนลงมือ
ซอฟต์แวร์จัดการค่าที่อ่านมาอย่างไร?
ฝั่งเฟิร์มแวร์ใช้ C++ บน PlatformIO ใน Arduino framework พร้อม LVGL 9.6 สำหรับสร้าง UI ตัวโปรเจกต์แยกงาน Sensor, Calibration, Storage และ Display ออกจากกัน เพื่อให้แก้ไขและทดสอบแต่ละส่วนได้ง่ายขึ้น
ลำดับที่โค้ดออกแบบไว้มีดังนี้:
- ESP32 เริ่มระบบจัดเก็บข้อมูล Calibration และอุปกรณ์เซนเซอร์
- อ่าน ADS1115 และ DS18B20 ตามรอบที่กำหนด โดยรอบการอ่านเซนเซอร์ตั้งไว้ประมาณ 1 วินาที
- ตรวจว่าเซนเซอร์พร้อมหรือผิดพลาด แยกสถานะ
Ready,CAL,ERRและSTALE - ค่าที่พร้อมและผ่านเงื่อนไขสอบเทียบจึงถูกส่งไปคำนวณและแสดงบน Dashboard
- จอมีการรีเฟรชสถานะต่างหากจากรอบอ่านเซนเซอร์ เพื่อไม่ให้ UI ต้องทำงานหนักเกินจำเป็น
จอ Dashboard ออกแบบเป็นสามการ์ดสำหรับ pH, EC และ Temp โดยแสดงสถานะของข้อมูลด้วย ไม่แสดงตัวเลขสมมติแทนเซนเซอร์ที่ยังไม่ได้สอบเทียบ นอกจากนี้มีฟังก์ชันปิด เฉพาะแสง Backlight หลังไม่มีการสัมผัส 60 วินาที โดยโค้ดยังอ่านเซนเซอร์ต่อเนื่อง แต่การต่อทรานซิสเตอร์และ Touch Wake ต้องทดสอบบนฮาร์ดแวร์จริงอีกครั้ง
ทำไม Calibration จึงสำคัญกว่าแค่มีเซนเซอร์อ่านค่าได้?

หัววัด pH ไม่ได้ให้ตัวเลข pH ออกมาจากขา Analog โดยตรง โมดูลจะให้สัญญาณแรงดันซึ่งต้องนำไปเทียบกับสารละลายมาตรฐานก่อน โค้ดของโครงงานรองรับการ Fit ค่า pH แบบสองจุด โดยรับค่าอ้างอิงจากผู้ใช้ ไม่ใส่ค่ามาตรฐานตายตัวให้เอง
แนวคิด Calibration Wizard ที่เขียนไว้คือ เลือก pH หรือ EC → กรอกค่า Ref1 → รอให้สัญญาณนิ่ง → Capture → เปลี่ยนสารละลาย Ref2 → Capture → ตรวจผล → Save เมื่อยืนยัน โดยโค้ดกำหนดเวลารออย่างน้อย 30 วินาที และเงื่อนไขความนิ่งของแรงดันเพื่อช่วยลดการบันทึกค่าที่ไม่น่าเชื่อถือ
การเก็บ Calibration ใน NVS ถูกออกแบบให้ตรวจข้อมูลซ้ำ ลดการเขียน Flash ถี่เกินไป และใช้ข้อมูลสองช่อง A/B พร้อมตรวจ Readback ก่อนเปิดใช้ค่าใหม่ อย่างไรก็ตาม การกู้คืนกรณีไฟดับระหว่างเขียนยังเป็นรายการทดสอบที่ค้างอยู่ จึงไม่ควรกล่าวว่าปลอดภัยจากไฟดับ 100%

สิ่งที่ทำแล้ว และสิ่งที่ยังต้องทดสอบ
บันทึกโครงการระบุว่า Build ผ่านแล้ว แต่การสอบเทียบและความแม่นยำบนเครื่องจริงยังต้องทดสอบ
เอกสารโครงการวันที่ 31 ตุลาคม 2026 บันทึกว่า Build ด้วย pio run -e esp32dev สำเร็จ และมีการตรวจสอบโครงสร้างโค้ด แต่ Build ผ่านไม่ได้หมายความว่าจอ Touch สอบเทียบตรงหรือค่า pH/EC ถูกต้องบนอุปกรณ์จริง
| รายการ | สถานะจากเอกสารโครงการ |
|---|---|
| โครงสร้างโปรแกรม ESP32 + LVGL | เขียนและตรวจสอบระดับ Source แล้ว |
| ADS1115 / DS18B20 | มีไดรเวอร์และระบบตรวจสถานะ; ต้องทดสอบสาย/แรงดัน/การเสียบถอดจริง |
| pH Calibration | มีโค้ด Fit สองจุด; ต้องเทียบน้ำยามาตรฐานและหัววัดจริง |
| EC Calibration / ชดเชยอุณหภูมิ | ยังไม่อนุมัติโมเดล; ค่า EC ที่ผ่าน Calibration ยังไม่พร้อมยืนยัน |
| TFT และ Touch | มีโค้ดแสดงผลและ Wizard; ชิป LCD/การสัมผัส/การหมุนจอต้องยืนยันจริง |
| บันทึก Calibration NVS A/B | มีโค้ด; ต้องทดสอบรีบูต ไฟดับ และ Recovery |
| การวัดหลายถังหรือส่งค่าขึ้น Cloud | ไม่ใช่ความสามารถที่ยืนยันไว้สำหรับเวอร์ชันนี้ |
งานทดสอบถัดไปที่สำคัญคือ วัดไฟเลี้ยงและสัญญาณก่อนเข้าช่อง ADS, ตรวจกราวด์/สัญญาณรบกวน, ทดสอบสารละลาย pH/EC อ้างอิง, เช็ก Touch ทุกมุม, ดูการคืนค่าหลังรีสตาร์ต และเก็บข้อมูลเปรียบเทียบกับเครื่องวัดอ้างอิงในช่วงใช้งานจริง
แล้วเครื่องวัดชุดนี้เหมาะกับใคร?
เหมาะกับคนที่อยากเรียนรู้การสร้างเครื่องวัดน้ำด้วย ESP32 และเข้าใจทั้งวงจร เซนเซอร์ และการสอบเทียบ โดยเฉพาะผู้ทำ DIY Smart Farm, ไฮโดรโปนิกส์ หรือระบบตู้ปลา/บ่อปลาที่ต้องการต่อยอดอุปกรณ์ให้เหมาะกับหน้างานของตัวเอง
ถ้าเป้าหมายคือเครื่องที่หยิบไปใช้งานได้ทันทีพร้อมค่าความแม่นยำที่รับรองแล้ว ควรเลือกเครื่องวัดสำเร็จรูปที่มีข้อมูลความแม่นยำและขั้นตอนบำรุงรักษาชัดเจนมากกว่าใช้ต้นแบบที่ยังไม่ผ่านการตรวจครบทุกข้อ
สรุป: เครื่องวัดน้ำ DIY ไม่ได้จบแค่จอแสดงตัวเลข
สิ่งที่น่าสนใจของโครงงานนี้ไม่ใช่แค่เอา pH, EC และอุณหภูมิมารวมไว้บนจอเดียว แต่เป็นการวางระบบให้อ่านค่าอย่างมีสถานะ มีการสอบเทียบ และไม่หลอกผู้ใช้ด้วยค่าที่ดูเหมือนถูกต้องทั้งที่เซนเซอร์ยังไม่พร้อม
ผมจะทยอยทดสอบกับฮาร์ดแวร์และสารละลายจริง แล้วนำผลตรวจที่ยืนยันได้มาอัปเดตในบทความถัดไป โดยเฉพาะเรื่อง EC Calibration และความเสถียรเมื่อใช้ต่อเนื่อง นี่คือส่วนที่สำคัญกว่าหน้าจอสวย ๆ สำหรับงาน Smart Farm ที่ใช้งานจริง
คำถามที่พบบ่อย (FAQ)
ใช้ ESP32 วัด pH โดยไม่ใช้ ADS1115 ได้ไหม?
ใช้ ADC ภายใน ESP32 ได้ในบางโครงงาน หากเอาต์พุตโมดูลและช่วงแรงดันเหมาะสม แต่ต้องคำนึงถึง noise, ADC calibration และความเสถียรของวงจร การเลือก ADS1115 เป็นแนวทางของโครงงานนี้ ไม่ใช่ข้อบังคับสำหรับทุกระบบ
วัด pH กับ EC ได้เลยหลังต่อสายเสร็จไหม?
ยังไม่ควรเชื่อค่าที่แสดงจนกว่าจะตรวจสัญญาณ แรงดัน สารละลายมาตรฐาน และ Calibration ตามเซนเซอร์รุ่นนั้น โดยเฉพาะ EC ของโครงงานนี้ยังไม่ผ่านการยืนยันโมเดล
ใช้วัดน้ำหลายถังพร้อมกันได้หรือไม่?
ต้นแบบในบทความนี้อธิบายชุดหัววัดที่ต่ออยู่กับเครื่องหนึ่งชุด ไม่ได้ยืนยันความสามารถสลับหลายถังหรือแสดงทุกถังพร้อมกัน หากต้องการหลายจุดวัดต้องออกแบบระบบเพิ่ม
จอแสดงผลมีตัวเลขแล้วถือว่าทดสอบผ่านหรือยัง?
ไม่ใช่ ต้องแยกทดสอบไดรเวอร์จอและ Touch, การอ่าน Raw Analog, ค่ามาตรฐาน pH/EC และการเก็บ Calibration ข้ามการรีสตาร์ต
อ่านเพิ่มเติมบน DevaDIY
เอกสารอ้างอิง
- Texas Instruments — ADS1115
- Analog Devices — DS18B20
- Oklahoma State University — Electrical Conductivity and pH Guide for Hydroponics
- เอกสารและซอร์สโปรเจกต์ภายใน: DevaDIY




