สารบัญ:

ESP8266 การใช้พิน GPIO0/GPIO2/GPIO15: 4 ขั้นตอน
ESP8266 การใช้พิน GPIO0/GPIO2/GPIO15: 4 ขั้นตอน

วีดีโอ: ESP8266 การใช้พิน GPIO0/GPIO2/GPIO15: 4 ขั้นตอน

วีดีโอ: ESP8266 การใช้พิน GPIO0/GPIO2/GPIO15: 4 ขั้นตอน
วีดีโอ: How To Program ESP8266 With Arduino IDE 2024, พฤศจิกายน
Anonim
ESP8266 ใช้พิน GPIO0/GPIO2/GPIO15
ESP8266 ใช้พิน GPIO0/GPIO2/GPIO15

อัปเดต 1 กรกฎาคม 2018 - เพิ่มหมายเหตุเกี่ยวกับการเขียนโปรแกรมใหม่เมื่อ GPIO0 เป็นเอาต์พุต

นี่เป็นข้อความสั้นๆ เกี่ยวกับวิธีการใช้พิน GPIO0 / GPIO2 และ GPIO15 บนโมดูล ESP8266

อัปเดต: ดูวิธีใช้หมุด ESP8266-01 ด้วย

บทนำ

ESP8266 เป็นชิปที่เปิดใช้งาน wifi ราคาประหยัด มีโมดูลหลายประเภทและสามารถตั้งโปรแกรมได้หลายวิธี โมดูลทั้งหมดทำให้ GPIO0 และ GPIO2 สามารถเข้าถึงได้ โมดูลส่วนใหญ่ นอกเหนือจาก ESP8266-01 ยังทำให้ GPIO15 สามารถเข้าถึงได้ GPIO เหล่านี้ควบคุมวิธีการเริ่มต้นของโมดูลและจำเป็นต้องมีการจัดการพิเศษหากต้องการใช้งานเลย GPIO6-GPIO11 ยังต้องการการดูแลเป็นพิเศษตามที่อธิบายไว้ด้านล่าง

ขั้นตอนที่ 1: แฟลชพิน GPIO – GPIO6 ถึง GPIO11

บอร์ด ESP8266 ส่วนใหญ่มีชิปแฟลชเชื่อมต่อกับ GPIO6-GPIO11 บางส่วนหรือทั้งหมด โปรแกรมส่วนใหญ่ใช้หน่วยความจำแฟลชเช่นเดียวกับ RAM ดังนั้นหากคุณไม่ตรวจสอบให้แน่ใจว่ารหัสของคุณเรียกใช้จาก RAM เท่านั้น คุณจะไม่สามารถใช้หมุดเหล่านี้เพื่อวัตถุประสงค์อื่นได้

จำนวนพินที่แน่นอนที่ใช้ในช่วง GPIO6 ถึง GPIO11 ขึ้นอยู่กับประเภทของฮาร์ดแวร์แฟลชที่ใช้ในโมดูลของคุณ Quad IO ใช้ข้อมูล 4 บรรทัด (รวม 6 พิน) ความเร็วสูงสุด 4 เท่าของมาตรฐาน Dual IO ใช้ 2 บรรทัดสำหรับข้อมูล (ทั้งหมด 4 พิน) มาตรฐานใช้บรรทัดเดียวสำหรับข้อมูล (ทั้งหมด 3 พิน)

เว้นแต่คุณจะรู้ว่าบอร์ดของคุณต้องการอะไร คุณควรเพิกเฉยต่อ GPIO6 ถึง GPIO11 และอย่าอ้างอิงจากโค้ดของคุณ

ขั้นตอนที่ 2: พิน GPIO0, GPIO2 และ GPIO15

GPIO0, GPIO2 และ GPIO15 พิน
GPIO0, GPIO2 และ GPIO15 พิน

หมุดเหล่านี้จะกำหนดโหมดที่ชิปเริ่มทำงาน

สำหรับการเรียกใช้โปรแกรมตามปกติ GPIO0 และ GPIO2 จะต้องดึงขึ้นเป็น Vcc (3.3V) และต้องดึง GPIO15 ไปที่ GND โดยแต่ละตัวมีตัวต้านทานในช่วงตัวต้านทาน 2K ถึง 10K ตัวต้านทาน 2K ให้ภูมิคุ้มกันเสียงที่ดีกว่า OLIMEX ใช้ตัวต้านทาน 2K SparkFun ใช้ตัวต้านทาน 10K ฉันใช้ตัวต้านทาน 3K3

การตั้งค่าของอินพุตเหล่านี้จะถูกตรวจสอบระหว่างการเปิดเครื่อง (หรือรีเซ็ต) ของชิปเท่านั้น หลังจากนั้นหมุดจะพร้อมใช้งานทั่วไป แต่ตามที่กล่าวไว้ด้านล่าง การใช้งานถูกจำกัดโดยตัวต้านทานแบบดึงขึ้น/ลงภายนอกเหล่านี้

ขั้นตอนที่ 3: การใช้ GPIO0, GPIO2 และ GPIO15 เป็นเอาต์พุต

ใช้ GPIO0, GPIO2 และ GPIO15 เป็นเอาต์พุต
ใช้ GPIO0, GPIO2 และ GPIO15 เป็นเอาต์พุต

ดังที่กล่าวไว้ข้างต้น พินเหล่านี้จะมีตัวต้านทานเชื่อมต่อกับ VCC (GPIO0 และ GPIO2) หรือ GND สำหรับ GPIO15 อยู่แล้ว สิ่งนี้กำหนดวิธีการเชื่อมต่ออุปกรณ์ภายนอก เช่น รีเลย์หรือ LED+ตัวต้านทาน สำหรับ GPIO0 และ GPIO2 จะต้องเชื่อมต่อรีเลย์ภายนอกระหว่าง VCC และพิน เพื่อไม่ให้รบกวนการทำงานของตัวต้านทานแบบดึงขึ้น ในทางกลับกัน รีเลย์ภายนอกที่เชื่อมต่อกับ GPIO15 จะต้องเชื่อมต่อระหว่าง GND กับพิน เพื่อไม่ให้รบกวนการทำงานของตัวต้านทานแบบดึงลง

ในการเปิดใช้งานอุปกรณ์ภายนอก GPIO0 หรือ GPIO2 จะต้องถูกขับเคลื่อน LOW (Active LOW) ในขณะที่ GPIO15 จะต้องถูกขับเคลื่อน HIGH (Active HIGH)

แผนผังด้านบนแสดงวิธีใช้ GPIO0 และ GPIO2 และ GPIO15 เป็นเอาต์พุต วงจรนี้รวมถึงตัวต้านทานแบบดึงขึ้น/แบบดึงลงที่จำเป็นด้วย โปรดทราบว่าโมดูลรีเลย์ 5V ที่ขับเคลื่อนโดย GPIO0 เป็นแบบแยกออปโตและมีการเชื่อมต่อทั่วไปแยกต่างหากสำหรับอินพุต สิ่งสำคัญคือต้องไม่ใช้แรงดันไฟฟ้า 5V VCCA กับพิน ESP8266

วิธีการตั้งโปรแกรมใหม่เมื่อใช้ GPIO0 เป็นเอาต์พุต

หมายเหตุ: ต้องต่อสายดิน GPIO0 เพื่อเข้าสู่โหมดการเขียนโปรแกรม หากคุณสเก็ตช์ภาพให้สูง การลงกราวด์อาจทำให้ชิป ESP8266 เสียหายได้ วิธีที่ปลอดภัยในการตั้งโปรแกรม ESP8266 ใหม่เมื่อรหัสของคุณขับเอาต์พุต GPIO0 คือ:- a) ปิดบอร์ด b) GPIO0 สั้นถึง gnd c) เปิดบอร์ดซึ่งเข้าสู่โหมดโปรแกรมเนื่องจาก GPIO0 สั้น d) ลบ สั้นจาก GPIO0 ดังนั้นคุณจะไม่ลัดวงจรเอาต์พุตเมื่อโปรแกรมทำงาน e) ตั้งโปรแกรมบอร์ดใหม่ f) เปิดวงจรบอร์ดหากจำเป็น

ขั้นตอนที่ 4: การใช้ GPIO0, GPIO2 และ GPIO15 เป็นอินพุต

ใช้ GPIO0, GPIO2 และ GPIO15 เป็นอินพุต
ใช้ GPIO0, GPIO2 และ GPIO15 เป็นอินพุต

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

เคล็ดลับคืออย่าเชื่อมต่อสวิตช์ภายนอกโดยตรงจาก GPIO0 หรือ GPIO2 กับ GND แต่ให้เชื่อมต่อแทนกับพิน GPIO อื่นซึ่งถูกขับไปที่กราวด์ (เป็นเอาต์พุต) หลังจากที่ ESP8266 เริ่มทำงานเท่านั้น โปรดจำไว้ว่า เมื่อใช้เป็นเอาต์พุต พิน GPIO จะให้การเชื่อมต่อที่มีความต้านทานต่ำมากกับ VCC หรือ GND ขึ้นอยู่กับว่ามีการขับเคลื่อน HIGH หรือ LOW

ที่นี่จะพิจารณาเฉพาะ GPIO0 และ GPIO2 เท่านั้น เมื่อใช้วิธีนี้ คุณจะได้รับอินพุตเพิ่มเติมหนึ่ง (1) รายการโดยใช้ GPIO สอง (2) ตัว

วิธีการที่คล้ายกันนี้สามารถใช้สำหรับ GPIO15 ได้โดยใช้พิน GPIO อื่นเพื่อเชื่อมต่อสวิตช์ไปที่ +VCC แต่วิธีนี้ไม่ได้รับอินพุตพิเศษ คุณอาจใช้พิน GPIO อื่นเป็นอินพุตโดยตรงได้เช่นกัน

วงจรด้านบนใช้โมดูล ESP8266-01 เป็นตัวอย่าง โดยไม่ต้องใช้เคล็ดลับนี้ ESP8266-01 ไม่มีพินอิสระที่จะใช้เป็นอินพุต หากคุณใช้พิน RX/TX สำหรับการเชื่อมต่อ UART อยู่แล้ว

เนื่องจากเมธอด setup() ของสเก็ตช์จะทำงานหลังจากโมดูล ESP8266 เริ่มทำงานเท่านั้น จึงปลอดภัยที่จะทำให้เอาต์พุต GPIO0 ต่ำ จากนั้นจึงจัดเตรียมพื้นสำหรับ S1 ที่เชื่อมต่อกับ GPIO2 จากนั้น คุณสามารถใช้ digitalRead(2) ในส่วนอื่นๆ ในแบบร่างของคุณเพื่ออ่านการตั้งค่าสวิตช์

บทสรุป

บันทึกย่อนี้แสดงวิธีใช้ GPIO0, GPIO2 และ GPIO15 เป็นเอาต์พุตและวิธีใช้งานรับอินพุตพิเศษโดยใช้ GPIO0 และ GPIO2 ร่วมกัน

แนะนำ: