มาเริ่มกันเลย!

ในบทเรียนนี้ เราจะมาเรียนรู้วิธีใช้ Arduino IDE ในการโปรแกรมบอร์ด NodeMCU กัน
NodeMCU คืออะไร?
NodeMCU คือแพลตฟอร์ม IoT แบบโอเพ่นซอร์ส ประกอบด้วยเฟิร์มแวร์ที่รันบนชิป ESP8266 Wi-Fi SoC จาก Espressif Systems และฮาร์ดแวร์ที่ใช้โมดูล ESP-12 เป็นฐาน ชื่อ "NodeMCU" โดยทั่วไปจะหมายถึงเฟิร์มแวร์มากกว่าชุดพัฒนาตัวบอร์ด เฟิร์มแวร์ตัวนี้ใช้ภาษาสคริปต์ Lua ในการเขียนโปรแกรม
ผู้พัฒนา: ESP8266 Opensource Community
ประเภท: บอร์ดไมโครคอนโทรลเลอร์ชิ้นเดียว
ระบบปฏิบัติการ: XTOS ใช่แล้ว! โดยปกติ NodeMCU จะใช้ภาษา Lua ในการเขียนโปรแกรม แต่ในที่นี้ เราจะมาเรียนรู้วิธีโปรแกรม NodeMCU โดยใช้ภาษา C++ ของ Arduino กัน
-- Pin definition local pin = 7 -- GPIO 13local status = gpio.LOWlocal duration = 1000 -- 1 second duration for timer
-- Initialising pingpio.mode(pin, gpio.OUTPUT)gpio.write(pin, status)
-- Create an intervaltmr.alarm(0, duration, 1, function () if status == gpio.LOW then status = gpio.HIGH else status = gpio.LOW end
gpio.write(pin, status)end)
โค้ดด้านบนคือตัวอย่างสคริปต์ Lua สำหรับทำให้ LED ที่ต่อกับขาที่ 7 (ซึ่งก็คือ GPIO 13 ของ NodeMCU) กะพริบ อย่างที่เห็นนะฮะ หมายเลขขาตัวจริงกับหมายเลข GPIO ของ NodeMCU มันคนละอันกันเลย ด้านล่างนี้คือแผนผังการจับคู่ขา (Pinout) ดูให้ดีๆ อย่าเสียบผิดล่ะ


มาเขียนโค้ดใน Arduino IDE กัน
**หมายสำคัญมาก!:** เวลาเราใช้ NodeMCU กับ Arduino IDE มันจะเขียนทับเฟิร์มแวร์เดิมของ NodeMCU เลยนะจ๊ะ ถ้าอยากได้ Lua SDK กลับคืนมา ต้องใช้โปรแกรม "flasher" ในการติดตั้งเฟิร์มแวร์ใหม่เท่านั้น อย่าลืมล่ะ
ขั้นตอนที่ 1: ต่อบอร์ด NodeMCU เข้ากับ PC หรือแล็ปท็อปด้วยสาย USB micro เอาให้แน่นๆ
ขั้นตอนที่ 2: ดาวน์โหลดและติดตั้งไดรเวอร์ให้เรียบร้อย ไดรเวอร์สำหรับ Mac, Linux หรือ Windows หาโหลดได้ตามเว็บทั่วไป
ขั้นตอนที่ 3: เปิด Arduino IDE ขึ้นมา แล้วเข้าไปที่ Preferences ในเมนู File จากนั้นคัดลอกลิงก์นี้ http://arduino.esp8266.com/stable/package_esp8266com_index.json ไปวางในช่อง Additional Board Manager URLs ตามภาพด้านล่าง แล้วกด OK

ขั้นตอนที่ 4: ติดตั้งบอร์ด เปิด Board Manager จาก Tools -> Board -> Board Manager แล้วค้นหาคำว่า "nodemcu"

จากนั้นเลือกเวอร์ชันล่าสุดจากเมนู dropdown แล้วกด Install รอติดตั้งเสร็จแล้วรีสตาร์ท Arduino IDE อีกที

ถ้าติดตั้งทุกอย่างถูกต้องแล้ว น้องควรจะเห็นบอร์ดที่พึ่งติดตั้งใหม่โผล่มาในเมนู Tools -> Board ตามภาพเลยจ้า

มาทดสอบกันเถอะ
มาเริ่มทดสอบการตั้งค่าของเราด้วยการรันโปรแกรมกระพริบไฟ (blink sketch) บน NodeMCU กันดีกว่าขั้นตอนที่ 1: เปิดตัวอย่างโปรแกรม blink จากส่วน "example for NodeMCU 1.0" ในเมนูตัวอย่าง


ขั้นตอนที่ 2: เชื่อมต่อ NodeMCU กับคอมพิวเตอร์ของน้องด้วยสาย micro USB จัดไปวัยรุ่น
ขั้นตอนที่ 3: เลือกบอร์ดและพอร์ตให้ถูก แล้วอัปโหลดโปรแกรมไปเลย แค่นี้เอง! ตอนนี้ LED บนบอร์ดควรจะเริ่มกระพริบแล้ววว

การเชื่อมต่อ Wi-Fi ครั้งแรก (Hello World ของ IoT)
การทดสอบด้วย LED กระพริบก็โอเคแล้ว แต่การทดสอบที่แท้จริงคือการรันไลบรารี `ESP8266WiFi` นี่แหละ น้องแค่เขียนโค้ดประมาณนี้: `WiFi.begin("ชื่อไวไฟของน้อง", "รหัสผ่าน");` ถ้า IDE คอมไพล์ผ่าน อัปโหลดลงบอร์ดทาง USB ได้ แล้ว Serial Console พิมพ์ข้อความประมาณ `"Connected! IP Address: 192.168.1.15"` ออกมา... ยินดีด้วย! น้องเพิ่งปลดล็อกโลกทั้งใบของวิศวกรรม Internet of Things แล้ววว สู้งานนะน้อง!
ข้อจำกัดทางฮาร์ดแวร์
บอร์ด ESP8266 NodeMCU: มีพอร์ต Micro-USB มาให้สำหรับอัปโหลดโปรแกรมได้สะดวกมาก
คำเตือนเรื่องแรงดัน 3.3V: บอร์ดตัวนี้ทำงานที่ 3.3V เท่านั้นนะ ห้ามช็อตนะตัวนี้! การส่งสัญญาณ 5V จากเซนเซอร์ตรงๆ เข้าที่ขา data ของมันสามารถทอดชิปให้สุกได้ถาวรเลย จำไว้เสมอว่าให้ใช้ตัวแปลงระดับลอจิก (logic-level converter) ตอนที่ต้องเชื่อมต่อกับโมดูล 5V!
วิดีโอสอน
แก้ไขปัญหาเบื้องต้น
ถ้าน้องอัปโหลดโปรแกรมเรียบร้อยแล้วแต่ LED ยังไม่ยอมกระพริบ ให้ลองไปในไฟล์ sketch เปลี่ยนจาก "LED_BUILTIN" เป็น "D4" ตามภาพด้านล่างนี้เลย

ที่มาของภาพจากแหล่งข้อมูลที่เกี่ยวข้อง