เกริ่นนำ: สวัสดีครับ วันนี้ผมจะมาแจกโปรเจกต์ IoT เจ๋งๆ ที่สามารถนำไปประยุกต์ใช้งานจริงได้ ไม่ว่าจะเป็นการวัดอุณหภูมิห้อง server, โรงเรือนเพาะปลูก, หรือตู้ปลา โดยจุดเด่นของโปรเจกต์นี้คือ "ไม่ต้องแก้โค้ดเพื่อใส่รหัส WiFi" เพราะเราใส่ระบบ WiFi Manager มาให้ และยังมีระบบกันเครื่องค้าง (Watchdog) เพื่อความเสถียรในการทำงานระยะยาวครับ
https://youtube.com/shorts/iCMVIuxMhdc?si=stxi2DvBpmvr8rLh
ตัวอย่าง
🛠️ ฟีเจอร์เด่นของโปรเจกต์นี้
เชื่อมต่อ Google Sheets: บันทึกค่าอุณหภูมิและความชื้นลงตาราง Excel ออนไลน์ได้ฟรีๆ
WiFi Manager: ไม่ต้อง Hardcode SSID/Password ในโค้ด เชื่อมต่อ WiFi หน้างานผ่านมือถือได้เลย
OLED Display: แสดงค่า Real-time ผ่านจอ 0.96 นิ้ว
Watchdog & Anti-Brownout: ระบบป้องกันไฟตกและรีเซ็ตตัวเองอัตโนมัติเมื่อเครื่องค้าง
Factory Reset: มีฟังก์ชันกดปุ่ม BOOT ค้าง 10 วินาที เพื่อล้างค่า WiFi เดิม
📦 อุปกรณ์ที่ต้องใช้
บอร์ด ESP32 (รุ่นไหนก็ได้ แนะนำ ESP32 DevKit V1)
จอ OLED ขนาด 0.96" (แบบ I2C)
เซ็นเซอร์ (เลือกตามการใช้งาน):
แบบที่ 1: DHT11 (วัดอุณหภูมิห้อง + ความชื้น)
แบบที่ 2: DS18B20 (วัดอุณหภูมิของเหลว/กันน้ำ) + ตัวต้านทาน 4.7kΩ
สาย Jumper และ Breadboard
🔌 วงจรการเชื่อมต่อ (Wiring Diagram)
แบบที่ 1: ใช้เซ็นเซอร์ DHT11 (วัดอากาศทั่วไป)
OLED: SDA -> D21, SCL -> D22
DHT11: Data -> D4
(ใส่รูปวงจร DHT11 ที่ผมทำให้ก่อนหน้านี้ตรงนี้)
แบบที่ 2: ใช้เซ็นเซอร์ DS18B20 (วัดน้ำ/ความแม่นยำสูง)
OLED: SDA -> D21, SCL -> D22
DS18B20: Data -> D4 (ต้องต่อตัวต้านทาน 4.7kΩ คร่อมระหว่างไฟเลี้ยง 3.3V กับขา Data)
(ใส่รูปวงจร DS18B20 ที่ผมทำให้ก่อนหน้านี้ตรงนี้)
💻 ส่วนที่ 1: ตั้งค่า Google Sheets (Server Side)
ก่อนจะอัปโหลดโค้ดลงบอร์ด เราต้องสร้างจุดรับข้อมูลก่อนครับ
ไปที่ Google Sheets สร้างไฟล์ใหม่
ไปที่เมนู Extensions (ส่วนขยาย) > Apps Script
ลบโค้ดเก่าออก แล้ววางโค้ดนี้ลงไป:
function doGet(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
// รับค่าจาก ESP32
var temp = e.parameter.temp;
var humid = e.parameter.humid; // ถ้าใช้ DS18B20 ค่านี้จะเป็น undefined ก็ไม่เป็นไร
var date = new Date();
// บันทึกลงแถวใหม่
if (humid !== undefined) {
sheet.appendRow([date, temp, humid]); // สำหรับ DHT11
} else {
sheet.appendRow([date, temp]); // สำหรับ DS18B20
}
return ContentService.createTextOutput("Success");
}
กด Deploy (การทำให้ใช้งานได้) > New Deployment
ตรง Who has access (ผู้มีสิทธิ์เข้าถึง) เลือกเป็น "Anyone (ทุกคน)" -> สำคัญมาก!
กด Deploy แล้ว Copy URL เก็บไว้ (เราต้องเอา URL นี้ไปใส่ตอนตั้งค่า WiFi)
📝 ส่วนที่ 2: โค้ด ESP32 (Arduino Code)
โปรเจกต์นี้ต้องลง Library ผ่าน Arduino IDE ดังนี้ครับ:
WiFiManager(by tzapu)Adafruit SSD1306&Adafruit GFXDHT sensor library(สำหรับแบบที่ 1)DallasTemperature&OneWire(สำหรับแบบที่ 2)
(วางโค้ด Arduino ที่คุณเลือกใช้ลงตรงนี้)
⚙️ วิธีการใช้งานครั้งแรก
ต่อวงจรและอัปโหลดโค้ดลงบอร์ด ESP32
เมื่อเปิดเครื่อง หน้าจอ OLED จะขึ้นว่า "Setup Mode"
ใช้มือถือค้นหา WiFi ชื่อ "ESP32_Temp_Setup"
กดเชื่อมต่อ จะเด้งหน้าต่างตั้งค่าขึ้นมา (ถ้าไม่เด้งให้เข้า 192.168.4.1)
กด Configure WiFi
เลือก WiFi บ้านของคุณ
ใส่รหัสผ่าน
ช่อง gas_url: ให้วาง URL ของ Google Apps Script ที่ทำไว้ในส่วนที่ 1
กด Save บอร์ดจะรีสตาร์ทและเริ่มส่งข้อมูลเข้า Google Sheets ทันที!
💡 ทริคเพิ่มเติม
การรีเซ็ตค่า: หากต้องการย้ายสถานที่หรือเปลี่ยน WiFi ให้กดปุ่ม BOOT บนบอร์ด ESP32 ค้างไว้ 10 วินาที จนหน้าจอขึ้นนับถอยหลังเพื่อล้างค่าโรงงาน

.jpg)