ESP8266 - การตั้งค่าและการเชื่อมต่อ WiFi ครั้งแรก
ESP8266 - Sunbathing
ถ้าคุณเพิ่งได้โมดูล ESP8266 มาอยู่ในมือ แต่ยังสับสนว่าจะเริ่มต้นอย่างไร หรือจะทำให้มันทำงานกับโปรเจกต์ของคุณได้อย่างไร ไม่ต้องกังวล! ผมเคยเป็นมาก่อน และวันนี้ผมจะมาแบ่งปันเทคนิคการใช้งานพื้นฐานที่จะเปลี่ยนงานที่ยากให้กลายเป็นเรื่องง่าย บทความนี้เป็นคู่มือฉบับสมบูรณ์ที่จะช่วยให้คุณก้าวแรกเข้าสู่โลกของ IoT (Internet of Things) และเชื่อมต่อโปรเจกต์ของคุณเข้ากับเครือข่าย WiFi ได้อย่างมืออาชีพ
(สำหรับใครที่สนใจสำรวจโปรเจกต์ ESP8266 ที่ซับซ้อนขึ้น สามารถเยี่ยมชมบล็อกได้ที่ virginrobotics.blogspot.com)
ทำไมต้อง ESP8266?
หากคุณเคยฝันที่จะควบคุมโปรเจกต์ของคุณผ่านอินเทอร์เน็ต ไม่ว่าจะเป็นการสั่งงาน Servo motor, การเปิด/ปิด LED หรือการสร้างระบบ Smart Home ขนาดเล็ก ESP8266 คือกุญแจสำคัญที่จะทำให้ความฝันนั้นเป็นจริง มันทำงานคล้ายกับ Bluetooth module อย่าง HC-05 แต่มีความซับซ้อนและทรงพลังกว่ามาก เนื่องจากสามารถพาโปรเจกต์ของคุณก้าวข้ามข้อจำกัดด้านระยะทางผ่านเครือข่ายไร้สายได้
สำหรับมือใหม่ ESP8266 อาจดูใช้งานยากในตอนแรก (ผมเองก็เคยงมอยู่เป็นเดือน!) แต่บทความนี้จะสรุปเฉพาะเนื้อหาที่จำเป็นและวิธีที่รวดเร็วที่สุดเพื่อให้มันเริ่มทำงานได้
ข้อกำหนดด้าน Hardware
ก่อนที่คุณจะเริ่มต้น คุณจะต้องมีส่วนประกอบเหล่านี้เพื่อให้ระบบทำงานได้อย่างเสถียร:
- ESP8266 Module (รุ่น ESP-01): พระเอกของงานนี้
- Resistors ขนาด 1k Ohm (3 ตัว): ใช้เพื่อสร้าง Voltage Divider เพื่อลดแรงดันไฟฟ้าสัญญาณ TX จาก Arduino (5V) ลงเหลือ 3.3V ป้องกันความเสียหายของโมดูล
- Breadboard Power Supply Module: (แนะนำเป็นอย่างยิ่ง) เนื่องจาก ESP8266 กินกระแสไฟฟ้าสูงในระหว่างการส่งข้อมูล WiFi (สูงสุด 200-300mA) และขา 3.3V บนบอร์ด Arduino มักจะไม่สามารถจ่ายกระแสไฟฟ้าได้เพียงพอ ทำให้โมดูลรีเซ็ตบ่อยครั้ง
- Arduino UNO Board: ใช้เป็นตัวกลางสำหรับการสื่อสารและการโปรแกรม
- Jumper Wires (แบบ Male to Male และ Female to Male)
- Breadboard
การแยกรางไฟ 5V และ 3.3V บน Breadboard เพื่อความปลอดภัย
การประกอบวงจร
คำเตือนสำคัญ: ESP8266 ทำงานที่ 3.3V เท่านั้น ห้ามต่อ 5V จาก Arduino เข้ากับขา VCC โดยตรง หรือส่งสัญญาณ Logic 5V เข้าที่ขา RX โดยตรงเด็ดขาด เพราะจะทำให้โมดูลเสียหายทันที!
รายละเอียดขาสำคัญ:
- VCC: ต่อเข้ากับ 3.3V (จากแหล่งจ่ายไฟภายนอก)
- GND: ต่อ Ground ทั้งหมดเข้าด้วยกัน
- CH_PD (Enable): ต้องต่อเข้ากับ 3.3V เพื่อเปิดใช้งานโมดูล
- TX: ต่อเข้ากับขา 2 ของ Arduino (ผ่าน SoftwareSerial)
- RX: ต่อเข้ากับขา 3 ของ Arduino (ต้องผ่านวงจร Voltage Divider เพื่อลดเหลือ 3.3V)
หมายเหตุ: สำหรับการจ่ายไฟ บอร์ด Arduino สามารถรับไฟจากขา Vin ได้หากคุณใช้แหล่งจ่ายไฟภายนอก
Source Code
เราจะใช้ Arduino เป็น "สะพาน" สำหรับการสื่อสารระหว่าง Serial Monitor ของคอมพิวเตอร์กับ ESP8266 โดยใช้ไลบรารี SoftwareSerial เพื่อแยกขาสำหรับการสื่อสารออกจาก Hardware Serial ปกติ
#include <SoftwareSerial.h>
// Define RX and TX pins for communication with ESP8266
// Arduino Pin 2 (RX) connects to ESP8266's TX
// Arduino Pin 3 (TX) connects to ESP8266's RX (via Voltage Divider)
SoftwareSerial ESPserial(2, 3);
void setup()
{
// Initialize Serial Monitor at 115200 baud
Serial.begin(115200);
// Initialize Software Serial for ESP8266
// Factory default is usually 115200 baud
ESPserial.begin(115200);
Serial.println("");
Serial.println("Remember to set Both NL & CR in the serial monitor.");
Serial.println("Ready");
Serial.println("");
}
void loop()
{
// Read data from ESP8266 and send to Serial Monitor
if ( ESPserial.available() ) { Serial.write( ESPserial.read() ); }
// Read commands from Serial Monitor and send to ESP8266
if ( Serial.available() ) { ESPserial.write( Serial.read() ); }
}
การทดสอบด้วย AT Commands
เมื่ออัปโหลดโค้ดเสร็จแล้ว ให้เปิด Serial Monitor และตั้งค่ามุมขวาล่างเป็น "Both NL & CR" ที่ความเร็ว 115200 baud
- พิมพ์
ATแล้วกด Enter - หากโมดูลทำงานถูกต้อง จะตอบกลับมาว่า
OK
ขั้นตอนที่ 1: การเปลี่ยน Baud Rate
เนื่องจาก SoftwareSerial ทำงานได้ไม่เสถียรนักที่ 115200 baud (ซึ่งอาจทำให้เกิดข้อมูลขยะ) เราจึงควรเปลี่ยนความเร็วของ ESP8266 เป็น 9600 baud เพื่อความแม่นยำสูงสุด
ส่งคำสั่ง:
AT+UART_DEF=9600, 8, 1, 0, 0
หากได้รับ OK แสดงว่าความเร็วได้ถูกเปลี่ยนแล้ว ตอนนี้ข้อมูลบนหน้าจอจะอ่านไม่ออกเนื่องจากความเร็วไม่ตรงกัน ให้ปิด Serial Monitor และกลับไปแก้ไขโค้ดใน Arduino IDE:
เปลี่ยนทั้ง Serial.begin(115200) และ ESPserial.begin(115200) เป็น 9600 จากนั้นอัปโหลดโค้ดอีกครั้ง
ขั้นตอนที่ 2: การเชื่อมต่อ WiFi
เมื่อการสื่อสารกลับมาทำงานได้ที่ 9600 baud แล้ว ให้ทดสอบโดยการส่ง AT อีกครั้งเพื่อยืนยัน
จากนั้น ตั้งค่าโหมดการทำงานเป็น Station (Client) mode ด้วยคำสั่ง:
AT+CWMODE=1
ขั้นตอนที่ 3: การสแกนหาและเชื่อมต่อเครือข่าย
ลองสแกนหาเครือข่าย WiFi ใกล้เคียงด้วยคำสั่ง:
AT+CWLAP
เมื่อคุณพบชื่อ WiFi ของคุณแล้ว ให้เชื่อมต่อโดยใช้คำสั่ง (แทนที่ด้วยชื่อ WiFi และรหัสผ่านของคุณ):
AT+CWJAP="Your WiFi Name", "Your Password"
หากคุณเห็น WIFI CONNECTED และ WIFI GOT IP ขอแสดงความยินดีด้วย! โมดูลของคุณเชื่อมต่ออินเทอร์เน็ตแล้ว
สุดท้าย ตรวจสอบ IP Address ของโมดูลโดยใช้คำสั่ง:
AT+CIFSR
บทสรุปและขั้นตอนถัดไป
ตอนนี้คุณมีโมดูล ESP8266 ที่พร้อมใช้งานและเชื่อมต่อกับโลกภายนอกแล้ว นี่คือประตูบานแรกสู่การสร้างโปรเจกต์ IoT ที่ซับซ้อนยิ่งขึ้น ในบทความถัดไป เราจะเรียนรู้วิธีการควบคุม Servo motor ผ่านหน้าเว็บโดยใช้ ESP8266 และ Arduino!
ติดตามโปรเจกต์เจ๋งๆ เพิ่มเติมได้ที่: virginrobotics.blogspot.com