arduino_reset_method

การอัพโหลดโปรแกรมและ Reset Method บน ESP8266

โลกของ Hardware ยังมีอะไรให้ศึกษาอีกเยอะ เรามาทำความรู้จักการ Upload Program ไปยัง Flash Memory ของ ESP8266 และ วิธีการ Auto reset ทั้ง 2 แบบบนตัว ESP8266 …ลุยกันเลย

การ Flash โปรแกรม หรือ อัพโหลดโปรแกรม ไปยังไมโครคอนโทรเลอร์มีหลักการคล้ายกันคือข้อมูลของโปรแกรมจะถูกนำไปเก็บไว้ในตัว Flash Memory (หน่วยความจำถาวร)

สำหรับบอร์ด ESP8266 นั้นมีความแตกต่างจากบอร์ด Arduino ทั่วไป เนื่องจากมี Flash Memory แยกออกมามีการสื่อสารกับชิพ ESP8266 ผ่านการเชื่อมต่อแบบ SPI ที่สามารถเปลี่ยนชิพ Flash Memory เองได้เช่น ขนาด 512kB 1MB 4MB เป็นต้น ทำให้ขั้นตอนการอัพโหลดโปรแกรมสำหรับบอร์ด ESP8266 มีความแตกต่างจากขั้นตอนปกติของบอร์ด Arduino เล็กน้อย

  • บอร์ด Arduino ส่วนใหญ่จะรีเซ็ตตัวเองอัตโนมัติเมื่อมีการอัพโหลดโปรแกรมใหม่และจะเข้าสู่โหมดการอัพโหลดโปรแกรมโดยอัตโนมัติ

  • บอร์ด ESP8266 ที่มีขายตามท้องตลาดส่วนมากจะถูกออกแบบวงจร Auto Reset เพื่อให้การอัปโหลดโปรแกรมใหม่และการเข้าสู่โหมดการอัพโหลดโปรแกรมโดยอัตโนมัติมีความสะดวกสะบายมากยิ่งขึ้น แต่…ถ้าหากเราใช้งานโมดูล ESP8266 ตัวเปล่า เราจำเป็นต้องต่อวงจรให้ ESP8266 ทำงาน และป้อนโหมดการอัพโหลดโปรแกรมด้วยตัวเอง

เงื่อนไขการอัพโหลดโปรแกรมบนตัว ESP8266

รูปตัวอย่าง ESP-WROOM-02

ตัวอย่างโมดูล ESP-WROOM-02 การเข้าสู่โหมด UART Download Mode หรือ (โหมดอัพโหลดโปรแกรม)

  • ขา GPIO0 ต้องถูกเชื่อมต่อลง GND (ได้รับลอจิก “0”) และรีเซ็ตที่ขา RST (ปกติขา RST จะต้องถูกต่อ Pull-up กับไฟ 3.3V หรือ ได้รับลอจิก “1” เมื่อต้องการ Reset ต้องช๊อตขา RST ลง GND ให้ขา RST ได้รับลอจิก “0”)

(GPIO0 ได้รับลอจิก “0”) กดปุ่มรีเซ็ตค้างไว้ >>> กดปุ่ม GPIO0 ค้างเอาไว้

>>> ปล่อยปุ่มรีเซ็ต ESP8266 จะเริ่มต้นในโหมดอัพโหลดโปรแกรม

การเข้าสู่โหมด Flash Boot Mode หรือ (โหมดเริ่มทำงานของโปรแกรม)

  • ขา GPIO0 ต้องถูกเชื่อมต่อกับไฟ 3.3V (ได้รับลอจิก “1”) และรีเซ็ตที่ขา RST (ปกติขา RST จะต้องถูกต่อ Pull-up กับไฟ 3.3V หรือ ได้รับลอจิก “1” เมื่อต้องการ Reset ต้องช๊อตขา RST ลง GND ให้ขา RST ได้รับลอจิก “0”)

(GPIO0 ได้รับลอจิก “1” ) กดปุ่มรีเซ็ต ESP8266 จะเริ่มต้นในโหมดการทำงาน

เงื่อนไขง่าย ๆ สำหรับการ อัพโหลดโปรแกรม และให้โปรแกรมเริ่มทำงาน ดูเหมือนวุ่นวายต้องทำขั้นตอน 1–2 ก็แค่การอัพโหลดโปรแกรมธรรมดาทำไมชีวิตยากจัง !

อย่างไรก็ตามมีวงจรง่าย ๆ ที่เราสามารถใช้เพื่อรับการอัปโหลดโปรแกรมโดยอัตโนมัติ

พระเอกของงานนี้ ตัวอย่างตัวแปลงสัญญาณ USB-to-Serial FTDI

Adafruit CP2104 Friend — USB to Serial Converter

ทำความรู้จัก Reset Method บน ESP8266

การสั่งงาน Reset ตัว ESP8266 แบบอัตโนมัติเกิดจากโมดูลตัวแปลง USB-to-Serial ส่งสัญญาณไป Reset ให้กับตัว ESP8266 เข้าสู่โหมดต่าง ๆ ที่ต้องการ

วิธีการรีเซ็ตอัตโนมัติของตัว ESP8266 (Auto Reset)

ออโต้รีเซ็ต มี 2 วิธีดังนี้

1. Reset Method แบบ ck

2. Reset Method แบบ nodemcu

1. Reset Method แบบ ck

ใช้กับตัวแปลง USB-to-Serial ที่มีสายควบคุม DTR เพียงเส้นเดียวตัวแปลง USB-to-Serial จะส่งสัญญาณรีเซ็ตโดยอัตโนมัติ เมื่อส่งข้อมูลไปยัง ESP8266 สัญญาณ DTR จะทำงาน Active Low หรือส่งลอจิก “0” เป็นช่วงเวลาสั้น ๆ เพื่อใช้ในการรีเซ็ต และ GPIO0 จะถูกต่อร่วมกับขา RX ของ โมดูลESP8266 ตามตัวอย่างสัญญาณ DTR ที่ปรากฎในหน้าจอเครื่องมือวัด Oscilloscope

สัญญาณ Reset แบบ CK ที่ขา DTR และขา RTS

วงจร Reset แบบ ck

การทำงานของวงจร

ในสภาวะปกติสัญญาณ DTR จะมีแรงดัน 3.3V จาก USB-to-Serial และ สัญญาณที่ขารีเซ็ตมีแรงดัน 3.3V เนื่องจากมีตัวต้านทานแบบ (Pull-up) R2 ซึ่งหมายความว่าแรงดันไฟฟ้าที่ค้างอยู่ในตัวเก็บประจุคือ 0V เมื่อไหร่ก็ตามที่ขา DTR มีแรงดันเป็น 0V แรงดันไฟฟ้าที่ตัวเก็บประจุจะยังคงเป็น 0V ซึ่งหมายความว่าสัญญาณที่ขา RESET จะอยู่ที่ 0V + 0V = 0V และการรีเซ็ตจะเริ่มทำงาน

แต่เมื่อ C1 เริ่มต้นการชาร์จอีกครั้งผ่าน R2 และเก็บประจุจนเต็มที่แรงดันถึง 3.3V แต่ขา DTR ยังคงมีแรงดันที่ 0V ซึ่งแรงดันขอบตัวเก็บประจุอยู่ที่ 3.3V เมื่อสัญญาณ DTR มีแรงดันเพิ่มขึ้นเป็น 3.3 V อีกครั้งสัญญาณที่ขา RESET จะมีแรงดันทวีคูณขึ้นมาชั่วขณะที่ 3.3V + 3.3V = 6.6V จากนั้นตัวเก็บประจุจะเริ่มคายประจุกลับเข้าสู่ 3.3V ปกติอีกครั้งผ่าน R2

ปัญหาคือ :แรงดันชั่วขณะ 6.6V อาจทำให้ ESP เสียหายได้ ดังนั้นเราจึงต้องหาวิธีการกำจัดสัญญาณเหล่านี้

จำลองสัญญาณ DTR และ RESET

สัญญาณสีน้ำเงินเป็นแรงดันไฟฟ้าที่ขา DTR และสัญญาณสีเหลืองคือแรงดันไฟฟ้าบนขา RESET

การแก้ปัญหาคือ : การเพิ่มไดโอดต่อขนานเข้าไปกับตัวต้านทาน R2 จะช่วยให้ในขณะที่ตัวเก็บประจุจะคายประจุออกมาจะคายได้ไวขึ้นตามรูปข้างล่าง

เพิ่มไดโอด D1 เข้าไปในวงจร

จำลองการทำงานขอวงจรอีกครั้งและสังเกตุสัญญาณสีเหลืองว่ามีการเปลี่ยนแปลงหรือไม่

จำลองสัญญาณ DTR และ RESET ที่เพิ่มไดโอดเข้าไป

จากการทดลองยอดแรงดันที่เกินเข้ามา 6.6V แคบลงมากตามที่เราต้องการ ซึ่งในอุดมคติเป็นไปไม่ได้ที่จะให้ตัวเก็บประจุคายประจุในทันที ซึ่งจะต้องใช้ไดโอดที่มีความต้านทานแบบ 0 Ω และมีกระแสอนันต์ซึ่งเป็นไปไม่ได้

นอกจากนี้แรงดันพีคเฉลี่ยมีปริมาณลดลงเหลือ ประมาณ 3.9 โวลต์ เนื่องจากไดโอดจะเริ่มทำงานเมื่อแรงดันไฟฟ้าสูงกว่า ~ 600mV หรือ 0.6V ล่าสุดที่เหลืออยู่ในตัวเก็บประจุ (3.3V+0.6 = 3.9 V) อย่างไรก็ตามวงจรที่เพิ่มไดโอดเข้ามาจะช่วยป้องกันแรงดันเกินที่จะทำให้ตัว ESP8266 เสียหายได้ ที่ให้สามารถเชื่อมต่อกับ ESP8266 ได้

1. Reset Method แบบ nodemcu

ใช้กับตัวแปลง USB-to-Serial ที่มีสายควบคุม DTR และ RTS ตัวโมดูล USB-to-Serial จะส่งสัญญาณ RTS โดยอัตโนมัติก่อนเพื่อสั่ง Reset ตัว ESP8266 จากนั้นจะส่งสัญญาณ DTR ตามไปในระยะเวลาใกล้เคียงกัน ตามเงื่อนไข Reset 1 ครั้ง แล้ว กด GPIO0 ค้างใว้จนกว่าจะมีการเริ่มอัพโหลดโปรแกรม ตามตัวอย่างสัญญาณ DTR และ RTS ที่ปรากฎในหน้าจอเครื่องมือวัด Oscilloscope

สัญญาณ Reset แบบ CK ที่ขา DTR และขา RTS

วงจร Auto Reset แบบ nodemcu

ตารางความจริง

การทำงานของวงจร

ในสภาวะปกติสัญญาณ DTR และ RTS จะมีแรงดัน 3.3V จาก USB-to-Serial เริ่มต้นการทำงานตัว USB-to-Serial จะส่งสัญญาณ RST เส้นสีฟ้าเข้ามาก่อนเป็นลอจิก “0” เพื่อนให้ตัวโมดูล ESP8266 ถูก Reset จากนั้นจะส่ง สัญญาณ DRT เส้นสีเหลืองตามมา เป็นลอจิก “0” ค้างไว้ระยะเวลาหนึ่ง ซึ่งระหว่างที่สัญญาณ DRT กำลังถูกส่งเข้ามา สัญญาณ RST จะถูกเปลี่ยนเป็นลอจิก “1” หมายความว่า Reset แค่ครั้งเดียวตามตารางความจริงของวงจร

จะเห็นว่าวิธี Reset Method แบบ nodemcu ไม่ต้องสนใจการคายประจุเลยเป็นการ Reset ที่ธรรมชาติที่สุดตามเงื่อนไข และวิธีนี้เป็นวิธีที่ดีที่สุด แต่ปัญหาคือเราต้องเข้าถึงสัญญาณทั้ง RTS และ DTR และเลือกใช้ชิพ USB-to-Serial ให้เหมาะสม

สุดท้ายเลือกวิธีการรีเซ็ต Reset Method ให้ถูกต้องกับบอร์ดที่ใช้งาน

ตามที่ได้กล่าวไว้ข้างต้นมีวิธีการต่าง ๆ สำหรับการรีเซ็ตอัตโนมัติและโปรแกรมอัตโนมัติ

  • ถ้าเราใช้วิธีแรก (ใช้เครื่องตรวจจับขอบสัญญาณ) เราควรใช้ ‘ck’

  • ถ้าเราใช้วงจรสองทรานซิสเตอร์ให้เลือก ‘nodemcu’

  • ถ้าวงจร Auto Reset ไม่ทำงานเราก็สามารถ สั่งรีเซ็ตเองตามเงื่อนไขได้เลย

บทสรุป

  • Reset Method แบบ ck กับ nodemcu ต่างกันยังไง ?

  • ck ใช้สัญญาณ DRT เพียงเส้นเดียวเข้าไปสั่ง Reset เพื่ออัพโหลดโปรแกรม

  • nodemcu ใช้สัญญาณ DRT และ RTS ในการอัพโหลดโปรแกรม

2. ข้อดี ข้อเสียที่ต่างกัน ?

  • ใช้สัญญาณเพียงเส้นเดียวโอกาศผิดพลาดมีมากกว่า แบบ nodemcu เพราะอาศัยการจับขอบสัญญาณ และคายประจุของตัวเก็บประจุ

  • แบบ nodemcu ใช้สัญญาณ 2 เส้นในการเข้าโหมดอัพโหลดโปรแกรมมีความแม่นยำมากกว่าแบบ nodemcu

บอร์ดที่ใช้ Reset Method แบบ ck

บอร์ดที่ใช้ Reset Method แบบ nodemcu

บทความนี้สามารถเป็นแนวทางในการออกแบบวงจรสำหรับท่านที่ต้องการความท้าทายและอยากออกพัฒนาบอร์ด ESP8266 ของตัวเอง แล้วพบกับบอร์ด

การอัพโหลดโปรแกรมและ Reset Method บน ESP8266

โลกของ Hardware ยังมีอะไรให้ศึกษาอีกเยอะ เรามาทำความรู้จักการ Upload Program ไปยัง Flash Memory ของ ESP8266 และ วิธีการ Auto reset ทั้ง 2 แบบบนตัว ESP8266 …ลุยกันเลย

การ Flash โปรแกรม หรือ อัพโหลดโปรแกรม ไปยังไมโครคอนโทรเลอร์มีหลักการคล้ายกันคือข้อมูลของโปรแกรมจะถูกนำไปเก็บไว้ในตัว Flash Memory (หน่วยความจำถาวร)

สำหรับบอร์ด ESP8266 นั้นมีความแตกต่างจากบอร์ด Arduino ทั่วไป เนื่องจากมี Flash Memory แยกออกมามีการสื่อสารกับชิพ ESP8266 ผ่านการเชื่อมต่อแบบ SPI ที่สามารถเปลี่ยนชิพ Flash Memory เองได้เช่น ขนาด 512kB 1MB 4MB เป็นต้น ทำให้ขั้นตอนการอัพโหลดโปรแกรมสำหรับบอร์ด ESP8266 มีความแตกต่างจากขั้นตอนปกติของบอร์ด Arduino เล็กน้อย

บอร์ด Arduino ส่วนใหญ่จะรีเซ็ตตัวเองอัตโนมัติเมื่อมีการอัพโหลดโปรแกรมใหม่และจะเข้าสู่โหมดการอัพโหลดโปรแกรมโดยอัตโนมัติ

บอร์ด ESP8266 ที่มีขายตามท้องตลาดส่วนมากจะถูกออกแบบวงจร Auto Reset เพื่อให้การอัปโหลดโปรแกรมใหม่และการเข้าสู่โหมดการอัพโหลดโปรแกรมโดยอัตโนมัติมีความสะดวกสะบายมากยิ่งขึ้น แต่…ถ้าหากเราใช้งานโมดูล ESP8266 ตัวเปล่า เราจำเป็นต้องต่อวงจรให้ ESP8266 ทำงาน และป้อนโหมดการอัพโหลดโปรแกรมด้วยตัวเอง

เงื่อนไขการอัพโหลดโปรแกรมบนตัว ESP8266

รูปตัวอย่าง ESP-WROOM-02

ตัวอย่างโมดูล ESP-WROOM-02

การเข้าสู่โหมด UART Download Mode หรือ (โหมดอัพโหลดโปรแกรม)

ขา GPIO0 ต้องถูกเชื่อมต่อลง GND (ได้รับลอจิก “0”) และรีเซ็ตที่ขา RST (ปกติขา RST จะต้องถูกต่อ Pull-up กับไฟ 3.3V หรือ ได้รับลอจิก “1” เมื่อต้องการ Reset ต้องช๊อตขา RST ลง GND ให้ขา RST ได้รับลอจิก “0”)

(GPIO0 ได้รับลอจิก “0”) กดปุ่มรีเซ็ตค้างไว้ >>> กดปุ่ม GPIO0 ค้างเอาไว้

>>> ปล่อยปุ่มรีเซ็ต ESP8266 จะเริ่มต้นในโหมดอัพโหลดโปรแกรม

การเข้าสู่โหมด Flash Boot Mode หรือ (โหมดเริ่มทำงานของโปรแกรม)

ขา GPIO0 ต้องถูกเชื่อมต่อกับไฟ 3.3V (ได้รับลอจิก “1”) และรีเซ็ตที่ขา RST (ปกติขา RST จะต้องถูกต่อ Pull-up กับไฟ 3.3V หรือ ได้รับลอจิก “1” เมื่อต้องการ Reset ต้องช๊อตขา RST ลง GND ให้ขา RST ได้รับลอจิก “0”)

(GPIO0 ได้รับลอจิก “1” ) กดปุ่มรีเซ็ต ESP8266 จะเริ่มต้นในโหมดการทำงาน

เงื่อนไขง่าย ๆ สำหรับการ อัพโหลดโปรแกรม และให้โปรแกรมเริ่มทำงาน ดูเหมือนวุ่นวายต้องทำขั้นตอน 1–2 ก็แค่การอัพโหลดโปรแกรมธรรมดาทำไมชีวิตยากจัง !

อย่างไรก็ตามมีวงจรง่าย ๆ ที่เราสามารถใช้เพื่อรับการอัปโหลดโปรแกรมโดยอัตโนมัติ

พระเอกของงานนี้ ตัวอย่างตัวแปลงสัญญาณ USB-to-Serial FTDI

Adafruit CP2104 Friend — USB to Serial Converter

ทำความรู้จัก Reset Method บน ESP8266

การสั่งงาน Reset ตัว ESP8266 แบบอัตโนมัติเกิดจากโมดูลตัวแปลง USB-to-Serial ส่งสัญญาณไป Reset ให้กับตัว ESP8266 เข้าสู่โหมดต่าง ๆ ที่ต้องการ

วิธีการรีเซ็ตอัตโนมัติของตัว ESP8266 (Auto Reset)

ออโต้รีเซ็ต มี 2 วิธีดังนี้

1. Reset Method แบบ ck

2. Reset Method แบบ nodemcu

1. Reset Method แบบ ck

ใช้กับตัวแปลง USB-to-Serial ที่มีสายควบคุม DTR เพียงเส้นเดียวตัวแปลง USB-to-Serial จะส่งสัญญาณรีเซ็ตโดยอัตโนมัติ เมื่อส่งข้อมูลไปยัง ESP8266 สัญญาณ DTR จะทำงาน Active Low หรือส่งลอจิก “0” เป็นช่วงเวลาสั้น ๆ เพื่อใช้ในการรีเซ็ต และ GPIO0 จะถูกต่อร่วมกับขา RX ของ โมดูลESP8266 ตามตัวอย่างสัญญาณ DTR ที่ปรากฎในหน้าจอเครื่องมือวัด Oscilloscope

สัญญาณ Reset แบบ CK ที่ขา DTR และขา RTS

วงจร Reset แบบ ck

การทำงานของวงจร

ในสภาวะปกติสัญญาณ DTR จะมีแรงดัน 3.3V จาก USB-to-Serial และ สัญญาณที่ขารีเซ็ตมีแรงดัน 3.3V เนื่องจากมีตัวต้านทานแบบ (Pull-up) R2 ซึ่งหมายความว่าแรงดันไฟฟ้าที่ค้างอยู่ในตัวเก็บประจุคือ 0V เมื่อไหร่ก็ตามที่ขา DTR มีแรงดันเป็น 0V แรงดันไฟฟ้าที่ตัวเก็บประจุจะยังคงเป็น 0V ซึ่งหมายความว่าสัญญาณที่ขา RESET จะอยู่ที่ 0V + 0V = 0V และการรีเซ็ตจะเริ่มทำงาน

แต่เมื่อ C1 เริ่มต้นการชาร์จอีกครั้งผ่าน R2 และเก็บประจุจนเต็มที่แรงดันถึง 3.3V แต่ขา DTR ยังคงมีแรงดันที่ 0V ซึ่งแรงดันขอบตัวเก็บประจุอยู่ที่ 3.3V เมื่อสัญญาณ DTR มีแรงดันเพิ่มขึ้นเป็น 3.3 V อีกครั้งสัญญาณที่ขา RESET จะมีแรงดันทวีคูณขึ้นมาชั่วขณะที่ 3.3V + 3.3V = 6.6V จากนั้นตัวเก็บประจุจะเริ่มคายประจุกลับเข้าสู่ 3.3V ปกติอีกครั้งผ่าน R2

ปัญหาคือ :แรงดันชั่วขณะ 6.6V อาจทำให้ ESP เสียหายได้ ดังนั้นเราจึงต้องหาวิธีการกำจัดสัญญาณเหล่านี้

จำลองสัญญาณ DTR และ RESET

สัญญาณสีน้ำเงินเป็นแรงดันไฟฟ้าที่ขา DTR และสัญญาณสีเหลืองคือแรงดันไฟฟ้าบนขา RESET

การแก้ปัญหาคือ : การเพิ่มไดโอดต่อขนานเข้าไปกับตัวต้านทาน R2 จะช่วยให้ในขณะที่ตัวเก็บประจุจะคายประจุออกมาจะคายได้ไวขึ้นตามรูปข้างล่าง

เพิ่มไดโอด D1 เข้าไปในวงจร

จำลองการทำงานขอวงจรอีกครั้งและสังเกตุสัญญาณสีเหลืองว่ามีการเปลี่ยนแปลงหรือไม่

จำลองสัญญาณ DTR และ RESET ที่เพิ่มไดโอดเข้าไป

จากการทดลองยอดแรงดันที่เกินเข้ามา 6.6V แคบลงมากตามที่เราต้องการ ซึ่งในอุดมคติเป็นไปไม่ได้ที่จะให้ตัวเก็บประจุคายประจุในทันที ซึ่งจะต้องใช้ไดโอดที่มีความต้านทานแบบ 0 Ω และมีกระแสอนันต์ซึ่งเป็นไปไม่ได้

นอกจากนี้แรงดันพีคเฉลี่ยมีปริมาณลดลงเหลือ ประมาณ 3.9 โวลต์ เนื่องจากไดโอดจะเริ่มทำงานเมื่อแรงดันไฟฟ้าสูงกว่า ~ 600mV หรือ 0.6V ล่าสุดที่เหลืออยู่ในตัวเก็บประจุ (3.3V+0.6 = 3.9 V) อย่างไรก็ตามวงจรที่เพิ่มไดโอดเข้ามาจะช่วยป้องกันแรงดันเกินที่จะทำให้ตัว ESP8266 เสียหายได้ ที่ให้สามารถเชื่อมต่อกับ ESP8266 ได้

1. Reset Method แบบ nodemcu

ใช้กับตัวแปลง USB-to-Serial ที่มีสายควบคุม DTR และ RTS ตัวโมดูล USB-to-Serial จะส่งสัญญาณ RTS โดยอัตโนมัติก่อนเพื่อสั่ง Reset ตัว ESP8266 จากนั้นจะส่งสัญญาณ DTR ตามไปในระยะเวลาใกล้เคียงกัน ตามเงื่อนไข Reset 1 ครั้ง แล้ว กด GPIO0 ค้างใว้จนกว่าจะมีการเริ่มอัพโหลดโปรแกรม ตามตัวอย่างสัญญาณ DTR และ RTS ที่ปรากฎในหน้าจอเครื่องมือวัด Oscilloscope

สัญญาณ Reset แบบ CK ที่ขา DTR และขา RTS

วงจร Auto Reset แบบ nodemcu

ตารางความจริง

การทำงานของวงจร

ในสภาวะปกติสัญญาณ DTR และ RTS จะมีแรงดัน 3.3V จาก USB-to-Serial เริ่มต้นการทำงานตัว USB-to-Serial จะส่งสัญญาณ RST เส้นสีฟ้าเข้ามาก่อนเป็นลอจิก “0” เพื่อนให้ตัวโมดูล ESP8266 ถูก Reset จากนั้นจะส่ง สัญญาณ DRT เส้นสีเหลืองตามมา เป็นลอจิก “0” ค้างไว้ระยะเวลาหนึ่ง ซึ่งระหว่างที่สัญญาณ DRT กำลังถูกส่งเข้ามา สัญญาณ RST จะถูกเปลี่ยนเป็นลอจิก “1” หมายความว่า Reset แค่ครั้งเดียวตามตารางความจริงของวงจร

จะเห็นว่าวิธี Reset Method แบบ nodemcu ไม่ต้องสนใจการคายประจุเลยเป็นการ Reset ที่ธรรมชาติที่สุดตามเงื่อนไข และวิธีนี้เป็นวิธีที่ดีที่สุด แต่ปัญหาคือเราต้องเข้าถึงสัญญาณทั้ง RTS และ DTR และเลือกใช้ชิพ USB-to-Serial ให้เหมาะสม

สุดท้ายเลือกวิธีการรีเซ็ต Reset Method ให้ถูกต้องกับบอร์ดที่ใช้งาน

ตามที่ได้กล่าวไว้ข้างต้นมีวิธีการต่าง ๆ สำหรับการรีเซ็ตอัตโนมัติและโปรแกรมอัตโนมัติ

ถ้าเราใช้วิธีแรก (ใช้เครื่องตรวจจับขอบสัญญาณ) เราควรใช้ ‘ck’

ถ้าเราใช้วงจรสองทรานซิสเตอร์ให้เลือก ‘nodemcu’

ถ้าวงจร Auto Reset ไม่ทำงานเราก็สามารถ สั่งรีเซ็ตเองตามเงื่อนไขได้เลย

บทสรุป

Reset Method แบบ ck กับ nodemcu ต่างกันยังไง ?

ck ใช้สัญญาณ DRT เพียงเส้นเดียวเข้าไปสั่ง Reset เพื่ออัพโหลดโปรแกรม

nodemcu ใช้สัญญาณ DRT และ RTS ในการอัพโหลดโปรแกรม

2. ข้อดี ข้อเสียที่ต่างกัน ?

ใช้สัญญาณเพียงเส้นเดียวโอกาศผิดพลาดมีมากกว่า แบบ nodemcu เพราะอาศัยการจับขอบสัญญาณ และคายประจุของตัวเก็บประจุ

แบบ nodemcu ใช้สัญญาณ 2 เส้นในการเข้าโหมดอัพโหลดโปรแกรมมีความแม่นยำมากกว่าแบบ nodemcu

บอร์ดที่ใช้ Reset Method แบบ ck

Espressolite V2.0

บอร์ดที่ใช้ Reset Method แบบ nodemcu

Nodemcu เวอร์ชันต่าง ๆ

Wemos

Adafruit Feather HUZZAH

ESPino

Nano32

Etc. และอื่น ๆ

บทความนี้สามารถเป็นแนวทางในการออกแบบวงจรสำหรับท่านที่ต้องการความท้าทายและอยากออกพัฒนาบอร์ด ESP8266 ของตัวเอง แล้วพบกับบอร์ด