Home » [Update] โปรเจค IoT ESP32 เปิดปิดไฟ ผ่าน WiFi ด้วย เว็บเพจ | โรบอค – Nangdep.vn

[Update] โปรเจค IoT ESP32 เปิดปิดไฟ ผ่าน WiFi ด้วย เว็บเพจ | โรบอค – Nangdep.vn

โรบอค: นี่คือโพสต์ที่เกี่ยวข้องกับหัวข้อนี้


ในโปรเจคนี้เราจะสร้างเว็บเซิร์ฟเวอร์ จาก ESP32  เป็น Server Controller แบบ Station (STA) Mode เป็นโหมดที่กำหนดให้ ESP32 ไปเชื่อมต่อกับอุปกรณ์อื่น ๆ โดย เร้าเตอร์ แล้วรับส่งข้อมูลระหว่างเครื่องในวงแลนได้ การทำงานเราจะ

สั่งเปิดปิดไฟ LED โดยใช้ เว็บเพจ ที่เปิดจาก

อุปกรณ์อื่น

 ควบคุมผ่าน ระบบอินทราเน็ต ที่ใช้ WiFi  หรือ วง แลน เดียวกัน 

ESP32 เป็นชิปไอซีไมโครคอนโทรลเลอร์ 32 บิต ที่มี WiFi และบลูทูธเวอร์ชั่น 4.2 ในตัว ซึ่งเป็นรุ่นต่อของชิปไอซี ESP8266 ผลิตโดยบริษัท Espressif รองรับการเขียนโปรแกรมโดยใช้โปรแกรม Arduino IDE และรองรับไลบารี่ส่วนใหญ่ของ Arduino 

ESP32 เปิดปิดไฟ 

เครือข่าย WiFi ด้วย เว็บเพจ

ควบคุมทุกสรรพสิ่งภายในบ้านของคุณด้วย ESP32 หรือ Home Automation ระบบนี้เป็นระบบที่ใช้ควบคุมอุปกรณ์ไฟฟ้าต่างๆผ่าน WiFi 

จาก

อุปกรณ์อื่น ๆ เช่น Mobile , PC/Laptop , Tablet ใช้เว็บบราวเซอร์ เปิดเว็บเพจแล้วป้อน IP ของ ESP32 

โดยที่สามารถควบคุมได้ผ่านระบบอินทราเน็ต (ที่ใช้ WiFi  หรือ วง แลน หรือใช้ เราเตอร์ เดียวกัน เท่านั้น)

 

 

### อุปกรณ์ที่ใช้ ###

โดยการทำโปรเจคมีขั้นตอนดังนี้

1.ติดตั้ง Arduino core for ESP32

ลิงค์การติดตั้ง Arduino core for ESP32

https://robotsiam.blogspot.com/2017/09/arduino-core-for-esp32.html


2.เชื่อมต่ออุปกรณ์

2.1 เชื่อมต่อ  ESP32  กับ Traffic Light LED Display Module

 

ภาพรวมการต่อวงจร 

3. อัพโหลดโปรแกรม

3.1 เชื่อมต่อสาย USB ระหว่าง คอมพิวเตอร์ กับ ESP32

 

3.2 

ตรวจสอบการติดตั้งไดร์เวอร์ ของ ชิปแปลง USB to UART เบอร์ CP2102 โดย คลิกขวา Computet -> Properties -> Device Manager

ที่ Ports (COM & LPT) จะพบ ไดร์เวอร์ ของชิป CP2102

ในตัวอย่างเป็น Silicon Labs CP210x 

USB to UART

 Bridge (COM18)

3.3 เปิดโปรแกรม Arduino (IDE) และ ก็อปปี้ โค้ดด้านล่างนี้ ไปวางไว้ในส่วนเขียนโปรแกรม

#include <WiFi.h> const char* WIFI_NAME = "YourNetworkName"; const char* WIFI_PASSWORD = "YourPassword"; WiFiServer server(80); String header; String LED_ONE_STATE = "off"; String LED_TWO_STATE = "off"; String LED_THREE_STATE = "off"; const int GPIO_PIN_NUMBER_12 = 12; const int GPIO_PIN_NUMBER_13 = 13; const int GPIO_PIN_NUMBER_27 = 27; void setup() { Serial.begin(115200); pinMode(GPIO_PIN_NUMBER_12, OUTPUT); pinMode(GPIO_PIN_NUMBER_13, OUTPUT); pinMode(GPIO_PIN_NUMBER_27, OUTPUT); digitalWrite(GPIO_PIN_NUMBER_12, LOW); digitalWrite(GPIO_PIN_NUMBER_13, LOW); digitalWrite(GPIO_PIN_NUMBER_27, LOW); Serial.print("Connecting to "); Serial.println(WIFI_NAME); WiFi.begin(WIFI_NAME, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.print("Trying to connect to Wifi Network"); } Serial.println(""); Serial.println("Successfully connected to WiFi network"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); server.begin(); } void loop() { WiFiClient client = server.available(); if (client) { Serial.println("New Client is requesting web page"); String current_data_line = ""; while (client.connected()) { if (client.available()) { char new_byte = client.read(); Serial.write(new_byte); header += new_byte; if (new_byte == '\n') { if (current_data_line.length() == 0) { client.println("HTTP/1.1 200 OK"); client.println("Content-type:text/html"); client.println("Connection: close"); client.println(); if (header.indexOf("G-LED=ON") != -1) { Serial.println("GPIO13 LED is ON"); LED_ONE_STATE = "on"; digitalWrite(GPIO_PIN_NUMBER_13, HIGH); } if (header.indexOf("G-LED=OFF") != -1) { Serial.println("GPIO13 LED is OFF"); LED_ONE_STATE = "off"; digitalWrite(GPIO_PIN_NUMBER_13, LOW); } if (header.indexOf("Y-LED=ON") != -1) { Serial.println("GPIO12 LED is ON"); LED_TWO_STATE = "on"; digitalWrite(GPIO_PIN_NUMBER_12, HIGH); } if (header.indexOf("Y-LED=OFF") != -1) { Serial.println("GPIO12 LED is OFF"); LED_TWO_STATE = "off"; digitalWrite(GPIO_PIN_NUMBER_12, LOW); } if (header.indexOf("R-LED=ON") != -1) { Serial.println("GPIO27 LED is ON"); LED_THREE_STATE = "on"; digitalWrite(GPIO_PIN_NUMBER_27, HIGH); } if (header.indexOf("R-LED=OFF") != -1) { Serial.println("GPIO27 LED is OFF"); LED_THREE_STATE = "off"; digitalWrite(GPIO_PIN_NUMBER_27, LOW); } client.println("<!DOCTYPE html><html>"); client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"); client.println("<link rel=\"icon\" href=\"data:,\">"); client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}"); client.println(".button { background-color: #4CAF50; border: 2px solid #4CAF50;; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; }"); client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}"); // Web Page Heading client.println("</style></head>"); client.println("<body><center><h1>ESP32 Web Server LED Control</h1></center>"); client.println("<form><center>"); client.println("<p>GREEN LED is " + LED_ONE_STATE + "</p>"); // If the PIN_NUMBER_xx State is off, it displays the ON button client.println("<center> <button class=\"button\" name=\"G-LED\" value=\"ON\" type=\"submit\">G-LED ON</button>") ; client.println("<button class=\"button\" name=\"G-LED\" value=\"OFF\" type=\"submit\">G-LED OFF</button><br><br>"); client.println("<p>YELLOW LED is " + LED_TWO_STATE + "</p>"); client.println("<button class=\"button\" name=\"Y-LED\" value=\"ON\" type=\"submit\">Y-LED ON</button>"); client.println("<button class=\"button\" name=\"Y-LED\" value=\"OFF\" type=\"submit\">Y-LED OFF</button> <br><br>"); client.println("<p>RED LED is " + LED_THREE_STATE + "</p>"); client.println ("<button class=\"button\" name=\"R-LED\" value=\"ON\" type=\"submit\">R-LED ON</button>"); client.println ("<button class=\"button\" name=\"R-LED\" value=\"OFF\" type=\"submit\">R-LED OFF</button></center>"); client.println("</center></form></body></html>"); client.println(); break; } else { current_data_line = ""; } } else if (new_byte != '\r') { current_data_line += new_byte; } } } // Clear the header variable header = ""; // Close the connection client.stop(); Serial.println("Client disconnected."); Serial.println(""); } }

See also  [Update] ดนตรี: โน๊ต | โน้ต - Nangdep.vn

3.4 ก่อนการอัพโหลดต้องแก้ไขโค้ด ตรงตัวอักษรสีแดงให้ถูกต้องตาม ตามเครือข่าย WiFi ที่เลือกใช้งาน โดย

const char* WIFI_NAME = “

YourNetworkName

“;  // เครือข่าย Wi-Fi ที่ต้องการเชื่อมต่อ
const char* WIFI_PASSWORD = “

YourPassword

“;  // รหัสผ่านเครือข่าย

ตรวจความถูกต้องแบบละเอียด เช่น…ตัวพิมพ์เล็ก , ตัวพิมพ์ใหญ่ อักขระต่างๆ ให้ถูกต้อง

3.5 ไปที่ Tools -> Board เลือก ESP32 Dev Module

3.6 ไปที่ Tools -> Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port ให้เลือกตัวอื่นที่ไม่ใช่ COM1)

ในตัวอย่างเลือกเป็น “COM18”

3.7 

กดปุ่ม 

 

 เพื่ออัพโหลด

ตั้งชื่อไฟล์ -> Save โปรแกรม จะทำการ อัพโหลด

See also  [Update] | สาคร สุขศรีวงศ์ - Nangdep.vn

3.8 หากสามารถอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จ จะแสดงคำว่า Done uploading. ที่แถบด้านล่าง

4. ตรวจสอบ IP ของ ESP32 

4.1 เปิดหน้าต่าง Serial Monitor  โดยไปที่ Tools > Serial Monitor

4.2 มุมขวาล่าง ของ Serial Monitor เลือก 115200 baud  คือ ตั้งค่าความเร็วในการรับ-ส่งข้อมูล  คือ 115200

4.3 กดที่ปุ่ม EN 1 ครั้ง เพื่อเริ่มการทำงาน ของ ESP32

 

 

 

4.4 รอจนกระทั่งที่ Serial Monitor แสดง IP ของ ESP32 ในตัวอย่างนี้คือ

192.168.1.39


(ก่อนทดสอบการทำงงานควรตรวจสอบ IP ทุกครั้ง เพราะแต่ละครั้งในการเชื่อมต่ออาจได้ IP ไม่เหมือนเดิม)

5. ทดสอบการทํางาน

5.1 ใช้ คอมพิวเตอร์ หรือ สมาร์ทโฟน ที่เชื่อมต่อเครือข่าย WiFi เดียวกันกับ ESP32 แล้วเปิดเว็บบราวเซอร์ ที่ URL ป้อนไอพี  ที่ได้มาจากข้อ 4.4  ในตัวอย่างนี้คือ

192.168.1.39

 

6. วีดีโอ ผลลัพล์การทำงาน

credit : https://microcontrollerslab.com/esp32-web-server-arduino-led/

3.4 ก่อนการอัพโหลดต้องแก้ไขโค้ด ตรงตัวอักษรสีแดงให้ถูกต้องตาม ตามเครือข่าย WiFi ที่เลือกใช้งาน โดยconst char* WIFI_NAME = “”; // เครือข่าย Wi-Fi ที่ต้องการเชื่อมต่อconst char* WIFI_PASSWORD = “”; // รหัสผ่านเครือข่ายตรวจความถูกต้องแบบละเอียด เช่น…ตัวพิมพ์เล็ก , ตัวพิมพ์ใหญ่ อักขระต่างๆ ให้ถูกต้อง3.5 ไปที่ Tools -> Board เลือก ESP32 Dev Module3.6 ไปที่ Tools -> Port แล้วเลือกพอร์ตที่ปรากฏ (กรณีใช้เครื่องคอมพิวเตอร์ที่มี COM Port ให้เลือกตัวอื่นที่ไม่ใช่ COM1)ในตัวอย่างเลือกเป็น “COM18″3.7…credit : https://microcontrollerslab.com/esp32-web-server-arduino-led/


ตะลุยสไลเดอร์ยักษ์ในสวนน้ำ | Roblox


MAP : Waterpark Oceanic
https://www.roblox.com/games/4947425425/WaterparkOceanic?refPageId=24d2a61f3400469da6e5c7b14d3d4902
Roblox robloxไทย โรบอค
LINE STICKER \”zbing z. friend\” เวอร์ชั่นใหม่ดุ๊กดิ๊กพร้อมเสียงพากษ์สุดน่ารักของพี่แป้งมาแล้วจ้า ดาวน์โหลดได้ที่
http://lin.ee/r9gSHl9/sknj/ow
สติ๊กเกอร์ zbing z. เวอร์ชั่นแรก https://store.line.me/stickershop/product/1480015
\r
ช่วยกด like \u0026 share + Subscribe เพื่อเป็นกำลังใจให้พี่แป้งกันด้วยนะคะ\r
contact me :: [email protected]\r
\r
ขอให้สนุกกับคลิปนะคะ :3\r
\r
ซื้อสินค้าของพี่แป้ง zbing z. มีทั้งเสื้อ หมวก กระเป๋า และของอื่นๆ ได้ที่นี่ https://goo.gl/R4XXeY\r
\r
\r
ติดตามแป้งได้ที่\r
♥ Facebook http://www.facebook.com/zbingzee\r
♥ Fan page http://www.facebook.com/zbingch\r
♥ Instagram http://www.instagram.com/zbingz\r
♥ Youtube http://www.youtube.com/zbingzbin­g\r
\r
ด้วยรัก ♥\r
zbing z\r
\r
สมัครเป็นพาร์ทเนอร์กับ Online Station เพื่อช่วยพัฒนาให้ช่อง Youtube ของคุณเติบโตขึ้น http://caster.onlinestation.net\r
­­\r
::: สนใจติดต่อโฆษณาหรือสปอนเซอร์ :::\r
ติดต่อทีมงาน Online Station (เฉพาะเรื่องงานเท่านั้น)\r
โทร : 028595171\r
อีเมล์ : [email protected]\r
\r
INTRO SONG\r
Sparks (feat. Corey Saxon)\r
Music by Epidemic Sound (http://www.epidemicsound.com)\r
\r
zbingz

See also  [Update] Kate 2021 นักฆ่าล่าล้างแค้น 2021 ดูหนัง เต็มเรื่อง HD | หนังเรื่อง ล่า - Nangdep.vn

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

ตะลุยสไลเดอร์ยักษ์ในสวนน้ำ | Roblox

ผีเฝ้าโรงหนัง ห้ามเสียงดังไม่งั้นตาย | starliner cinemas


scp garrymod starlinercinemas
LINE STICKER \”zbing z. friend\” เวอร์ชั่นใหม่มาพร้อมเจ้านาซ่าและซิมบ้าสุดป่วน\r
สติกเกอร์ดุ๊กดิ๊ก+เสียงพากษ์สุดน่ารักของพี่แป้ง ดาวน์โหลดได้ที่นี่เลย http://lin.ee/r9gSHl9/sknj/ow\r
\r
สติกเกอร์เวอร์ชั่นแรก https://store.line.me/stickershop/product/1480015\r
\r
ขอบคุณเพื่อนๆ น้องๆ ทุกคนที่ช่วยอุดหนุนพี่แป้งนะคะ\r
\r
ช่วยกด like \u0026 share + Subscribe เพื่อเป็นกำลังใจให้พี่แป้งกันด้วยนะคะ\r
contact me :: [email protected]\r
\r
ขอให้สนุกกับคลิปนะคะ :3\r
\r
ซื้อสินค้าของพี่แป้ง zbing z. มีทั้งเสื้อ หมวก กระเป๋า และของอื่นๆ ได้ที่นี่ https://goo.gl/R4XXeY\r
\r
\r
ติดตามแป้งได้ที่\r
♥ Facebook http://www.facebook.com/zbingzee\r
♥ Fan page http://www.facebook.com/zbingch\r
♥ Instagram http://www.instagram.com/zbingz\r
♥ Youtube http://www.youtube.com/zbingzbin­g\r
\r
ด้วยรัก ♥\r
zbing z\r
\r
สมัครเป็นพาร์ทเนอร์กับ Online Station เพื่อช่วยพัฒนาให้ช่อง Youtube ของคุณเติบโตขึ้น http://caster.onlinestation.net\r
­­\r
::: สนใจติดต่อโฆษณาหรือสปอนเซอร์ :::\r
ติดต่อทีมงาน Online Station (เฉพาะเรื่องงานเท่านั้น)\r
โทร : 028595171\r
อีเมล์ : [email protected]\r
\r
INTRO SONG\r
Sparks (feat. Corey Saxon)\r
Music by Epidemic Sound (http://www.epidemicsound.com)\r
\r
zbingz

ผีเฝ้าโรงหนัง ห้ามเสียงดังไม่งั้นตาย | starliner cinemas

Roblox เป็นด่านที่ง่ายสุดๆ🔥 (Tower of Hell)


สมัครเป็นสมาชิคช่อง : https://bit.ly/3eyZp3N
discord : https://discord.gg/3j4XH2x
เว็บสุ่มรางวัล \u0026 ไอดี 🦊 : https://shibastore.net
วิธีเติมเงิน 💎 : https://youtu.be/zQkqQt4zjTk
แฟนเพจ :https://www.facebook.com/Shiba.StoreTH/
ช่องทางติดต่อ
Facebook : http://wow.in.th/UWXr
เพจ : http://wow.in.th/QYq5
::: สนใจติดต่อโฆษณาหรือสปอนเซอร์ :::
อีเมล์ : [email protected]
Freefire FFCTH FFCTHกุมภา

Roblox เป็นด่านที่ง่ายสุดๆ🔥 (Tower of Hell)

Squid Game (เล่นลุ้นตาย) Highlight – กล้าเล่นไหม? ‘เออีไอโอยู’ ถ้าไม่หยุดก็ตาย! (พากย์ไทย) | Netflix


จะเป็นยังไงถ้าเกมที่เราเคยเล่นตอนเด็กๆ อย่าง ‘เออีไอโอยู’ มาปรับเป็นเวอร์ชั่นโหด ที่ใครไม่หยุดก็เตรียมรอตายกันได้เลย
ติดตามชม CLIP ฉากดีๆ โมเมนต์โดนๆ จากหนังและซีรีส์ Netflix ที่คุณประทับใจได้ที่ YouTube ช่อง Netflix Thailand
ติดตามความเคลื่อนไหวของ Netflix Thailand ได้สารพัดที่ ดังนี้:
Facebook : http://bit.ly/30E1HXV​​
Instagram : http://bit.ly/2Ht4r30​​
Twitter : http://bit.ly/2ZDqajb​​
สควิดเกม เล่นลุ้นตาย
NetflixTH​​ NetflixThailand

Squid Game (เล่นลุ้นตาย) Highlight - กล้าเล่นไหม? 'เออีไอโอยู' ถ้าไม่หยุดก็ตาย! (พากย์ไทย) | Netflix

Roblox ตามล่า หาวันพีซ~~ (Blox Fruits)


สมัครเป็นสมาชิคช่อง : https://bit.ly/3eyZp3N
discord : https://discord.gg/3j4XH2x
เว็บสุ่มรางวัล \u0026 ไอดี 🦊 : https://shibastore.net
วิธีเติมเงิน 💎 : https://youtu.be/zQkqQt4zjTk
แฟนเพจ :https://www.facebook.com/Shiba.StoreTH/
ช่องทางติดต่อ
Facebook : http://wow.in.th/UWXr
เพจ : http://wow.in.th/QYq5
::: สนใจติดต่อโฆษณาหรือสปอนเซอร์ :::
อีเมล์ : [email protected]
Freefire FFCTH FFCTHกุมภา

Roblox ตามล่า หาวันพีซ~~ (Blox Fruits)

นอกจากการดูบทความนี้แล้ว คุณยังสามารถดูข้อมูลที่เป็นประโยชน์อื่นๆ อีกมากมายที่เราให้ไว้ที่นี่: ดูวิธีอื่นๆWiki

ขอบคุณมากสำหรับการดูหัวข้อโพสต์ โรบอค

Leave a Reply

Your email address will not be published.