ESP32-S3 • Color Sensor • USB HID • 3D Printing • Maker

Real Life Color Picker: จ่อสีจริงแล้วเปลี่ยนเป็น HEX ด้วย ESP32-S3

เคยเห็นสีบนกำแพง แพ็กเกจ สินค้า หรือป้ายแล้วคิดว่า “สีนี้เอาไปใช้ในงาน Design น่าจะสวย” แต่พอกลับมาทำงานจริงก็ต้องเปิดรูปแล้วพยายาม Sample สีอีกทีไหม? Real Life Color Picker ของ Tech Talkies พยายามแก้ Pain Point นี้ด้วยอุปกรณ์พกพาที่จ่อกับวัตถุจริง แล้วแปลงสีที่ Sensor อ่านได้ให้เป็นค่า RGB และ HEX ทันที

หัวใจของ Project คือ TCS34725 Color Sensor, ESP32-S3 และจอ ST7789 แต่สิ่งที่ทำให้มันใช้งานจริงขึ้นไปอีกคือ สามารถ Save สีไว้ในหน่วยความจำ Browse กลับมาดูภายหลัง และส่งค่า #RRGGBB เข้า PC ผ่าน USB โดยทำตัวเป็น Keyboard ได้

Real Life Color Picker อุปกรณ์พกพาสำหรับอ่านสีจริงและแสดงค่า HEX
Real Life Color Picker เปลี่ยนสีที่ Sensor อ่านจากวัตถุจริง ให้กลายเป็น RGB / HEX พร้อมแสดงผลบนหน้าจอขนาดเล็ก
Key Takeaways
  • TCS34725 อ่านค่า Red, Green, Blue และ Clear-light Channel
  • ESP32-S3 นำ Raw Reading มาคำนวณเป็น RGB ช่วง 0–255 แล้ว Format เป็น #RRGGBB
  • Current Firmware มี Brightness และ Saturation Adjustment เพิ่มจากการ Normalize พื้นฐาน
  • ST7789 ขนาด 1.47 นิ้ว ความละเอียด 172×320 ใช้แสดงสีและค่า HEX
  • สามารถ Save สีใน ESP32 Preferences และ Browse กลับมาดูได้
  • USB HID ทำให้ ESP32-S3 พิมพ์ค่า HEX เข้า PC ได้เหมือน Keyboard
  • Documentation ระบุเก็บได้ 20 สี แต่ Current Code กำหนด MAX_SAVED_COLORS เป็น 50
  • Project ยังไม่ได้ Claim ว่าเป็น Calibrated Colorimeter และผู้สร้างเองต้องการพัฒนา Calibration ให้ดีขึ้น
  • Repository ปัจจุบันระบุ GPIO 4 ทั้ง TFT Reset และ Sensor LED จึงควรตรวจ Hardware Revision ก่อนต่อวงจรตาม

Real Life Color Picker คืออะไร?

Project นี้เริ่มจากปัญหาง่าย ๆ: ผู้สร้างมักเห็นสีในโลกจริงที่อยากเก็บไว้ใช้ในงาน Design แต่ไม่อยากถ่ายรูปแล้วกลับไปลอง Sample สีทีหลัง

เลยเกิดเป็นอุปกรณ์พกพาที่ทำ Flow แบบนี้:

จ่อ Sensor กับวัตถุจริง
↓
TCS34725 อ่าน R / G / B / Clear
↓
ESP32-S3 ประมวลผลเป็น RGB 0–255
↓
สร้างค่า HEX แบบ #RRGGBB
↓
แสดง / Save / Browse / ส่งเข้า PC

ทำไมไม่ถ่ายรูปแล้ว Sample สีทีหลัง?

กล้องมือถือก็สามารถใช้เป็นวิธีเก็บ Reference สีได้ แต่ Pain Point ของผู้สร้างคือ ต้องถ่ายภาพไว้ก่อน แล้วกลับมาเปิด Software เพื่อ Sample สีอีกขั้น

Color Picker ตัวนี้เปลี่ยน Flow ให้ตรงกว่า: จ่อวัตถุแล้วได้ค่า HEX ทันทีบนอุปกรณ์ และถ้าต้องการใช้ทีหลัง ก็ Save ไว้ในเครื่องได้

จุดเด่นจึงไม่ใช่ว่าแทนกล้องทุกกรณี: แต่คือทำ Workflow “เห็นสี → เก็บเป็น Digital Color” ให้สั้นและตรงขึ้นสำหรับ Maker หรือ Designer

Hardware หลักมีอะไร?

Hardware หน้าที่ใน Project
XIAO ESP32-S3 family อ่าน Sensor, ประมวลผล RGB/HEX, จัดการ UI, Storage และ USB HID
TCS34725 อ่าน Red, Green, Blue และ Clear-light Channel
1.47" ST7789 Display จอสี 172×320 สำหรับแสดง Preview และค่า HEX
Push Button ×3 ควบคุม Menu, Scan, Save และ Browse
Slide Switch ×1 อยู่ใน Hackster BOM แต่ Source Code ไม่ได้ระบุหน้าที่ทาง Logic
Battery 400 mAh แหล่งพลังงานตาม Hardware List ของ Hackster
3D Printed Enclosure รวม Board, Display, Sensor และ Controls เป็นอุปกรณ์พกพา
Battery Caveat: Source ระบุเพียงความจุ 400 mAh แต่ไม่ได้ระบุ Chemistry, Voltage, Charging Time, Current Draw หรือ Runtime จึงไม่สามารถคำนวณเวลาใช้งานได้จากข้อมูลที่มี

XIAO ESP32-S3 หรือ XIAO ESP32S3 Sense?

ตรงนี้ Source ใช้ชื่อไม่ตรงกันเล็กน้อย

  • Hackster Hardware List ระบุ Seeed Studio XIAO ESP32S3 Sense
  • Official Project README บน GitHub ระบุ Xiao ESP32-S3

Firmware ของ Color Picker ไม่ได้ใช้ Camera หรือ Microphone ซึ่งเป็นความสามารถที่มากับ Sense Expansion Board

บทความนี้จึงใช้คำว่า XIAO ESP32-S3 family เป็นหลัก: และระบุไว้ตรง ๆ ว่า Hackster BOM ใช้ชื่อรุ่น Sense เพื่อไม่แก้ Source Conflict แบบเงียบ ๆ

TCS34725 อ่านสีอย่างไร?

TCS34725 ไม่ได้ส่งค่า HEX ออกมาโดยตรง

ตาม Project README Sensor ให้ Raw 16-bit Reading ของ:

  • Red
  • Green
  • Blue
  • Clear Light

Current Firmware ใช้ Adafruit_TCS34725 และตั้งค่าใน Source Code เป็น:

  • Integration Time 154 ms
  • Gain 4×

Clear Channel ถูกใช้เป็น Reference ในการ Normalize ค่า RGB ก่อนสร้างสี Final

จาก Raw RGB กลายเป็น RGB 0–255 ยังไง?

README อธิบายหลักการไว้ตรงไปตรงมาว่า นำ R, G, B ไป Normalize เทียบกับ Clear Channel แล้วแปลงเป็นช่วง 0–255

Current Firmware มีขั้นเพิ่มเติมอีกเล็กน้อย:

  1. Normalize R/G/B ด้วย Clear Channel
  2. คูณ Brightness Boost
  3. ปรับ Saturation รอบค่า Luminance
  4. Clamp ผลให้อยู่ระหว่าง 0–255
Color Normalization จาก Current Source Code
const float BRIGHTNESS_BOOST = 1.30f;
const float SATURATION_BOOST = 1.40f;

float normR = ((float)r / (float)c) * 255.0f;
float normG = ((float)g / (float)c) * 255.0f;
float normB = ((float)b / (float)c) * 255.0f;

normR *= BRIGHTNESS_BOOST;
normG *= BRIGHTNESS_BOOST;
normB *= BRIGHTNESS_BOOST;

float lum = 0.299f * normR + 0.587f * normG + 0.114f * normB;

normR = lum + (normR - lum) * SATURATION_BOOST;
normG = lum + (normG - lum) * SATURATION_BOOST;
normB = lum + (normB - lum) * SATURATION_BOOST;
Brightness/Saturation Boost ไม่ควรถูกเรียกว่า Scientific Calibration: Source ไม่ได้ระบุว่า Constant ชุดนี้ ผ่านการ Calibrate กับ Color Standard หรือ Reference Instrument

จาก RGB กลายเป็น HEX #RRGGBB

หลังได้ค่า RGB ช่วง 0–255 Firmware จะ Format แต่ละ Channel เป็นเลขฐาน 16 สองหลัก แล้วรวมเป็น:

#RRGGBB

ตัวอย่างที่ Project README ให้ไว้:

  • R = 255
  • G = 64
  • B = 32

จะได้:

#FF4020

ดังนั้น HEX ไม่ได้มาจาก Sensor โดยตรง: Sensor อ่าน Raw Light Channels ส่วน ESP32-S3 เป็นตัวคำนวณ และสร้างค่า HEX ที่เราเอาไปใช้ในงาน Digital Design

ทำไมยังไม่ควรเรียกว่า Calibrated Colorimeter?

ผู้สร้างระบุเองว่า RGB Conversion ปัจจุบันถูกออกแบบให้เรียบง่าย และหนึ่งใน Future Improvements คือ:

Better color calibration

อีกเรื่องคือ Ambient Light เพราะ Future Improvement อีกข้อคือ เพิ่ม Physical Enclosure รอบ Sensor เพื่อช่วย Block แสงจากสภาพแวดล้อม และทำ Reading ให้ Consistent มากขึ้น

Source ไม่ได้ให้ Color Accuracy Benchmark: ไม่มี Delta E, Repeatability, Pantone Matching Accuracy หรือ Percentage Accuracy ดังนั้นควรมอง Project นี้เป็น Maker Color Capture Tool มากกว่าจะ Claim ว่าแทน Professional Colorimeter

Sensor LED ช่วยตอน Scan ยังไง?

Real Life Color Picker ระหว่างการใช้งานระบบไฟ LED สำหรับการสแกนสี
Project รองรับการควบคุม Sensor LED เพื่อใช้ร่วมกับช่วง Live Scan ตาม Settings ใน Firmware

Main Source ระบุว่า LED สามารถตั้งให้เปิดตอน Scanning ได้

Current Firmware มี 3 Mode:

  • AUTO
  • ON
  • OFF

ใน AUTO Mode Code จะเปิด LED เมื่อ UI อยู่ในสถานะ Live Scan และปิดเมื่อออกจากสถานะนั้น

Source ไม่ได้ระบุ Optical Specification ของ LED: ไม่มีค่า Color Temperature, Spectrum, Brightness หรือ Calibration Condition จึงไม่ควรสร้างข้อมูลดังกล่าวเพิ่ม

Scan → Save → Browse ทำงานยังไง?

UI ไม่ได้มีแค่หน้าจอวัดสีหน้าเดียว แต่เป็น State Machine ที่มีทั้ง Main Menu, Live Scan, Result, Browse และ Settings

Main Menu
↓
Scan
↓
Live Scan
หน้าจอเปลี่ยนตามสีที่อ่านได้
↓
Result
Save หรือ Discard
↓
Browse
เปิดดูสีที่ Save ไว้

Current Code ยังมี Settings สำหรับ:

  • Sensor LED Mode
  • Auto Overwrite เมื่อ Storage เต็ม

Save ได้ 20 หรือ 50 สี? Source มี Conflict

Hackster Story และ Project README ระบุว่า Current Implementation รองรับ:

สูงสุด 20 สี

แต่ Current Arduino Sketch ที่อยู่ใน Repository กำหนด:

MAX_SAVED_COLORS = 50

Code ปัจจุบันยังมี Auto Overwrite ที่สามารถลบสีเก่าสุด เมื่อ Storage เต็มและเปิด Setting นี้ไว้

บทความนี้ยึด Current Code เป็นหลักสำหรับ Implementation ปัจจุบัน: คือ 50 สี แต่เปิด Conflict ไว้ชัดเจนว่า Documentation ที่เผยแพร่ยังระบุ 20 สี

สีถูกเก็บแบบไหน?

Project ใช้ ESP32 Arduino Preferences API สำหรับ Non-volatile Storage

แต่ละสีถูก Pack เป็นค่า 24-bit:

0xRRGGBB

แล้วค่อย Unpack กลับเป็น R, G, B เมื่อต้อง Browse หรือส่งค่าไปยัง PC

ส่ง HEX เข้า PC ผ่าน USB Keyboard

Real Life Color Picker ส่งค่า HEX ไปยังคอมพิวเตอร์ผ่าน USB HID Keyboard
ESP32-S3 สามารถทำตัวเป็น USB HID Keyboard เพื่อพิมพ์ค่า HEX ของสีที่ Save ไว้เข้า PC ได้

Feature ที่ทำให้ Project นี้ใช้งานกับ Workflow ฝั่ง Design ได้สะดวกขึ้นคือ USB HID

Current Firmware ใช้:

USBHIDKeyboard

เมื่อ Browse ไปยังสีที่ Save ไว้ แล้วเลือก Action สำหรับส่งเข้า PC Code จะสร้างข้อความ HEX และพิมพ์ออกผ่าน USB เหมือน Keyboard ปกติ

USB HID HEX Output จาก Current Source Code
char hex[10];
uint8_t r, g, b;

unpackColor(savedColors[browseIndex], r, g, b);
snprintf(hex, sizeof(hex), "#%02X%02X%02X", r, g, b);

Keyboard.print(hex);
Flow ที่ได้:
Scan สีจริง → Save → Browse → TYPE → ค่า #RRGGBB ไปโผล่บน PC

FreeRTOS ช่วยจัดการปุ่มยังไง?

Current Project Code ไม่ได้อ่านปุ่มทั้งหมดรวมอยู่ใน UI Loop อย่างเดียว

มี FreeRTOS Task แยก สำหรับ:

  • Poll ปุ่มทั้ง 3
  • Debounce Input
  • ตรวจ Short Press / Long Press
  • ส่ง Event เข้า FreeRTOS Queue

Main Loop จึงรับ Button Event จาก Queue แล้วค่อยเปลี่ยน UI State ขณะที่ Sensor Sampling และ Display Rendering ทำงานแยกตาม Flow ของตัวเอง

แนวคิดที่เอาไปต่อยอดได้: แยก Input Handling ออกจาก UI / Sensor Logic ช่วยให้ Code ของอุปกรณ์พกพาที่มีหลายหน้าจอ จัดโครงสร้างง่ายขึ้น

Warning: GPIO 4 ถูกระบุซ้ำใน Current Source

Current GitHub README และ Arduino Sketch ระบุ Pin Assignment จุดหนึ่งที่ต้องระวัง

Function Pin ที่ Current Source ระบุ
ST7789 TFT Reset GPIO 4
TCS34725 Sensor LED GPIO 4
อย่าแก้ Pin จากการเดา: Source ปัจจุบันระบุ GPIO 4 ให้สองหน้าที่พร้อมกัน ดังนั้นหากจะสร้างตามจริง ควรตรวจ Hardware Revision, Wiring ของผู้สร้าง หรือ Source Update ล่าสุดก่อนต่อวงจร

ด้วยเหตุนี้บทความนี้ ไม่สร้าง Wiring Diagram ใหม่ขึ้นเอง เพื่อหลีกเลี่ยงการแก้ Conflict โดยไม่มี Source รองรับ

เคส 3D Print และการประกอบ

Real Life Color Picker ภายในเคส 3D Print ขนาดกะทัดรัด
ตัวอุปกรณ์ถูกออกแบบให้ Board, Display, Sensor และ Controls รวมอยู่ในเคส 3D Print ขนาดพกพา

Main Source ระบุว่า ทุกอย่างถูกจัดลงใน Compact 3D Printed Case

การยึดชิ้นส่วนใช้หลายแบบ:

  • ESP32 และ Buttons ใช้ Snap Fit
  • ชิ้นส่วนอื่นบางส่วนใช้ M2 Screws
การติดตั้ง ESP32 ปุ่มและชิ้นส่วนภายในเคส Real Life Color Picker
Source อธิบายว่า ESP32 และ Buttons ใช้ Snap Fit ขณะที่ Component อื่นบางส่วนยึดด้วย M2 Screws
มีไฟล์ 3D แล้วแต่ไม่มีเครื่องพิมพ์? Source เปิดไฟล์ Custom Parts / Enclosure ให้ดาวน์โหลด และสามารถส่งไฟล์ให้ทีม Globalbyte ช่วยประเมินบริการพิมพ์ 3D ได้
Source ไม่ได้ให้ Print Settings: ไม่มี Layer Height, Infill, Support, Nozzle, Material หรือ Print Temperature ที่ควรถือเป็นค่ามาตรฐานของ Project

สิ่งที่ผู้สร้างอยากปรับปรุงต่อ

1. Better Color Calibration

ผู้สร้างระบุว่า RGB Conversion ปัจจุบัน intentionally simple และ Calibration ที่ดีกว่านี้ สามารถช่วยให้ Output มีความน่าเชื่อถือมากขึ้น

2. Better Sensor Enclosure

เป้าหมายคือทำ Housing รอบ Sensor เพื่อช่วย Block Ambient Light และทำ Reading ให้ Consistent ขึ้น

3. More Saved Colors

Main Story และ README พูดถึงการเพิ่มจำนวนสีที่ Save ได้ ขณะที่ Current Code ดูเหมือนขยาย MAX_SAVED_COLORS จาก 20 เป็น 50 แล้ว

ดู Real Life Color Picker ทำงานจริง

Video ต้นฉบับแสดงตั้งแต่แนวคิดของ Project, การประกอบเคส ไปจนถึงการ Scan สี, Save สี และส่งค่า HEX เข้า PC

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

หากต้องการสร้างตามจริง ควรตรวจ Hackster Project, GitHub Source และไฟล์ 3D รุ่นล่าสุดควบคู่กัน โดยเฉพาะจุด Pin Assignment ที่ Current Source ระบุ GPIO 4 ซ้ำ

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

1. Real Life Color Picker ใช้ Sensor อะไร?

ใช้ TCS34725 Color Sensor สำหรับอ่าน Red, Green, Blue และ Clear-light Channel

2. ใช้ ESP32 รุ่นไหน?

Hackster Hardware List ระบุ XIAO ESP32S3 Sense ขณะที่ Official GitHub README ระบุ XIAO ESP32-S3 จึงควรตรวจ Hardware Revision ของ Build ที่ต้องการทำตาม

3. Project ใช้ Camera ของ XIAO ESP32S3 Sense หรือไม่?

Current Firmware ที่ตรวจไม่ได้ใช้ Camera หรือ Microphone ของ Sense Expansion Board

4. สี HEX มาจาก Sensor โดยตรงไหม?

ไม่ Sensor ให้ Raw R/G/B/Clear Reading แล้ว ESP32-S3 นำไปคำนวณ RGB 0–255 ก่อน Format เป็น #RRGGBB

5. ค่า HEX มีรูปแบบอย่างไร?

ใช้รูปแบบ #RRGGBB เช่น R=255, G=64, B=32 จะได้ #FF4020 ตามตัวอย่างใน Project README

6. Project นี้วัดสีแม่นแค่ไหน?

Source ไม่ได้ให้ Accuracy, Delta E หรือ Repeatability Benchmark และผู้สร้างระบุว่า Calibration ยังเป็นจุดที่อยากปรับปรุง

7. Ambient Light มีผลหรือไม่?

ผู้สร้างเสนอ Better Sensor Enclosure เพื่อ Block Ambient Light และทำ Reading ให้ Consistent มากขึ้น จึงเป็นข้อจำกัดที่ Source รับรู้ไว้แล้ว

8. Sensor LED เปิดตลอดหรือไม่?

Current Code มี AUTO, ON และ OFF โดย AUTO จะเปิด LED ระหว่าง Live Scan

9. บันทึกสีได้กี่สี?

Hackster Story และ README ระบุ 20 สี แต่ Current Code กำหนด MAX_SAVED_COLORS เป็น 50 จึงมี Conflict ระหว่าง Documentation กับ Implementation ปัจจุบัน

10. สีหายหลังปิดเครื่องไหม?

Project ใช้ ESP32 Preferences ซึ่งเป็น Non-volatile Storage สำหรับเก็บสีที่ Save ไว้

11. ส่งค่า HEX เข้า PC ได้อย่างไร?

Firmware ใช้ USBHIDKeyboard และพิมพ์ค่า HEX ออกผ่าน USB เหมือน Keyboard

12. จอใช้รุ่นอะไร?

Project README ระบุ ST7789 ขนาด 1.47 นิ้ว ความละเอียด 172×320

13. ปุ่มมีทั้งหมดกี่ปุ่ม?

Project ใช้ Push Button 3 ปุ่ม สำหรับ Navigation และ Action ต่าง ๆ

14. Slide Switch ใช้ทำอะไร?

Hackster BOM ระบุ Slide Switch 1 ตัว แต่ Source Code ที่ตรวจไม่ได้ระบุหน้าที่ทาง Logic จึงไม่ควรเดาว่าใช้ทำอะไร

15. Battery ใช้ได้นานแค่ไหน?

Source ระบุ Battery 400 mAh แต่ไม่ได้ให้ Runtime, Current Draw หรือ Charging Spec จึงคำนวณไม่ได้

16. มีไฟล์ 3D Print หรือไม่?

มี Source ให้ไฟล์ Custom Parts / Enclosure สำหรับดาวน์โหลด

17. ใช้ Material หรือ Print Settings อะไร?

Source ไม่ได้ระบุ Material, Layer Height, Infill, Nozzle, Support หรือ Print Temperature

18. GPIO 4 ต่อกับอะไร?

Current Source ระบุ GPIO 4 ทั้ง TFT Reset และ TCS34725 Sensor LED จึงต้องตรวจ Hardware Revision หรือ Wiring ล่าสุดจากผู้สร้างก่อนต่อจริง

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

จาก Sensor Project เล็ก ๆ สู่เครื่องมือที่ใช้ใน Workflow จริง

Real Life Color Picker เป็นตัวอย่างที่ดีของการเอา ESP32-S3, Sensor, Display, Storage และ USB HID มาประกอบเป็นอุปกรณ์ที่มี Use Case ชัดเจน มากกว่าแค่ Demo อ่านค่า Sensor บน Serial Monitor

หากกำลังทำ ESP32, Sensor, Display หรือ Portable Electronics Project สามารถสอบถามทีม Globalbyte เรื่องบอร์ดและอุปกรณ์ที่เหมาะกับ Project ได้

สำหรับเคสของ Project นี้ Source มีไฟล์ 3D ให้แล้ว หากมีไฟล์แต่ไม่มีเครื่องพิมพ์ สามารถส่งไฟล์ให้ทีม Globalbyte ช่วยประเมินบริการพิมพ์ 3D ได้เช่นกัน

Disclaimer: บทความนี้เป็นการสรุปและเรียบเรียงจากแหล่งข้อมูลภาษาอังกฤษ อาจมีความคลาดเคลื่อน กรุณาตรวจสอบ Source ต้นฉบับก่อนลงมือทำ Project นี้ไม่ได้ให้ Benchmark ด้าน Color Accuracy, Delta E, Repeatability หรือ Pantone Matching และผู้สร้างเองระบุว่า Color Calibration ยังสามารถพัฒนาเพิ่มเติมได้ จึงไม่ควรตีความอุปกรณ์นี้ว่าเป็น Professional Calibrated Colorimeter โดยไม่มีการทดสอบเพิ่มเติม Hackster Hardware List ระบุ XIAO ESP32S3 Sense ขณะที่ Official Project README ระบุ XIAO ESP32-S3 และ Current Firmware ไม่ได้ใช้ Camera/Microphone Feature ของ Sense Expansion Board Documentation ระบุว่าสามารถ Save ได้ 20 สี แต่ Current Arduino Code กำหนด MAX_SAVED_COLORS เป็น 50 จึงมี Version / Documentation Conflict ที่ควรตรวจจาก Repository ล่าสุด Current Source ยังระบุ GPIO 4 ทั้ง TFT Reset และ TCS34725 Sensor LED บทความนี้จึงไม่ได้สร้าง Wiring ใหม่ หรือเปลี่ยน Pin จากการคาดเดา Hackster BOM ระบุ Slide Switch 1 ตัว แต่ Source Code ไม่ได้อธิบายหน้าที่ของ Switch จึงไม่ได้ระบุ Function เพิ่มเอง Source ระบุ Battery 400 mAh แต่ไม่ได้ให้ Battery Chemistry, Voltage, Runtime, Charging Time หรือ Current Consumption และ Source มีไฟล์ 3D Enclosure แต่ไม่ได้ให้ Material, Layer Height, Infill, Support, Nozzle หรือ Print Temperature จึงไม่ได้สร้างค่าดังกล่าวเพิ่มเติม ราคา, Stock และ Availability ในประเทศไทย ไม่ได้ถูกยืนยันในบทความนี้

 

แท็ก


Blog posts