วันเสาร์ที่ 16 มิถุนายน พ.ศ. 2561

การควบคุม ESP8266 ESP-01 ด้วย AT command

การควบคุม ESP8266 ESP-01 ด้วย AT command

ESP-01 เป็นโมดูล WiFi โดยตัวมันเองจะมี SOC (System On a Chip) เป็นของตัวเอง ทำให้สามารถทำงานและรับอินพุตหรือส่งเอาต์พุตได้เองโดยไม่ต้องอาศัยไมโครคอนโทรลเลอร์อื่น ซึ่ง ESP8266 สามารถมีได้ถึง 9 GPIOs (General Purpose Input Output) ทั้งนี้ขึ้นอยู่กับรุ่น ดังนั้นเราสามารถนำมาประยุกต์ใช้สำหรับทำให้ไมโครคอนโทรลเลอร์ เช่น Arduino สามารถเชื่อมต่อกับ WiFi หรือจะโปรแกรมคำสั่งลงไปใน ESP8266 โดยตรงก็ได้เช่นกัน


ESP8266 ESP-01 สามารถทำงานได้ 3 โหมด ดังนี้

  1. Access Point (AP) ทำหน้าที่เป็นตัวปล่อยสัญญาณ WiFi เพื่อให้อุปกรณ์อื่นสามารถเชื่อมต่อสื่อสารกับ ESP-01 ได้
  2. Station (STA) ทำหน้าที่เป็นอุปกรณ์ไปเชื่อมต่อกับตัวปล่อยสัญญาณ WiFi อื่น เพื่อใช้เครือข่ายไร้สาย ทำให้อุปกรณ์ที่อยู่ในเครือข่ายเดียวกันสามารถสื่อสารกับ ESP-01 ได้
  3. Both ทำหน้าที่ได้ทั้ง 2 โหมด คือ ถ้า ESP-01 ไม่สามารถเชื่อมต่อ WiFi ในโหมด STA ได้ ก็จะทำงานในโหมด AP แทน

ESP8266 จะติดตั้ง AT Firmware มาให้จากโรงงาน ทำให้ Arduino สามารถสั่งงาน ESP8266 ด้วย AT commands ผ่านการสื่อสารแบบ Serial ได้ทันทีโดยไม่ต้องเขียนโปรแกรมใด ๆ ลงไปใน ESP8266
ที่มา : https://www.amazon.co.uk/HiLetgo-ESP8266-Serial-Wireless-Transceiver/dp/B00O9DSZBA

อุปกรณ์


  1. Arduino UNO
  2. ESP8266 ESP-01
  3. Buck Converter

การต่อวงจร

ESP-01 ต้องการไฟเลี้ยง 3.3v ประกอบด้วย Pin ต่าง ๆ ดังรูป
ที่มา : http://henrysbench.capnfatz.com/henrys-bench/arduino-projects-tips-and-more/esp8266-esp-01-pin-outs-and-schematics/
การต่อสายจาก ESP-01 ไปยัง Arduino Uno

  1. Tx -> Tx (pin 1)
  2. Rx -> Rx (pin 0)
  3. Vcc -> 3.3v
  4. CH_PD -> 3.3v
  5. GND -> GND

การใช้งาน


  1. อัพโหลด Sketch ที่ฟังก์ชัน setup และ loop ไม่มีการทำงานใด (Bare Minimum) ไปยัง Arduino เพื่อให้มั่นใจว่าไม่มีโปรแกรมเดิมทำงานอยู่
  2. เปิดหน้าจอ Serial Monitor ตั้งค่า baud rate ไปที่ 115200 และตั้งโหมดเป็น Both NL & CR
  3. พิมพ์ AT แล้วกด enter ถ้ามีข้อความ OK ตอบกลับมา แสดงว่าสามารถใช้งานได้

    ที่มา : https://www.arduinoall.com/article/21/%E0%B8%AA%E0%B8%AD%E0%B8%99-%E0%B8%A7%E0%B8%B4%E0%B8%98%E0%B8%B5-%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-arduino-wi-fi-module-esp8266

AT commands พื้นฐาน

1. STA Mode

AT+CWMODE=1 
  • 1 = STA
  • 2 = AP
  • 3 = Both
2. Check Mode
AT+CWMODE? 
3. Connecting Wi-Fi Network
ในกรณีที่ ESP-01 ทำงานในโหมด STA จะเป็นจะต้องเชื่อมต่อกับเครือข่าย WiFi
AT+CWJAP
ใช้ตรวจสอบสัญญาณ WiFi ที่สามารถรับได้ทั้งหมด
AT+CWJAP= “SSID”,“Password” 
ใช้เชื่อมต่อเครือข่าย WiFi
AT+CIFSR
ใชตรวจสอบหมายเลข IP Address ที่ได้รับจากการเชื่อมต่อกับเครือข่าย WiFi
4. Enable Connections
กำหนดโหมดในการเชื่อมต่อเป็นแบบหลายการเชื่อมต่อในกรณีที่ต้องการให้ ESP-01 เป็น Server
AT+CIPMUX=1 
  • 0 = Single
  • 1 = Multiple
AT+CIPSERVER=1,80
ใช้เริ่มการทำงาน Server โดยใช้พอร์ต 80 และหมายเลขตัวแรกหมายถึงว่าต้องการให้ทำงานในโหมด close server mode (0) หรือ open server mode (1) 
เมื่อใช้ web browser เชื่อมต่อมายัง ESP-01 โดยพิมพ์หมายเลข IP ของ ESP-01 ลงในช่องที่อยู่แล้วกด enter จะปรากฏ HTTP request message ขึ้นมาที่หน้าจอ serial monitor
ที่มา : http://www.instructables.com/id/Getting-Started-With-the-ESP8266-ESP-01/
จากนั้นสามารถส่งข้อมูลตอบกลับได้โดย
AT+CIPSEND=0,5 
เลข 0 หมายถึง channel ที่จะใช้ส่งข้อมูลออกไป และ 5 คือจำนวน byte ของข้อมูล เมื่อกด enter จะปรากฏ ">" ขึ้นมาบนหน้าจอ Serial Monitor จากนั้นพิมพ์ Hello กด enter แล้วรอจนขึ้นข้อควา SEND OK แต่ข้อความจะยังไม่ปรากฏที่หน้าจอ Web browser ต้องปิดการเชื่อมต่อด้วยคำสั่ง
AT+CIPCLOSE=0 
เลข 0 คือ channel ที่ต้องการปิดการเชื่อมต่อ

สามารถศึกษา AT commands เพิ่มเติมได้จาก http://www.electrodragon.com/w/Wi07c หรือใช้โปรแกรมช่วยพิมพ์ AT commands จาก arduinoall.com

บรรณานุกรม


1 ความคิดเห็น:

  1. AT+CWJAP -> AT+CWLAP น่าจะคำสั่งนี้นะครับ
    ใช้ตรวจสอบสัญญาณ WiFi ที่สามารถรับได้ทั้งหมด

    ตอบลบ