ข้ามไปยังเนื้อหา

อ่านแผนผังวงจร

เมื่อจบบทเรียนนี้ คุณจะ

  1. ระบุสัญลักษณ์ของชิ้นส่วนพื้นฐานและชื่อสัญญาณบนแผนผังวงจรได้
  2. ตามสัญญาณหนึ่งเส้นจากขาของไมโครคอนโทรลเลอร์ไปถึงหลอด LED หรือปุ่มบนแผนผังของบอร์ดได้
  • แผนผังวงจร (schematic) ของบอร์ดที่คุณใช้ ชุดพัฒนาของผู้ผลิตชิปมักมีแผนผังให้ดาวน์โหลดในหน้าผลิตภัณฑ์ของชุดนั้น ถ้าหาไม่เจอให้ถามผู้สอนหรือผู้ดูแลบอร์ด ถ้าไม่มีแผนผังจริงเลย แนวคิดและฝึกเติมทั้งหมดทำได้ด้วยแผนผังตัวอย่างในหน้านี้ ส่วนแล็บทำได้บางส่วน
  • TESAIoT Dev Kit ที่ flash ตัวอย่าง QWA309 Potentiometer Monitor และ QWA309 Header I/O Test ได้
  • มัลติมิเตอร์ และ logic analyzer

เอกสารสาธารณะสองชิ้นเกี่ยวกับ TESAIoT Dev Kit พูดถึงลูกบิดตัวเดียวกันไม่ตรงกัน

  • README ของตัวอย่าง Potentiometer Monitor และโค้ดของมัน ติดป้าย VR1 = P15.5 และ VR2 = P15.4
  • README ของ overlay บอร์ด QWA309 ใน SDK เขียนไว้ในหัวข้อข้อสังเกตของบอร์ดว่า “PCBA silkscreen swaps VR1↔VR2; schematic is authoritative (VR1=P15.4)” และอีกข้อหนึ่งว่า ขา CS ของ SPI คือ P9.0 ส่วนป้าย “9.2” บนแผ่นวงจรผิด เพราะ P9.2 คือ MOSI

ใครถูก คำถามนี้ไม่ได้ตอบด้วยการเลือกเชื่อเอกสารที่ดูน่าเชื่อกว่า แต่ตอบด้วยการอ่านแผนผังและวัด ข้อสังเกตที่สำคัญคือ ทั้งสองเอกสาร ตรงกันเรื่องชื่อขาของชิป (P15.4 ถึง P15.7) และไม่ตรงกันเฉพาะ ชื่อที่คนตั้ง (VR1, VR2) เมื่อจบบทนี้ คุณจะตัดสินเรื่องแบบนี้ได้เองบนบอร์ดของคุณ

R (US) R (IEC) C + C polar diode LED NPN N-MOSFET GND 3V3 power net SW SCL net label
สัญลักษณ์ที่เจอบ่อย: ตัวต้านทาน (แบบอเมริกันเป็นฟันเลื่อย แบบ IEC เป็นกล่อง) ตัวเก็บประจุ ตัวเก็บประจุมีขั้ว ไดโอด LED ทรานซิสเตอร์ NPN MOSFET ชนิด N กราวด์ ชื่อไฟเลี้ยง สวิตช์ และป้ายชื่อสัญญาณ

ตัวต้านทานมีสองแบบที่เจอบ่อย แบบฟันเลื่อย (นิยมในอเมริกาและญี่ปุ่น) กับแบบกล่อง (มาตรฐาน IEC นิยมในยุโรป) ความหมายเหมือนกัน

รหัสอ้างอิง (reference designator) ตัวอักษรบอกชนิด ตัวเลขบอกลำดับ ใช้ตรงกันทั้งในแผนผัง บนแผ่นวงจร และในรายการชิ้นส่วน (BOM)

ตัวอักษร ชนิด ตัวอักษร ชนิด
R ตัวต้านทาน U ชิป (IC)
C ตัวเก็บประจุ J, P, CN ขั้วต่อ
L ตัวเหนี่ยวนำ SW สวิตช์ ปุ่ม
D ไดโอด LED TP จุดทดสอบ
Q ทรานซิสเตอร์ MOSFET Y, X คริสตัล
FB ferrite bead F ฟิวส์

การเขียนค่าแบบไม่มีจุดทศนิยม แผนผังมักใช้ตัวอักษรแทนจุด เพราะจุดเล็ก ๆ หายง่ายเวลาพิมพ์หรือถ่ายสำเนา

4k7 = 4.7 kΩ 2R2 = 2.2 Ω 1M0 = 1.0 MΩ 100n = 100 nF 4p7 = 4.7 pF 1u0 = 1.0 µF

รหัสที่พิมพ์บนตัวต้านทานชิป: สองหลักแรกคือตัวเลข หลักสุดท้ายคือจำนวนศูนย์ต่อท้าย “103” = 10 × 10³ = 10 kΩ, “472” = 4.7 kΩ แบบสี่หลักใช้สามหลักแรกเป็นตัวเลข “4701” = 470 × 10¹ = 4.7 kΩ ตัวเก็บประจุเซรามิกแบบขาเสียบใช้หลักเดียวกันในหน่วย pF “104” = 10 × 10⁴ pF = 100 nF

net คือกลุ่มของจุดที่ต่อถึงกันทางไฟฟ้า แผนผังบอกว่าอะไรอยู่ใน net เดียวกันได้หลายวิธี

  • เส้นที่ลากต่อกัน เส้นที่ต่อกันเป็นรูปตัว T มี จุดดำ (junction dot) เส้นสองเส้นที่ตัดกันเป็นกากบาท โดยไม่มีจุด แปลว่าไม่ต่อกัน
  • ป้ายชื่อ (net label) จุดสองจุดที่มีป้ายชื่อเดียวกันคือ net เดียวกัน แม้ไม่มีเส้นลากถึงกันเลย ใช้ลดเส้นที่ลากข้ามหน้ากระดาษ
  • สัญลักษณ์ไฟเลี้ยงและกราวด์ ทุกสัญลักษณ์ “3V3” ทั่วทั้งแผนผังคือ net เดียวกัน ทุกสัญลักษณ์กราวด์ก็เช่นกัน
  • หลายหน้า (multi-sheet) แผนผังของบอร์ดจริงมักมีหลายหน้า หน้าแรกเป็นแผนภาพบล็อก ป้ายชื่อหรือตัวเชื่อมข้ามหน้า (off-sheet connector) พาสัญญาณไปหน้าอื่น แผนผังแบบลำดับชั้น (hierarchical) ใช้บล็อกย่อยที่มีขาเข้าออกของตัวเอง

ชื่อสัญญาณที่บอกความหมาย ชื่อที่ดีบอกได้ทันทีว่าสัญญาณคืออะไร อยู่โดเมนแรงดันไหน และทำงานที่ระดับไหน โปรแกรมทดสอบ header ของ TESAIoT Dev Kit พิมพ์ชื่อสัญญาณแบบนี้ออกจอ เช่น

P13.3_GPIO_PWM5+_3V3 ขา P13.3 ของชิป | ใช้เป็น GPIO หรือ PWM5 ขั้วบวก | โดเมน 3.3 V
P15.2_ADC_2_PWM3+_3V3 ขา P15.2 | ใช้เป็น ADC ช่อง 2 หรือ PWM3 ขั้วบวก | โดเมน 3.3 V

สัญญาณ active-low มักมีเครื่องหมายกำกับอย่างใดอย่างหนึ่ง เช่น ขีดทับชื่อ (overbar) ขึ้นต้นด้วย n หรือ / หรือลงท้ายด้วย _N หรือ # เช่น RESET_N, /CS, nWP, BTN_N ทั้งหมดแปลว่า “ทำงานเมื่อเป็น 0”

3. ตามสัญญาณจากขาชิปถึงชิ้นส่วน และเมื่อเอกสารไม่ตรงกับบอร์ด

หัวข้อที่มีชื่อว่า “3. ตามสัญญาณจากขาชิปถึงชิ้นส่วน และเมื่อเอกสารไม่ตรงกับบอร์ด”
MCU IO1 IO2 R12 1k LED1 → sheet 2 BTN_N → sheet 2 sheet 2 LED1 D5 BTN_N 3V3 R40 10k SW3
แผนผังตัวอย่าง (วาดขึ้นเพื่อฝึก ไม่ใช่แผนผังของบอร์ดจริง): หน้า 1 ขา IO1 และ IO2 ของ MCU ออกไปที่ป้ายชื่อ LED1 และ BTN_N หน้า 2 มีป้ายชื่อเดียวกัน จุดที่ชื่อเหมือนกันคือสายเส้นเดียวกันแม้ไม่มีเส้นลากถึงกัน

ขั้นตอนตามสัญญาณ

  1. หาสัญลักษณ์ของไมโครคอนโทรลเลอร์ (มักแบ่งเป็นหลายส่วนตามพอร์ต) แล้วหาขาที่สนใจ
  2. ตามเส้นจากขาไปจนเจอชิ้นส่วนหรือป้ายชื่อ ถ้าเจอป้ายชื่อ ค้นหาชื่อเดียวกันในทุกหน้า (โปรแกรมอ่าน PDF ค้นข้อความได้)
  3. ทุกชิ้นส่วนที่ผ่าน จดรหัสอ้างอิง ค่า และทิศทาง (เช่น LED หันแอโนดไปทางไหน)
  4. ตามจนถึงปลายทาง มักเป็นไฟเลี้ยงหรือกราวด์ แล้วสรุปเป็นประโยค เช่น “ขา IO1 ขับ LED1 แบบ active-high ผ่าน 1 kΩ”
  5. เปิดเอกสารข้อมูลของชิ้นส่วนที่ไม่รู้จักประกอบ ขาของชิ้นส่วนบนแผนผังเรียงตามสะดวกของคนวาด ไม่ได้เรียงตามตำแหน่งจริงบนตัวถัง

เมื่อป้ายบนแผ่นวงจร (silkscreen) ไม่ตรงกับแผนผัง แผนผังคือเอกสารที่ใช้สร้างแผ่นวงจร จึงมักเชื่อถือได้มากกว่าป้ายที่พิมพ์บนแผ่น แต่แผนผังก็เป็นเอกสารที่คนเขียน มีรุ่นและอาจผิดได้ ข้อสรุปสุดท้ายต้องมาจากการวัด ถอดไฟแล้วใช้โหมดความต่อเนื่องจากขาของ header ถึงชิ้นส่วน หรือเปิดไฟแล้วใช้โปรแกรมที่รู้ว่าขับขาไหน แล้วดูด้วย logic analyzer ว่าสัญญาณไปโผล่ที่ไหน

SDK ของ TESAIoT Dev Kit ก็เตือนเรื่องชื่อซ้อนชื่อไว้อีกกรณีหนึ่ง ในตัวอย่าง cm33/io/04_gpio_led_button.c ชื่อ CYBSP_USER_BTN1 ในโค้ดชี้ไปที่ CYBSP_SW1 แต่ป้ายบนบอร์ดเขียน SW2 ทั้งสองอย่างไม่ได้ผิด เป็นชื่อในระบบต่างกัน สิ่งที่ผูกทุกชื่อเข้าด้วยกันคือ ขาของชิป

โจทย์ ใช้แผนผังตัวอย่างในหัวข้อ 3 ตอบว่า LED1 และปุ่ม SW3 ทำงานแบบไหน และโปรแกรมต้องตั้งขาอย่างไร

LED1

  1. หน้า 1: ขา IO1 → R12 (1 kΩ) → ป้าย LED1
  2. หน้า 2: ป้าย LED1 → D5 (LED แอโนดทางป้าย แคโทดทางกราวด์) → GND
  3. สรุป: IO1 เป็น 1 → กระแสไหลจาก IO1 ผ่าน R12 และ D5 ลงกราวด์ LED ติด เป็น active-high
  4. กระแส: ถ้า V_f = 2.0 V ได้ (3.3 − 2.0) V / 1 kΩ = 1.3 mA
  5. โปรแกรม: ตั้ง IO1 เป็นขาออกแบบ push-pull (บน PSoC คือ CY_GPIO_DM_STRONG) เริ่มต้นเป็น 0 เพื่อไม่ให้ไฟวาบตอนเปิดเครื่อง

SW3

  1. หน้า 1: ขา IO2 → ป้าย BTN_N ตรง ๆ ไม่มีตัวต้านทานคั่น
  2. หน้า 2: ป้าย BTN_N → จุดที่มี R40 (10 kΩ) ขึ้นไป 3V3 และ SW3 ลงกราวด์
  3. สรุป: ปล่อยปุ่ม R40 ดึงขึ้นเป็น 1 กดปุ่ม SW3 ต่อลงกราวด์เป็น 0 เป็น active-low ตรงกับชื่อที่ลงท้าย _N
  4. กระแสตอนกด 3.3 V / 10 kΩ = 0.33 mA
  5. โปรแกรม: มี pull-up ภายนอกแล้ว ตั้ง IO2 เป็นขาเข้าแบบไม่มี pull ก็พอ (เปิด pull-up ภายในซ้อนก็ไม่ผิด แต่ไม่จำเป็น) และเขียน pressed = !read(IO2)
  1. แปลค่าเหล่านี้ 4k7, 2R2, 100n, 1u0, และรหัสบนตัวต้านทานชิป “103” และ “4701” และบนตัวเก็บประจุเซรามิก “104”
  2. บอกชนิดของชิ้นส่วนจากรหัสอ้างอิง U3, Q2, TP5, FB1, J4, Y1
  3. แยกส่วนของชื่อสัญญาณ P15.2_ADC_2_PWM3+_3V3 แล้วบอกว่าต่อสัญญาณ 5 V เข้าขานี้ได้ไหม
  4. บนแผนผัง เส้นแนวนอนกับเส้นแนวตั้งตัดกันเป็นกากบาท ไม่มีจุดดำ สองเส้นนี้ต่อกันไหม ถ้าเป็นรูปตัว T มีจุดดำล่ะ
  5. ชื่อสัญญาณใดเป็น active-low: RESET_N, /CS, nWP, EN, SCL
  6. ป้ายบนแผ่นวงจรเขียนขา CS ของ SPI ไว้ที่ตำแหน่ง “9.2” แต่ SDK บอกว่า CS คือ P9.0 และ P9.2 คือ MOSI ออกแบบการทดลองที่ยืนยันได้ว่าขาไหนคือ CS โดยไม่ต้องเปิดแผนผัง
  1. 4.7 kΩ, 2.2 Ω, 100 nF, 1.0 µF, 10 kΩ, 4.7 kΩ และ 100 nF
  2. U3 ชิป, Q2 ทรานซิสเตอร์หรือ MOSFET, TP5 จุดทดสอบ, FB1 ferrite bead, J4 ขั้วต่อ, Y1 คริสตัล
  3. ขา P15.2 ของชิป | ใช้เป็น ADC ช่อง 2 หรือ PWM3 ขั้วบวก | โดเมน 3.3 V ต่อ 5 V ไม่ได้ เพราะเกินโดเมนแรงดันของขา (ดูบทเรียน ระดับลอจิก)
  4. กากบาทไม่มีจุด ไม่ต่อกัน รูปตัว T มีจุด ต่อกัน (นักเขียนแผนผังที่ดีจะหลีกเลี่ยงจุดต่อรูปกากบาทที่มีจุด เพราะจุดเล็ก ๆ อาจหายตอนพิมพ์)
  5. RESET_N, /CS และ nWP
  6. ตัวอย่างหนึ่ง: ต่อ logic analyzer สองช่องเข้าขา header ตำแหน่ง “9.2” และขาข้างเคียงที่สงสัย รันโปรแกรมทดสอบ header แล้วกดปุ่ม SPI ESP32 ตามโค้ดของตัวอย่าง ขา CS (P9.0) เริ่มเป็น 1 และลงเป็น 0 ตลอดช่วงส่งข้อมูล ส่วน MOSI (P9.2) เปลี่ยนตามบิตข้อมูลทุกจังหวะนาฬิกา ขาที่มีรูปคลื่นแบบ CS คือ CS จริง

ตอบคำถามใน quiz.yaml ให้ถูกอย่างน้อย 4 ใน 5 ข้อ

ส่วน A: ตามสัญญาณบนแผนผังจริง (ถ้ามีแผนผังของบอร์ด)

  1. หาแผนภาพบล็อกหน้าแรก จดว่าแผนผังมีกี่หน้า และแต่ละหน้าเป็นเรื่องอะไร
  2. ตามสัญญาณของ LED ผู้ใช้หนึ่งดวงจากขาชิปถึงกราวด์หรือไฟเลี้ยง จดรหัสอ้างอิงและค่าของทุกชิ้นส่วนที่ผ่าน สรุปว่า active-high หรือ active-low แล้วเทียบกับ SDK ซึ่งระบุว่า LED ของบอร์ดติดเมื่อขาเป็น 1 (CYBSP_LED_STATE_ON = 1)
  3. ตามสัญญาณของปุ่มผู้ใช้หนึ่งปุ่ม มีตัวต้านทาน pull-up ภายนอกหรือไม่ ถ้าไม่มี โปรแกรมต้องเปิด pull-up ภายในชิป ซึ่งตรงกับที่ SDK ตั้งปุ่มเป็น CY_GPIO_DM_PULLUP
  4. หาตัวเก็บประจุ decoupling ของไมโครคอนโทรลเลอร์ นับว่ามีกี่ตัวและค่าอะไรบ้าง เตรียมไว้ใช้ในบทเรียนถัดไป

ส่วน B: VR1 คือขาไหนบนบอร์ดของคุณ (TESAIoT Dev Kit)

  1. รันตัวอย่าง Potentiometer Monitor หมุนลูกบิดที่ป้ายบนแผ่นวงจรเขียนว่า VR1 ไปสุดทางหนึ่ง แล้วดูว่าการ์ดที่ขยับแสดงขาอะไร
  2. ทำซ้ำกับลูกบิดทุกตัว เติมตาราง แล้วสรุปว่าบนบอร์ดของคุณ ป้ายบนแผ่นวงจร โค้ดของตัวอย่าง และคำอธิบายใน SDK สอดคล้องกันแบบไหน
  3. เขียนข้อเสนอสั้น ๆ หนึ่งย่อหน้าว่า ถ้าคุณเป็นผู้ดูแลเอกสาร จะแก้ความสับสนนี้อย่างไร (ใบ้: เรียกด้วยชื่อขาของชิปเป็นหลัก)
ป้ายบนแผ่นวงจร ขาที่การ์ดบนจอแสดง ชื่อที่โค้ดตัวอย่างใช้ ตามแผนผัง (ถ้ามี)
VR1
VR2
VR3
VR4

ส่วน C: อ่านชื่อสัญญาณบน header รันโปรแกรมทดสอบ header กดปุ่ม ADC In หรือ PWM Out แล้วจดชื่อสัญญาณเต็มที่จอพิมพ์ แยกส่วนความหมายแบบฝึกเติมข้อ 3

บทเรียนสุดท้ายของหลักสูตร พื้นฐาน PCB และ EMC จะพาจากแผนผังไปสู่แผ่นวงจรจริง ว่าตำแหน่งของตัวเก็บประจุและรูปร่างของลายวงจรมีผลกับสัญญาณรบกวนอย่างไร

ในส่วน B คุณเชื่อเอกสารไหนก่อนวัด และหลังวัดแล้วความเชื่อนั้นเปลี่ยนไหม นิสัยนี้ใช้กับเอกสารอื่นที่คุณอ่านทุกวันได้อย่างไร

คำถามทบทวน

ลองตอบเองก่อน แล้วค่อยเปิดดูเฉลย

  1. ค่าตัวต้านทานบนแผนผังเขียนว่า 4k7 หมายถึงเท่าไร (เป้าหมายข้อ 1)

    1. 47 kΩ
    2. 4.7 kΩ
    3. 470 Ω
    4. 4.7 Ω
    ดูเฉลย

    คำตอบ: B. 4.7 kΩ

    ตัวอักษร k อยู่ตำแหน่งจุดทศนิยมและบอกหน่วย 4k7 จึงเป็น 4.7 kΩ ส่วน 4.7 Ω จะเขียนว่า 4R7

  2. บนแผนผัง เส้นสองเส้นตัดกันเป็นรูปกากบาทโดยไม่มีจุดดำ หมายความว่าอะไร (เป้าหมายข้อ 1)

    1. สองเส้นต่อกัน
    2. สองเส้นไม่ต่อกัน
    3. ต่อกันเฉพาะในหน้าเดียวกัน
    4. ต้องเปิดรายการชิ้นส่วนดู
    ดูเฉลย

    คำตอบ: B. สองเส้นไม่ต่อกัน

    การต่อกันแสดงด้วยจุดดำ (junction dot) ซึ่งมักอยู่ที่จุดต่อรูปตัว T กากบาทที่ไม่มีจุดคือเส้นที่ลากผ่านกันเฉย ๆ

  3. ชื่อสัญญาณ BTN_N บอกอะไรเกี่ยวกับสัญญาณนี้ (เป้าหมายข้อ 1)

    1. เป็นสัญญาณของปุ่มที่ทำงานเมื่อเป็น 0 (active-low)
    2. เป็นสัญญาณของปุ่มหมายเลข N
    3. เป็นสัญญาณแรงดันลบ
    4. เป็นสัญญาณที่ไม่ได้ใช้ (not connected)
    ดูเฉลย

    คำตอบ: A. เป็นสัญญาณของปุ่มที่ทำงานเมื่อเป็น 0 (active-low)

    ท้าย _N (เช่นเดียวกับ /, n หรือขีดทับชื่อ) เป็นแบบแผนของสัญญาณ active-low ปุ่มที่ต่อลงกราวด์พร้อม pull-up จึงมักชื่อแบบนี้

  4. ขาของไมโครคอนโทรลเลอร์ในหน้า 1 ต่อกับป้ายชื่อ LED1 ส่วนหน้า 3 มีป้ายชื่อ LED1 ต่อกับแอโนดของ D5 ข้อใดถูก (เป้าหมายข้อ 2)

    1. ไม่ต่อกัน เพราะไม่มีเส้นลากข้ามหน้า
    2. เป็น net เดียวกัน ขานั้นขับ D5 ได้
    3. ต่อกันเฉพาะเมื่อมีจัมเปอร์บนบอร์ด
    4. ต้องดูป้ายบนแผ่นวงจรเท่านั้นจึงจะรู้
    ดูเฉลย

    คำตอบ: B. เป็น net เดียวกัน ขานั้นขับ D5 ได้

    ป้ายชื่อเดียวกันในแผนผังเดียวกันคือ net เดียวกัน ไม่ว่าจะอยู่หน้าไหน นี่คือวิธีที่แผนผังหลายหน้าต่อสัญญาณถึงกัน

  5. ป้ายบนแผ่นวงจรกับแผนผังบอกตำแหน่งขาไม่ตรงกัน ควรทำอย่างไร (เป้าหมายข้อ 2)

    1. เชื่อป้ายบนแผ่นวงจร เพราะเห็นกับตา
    2. ถือแผนผังเป็นหลักไว้ก่อน แล้วยืนยันด้วยการวัด เช่น โหมดความต่อเนื่องหรือดูสัญญาณที่รู้ว่าขาไหนขับ
    3. เลือกเอกสารที่ใหม่กว่าโดยไม่ต้องวัด
    4. หยุดใช้บอร์ดนั้น
    ดูเฉลย

    คำตอบ: B. ถือแผนผังเป็นหลักไว้ก่อน แล้วยืนยันด้วยการวัด เช่น โหมดความต่อเนื่องหรือดูสัญญาณที่รู้ว่าขาไหนขับ

    แผนผังคือเอกสารที่ใช้สร้างแผ่นวงจร จึงมักถูกกว่า แต่ก็มีรุ่นและผิดได้ ข้อสรุปสุดท้ายต้องมาจากการวัด ตัวอย่างคือข้อสังเกตเรื่องป้าย VR1 และขา CS ใน README ของบอร์ด QWA309 ใน SDK

อ้างอิงบทเรียนนี้

ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน

"อ่านแผนผังวงจร" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0

ข้อความอ้างอิงภาษาอังกฤษ: "Reading schematics" from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0

ลิงก์บทเรียน: https://tesaiot.github.io/tesa-qualification-program/courses/electronics-and-instruments/m06-build-and-read/l03-reading-schematics/

วิธีอ้างอิง TESA ฉบับเต็ม

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA