รู้จักแต่ล่ะรุ่นของ ESP8266
ESP-01 | ESP-02 | ESP-03 | ESP-04 | ESP-05 | |
Detail | โมดุลที่มี เสาอากาศแบบ PCB | โมดุลนี้ เข้ากันได้กับ Breadboards ใช้เสาอากาศข้างนอกได้ | เป็นโมดุล A SMT (Sufrace Mount Technology) มีเสาอากาศแบบ ceramic | โมดุลแบบ SMT (Sufrace Mount Technology) ใช้เสาอากาศนอกได้ | โมดุลเล็กสุด มีเพียงขา UART เท่านั้น |
Connector | 2×4 2.54 mm pitch header | Dual 1×4 2.54 mm pitch header in DIP form factor | Dual 1×7 2 mm pitch castellated pads | Dual 1×7 2 mm pitch castellated pads | Single 1×4 2.54 mm pitch header |
Antenna | built-in PCB-printed antenna | built-in U-FL connector for external antenna | built-in ceramic antenna | external antenna on pad | built-in U-FL connector for external antenna*] |
GPIO | 2 GPIOs: GPOI0/2 | 2 GPIOs: GPOI0/2 | 7 GPIOs: GPOI0/2/12/13/14/15/18 | 7 GPIOs: GPOI0/2/12/13/14/15/18 | No GPIO |
UART | UART URXD/UTXD | UART URXD/UTXD | UART URXD/UTXD | UART URXD/UTXD | UART URXD/UTXD |
RESET/CH_PD | RESET and CH_PD (powerdown) | RESET and CH_PD (powerdown) | RESET and CH_PD (powerdown) | RESET and CH_PD (powerdown) | No RESET nor CH_PD (powerdown) |
Power | VCC/GND | VCC/GND | VCC/GND | VCC/GND | VCC/GND |
Size | 14.2 mm W x 14.2 mm L | 14.7 mm W x 14.2 mm L | 12.2 mm W x 17.4 mm L | 12.0 mm W x 15.0 mm L | 14.2 mm W x 14.2 mm L |
GETTING STARTED
สำหรับกระบวนการทดสอบและใช้งานบ้าง ทางผมเรียบเรียงมาจาก electrodragon โดยพยายามอธิบายให้ง่ายที่สุด ให้คนชาวไทย ได้ทดลองกันได้
ทดสอบการใช้งาน ESP8266 ผ่าน Serial Port
ตัวโมดุล ESP8266 ใช้วิธีการเชื่อมต่อ แบบ AT Command ผ่าน Serial Port ดังนั้น การทดสอบแบบง่ายที่สุด อยากแนะนำ ให้ใช้ Serial Monitor เปิดดู Output ผ่านคอมพิวเตอร์กันก่อน สำหรับคนที่ยังไม่มี USB2Serial ทางผมแนะนำให้ใช้บอร์ด Arduino ก็ได้ครับ
การเชื่อมต่อ ผ่าน Serial มต่อผ่าน Arduino
- ต่อไฟเลี้ยง VCC and GND ของ โมดุล เข้ากับ ไฟ 3v3 and GND ของบอร์ด Arduino
- ต่อสัญญาณ RXD ของโมดุล เข้า TXD ของ Arduino,
- ต่อสัญญาณ TXD ของโมดุล เข้า RXD ของ Arduino สามารถต่อตัวต้านทาน หรือ มีไอซี Buffer ได้ เพื่อป้องกันการเสียหาย
- ขา CH_PD ต่อ Pullup ไว้ด้วย ตาม diagram ครับ
- ที่สำคัญมากๆ ถ้าใช้บอร์ด USB2Serial ของบอร์ด Arduino เราต้อง Upload โปรแกรมไฟกระพริบ เข้าไปในบอร์ดด้วย เพื่อให้แน่ใจว่า ตัวไอซี ไม่ได้ใช้ช่องสัญญาณ Serial port
- เปิด Serial Monitor ของ Arduino ตั้งค่า baud rate 115200 และปรับช่องในรูปให้เป็น ฺBoth NL&CR
- เรียกขวัญและกำลังใจ พิมพ์ AT+RST หรือ พิมพ์ AT แล้วกด Send ถ้ามีคำว่า ready หรือการตอบสนอง แสดงว่าบอร์ดเรายังใช้งานได้อยู่ ไปทดสอบ Step ต่อไป
Steps and note
- AT+RST เป็นการ Restart โมดุล จะ return “ready” กลับมาเมือพร้อมทำงานแล้ว
- AT+CWMODE=3 คำสั่งนี้จะเป็นการเลือกหมวดของโมดุล จะสามารทำงานได้ 3 โหมด 1 STA , 2 AP และ 3 AP+STA, ตอนนี้ให้ลองเลือก 3 ดูก่อนครับ
คำสั่งสำหรับการเชื่อมต่อเข้า Router
- AT+CWLAP ค้นหา wifi hotspot ที่เปิดใช้งานอยู่
- AT+CWJAP=“you ssid”, “password” เชื่อมต่อเข้ากับ Router hotspot ต้องมี เครื่องหมาย “‘ ด้วยนะครับ
- AT+CWJAP? เช็คว่าเชื่อมต่อได้หรือไม่
ถ้าพิมพ์ คำสั่งถูก และ เชื่อมต่อเข้ากับ Router ได้อย่างไม่มีปัญหา ตัว Router จะแจกไอพี มาให้เรา ผมว่าทำได้ ถึงตรงนี้ ก็ถือว่า เราประสบความสำเร็จล่ะ และทุกครั้งที่เปิดมา เราจะเชื่อมต่อ กับ Router เองอัตโนมัติ อีกด้วย
Setup ให้ ESP8266 เป็น TCP Server
- AT+CIPMUX=1 เปิดโหมดการเชื่อมต่อแบบหลายจุด
- AT+CIPSERVER=1,9999 Setup TCP server, ช่อง Port 9999
- AT+CIFSR ตรวจสอบไอพี
เปิดโปรแกรมที่เป็น Socket Test ในช่อง message พิมพ์คำว่า “Hello” แล้วกด Send
การส่งกลับ ใช้ AT command เช่นกัน
- AT+CIPSEND=0,5 ส่งข้อมูลในช่อง node 0 ซึ่งเป็นช่องที่ทาง socketTest เชื่อมต่อเข้ามา โดยส่งจำนวนข้อมูล 5 byte หลังจากกดคำสั่ง จะมีเครื่องหมาย “>” ให้พิมพ์ข้อมูลที่จะส่งต่อ
ในโหมดการเชื่อมต่อ ตัวโมดุลจะ unlink เองอัตโนมัติ เมือไม่มีการเชื่อมต่อในระยะเวลาที่กำหนด นอกจาก socketTest ใน windows แล้วยังมีอีกหลายโปรแกรมที่ใช้ทดสอบ socket ได้ อย่างเช่นใน android จะมีโปรแกรมชื่อ Socket Protocol ที่ก้อเชื่อมต่อได้เช่นกัน ใช้ smart phone แล้วดูเท่ขึ้นมาทันที่
Setup ให้ ESP8266 เป็น TCP Client
นอกจากทำให้โมดุล ESP8266 เป็น Server ยังทำให้ตัว ESP8266 เป็น Client เพื่อเชื่อมต่อกับ Server ได้อีกด้วย อันนี้วิธีการทดสอบ เราต้องสร้าง TCP Server ขึ้นมาก่อน ซึ่งเราใช้โปรแกรม SocketTest เลือก Tab ใน Server ตั้ง port เป็น 9999 แล้วกด Start Listening
จากนั้นในโมดุล พิมพ์คำสั่งดังนี้
- AT+RST reset connect ต่างสักรอบ
- AT+CIPMODE=1 คำสั่งนี้จะเป็นการเลือกหมวดของโมดุล จะสามารทำงานได้ 3 โหมด 1 STA , 2 AP และ 3 AP+STA, เลือกโหมด 1 STA ครับ
- AT+CIPMUX=0 เปิดโหมดการเชื่อมต่อแบบหลายจุด
- AT+CIPSTART=”TCP”,”192.168.1.35″,9999 ไปยัง Server บนเครื่องคอมพิวเตอร์ ในที่นี้ IP 192.168.1.35
- AT+CIPSEND=5 คำสั่ง ส่ง data จำนวนความยาว 5 byte หลังจากกดคำสั่ง จะมีเครื่องหมาย “>” ให้พิมพ์ข้อมูลที่จะส่งต่อ
เอาล่ะครับ จบแล้วกับการทดสอบ ESP8266 แบบง่ายๆ อยากจะให้เพิ่มเติมเข้าไปอ่าน electrodragon ยังมีอีกหลายคำสั่งที่ไม่ได้เอามาเขียนไว้ครับ เดี่ยวรอบหน้า จะพูดเรื่องเชื่อมต่อกับ Arduino ครับ
- Espressif AT Instruction Set(Chinese)
- ESP8266 Specifications(Chinese)
- NURspace แปล Manual จากจีนมาเป็นภาษาอังกฤษ
- Quick Arduino tutorial from Seeed
- Another tutorial including AT commands
- ESP8266 Forum
- Example Arduino/Android application
- Excellent example Arduino project
ผมลองใช้กับ freeduino ไม่สามารถ connect esp8266 ได้ครับ แต่ลองผ่าน ftdi ได้นะครับ
จริงมันเป็น Chip USB2SERIAL ตัวเดียวกันเลยนะครับ เป็น FTDI น่าจะใช้งานได้นะครับ
ถ้าใช้งานไม่ได้ น่าจะตอนนี้โปรแกรมบน freeduino น่าจะใช้งาน Serial อยู่คับ
วิธีแก้ ให้ flash โปรแกรมอย่างไฟกระพริบ เข้าไป มันจะได้ไม่ไปยุ่งกับ Serial ครับ
วันนี้ลองกับ uno ก็เป็นเหมือนกัน นิ่งสนิท ลองทั้งแบบ load ไฟกระพริบ แล้วพิมพ์ command และ แบบ load code server มาลองดู ก็เป็นแบบเดียวกันครับ เหมือนว่ามันไม่ส่งข้อมูลไปขา tx พอจะมีคำแนะนำอื่นมั้ยครับ
ใช้ได้แล้วครับ แต่ต้องใช้ txd ของโมดูล ต่อกับ txd ของ freeduino และ rxd ของโมดูล ต่อกับ rxd ของ freeduino ครับ กรณีนี้ใช้เฉพาะการทำ usb2serial ผ่าน freeduino นะครับ
ใช้ freeduino v1.16 ผมเขียนบน mac
มั่วอยู่พักนึงเหมือนกัน ตอนนี้ที่เทสแล้วได้คือ
VCC ต้องใช้ 5v
serial port ต้องเลือกเป็น /dev/cu.usbserial-A600f5Nc
ขา esp8266 txd ต้องต่อกับ txd ของ freeduino
ขา esp8266 rxd ต้องต่อกับ rxd ของ freeduino
ถึงจะใช้งาน usb2serial ได้ครับ
ลองทำผ่าน Uno และต่อแบบใน blog ที่ว่ามา ได้ผลแบบเดียวกับคุณ App corner เลยครับ
รบกวนว่า ต่อแบบ usb2serial ทำไงครับ ????
เพิ่มเติม ทีว่าเหมือนคือ นิ่งสนิท ครับ
อยากทราบว่า usb2serial ไฟเลี้ยง ใช้ เท่าไร ?
ตอนนี้ ใช้ได้แล้วครับ ใช้ level shifter( sparkfun) แล้วแต่แบบ tx – tx, rx – rx .
สรุปว่าต้องใช้ usb2serial ด้วยหรือเปล่าครับ แต่เห็นในรูปไม่ใช้
ไม่ทราบว่าราคาเท่าไรครับ
ผมใช้ Arduino uno ครับ พอผมต่อ Tx ของesp เข้ากับRx ของArduino ต่อ Rx ของesp เข้ากับ Tx ของArduino ผมกด AT หรือ AT+RST ก็ไม่ขึ้นเลยครับ ไม่มีการตอบสนอง แต่พอต่อ Tx-Tx Rx-Rx พิม AT มีผลตอบสนองครับ ผมจะทำยังไงดีครับแบบนี้
ไม่ทราบว่าขา CH_PD pull up หรือยังครับ
ต่อที่ 3.3 V แล้วนะครับ
ผมก็เป็นเหมือนกันคับ หลังจากสลับขาแล้วพอพิมพ์ AT หรืออะไรไปไฟสีฟ้าที่ ESP กระพริบนะคับ แต่ไม่มีอะไรแสดงใน Serial เลย
อัพไฟกระพริบลง uno แล้ว
CH_PH ต่อ 3.3v แล้วอะคับ
ทำไงดีฮะ ?
ผมต่อตามรูปแต่บอร์ด esp8266 ไฟขึ้นทั้งสองดวง แดงและฟ้าเลยครับ ส่ง command ไปก็เงียบ
มีรูปไหมครับ ผมว่าต้อง check ก่อน
สำหรับรุ่นใหม่ ตั้งความเร็ว 9600 ครับ
ถ้ายังไม่ขึ้นลองสลับสาย TX,RX ดูก่อนนะครับ ว่าส่งได้ไหม
ผมมือใหม่ครับ ลองต่ออีกทีคราวนี้ไฟสีฟ้าหายไปแล้วครับ สอบถามต่อครับ pullupคืออะไรครับ?
pullup แปลว่าดึงขึ้น เป็นการต่อให้อยู่ในสถานะไฟโลจิกไฮ ให้ต่อไปที่ไฟเลี้ยงโดยตรง หรือต่อผ่านตัวต้านทานก็ได้ครับ ถ้าต่อผ่านตัวต้านทานตัวต้านทานตัวนั้นจะเรียกว่า รีซีสเตอร์ Pull up ครับ
ต่อ UNO ใช้ tx-tx, rxrx
ใช้บอร์ด UNO ต้องต่อ tx-tx, rx-rx ครับ