วันเสาร์ที่ 29 เมษายน พ.ศ. 2560

รวมข้อมูล และปัญหา Node MCU

ข้อแตกต่างของ NodeMCU V1 V2 และ V3
V1 (หรือเวอร์ชั่นเป็นทางการก็คือ V 0.9) เป็นตัวแรกที่ออกมา โดยใช้ Module WiFi เบอร์ ESP-12 และ USB to Serial เบอร์ CH340
V2 (หรือเวอร์ชั่นเป็นทางการก็คือ V1.0) เป็น Official NodeMCU โดยปรับปรุงให้มีขนาดความกว้างเล็กลงส่วนความยาวยังคงเท่ากับเวอร์ชั่นแรก และมีประสิทธิภาพโดยรวมดีขึ้น โดยใช้ Module WiFi เบอร์ ESP-12E และ USB to Serial เบอร์ CP2102 ถือได้ว่าเป็นบอร์ดที่เล็กที่สุดเมื่อเทียบกันทั้ง 3 version

V3 ไม่ได้เป็น Official NodeMCU ซึ่งผลิตโดยบริษัท Lolin ใช้ Module WiFi เบอร์ ESP-12E เหมือน V2 แต่ใช้ USB to Serial เบอร์ CH340 เหมือน V1 บอร์ดมีขนาดใหญ่สุดในทั้ง 3 version คือกว้างเท่า V1 แต่ยาวกว่า

ติดตั้ง Arduino IDE ลงบน ESP8266 NodeMCU
1  .        https://www.arduino.cc/en/main/software

2. file >> Preferences

2.            Addition Board Manager URLs: ให้ใส่ http://arduino.esp8266.com/stable/package_esp8266com_index.json

3.           Tools >> board: “………..” >> Boards Manger

3.           Type >> contributed >> esp8266 by ESP8266 Community

4.           Instiall >> ลอติดตั้ง

5.            ติดตั้ง เสร้จแล้ว

6.           เลือก NodeMCU 1.0(ESP-12E Module)  



***  ถ้าไม่เจอ NodeMCU 1.0 (ESP-12E Module)
ให้ remove   esp8266 แล้วติดตั้ง version ใหม่ จนเสร็จ



วิธีใช้งาน Node MCU
Server เป็นการกำหนดให้ ESP8266 ทำหน้าที่เป็นเครื่องแม่ข่ายให้บริการอย่างใดอย่างหนึ่ง โดยการเปิดพอร์ต (Listening) เพื่อรอรับการเชื่อมต่อจากเครื่องลูกข่าย
Client เป็นการกำหนดให้ ESP8266 ทำหน้าที่เป็นเครื่องลูกข่าย โดยเชื่อมต่อไปยังเครื่องแม่ข่ายด้วยไอพีแอดเดรสและพอร์ตที่กำหนดไว้เพื่อขอใช้บริการนั้นๆ

เป็นโปรแกรม ที่ทำหน้าที่เป็น TCP Server เพื่อรอรับ TCP Client จาก NodeMCU   และสามารถ เป็น Client ส่งข้อมูลให้ TCP Server ของ NodeMCU
Download Program Hercules >> http://new.hwg.cz/files/download/sw/version/hercules_3-2-8.exe
วิธีใช้ Hercule

 อยู่หน้า UDP Setup  เพื่อดู ip ของ pc network
TCP Client    =  ให้ pc เป็น Client
TCP Server   =  ให้ pc เป็น Server
 PC เป็น Server
Received data      =  แสดงข้อมูลที่ Client ส่งมา
Sent data               =  แสดงข้อมูลที่ Server ส่งไป
Port                        =  Port ที่ Server เปิดรับอยู่ต้องตั้งให้ตรงกับ Client
Listen                    =  เริ่มทำงาน


PC เป็น Client
Received / sent data          =  แสดงข้อมูลที่ Client ส่งไปและ แสดงข้อมูลที่ Server ส่งมา
Send                                      ข้อมูลที่ต้องการจะส่งไป ให้Server
Module ip                             =  ip network ของ Server
Port                                        =  Port ที่ Server เปิดรับอยู่
Connect                                 =  เริ่มการเชื่อมต่อกับ Serverฃ



ตัวอย่าง Code การใช้ TCP Client
#include 
#define SERVER_PORT 8000    //กำหนด Port ใช้งาน
const char* ssid = "………….";       //กำหนด SSID  หรือ Name wifi
const char* password = "………….."; //กำหนด Password  wifi
WiFiServer server(SERVER_PORT); //สร้าง object server และกำหนด port
 
void setup() 
{
            Serial.begin(115200);   //เปิดใช้ Serial
    Serial.println("");
            Serial.println("");
            WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
     while (WiFi.status() != WL_CONNECTED)  //รอการเชื่อมต่อ
    {
            delay(500);
            Serial.print(".");
    }
            Serial.println("WiFi connected");   //แสดงข้อความเชื่อมต่อสำเร็จ  
    Serial.println("IP address: "); 
    Serial.println(WiFi.localIP());     //แสดงหมายเลข IP
            server.begin();             //เริ่มต้นทำงาน TCP Server
            Serial.println("Server started");       //แสดงข้อความ server เริ่มทำงาน 
ESP.wdtDisable();            //ปิด watch dog Timer
}
 
void loop() 
{
        WiFiClient client = server.available();  //รอรับ การเชื่อมต่อจาก Client
        if (client)         //ตรวจเช็คว่ามี Client เชื่อมต่อเข้ามาหรือไม่
        {
            Serial.println("new client");   //แสดงข้อความว่ามี Client เชื่อมต่อเข้ามา
            while(1)        //วนรอบตลอด
            {
                    while(client.available())   //ตรวจเช็ตว่ามี Data ส่งมาจาก Client  หรือไม่
                    {
                            uint8_t data =client.read();  //อ่าน Data จาก Buffer
                            Serial.write(data); //แสดงผล Data ทาง Serial
                    }
                    if(server.hasClient())  //ตรวจเช็คว่ายังมี  Client เชื่อมต่ออยู่หรือไม่ 
                    {
                        return;         //ถ้าไม่มีให้ออกจาก ลูป ไปเริ่มต้นรอรับ Client ใหม่
                 }
            }
        
     } 
}



ตัวอย่าง Code การใช้ TCP Server

#include 
#define SERVER_PORT 8000    //กำหนด Port ใช้งาน
const char* ssid = "…………….";       //กำหนด SSID  หรือ Name wifi
const char* password = "………...."; //กำหนด Password wifi
WiFiServer server(SERVER_PORT); //สร้าง object server และกำหนด port
 
void setup() 
{
            Serial.begin(115200);   //เปิดใช้ Serial
    Serial.println("");
            Serial.println("");
            WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
     while (WiFi.status() != WL_CONNECTED)  //รอการเชื่อมต่อ
    {
            delay(500);
            Serial.print(".");
    }
            Serial.println("WiFi connected");   //แสดงข้อความเชื่อมต่อสำเร็จ  
    Serial.println("IP address: "); 
    Serial.println(WiFi.localIP());     //แสดงหมายเลข IP
            server.begin();             //เริ่มต้นทำงาน TCP Server
            Serial.println("Server started");       //แสดงข้อความ server เริ่มทำงาน 
ESP.wdtDisable();            //ปิด watch dog Timer
}
 

void loop() 
{
        WiFiClient client = server.available();  //รอรับ การเชื่อมต่อจาก Client
        if (client)         //ตรวจเช็คว่ามี Client เชื่อมต่อเข้ามาหรือไม่
        {
            Serial.println("new client");   //แสดงข้อความว่ามี Client เชื่อมต่อเข้ามา
            while(1)        //วนรอบตลอด
            {
                    while(client.available())   //ตรวจเช็ตว่ามี Data ส่งมาจาก Client  หรือไม่
                    {
                            uint8_t data =client.read();  //อ่าน Data จาก Buffer
                            Serial.write(data); //แสดงผล Data ทาง Serial
                    }
                    if(server.hasClient())  //ตรวจเช็คว่ายังมี  Client เชื่อมต่ออยู่หรือไม่ 
                    {
                        return;         //ถ้าไม่มีให้ออกจาก ลูป ไปเริ่มต้นรอรับ Client ใหม่
                 }
            }
        
     } 
}



CODE อ้างอิง
http://thaieasyelec.com/article-wiki/embedded-electronics-application/getting-started-with-esp8266-nodemcu-ch2.html

ไม่มีความคิดเห็น:

แสดงความคิดเห็น