ESP8266 วิธีทดสอบและใช้งาน

1505123_10152623908833592_7999771834834222013_n

รู้จักแต่ล่ะรุ่นของ 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
 แต่ล่ะตัวน่าจะออกแบบให้เหมาะกับงานคนล่ะรู้แบบ มีแบบ โมดุลที่เปลี่ยนได้ แบบ ESP-01 ,ESP-02,ESP-05มีทั้งแบบทำให้เป็นโมดุลติด PCB เลย แบบ ESP-03,ESP-04 สำหรับรุ่นที่หาได้ง่ายที่สุดตอนนี้จะเป็น ESP-01 สำหรับที่เราได้มาจะเป็น firmware ใหม่ 091

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 ครับ
    PINOUT

    PINOUT

ต่อเพียง 5 สาย ทำงานได้

ต่อเพียง 5 สาย ทำงานได้

IMG_20140916_134112

การเชื่อมต่อ ESP8266 แบบด่วนๆ กับ UNO ปลอม ฮ่าๆ

  • ที่สำคัญมากๆ ถ้าใช้บอร์ด USB2Serial ของบอร์ด Arduino เราต้อง Upload โปรแกรมไฟกระพริบ เข้าไปในบอร์ดด้วย เพื่อให้แน่ใจว่า ตัวไอซี ไม่ได้ใช้ช่องสัญญาณ Serial port
  • เปิด Serial Monitor ของ Arduino ตั้งค่า baud rate 115200 และปรับช่องในรูปให้เป็น ฺBoth NL&CR
  • เรียกขวัญและกำลังใจ พิมพ์ AT+RST หรือ พิมพ์ AT แล้วกด Send ถ้ามีคำว่า ready หรือการตอบสนอง แสดงว่าบอร์ดเรายังใช้งานได้อยู่ ไปทดสอบ Step ต่อไป
config2

ทดสอบบน Terminal

Steps and note

  • AT+RST    เป็นการ Restart โมดุล  จะ return “ready” กลับมาเมือพร้อมทำงานแล้ว
  • AT+CWMODE=3   คำสั่งนี้จะเป็นการเลือกหมวดของโมดุล จะสามารทำงานได้ 3 โหมด 1 STA , 2 AP และ 3 AP+STA, ตอนนี้ให้ลองเลือก 3 ดูก่อนครับ

config_network

คำสั่งสำหรับการเชื่อมต่อเข้า Router

  • AT+CWLAP   ค้นหา wifi hotspot ที่เปิดใช้งานอยู่
  • AT+CWJAP=“you ssid”, “password”    เชื่อมต่อเข้ากับ Router hotspot ต้องมี เครื่องหมาย “‘ ด้วยนะครับ
  • AT+CWJAP?    เช็คว่าเชื่อมต่อได้หรือไม่

config_network

ถ้าพิมพ์ คำสั่งถูก และ เชื่อมต่อเข้ากับ 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

server_mode

การส่งกลับ ใช้ AT command เช่นกัน

  • AT+CIPSEND=0,5 ส่งข้อมูลในช่อง node 0 ซึ่งเป็นช่องที่ทาง socketTest เชื่อมต่อเข้ามา โดยส่งจำนวนข้อมูล 5 byte หลังจากกดคำสั่ง จะมีเครื่องหมาย “>” ให้พิมพ์ข้อมูลที่จะส่งต่อ

ในโหมดการเชื่อมต่อ ตัวโมดุลจะ unlink เองอัตโนมัติ เมือไม่มีการเชื่อมต่อในระยะเวลาที่กำหนด นอกจาก socketTest ใน windows แล้วยังมีอีกหลายโปรแกรมที่ใช้ทดสอบ socket ได้ อย่างเช่นใน android จะมีโปรแกรมชื่อ Socket Protocol ที่ก้อเชื่อมต่อได้เช่นกัน ใช้ smart phone แล้วดูเท่ขึ้นมาทันที่

10390107_10152626916928592_1038630784225423533_n 10610941_10152626916828592_4817369914108291134_n

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 หลังจากกดคำสั่ง จะมีเครื่องหมาย “>” ให้พิมพ์ข้อมูลที่จะส่งต่อ

client_mode

เอาล่ะครับ จบแล้วกับการทดสอบ ESP8266 แบบง่ายๆ อยากจะให้เพิ่มเติมเข้าไปอ่าน electrodragon ยังมีอีกหลายคำสั่งที่ไม่ได้เอามาเขียนไว้ครับ เดี่ยวรอบหน้า จะพูดเรื่องเชื่อมต่อกับ Arduino ครับ

Resources

About chang

ชื่อ “ช้าง” ส่วนมากเขาจะเรียกว่า “พี่ช้าง” แล้ว มีความสนใจทางเทคโนโลยีทางคอมพิวเตอร์ อิเล็กทรอนิกส์ และ หุ่นยนต์ เป็นทั้งนักคิด นักประดิษฐ์ ชอบทดลองเล่น จนเดี่ยวนี้รู้สึกว่าจะเล่นมากกว่ามืออาชีพไปสักแล้ว

  • App Corner

    ผมลองใช้กับ freeduino ไม่สามารถ connect esp8266 ได้ครับ แต่ลองผ่าน ftdi ได้นะครับ

  • จริงมันเป็น Chip USB2SERIAL ตัวเดียวกันเลยนะครับ เป็น FTDI น่าจะใช้งานได้นะครับ
    ถ้าใช้งานไม่ได้ น่าจะตอนนี้โปรแกรมบน freeduino น่าจะใช้งาน Serial อยู่คับ
    วิธีแก้ ให้ flash โปรแกรมอย่างไฟกระพริบ เข้าไป มันจะได้ไม่ไปยุ่งกับ Serial ครับ

  • App Corner

    วันนี้ลองกับ uno ก็เป็นเหมือนกัน นิ่งสนิท ลองทั้งแบบ load ไฟกระพริบ แล้วพิมพ์ command และ แบบ load code server มาลองดู ก็เป็นแบบเดียวกันครับ เหมือนว่ามันไม่ส่งข้อมูลไปขา tx พอจะมีคำแนะนำอื่นมั้ยครับ

  • App Corner

    ใช้ได้แล้วครับ แต่ต้องใช้ txd ของโมดูล ต่อกับ txd ของ freeduino และ rxd ของโมดูล ต่อกับ rxd ของ freeduino ครับ กรณีนี้ใช้เฉพาะการทำ usb2serial ผ่าน freeduino นะครับ

  • imooba

    ใช้ freeduino v1.16 ผมเขียนบน mac
    มั่วอยู่พักนึงเหมือนกัน ตอนนี้ที่เทสแล้วได้คือ
    VCC ต้องใช้ 5v
    serial port ต้องเลือกเป็น /dev/cu.usbserial-A600f5Nc
    ขา esp8266 txd ต้องต่อกับ txd ของ freeduino
    ขา esp8266 rxd ต้องต่อกับ rxd ของ freeduino
    ถึงจะใช้งาน usb2serial ได้ครับ

  • samira

    ลองทำผ่าน Uno และต่อแบบใน blog ที่ว่ามา ได้ผลแบบเดียวกับคุณ App corner เลยครับ
    รบกวนว่า ต่อแบบ usb2serial ทำไงครับ ????

    • samira

      เพิ่มเติม ทีว่าเหมือนคือ นิ่งสนิท ครับ
      อยากทราบว่า usb2serial ไฟเลี้ยง ใช้ เท่าไร ?

      • samira

        ตอนนี้ ใช้ได้แล้วครับ ใช้ level shifter( sparkfun) แล้วแต่แบบ tx – tx, rx – rx .

  • chutawat

    สรุปว่าต้องใช้ usb2serial ด้วยหรือเปล่าครับ แต่เห็นในรูปไม่ใช้

  • Pongsathorn Antarikanon

    ไม่ทราบว่าราคาเท่าไรครับ

  • Aeknakub Aekkubpom

    ผมใช้ Arduino uno ครับ พอผมต่อ Tx ของesp เข้ากับRx ของArduino ต่อ Rx ของesp เข้ากับ Tx ของArduino ผมกด AT หรือ AT+RST ก็ไม่ขึ้นเลยครับ ไม่มีการตอบสนอง แต่พอต่อ Tx-Tx Rx-Rx พิม AT มีผลตอบสนองครับ ผมจะทำยังไงดีครับแบบนี้

    • ไม่ทราบว่าขา CH_PD pull up หรือยังครับ

      • Aeknakub Aekkubpom

        ต่อที่ 3.3 V แล้วนะครับ

      • ศุภวิชญ์ เเสงสุวรรณ

        ผมก็เป็นเหมือนกันคับ หลังจากสลับขาแล้วพอพิมพ์ AT หรืออะไรไปไฟสีฟ้าที่ ESP กระพริบนะคับ แต่ไม่มีอะไรแสดงใน Serial เลย
        อัพไฟกระพริบลง uno แล้ว
        CH_PH ต่อ 3.3v แล้วอะคับ
        ทำไงดีฮะ ?

  • Abhichart Akkarapredee

    ผมต่อตามรูปแต่บอร์ด esp8266 ไฟขึ้นทั้งสองดวง แดงและฟ้าเลยครับ ส่ง command ไปก็เงียบ

    • มีรูปไหมครับ ผมว่าต้อง check ก่อน
      สำหรับรุ่นใหม่ ตั้งความเร็ว 9600 ครับ
      ถ้ายังไม่ขึ้นลองสลับสาย TX,RX ดูก่อนนะครับ ว่าส่งได้ไหม

      • Abhichart Akkarapredee

        ผมมือใหม่ครับ ลองต่ออีกทีคราวนี้ไฟสีฟ้าหายไปแล้วครับ สอบถามต่อครับ pullupคืออะไรครับ?

        • พิศิษฐ์ แซ่โง้ว

          pullup แปลว่าดึงขึ้น เป็นการต่อให้อยู่ในสถานะไฟโลจิกไฮ ให้ต่อไปที่ไฟเลี้ยงโดยตรง หรือต่อผ่านตัวต้านทานก็ได้ครับ ถ้าต่อผ่านตัวต้านทานตัวต้านทานตัวนั้นจะเรียกว่า รีซีสเตอร์ Pull up ครับ