บทความประกอบการเรียนรู้ => IOT : Internet of Thing (ESP8266, NodeMCU, WeMos D1 mini) => ข้อความที่เริ่มโดย: admin ที่ พฤศจิกายน 11, 2017, 08:12:00 AM

หัวข้อ: งานครั้งที่ 22 [On Line] การทดสอบโมดูล NodeMCU ในการเชื่อมต่อ WiFi
เริ่มหัวข้อโดย: admin ที่ พฤศจิกายน 11, 2017, 08:12:00 AM
การทดสอบโมดูล NodeMCU ในการเชื่อมต่อ WiFi
โมดูล NodeMCU จะใช้โมดูล ESP8266-12E เป็นหัวใจหลักในการใช้งาน ซึ่งตัว ESP8266-12E ใช้ชิพ esp8266 เป็นตัวประมวลผลอยู่ภายใน ซึ่งเมื่อนำมาประกอบเป็นตัวโมดูลเพื่อใช้งานอาจเกิจข้อบกพร่องจากการประกอบได้ เช่นไม่สามารถเชื่อมต่อกับ WiFi ได้ซึ่งอาจเกิดจากการประกอบอุปกรณ์ต่าง ๆในตัวโมดูล หน้าตาชิพ eps8266 เป็นดังรูป
(http://www.praphas.com/PhotoForum/iot/Lab-10-WiFiTest/3.png)

เมื่อประกอบเข้าเป็นโมดูล ESP8266 12E จะมีลักษณะดังรูป
(http://www.praphas.com/PhotoForum/iot/Lab-10-WiFiTest/2.png)

มีผู้ผลิตโมดูล ESP8266 12E หลายราย ซึ่งบางรายอาจผลิตออกมาไม่ได้คุณภาพทำให้เชื่อมต่อกับ WiFi ไม่ได้
(http://www.praphas.com/PhotoForum/iot/Lab-10-WiFiTest/12E-ALL.png)

ดังนั้นการทดลองครั้งนี้เป็นการทดสอบโมดูลว่าสามารถเชื่อมต่อกับ WiFi ได้หรือไม่

โปรแกรมที่ใช้ในการทดสอบ
โค๊ด: [Select]
#include <ESP8266WiFi.h>                  // Include ESP8266 library
const char* ssid = "Your SSID";           // SSID is set
const char* password = "Your password";   // Password is set
#define LEDpin D0
void setup()
{
  Serial.begin(115200);                   // Enable UART
  Serial.println();
  Serial.print("Connecting to ");         // Print title message to the serial monitor
  Serial.println(ssid);                   // Print SSID name
  pinMode(LEDpin, OUTPUT);
  digitalWrite(LEDpin,HIGH);              // WiFi detected indicator - active low
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);             // Send password
  while (WiFi.status() != WL_CONNECTED)   // Check WiFi status
  {
    delay(200);
    digitalWrite(LEDpin, LOW);
    Serial.print(".");                    // Print dot for showing the progress status
    delay(200);
    digitalWrite(LEDpin, HIGH);   
  }
  Serial.println("");
  WiFi.printDiag(Serial);
  Serial.println("");
  Serial.println("WiFi connected");       // Print the connected message
  Serial.println("IP address: ");         // Print IP address
  Serial.println(WiFi.localIP());
}
void loop()
{
  digitalWrite(LEDpin, LOW);              // WiFi connected indicator - active low
  while (WiFi.status() != WL_CONNECTED)   // Check WiFi status
  {
    digitalWrite(LEDpin, 0);              // LED at D0 blink when disconnect WiFi
    delay(900);
    Serial.println("connection WiFi failed");   // Print error message to Serial Monitor
    digitalWrite(LEDpin, 1);
    delay(100);
  }
}

ตัวอย่าง ต้องการเชื่อมต่อกับ WiFi ที่คอมพิวเตอร์กำลังเชื่อมต่อดังรูป
(http://www.praphas.com/PhotoForum/iot/Lab-10-WiFiTest/WiFi-List.png)

เมื่อแก้ค่า ssid (ชื่อ WiFi ที่ต้องการเชื่อมต่อ) และ password (พาสเวิร์ดของ WiFi) สำหรับตัวอย่างนี้ WiFi ไม่มีพาสเวิร์ด เมื่อแก้ค่าเสร็จแล้วทำการอัพโหลดลงโมดูล สามารถดูผลการทำงานได้จากหน้าต่าง Serial monitor ดังรูป
(http://www.praphas.com/PhotoForum/iot/Lab-10-WiFiTest/Connected.png)
ซึ่งจะเห็นว่าสามารถเชื่อมต่อกับ WiFi ได้แล้วและได้รับการแจก ip ให้กับโมดูล NodeMCU เป็นค่า 192.168.9.241 (ในขณะที่ยังเชื่อมต่อไม่ได้ LED บน NodeMCU จะกระพริบและเมื่อเชื่อมต่อได้แล้วจะติดค้าง)

https://www.youtube.com/v/DGj-AXmqbb0