ESP8266 + TTP223: ทำ Touch Sensor ดูสถานะผ่าน KiwisIoT

ถ้าแตะ Sensor หนึ่งครั้ง แล้วอยากให้สถานะ 0 หรือ 1 ไปโผล่บน Dashboard ผ่าน Wi-Fi ต้องต่อระบบยังไง?

Project นี้ใช้ NodeMCU ESP8266 ร่วมกับ TTP223 Capacitive Touch Sensor เพื่ออ่านสถานะการสัมผัสแบบ Digital แล้วส่งค่าไปยัง KiwisIoT ผ่าน Wi-Fi เป็นตัวอย่าง IoT Project ที่เหมาะสำหรับคนเริ่มเรียนรู้ ตั้งแต่ Sensor Input ไปจนถึง Cloud Dashboard

โปรเจกต์ ESP8266 กับ TTP223 Touch Sensor สำหรับส่งสถานะไป KiwisIoT
IoT Touch Sensor Project จาก Source ต้นฉบับ ใช้ NodeMCU ESP8266, TTP223 และ KiwisIoT
Key Takeaways
  • ใช้ NodeMCU ESP8266 เป็น Controller หลัก
  • ใช้ TTP223 Capacitive Touch Sensor เป็น Digital Input
  • VCC ต่อ 3.3V, GND ต่อ GND และ OUT ต่อ D2 / GPIO4
  • ใน Project นี้ Touch = HIGH = 1 และ No Touch = LOW = 0
  • ส่งข้อมูลไปยัง KiwisIoT Channel 1
  • Firmware ใช้ KiwisIoT Library
  • Serial Monitor ใช้ 115200 baud
  • Code ตัวอย่างมี delay 2000 ms จึงอ่านและส่งข้อมูลเป็นรอบประมาณ 2 วินาที
  • TTP223 สามารถตั้ง Output Mode ได้ จึงไม่ควรถือว่า Module ทุกตัว Touch แล้วต้อง HIGH เสมอ

IoT Touch Sensor Project นี้คืออะไร?

แนวคิดของ Project มีเพียง Input แบบ Digital หนึ่งตัว แต่ครอบคลุม IoT Flow ได้ครบตั้งแต่ Hardware จนถึง Dashboard

TTP223 Touch Sensor
ตรวจว่ามีการสัมผัสหรือไม่
↓
NodeMCU ESP8266
อ่าน Digital Input ที่ D2
↓
Wi-Fi
ส่งข้อมูลออกจาก ESP8266
↓
KiwisIoT
รับค่าใน Channel 1
↓
Dashboard
แสดง 1 เมื่อ Touch และ 0 เมื่อ No Touch

ความง่ายของ Project นี้เหมาะสำหรับคนที่ต้องการเข้าใจว่า Sensor ตัวหนึ่งถูกเปลี่ยนจาก Physical Input ให้กลายเป็นข้อมูลที่ดูผ่าน IoT Dashboard ได้อย่างไร

Hardware ที่ใช้มีอะไรบ้าง?

อุปกรณ์จากโปรเจกต์ ESP8266 และ TTP223 Touch Sensor
ภาพอุปกรณ์และการทดลองจาก Project ต้นฉบับ
อุปกรณ์ หน้าที่
NodeMCU ESP8266 อ่าน Sensor และเชื่อม KiwisIoT ผ่าน Wi-Fi
TTP223 Touch Sensor ตรวจ Capacitive Touch และส่ง Digital Output
Jumper Wires เชื่อม Sensor กับ NodeMCU
USB Cable เชื่อม NodeMCU กับ Computer สำหรับ Programming
Wi-Fi เชื่อม ESP8266 ไปยัง KiwisIoT
Arduino IDE ใช้ Upload Firmware
KiwisIoT แสดง Touch State บน Dashboard

ข้อมูลเดินทางจากนิ้วไปถึง Dashboard อย่างไร?

เมื่อ Sensor ตรวจพบการสัมผัส Output ของ Module ที่ใช้ใน Project นี้จะกลายเป็น HIGH

ESP8266 อ่านค่าด้วย digitalRead() แล้วส่งค่าดังกล่าวไปยัง KiwisIoT Channel 1

Touch
Sensor Output = HIGH
↓
ESP8266
digitalRead(D2) → 1
↓
KiwisIoT
send("1", 1)
↓
Dashboard
แสดงค่า 1

เมื่อปล่อย Sensor Logic ใน Project นี้จะกลับเป็น LOW หรือ 0 และค่ารอบถัดไปก็ถูกส่งขึ้น Dashboard เช่นเดียวกัน

ต่อ TTP223 กับ NodeMCU อย่างไร?

ภาพการเชื่อม NodeMCU ESP8266 กับ TTP223 ในโปรเจกต์ต้นฉบับ
ภาพจากขั้นตอน Hardware Setup ของ Project ต้นฉบับ ควรตรวจ Pin Label บน Module จริงก่อนต่อใช้งาน
TTP223 NodeMCU ESP8266
VCC 3.3V
GND GND
OUT D2 / GPIO4
Wiring ของ Project นี้มีเพียง 3 เส้น: Power, Ground และ Digital Output ทำให้เหมาะสำหรับฝึกอ่าน Digital Sensor ด้วย ESP8266
ยึด Pin Label บน Hardware จริงเป็นหลัก: TTP223 Module สามารถมี Board Layout หรือ Revision ต่างกัน Source ไม่ได้ระบุ Module Revision จึงไม่ควรอาศัยตำแหน่งทางกายภาพของ Pin จากภาพเพียงอย่างเดียว

Touch = HIGH ทำงานอย่างไร?

ใน Project ต้นฉบับ Logic ถูกอธิบายว่า:

สถานะ Digital Output ค่าที่ ESP8266 อ่าน
Touch HIGH 1
No Touch LOW 0

แต่จุดนี้ต้องอ่านอย่างระวัง เพราะ TTP223 รองรับ Output Configuration มากกว่าหนึ่งแบบ

Touch = HIGH เป็น Logic ของ Project / Module Configuration นี้: TTP223 สามารถ Configure Active High, Active Low รวมถึง Direct และ Toggle Mode ได้ ดังนั้น Module ตัวอื่นอาจมีพฤติกรรมไม่เหมือน Source นี้

ตั้ง KiwisIoT Dashboard อย่างไร?

Main Source ใช้ Channel 1 สำหรับ Touch Sensor

Firmware ส่งค่า:

  • 1 เมื่อแตะ Sensor
  • 0 เมื่อไม่แตะ
หน้าจอ KiwisIoT จากโปรเจกต์ ESP8266 Touch Sensor
ภาพหน้าจอ Platform จาก Project ต้นฉบับ ใช้ประกอบขั้นตอนเชื่อม Touch Sensor เข้ากับ KiwisIoT

หลังสร้าง Dashboard แล้ว ต้องนำ Dashboard Topic ID ไปใส่ใน Firmware เพื่อให้ ESP8266 ส่งข้อมูลไปยัง Panel ที่ถูกต้อง

ในบทความนี้ใช้รูปแบบ Placeholder:

dash_XXXXXXXXXXXXX

ภาพเพิ่มเติมของ KiwisIoT ในโปรเจกต์ ESP8266 Touch Sensor
ภาพเพิ่มเติมจากขั้นตอน KiwisIoT ของ Project ต้นฉบับ

Arduino Code ทำงานอย่างไร?

Firmware มีหน้าที่หลักเพียงไม่กี่ขั้น:

  1. เชื่อมต่อ Wi-Fi และ KiwisIoT
  2. ตั้ง D2 เป็น Digital Input
  3. อ่านสถานะ TTP223
  4. พิมพ์ค่าผ่าน Serial Monitor
  5. ส่งค่าไป KiwisIoT Channel 1
  6. รอ 2 วินาทีแล้วทำซ้ำ
ภาพจากขั้นตอน Programming และทดสอบ ESP8266 Touch Sensor
ภาพจากขั้นตอน Programming / Testing ของ Project ต้นฉบับ
Arduino Code จาก Source — Credential เปลี่ยนเป็น Placeholder
#include <KiwisIoT.h>

const char* ssid = "YOUR_WIFI_NAME";
const char* pass = "YOUR_WIFI_PASSWORD";
const char* topic = "dash_XXXXXXXXXXXXX";

#define TOUCH_PIN D2

KiwisIoT kiwisiot(ssid, pass, topic);

void setup() {

  Serial.begin(115200);
  delay(1000);

  pinMode(TOUCH_PIN, INPUT);

  kiwisiot.begin();

  Serial.println();
  Serial.println("Touch Sensor Started");
}

void loop() {

  kiwisiot.run();

  int touchValue = digitalRead(TOUCH_PIN);

  Serial.print("Touch Value: ");
  Serial.println(touchValue);

  // Send data to KiwisIoT Channel 1
  kiwisiot.send("1", touchValue);

  delay(2000);
}
อย่า Copy Wi-Fi Credential หรือ Topic ID ของคนอื่นมาใช้: ต้องเปลี่ยน YOUR_WIFI_NAME, YOUR_WIFI_PASSWORD และ dash_XXXXXXXXXXXXX ให้ตรงกับ Network และ KiwisIoT Dashboard ของตัวเอง

ทำไม Dashboard อัปเดตประมาณทุก 2 วินาที?

ตอนท้ายของ loop() มี:

delay(2000);

จึงทำให้ Firmware เว้นช่วงประมาณ 2 วินาที ก่อนเข้าสู่รอบการอ่านและส่งข้อมูลใหม่

ดังนั้น Project นี้ไม่ได้ส่ง Touch State ทุก Millisecond: Firmware ตัวอย่างทำงานเป็นรอบตาม Delay ที่กำหนด

Source ไม่ได้วัด Network Latency, Cloud Latency หรือ Dashboard Refresh Latency จึงไม่ควรระบุ End-to-end Response Time ที่ละเอียดกว่านี้

ทดสอบด้วย Serial Monitor อย่างไร?

หลัง Upload Firmware Source ใช้ Arduino Serial Monitor เพื่อตรวจว่า ESP8266 อ่าน Sensor ถูกก่อน

ตั้ง Baud Rate เป็น: 115200

เมื่อแตะ Sensor:

Touch Value: 1

เมื่อปล่อย:

Touch Value: 0

Debug แบบแยกทีละชั้น:
ถ้า Serial Monitor เปลี่ยน 0/1 ถูก แปลว่าฝั่ง Sensor → ESP8266 ทำงานตาม Logic ของ Project แล้ว จากนั้นค่อยตรวจ Wi-Fi → KiwisIoT → Dashboard ต่อ

ถ้า Serial ถูกแต่ Dashboard ไม่ขึ้น เช็กอะไร?

จากข้อมูลใน Source จุดที่ควรตรวจต่อมีอยู่หลัก ๆ:

  • Wi-Fi Name ที่ใส่ใน Firmware ถูกต้องหรือไม่
  • Wi-Fi Password ถูกต้องหรือไม่
  • Dashboard Topic ID ตรงกับ Panel ที่สร้างหรือไม่
  • Firmware เรียก kiwisiot.begin() แล้วหรือไม่
  • ใน Loop มี kiwisiot.run() หรือไม่
  • ส่งค่าที่ Channel 1 ตาม Project หรือไม่
Source ไม่ได้ให้ Error Code หรือ Network Troubleshooting เชิงลึก: บทความนี้จึงไม่สร้าง Port, Protocol, Retry Logic หรือ Server Diagnostic เพิ่มจากการคาดเดา

TTP223 ทุก Module แตะแล้ว HIGH เหมือนกันไหม?

ไม่ควรสรุปแบบนั้น

Datasheet ของ TTP223 ระบุว่า IC สามารถ Configure Output ได้หลาย Mode เช่น Active High / Active Low และ Direct / Toggle

ประเด็น Project นี้ TTP223 โดยทั่วไป
Touch Output HIGH ขึ้นกับ Configuration
No Touch LOW ขึ้นกับ Configuration
Operating Mode Source ใช้เป็น Touch State แบบตรง สามารถมี Direct / Toggle Mode ได้

ดังนั้นถ้า Copy Code แล้ว Logic กลับด้าน ควรตรวจ Module และ Configuration จริงก่อนแก้ Code แบบเดาสุ่ม

Project นี้ต่อยอดอะไรได้บ้าง?

Main Source เสนอ Idea สำหรับต่อยอด เช่น:

  • Relay
  • LED
  • Buzzer
  • Touch-based IoT Control
  • ใช้ Touch Sensor เป็น Trigger สำหรับ Device อื่น
รายการนี้เป็น Future Idea เท่านั้น: Source ปัจจุบันไม่ได้ให้ Relay Wiring, LED/Buzzer Pin, Output Code หรือ AC Load Circuit จึงไม่ควรเติม Wiring หรือ Electrical Specification ขึ้นเอง

Project ต้นฉบับในบทความนี้ยังเน้น: Touch Monitoring → ส่งค่า 0/1 ขึ้น Dashboard เป็นหลัก

Maker ได้อะไรจาก Project นี้?

1. เริ่ม IoT ได้จากข้อมูลแค่ 1 Bit

เราไม่จำเป็นต้องเริ่มจาก Sensor ที่ส่งข้อมูลซับซ้อน เพราะค่า Digital เพียง 0/1 ก็เพียงพอสำหรับเรียนรู้ Data Flow ตั้งแต่ Hardware ถึง Cloud

2. Serial Monitor ช่วยแยกปัญหา Hardware กับ Cloud

ถ้า ESP8266 อ่าน 0/1 ได้ถูก เราสามารถโฟกัสการ Debug ส่วน Wi-Fi และ Dashboard ต่อ โดยไม่ต้องสงสัย Sensor ทุกครั้ง

3. Channel Mapping ทำให้ข้อมูลมีที่อยู่ชัดเจน

Project กำหนด Touch State ให้อยู่ Channel 1 ทำให้ ESP8266 และ Dashboard เข้าใจตรงกันว่าค่านี้หมายถึง Sensor ตัวใด

4. ต้องรู้ว่า Logic ของ Hardware เปลี่ยนได้

TTP223 เป็นตัวอย่างดีว่า Code ที่ทำงานกับ Module หนึ่ง ไม่ได้แปลว่า Hardware ทุก Revision จะมี Active Level เหมือนกัน

5. Monitoring กับ Control เป็นคนละขั้น

Project นี้ทำ Monitoring สำเร็จแล้ว ส่วน Relay, LED หรือ Buzzer เป็นอีก Layer หนึ่งที่ต้องมี Hardware, Wiring และ Firmware เพิ่มเติม

โปรเจกต์นี้มีหลายขั้น แนะนำอ่านต้นฉบับควบคู่กัน

โดยเฉพาะขั้นตอนสร้าง KiwisIoT Dashboard และการตรวจ Module TTP223 จริง ควรเปิด Source และ Datasheet ประกอบ ก่อนเปลี่ยน Wiring หรือ Logic

FAQ: คำถามที่พบบ่อย

1. Project นี้ใช้บอร์ดอะไร?

ใช้ NodeMCU ESP8266 เป็น Controller หลัก

2. ใช้ Touch Sensor รุ่นอะไร?

Main Source ใช้ TTP223 Capacitive Touch Sensor

3. TTP223 ต่อกับ ESP8266 ขาไหน?

Source ต่อ OUT เข้ากับ D2 หรือ GPIO4

4. TTP223 ใช้ไฟเท่าไรใน Project นี้?

Source ต่อ VCC เข้ากับ 3.3V ของ NodeMCU

5. แตะ Sensor แล้วค่าอะไรออก?

ใน Module / Configuration ที่ Source ใช้ Touch = HIGH หรือ 1 และ No Touch = LOW หรือ 0

6. TTP223 ทุกตัว Touch แล้วเป็น HIGH หรือไม่?

ไม่ควรสรุปแบบนั้น Datasheet ระบุว่าสามารถ Configure Active High, Active Low และ Toggle Mode ได้

7. ส่งข้อมูลไป KiwisIoT Channel ไหน?

Project ใช้ Channel 1

8. Dashboard แสดงค่าอะไร?

แสดงค่า 1 เมื่อ Sensor ถูกแตะ และ 0 เมื่อไม่ถูกแตะตาม Logic ของ Project

9. Firmware ส่งข้อมูลบ่อยแค่ไหน?

Code มี delay(2000) จึงเว้นช่วงประมาณ 2 วินาทีต่อรอบ

10. Serial Monitor ใช้ Baud Rate เท่าไร?

115200 baud

11. ใช้ Library อะไรเชื่อม KiwisIoT?

Code ใน Source Include KiwisIoT.h

12. Topic ID คืออะไร?

เป็น Dashboard Topic ID ของ KiwisIoT ซึ่ง Source ใช้รูปแบบ dash_... และแต่ละ Dashboard ต้องใช้ Topic ที่ตรงกับของตัวเอง

13. ใช้ Touch Sensor ควบคุม Relay ได้เลยไหม?

Main Source เสนอ Relay เป็น Future Improvement แต่ไม่ได้ให้ Wiring หรือ Code สำหรับ Relay ใน Project ปัจจุบัน

14. TTP223 ตรวจ Touch ได้ไกลแค่ไหน?

Source ไม่ได้ระบุ Detection Range และความไวสามารถขึ้นกับ Module, Electrode และ Physical Setup

References / แหล่งข้อมูลต้นฉบับ

IoT ไม่จำเป็นต้องเริ่มจาก Project ใหญ่

แค่ Touch Sensor หนึ่งตัว ก็ใช้เรียนรู้ Digital Input, ESP8266, Wi-Fi, Cloud Channel และ Dashboard ได้ครบ Flow

หากกำลังเริ่มทดลอง IoT Sensor Project สามารถสอบถามทีม Globalbyte เรื่อง ESP8266, ESP32, Development Board, Sensor, Module และ Maker Accessories ที่เหมาะกับ Project ได้

Disclaimer: บทความนี้เป็นการสรุปและเรียบเรียงจากแหล่งข้อมูลภาษาอังกฤษ อาจมีความคลาดเคลื่อน กรุณาตรวจสอบ Source ต้นฉบับก่อนลงมือทำ Wiring ในบทความอ้างอิง Project ที่ใช้ NodeMCU ESP8266 และ TTP223 โดยต่อ VCC ที่ 3.3V, OUT ที่ D2 / GPIO4 ส่วน Logic Touch = HIGH และ No Touch = LOW เป็นพฤติกรรมของ Module / Configuration ใน Project นี้ ไม่ควรถือเป็นกฎของ TTP223 ทุก Module เนื่องจาก TTP223 รองรับ Active High, Active Low และ Toggle Configuration ได้ Source ไม่ได้ระบุ Module Revision, Touch Detection Range, Sensitivity Setting, Response Time, Network Latency, Dashboard Refresh Latency หรือ Power Consumption จึงไม่ควรสร้างค่าดังกล่าวขึ้นเอง ส่วน Relay, LED และ Buzzer ถูกเสนอเป็น Future Improvement เท่านั้น Source ไม่ได้ให้ Output Wiring หรือ AC Load Circuit สำหรับ Feature เหล่านั้น

 

แท็ก


Blog posts