ขาของ NodeMCU V2 (ESP-12E) กับ Arduino IDE
สวัสดีครับ วันนี้จะมาพูดถึง NodeMCU V2 (ESP-12E) กันนะครับ ซึ่งเป็นที่รู้จักกันดีอยู่แล้ว
ว่าเป็น Micro-controller ที่เกิดมาเพื่องาน IoT (Internet of Things) อย่างถ่องแท้ โดยตัวบอร์ดนี้
จะมีโมดูล WiFi แบบ ESP8266 อยู่ด้วย ทำให้เป็นไมโครคอนโทรลเลอร์ที่มีคุณสมบัติในการเชื่อมต่อ
กับอินเทอร์เน็ต ผ่านระบบ Wi-Fi ซึ่งตัวบอร์ดนี้ ใช้ Lua ในการโปรแกรม แต่นอกจากนั้น ก็ยังสามารถ
ใช้งานร่วมกับ Arduino IDE ได้ แต่ทว่า ขาต่างๆของตัวบอร์ดนั้น เป็นแบบ GPIO เมื่อนำมาใช้
กับ Arduino จะมีหมายเลขของขาต่างๆ ไม่ตรงกับที่เห็นบนบอร์ด จากการทดลองของผม
โดยใช้โค้ด Blink และหลอด LED เพื่อเช็คขาต่างๆ ปรากฏว่า...
pin1 = หลอดไฟสีฟ้าที่กระพริบ บนโมดูล ESP8266
pin2 = pin4
pin3 = ไม่มีอะไร
pin4 = pin2
pin5 = pin1
pin6 = ไม่มีอะไร
pin7 = ไม่มีอะไร
pin8 = ไม่มีอะไร
ดังนั้น ในการสั่งงานขาต่างๆของ NodeMCU นั้นจึงมีการสั่งที่แตกต่างออกไปจากเดิม
เช่นปกติเราจะสั่งให้ขา D5 มี Logic เป็น High (3.3v) ด้วยคำสั่งแบบนี้
digitalWrite(5,HIGH);
จากคำสั่งข้างต้น การที่สั่งขา D5 ให้มี Logic เป็น High (3.3v) นั้น แทนที่จะเป็นการสั่งขา D5 จริงๆ
กลายเป็นว่าเรากำลังสั่งขา D1 แทนซะงั้น (อ้าว = =") ที่เป็นอย่างงั้นก็เพราะว่า การที่เราสั่งเลข 5 นั้น
จะทำให้เข้าใจว่าเรากำลังสั่ง "GPIO 5" อยู่ และจากรูปข้างล่าง จะเห็นว่า ขา GPIO5 นั้น
ตรงกับ D1 อยู่ครับ ส่วน D5 จริงๆแล้ว จะเป็น GPIO14
ฉะนั้นหากจะสั่งขา D5 จริงๆแล้ว เราก็คงจะต้องใช้คำสั่ง
digitalWrite(14,HIGH);
จึงจะตรงกับขา D5 (ซึ่งเป็น GPIO14) จริงๆ เอาหละครับทีนี้ สับสนวุ่นวายกันแน่ๆ
จะสั่ง pin 5 แต่ดันต้องใส่ 14 = =" ปวดหัวตึ้บครับ 55555555555+
ขาต่างๆบน NodeMCU ไว้แล้ว (อยู่ในไฟล์ pins_arduino.h) โดยรายละเอียดนั้นเป็นดังนี้
static const uint8_t D0 = 16; static const uint8_t D1 = 5; static const uint8_t D2 = 4; static const uint8_t D3 = 0; static const uint8_t D4 = 2; static const uint8_t D5 = 14; static const uint8_t D6 = 12; static const uint8_t D7 = 13; static const uint8_t D8 = 15; static const uint8_t D9 = 3; static const uint8_t D10 = 1;
ดังนั้น หากต้องการจะสั่ง ขา D5 ให้มี Logic เป็น High (3.3v) ควรจะสั่งด้วยคำสั่งดังนี้
digitalWrite(D5,HIGH);
ซึ่งเมื่อสั่งแบบนี้ ไลบรารี่ จะทำการแปลความหมายของ D5 เป็น GPIO14
ที่ซึ่งตรงกับขาที่ 5 ของ NodeMCU พอดีครับ... ^_^ (แค่เติมตัว D ชีวิตก็เปลี่ยน 555+)
เซเรฟ 19:50 2/3/2559
D11
ตอบลบD12
อ่ะครับใช้ยังไง
ใช้ไม่ได้ครับ
ตอบลบhttp://wiki.modtronix.com/doku.php?id=tutorials:wireless:esp:esp8266:nodemcu_v1