ภาพรวมทั้งหมด

-- | Loading...
! อุณหภูมิปกติ
ถึง กำลังโหลดข้อมูล...
Smart Fan IoT — Active Devices อุณหภูมิ/ความชื้น อัปเดตเรียลไทม์ทุก 5 วิ
มีการแจ้งเตือนเกิดขึ้น
อุณหภูมิอุณหภูมิห้อง (จากพัดลม IoT)
-- C
ความชื้นความชื้นสัมพัทธ์ (จากพัดลม IoT)
-- %
สถานะพัดลม
--
กราฟสรุปย่อ
คลิกเพื่อดูใหญ่

แนวโน้มอุณหภูมิ (Temperature Trend)

คลิกเพื่อดูใหญ่

แนวโน้มความชื้น (Humidity Trend)

คลิกเพื่อดูใหญ่

ค่าเฉลี่ยรายชั่วโมง (Hourly Average)

ข้อมูลการวัดระบบ (System Info)

เซนเซอร์ที่ใช้งาน

DHT22
เซนเซอร์อุณหภูมิและความชื้นดิจิทัล บอร์ด Arduino Uno อ่านค่าแล้วส่งผ่าน Serial ไปยัง NodeMCU ESP8266

หน่วยการวัด

°C / %RH
อุณหภูมิหน่วย °C (เซลเซียส), ความชื้นหน่วย %RH (ความชื้นสัมพัทธ์) — แสดงบนการ์ด KPI พร้อมหน่วยกำกับทุกค่า

ความถี่ในการวัด

ทุก 2 วินาที
Arduino อ่านค่าเซนเซอร์และส่งทุก 2 วินาที ผ่าน Serial; NodeMCU อัปเดตหน้าเว็บอุปกรณ์แบบเรียลไทม์ และส่งค่าขึ้นเซิร์ฟเวอร์ทุก 5 วินาที เพื่อให้แดชบอร์ดนี้แสดงผลแบบเรียลไทม์

รูปร่างของกราฟ

กราฟเส้น (Line)
กราฟแนวโน้มแบบ เส้น (Line Chart) แสดงค่าตามเวลา (เทียบเวลา) + กราฟ ค่าเฉลี่ยรายชั่วโมง คลิกที่กราฟเพื่อดูขนาดใหญ่ และ export JPG/CSV ได้

GET & POST

GET / POST
GET อ่านข้อมูล: api/v1/get.php, api.php — POST ส่งข้อมูลเซนเซอร์จากอุปกรณ์: api/v1/post.php (ทดลองได้ในเมนู API Tester)

API Key

iot_eeiot_2024
ส่งใน Header ชื่อ X-API-Key ทุกคำขอ GET/POST เพื่อผ่านการตรวจสอบสิทธิ์ของระบบ API v1
การวิเคราะห์กราฟ
คลิกเพื่อดูใหญ่

แนวโน้มอุณหภูมิ (Temperature Trend)

คลิกเพื่อดูใหญ่

แนวโน้มความชื้น (Humidity Trend)

คลิกเพื่อดูใหญ่

ค่าเฉลี่ยรายชั่วโมง (Hourly Average)

ตารางข้อมูล

ข้อมูลทั้งหมด (Data Records)

IDวันที่/เวลาห้อง อุณหภูมิ (°C)ความชื้น (%RH)
สถิติรายวัน
ค่าเฉลี่ยและสถิติแยกตามวัน

อุณหภูมิเฉลี่ยรายวัน

ความชื้นเฉลี่ยรายวัน

ข้อมูลสถิติแยกรายวัน

วันที่บันทึก อุณหภูมิเฉลี่ย (°C)อุณหภูมิ Min/Max (°C) ความชื้นเฉลี่ย (%RH)

โครงงานควบคุมการเปิด-ปิดพัดลมผ่านอินเทอร์เน็ตด้วยระบบ IoT

ระบบควบคุมการเปิด-ปิดพัดลมจากระยะไกลผ่านเว็บไซต์ บนบอร์ด NodeMCU ESP8266 ที่เชื่อมต่อกับ Arduino Uno และเซนเซอร์อุณหภูมิ DHT22 ควบคุมโดยผู้ใช้ผ่านเว็บเพจ (ควบคุมด้วยมือ)

ข้อมูลทั่วไป

หัวข้อรายละเอียด
ชื่อโครงงานโครงงานควบคุมการเปิด-ปิดพัดลมผ่านอินเทอร์เน็ตด้วยระบบ IoT (Smart Fan IoT)
บอร์ดควบคุมหลักNodeMCU ESP8266 (Web Server + เชื่อมต่อ WiFi)
บอร์ดควบคุมรองArduino Uno ATmega328P (อ่านเซนเซอร์ + ควบคุมรีเลย์)
เซนเซอร์DHT22 (วัดอุณหภูมิ + ความชื้น)
เอาต์พุตโมดูลรีเลย์ 1 ช่อง (5V) ควบคุมพัดลม DC
การสื่อสารระหว่างบอร์ดพอร์ตอนุกรม (Serial/UART) ความเร็ว 115200 Baud
ค่าที่แสดงผลอุณหภูมิ (°C), ความชื้น (%RH), สถานะพัดลม ON/OFF
โหมดการควบคุมควบคุมด้วยมือ (Manual) ผ่านปุ่มเปิด/ปิดบนเว็บเพจ
ระดับแรงดันArduino Uno 5V / NodeMCU 3.3V (ใช้ตัวแบ่งแรงดัน Voltage Divider)

วัตถุประสงค์

  1. เพื่อสร้างระบบควบคุมการเปิด-ปิดพัดลมผ่านเว็บไซต์จากระยะไกลด้วย NodeMCU ESP8266
  2. เพื่อให้ระบบสามารถวัดอุณหภูมิและความชื้นด้วยเซนเซอร์ DHT22 และแสดงผลบนเว็บเพจแบบเรียลไทม์
  3. เพื่อออกแบบและสร้างวงจรเชื่อมต่อ Arduino Uno กับ NodeMCU ผ่านพอร์ตอนุกรม (Serial)

อุปกรณ์และวัสดุที่ใช้

ลำดับอุปกรณ์จำนวน
1บอร์ด NodeMCU ESP82661
2บอร์ด Arduino Uno1
3เซนเซอร์ DHT221
4โมดูลรีเลย์ 1 ช่อง (5V)1
5พัดลม DC ขนาดเล็ก1
6สายไฟจัมเปอร์ (Jumper Wire)หลายเส้น
7สาย USB สำหรับอัปโหลดโค้ด2
8ตัวต้านทาน 10kΩ (Voltage Divider)2
9Breadboard1

หลักการทำงาน

  1. NodeMCU เชื่อมต่อ WiFi และสร้างเว็บเซิร์ฟเวอร์แสดงหน้าเว็บเพจควบคุม
  2. Arduino Uno อ่านค่าอุณหภูมิ/ความชื้นจากเซนเซอร์ DHT22
  3. Arduino Uno ส่งค่าที่อ่านได้ให้ NodeMCU ผ่านสาย Serial ทุก 2 วินาที
  4. NodeMCU แสดงค่าอุณหภูมิ ความชื้น และปุ่มควบคุมบนเว็บเพจ
  5. ผู้ใช้กดปุ่มเปิด/ปิด → NodeMCU ส่งคำสั่งให้ Arduino Uno ควบคุมรีเลย์เปิด-ปิดพัดลม
  6. ระบบแสดงสถานะพัดลมปัจจุบัน (ON/OFF) อุณหภูมิ และความชื้นแบบเรียลไทม์บนเว็บเพจ

การต่อวงจร

แผนภาพการเชื่อมต่อวงจรจากอุปกรณ์จริง
10kΩ 10kΩ Voltage Divider 5V->3.3V RX ↔ TX 115200 baud 5V (VCC) 5V DATA (D5) 10kΩ pull-up IN (D4) COM → พัดลม DC NodeMCU ESP8266 Web Server + WiFi RX TX GND Arduino Uno ATmega328P TX D1 RX D0 5V GND D4 D5 DHT22 Temp + Humidity VCC DATA GND Relay 1ch 5V โมดูลรีเลย์ IN VCC GND COM พัดลม DC สัญลักษณ์สายไฟ VCC / ไฟ 5V DATA / สัญญาณเซนเซอร์ IN / ควบคุมรีเลย์ Serial TX (Arduino → NodeMCU) Serial RX (NodeMCU → Arduino) GND (ทุกจุดต่อร่วมกัน)

หมายเหตุ: ตัวต้านทาน 10kΩ บนเส้น Serial TX ทำหน้าที่เป็นตัวแบ่งแรงดัน (Voltage Divider) ลดแรงดันจาก Arduino Uno 5V ลงเหลือประมาณ 2.5V เพื่อป้อนเข้าขารับ RX (GPIO2) ของ NodeMCU 3.3V และสาย DATA ของ DHT22 มีตัวต้านทาน pull-up 10kΩ ไปที่ 5V

โปรโตคอลการสื่อสารแบบ Serial

ทิศทางรูปแบบความหมาย
NodeMCU → UnoF1 / F0สั่งเปิดพัดลม / สั่งปิดพัดลม
Uno → NodeMCUT:28.5
H:60
S:1
แต่ละค่าอยู่คนละบรรทัด: อุณหภูมิ 28.5°C, ความชื้น 60%, พัดลมสถานะเปิด (1=เปิด / 0=ปิด)

ผลการดำเนินงาน

รายการผลลัพธ์
เชื่อมต่อ WiFi / Web Serverสำเร็จ และแสดง IP Address เช่น 192.168.1.100
อ่านค่าเซนเซอร์ DHT22แสดงค่า 25.4 / 26.1 / 30.3 °C ได้ถูกต้องและเป็นเรียลไทม์
ควบคุมรีเลย์ผ่านหน้าเว็บกดเปิด → พัดลมหมุน (ON สีเขียว), กดปิด → พัดลมหยุด (OFF สีแดง)

ข้อเสนอแนะเพื่อการพัฒนา

  1. เชื่อมต่ออินเทอร์เน็ตผ่านระบบ Cloud เช่น Node-RED, Blynk, MQTT เพื่อควบคุมจากที่ใดก็ได้ทั่วโลก
  2. เพิ่มระบบตั้งเวลาอัตโนมัติ (Timer/Schedule) ในการเปิด-ปิดพัดลม
  3. เพิ่มเซนเซอร์ตรวจจับคน (PIR Sensor) ให้พัดลมทำงานเมื่อมีคนอยู่ในห้อง
  4. บันทึกประวัติข้อมูลย้อนหลัง (Data Logging) ลงในฐานข้อมูล
ทดสอบ API
API Key: iot_eeiot_2024 — ส่งอัตโนมัติใน Header X-API-Key ของทุกคำขอ GET/POST

ทดสอบการส่งข้อมูล (POST)

ส่งข้อมูล POST แบบ form-data

คลิกปุ่มเพื่อส่งข้อมูล

ทดสอบการอ่านข้อมูล (GET)

เลือกการทดสอบ GET

คลิกปุ่มเพื่อดึงข้อมูล
คู่มือ GET

คำขอข้อมูลด้วย GET

ใช้วิธีการ GET เพื่ออ่านข้อมูลจากเซนเซอร์ที่บันทึกไว้ โดยใช้ Base URL: http://localhost/dashboard_iot/api/v1/get.php

GET 1. ข้อมูลล่าสุด (latest)

GET /api/v1/get.php?action=latest
ตัวอย่าง curl
curl "http://localhost/dashboard_iot/api/v1/get.php?action=latest"

GET 2. ข้อมูลล่าสุด N เรคคอร์ด (latest_all)

GET /api/v1/get.php?action=latest_all&limit=N
Parameterชนิดค่าเริ่มต้นคำอธิบาย
limitint10จำนวนเรคคอร์ด (สูงสุด 100)
fromstring-วันที่เริ่มต้น (YYYY-MM-DD)
tostring-วันที่สิ้นสุด (YYYY-MM-DD)
ตัวอย่าง curl
curl "http://localhost/dashboard_iot/api/v1/get.php?action=latest_all&limit=10"
curl "http://localhost/dashboard_iot/api/v1/get.php?action=latest_all&limit=10&from=2026-08-01&to=2026-08-31"

GET 3. ค้นหาด้วย ID (by_id)

GET /api/v1/get.php?action=by_id&id=N
ตัวอย่าง curl
curl "http://localhost/dashboard_iot/api/v1/get.php?action=by_id&id=1001"

GET 4. ค้นหาด้วยห้อง (by_room)

GET /api/v1/get.php?action=by_room&room=XXXX&limit=N
ตัวอย่าง curl
curl "http://localhost/dashboard_iot/api/v1/get.php?action=by_room&room=18207&limit=10"

GET 5. สรุปค่าเฉลี่ย (summary)

GET /api/v1/get.php?action=summary

คืนค่าสถิติทั้งหมด เช่น จำนวนเรคคอร์ด ค่าเฉลี่ยของทุกเซนเซอร์

ตัวอย่าง curl
curl "http://localhost/dashboard_iot/api/v1/get.php?action=summary"

GET 6. นับจำนวนข้อมูล (count)

GET /api/v1/get.php?action=count
ตัวอย่าง curl
curl "http://localhost/dashboard_iot/api/v1/get.php?action=count"

GET 7. สถิติรายวัน (daily)

GET /api.php?action=daily&limit=N

คืนค่าเฉลี่ยและสถิติแยกรายวัน

ตัวอย่าง curl
curl "http://localhost/dashboard_iot/api.php?action=daily&limit=7"
คู่มือ POST

การส่งข้อมูลด้วย POST

ใช้วิธีการ POST เพื่อส่งข้อมูลจากเซนเซอร์ (ESP32/ESP8266) เข้าสู่ระบบ URL: http://localhost/dashboard_iot/api/v1/post.php

POST ส่งข้อมูลเซนเซอร์

Parameterชนิดจำเป็นคำอธิบาย
roomstringREQUIREDรหัสห้อง / อุปกรณ์
temp1floatไม่บังคับอุณหภูมิเซนเซอร์ 1
temp2floatไม่บังคับอุณหภูมิเซนเซอร์ 2
humi1floatไม่บังคับความชื้นเซนเซอร์ 1
humi2floatไม่บังคับความชื้นเซนเซอร์ 2
volt1floatไม่บังคับแรงดันไฟฟ้า (V)
current1floatไม่บังคับกระแสไฟฟ้า (A)
power1floatไม่บังคับกำลังไฟฟ้า (W)
kwh1floatไม่บังคับพลังงาน (kWh)
freq1floatไม่บังคับความถี่ (Hz)
pf1floatไม่บังคับPower Factor

แบบฟอร์ม (application/x-www-form-urlencoded)

ตัวอย่าง curl
curl -X POST "http://localhost/dashboard_iot/api/v1/post.php" \
  -d "room=18207" \
  -d "temp1=28.5" \
  -d "temp2=27.3" \
  -d "humi1=65.2" \
  -d "volt1=220.5" \
  -d "current1=1.25" \
  -d "power1=275.6" \
  -d "freq1=50.0" \
  -d "pf1=0.95"

แบบ JSON (application/json)

ตัวอย่าง curl
curl -X POST "http://localhost/dashboard_iot/api/v1/post.php" \
  -H "Content-Type: application/json" \
  -d '{
    "room": "18207",
    "temp1": 28.5,
    "temp2": 27.3,
    "humi1": 65.2,
    "volt1": 220.5,
    "current1": 1.25,
    "power1": 275.6,
    "freq1": 50.0,
    "pf1": 0.95
  }'

ตัวอย่างโค้ด ESP32 (Arduino)

// ESP32 POST sensor data to API
#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "YOUR_WIFI";
const char* pass = "YOUR_PASSWORD";
const char* apiUrl = "http://YOUR_SERVER/dashboard_iot/api/v1/post.php";

void setup() {
    WiFi.begin(ssid, pass);
    while(WiFi.status() != WL_CONNECTED) delay(500);
}

void sendData() {
    HTTPClient http;
    http.begin(apiUrl);
    http.addHeader("Content-Type", "application/json");

    String json = "{\"room\":\"18207\",\"temp1\":" + String(temp1) +
                  ",\"humi1\":" + String(humi1) +
                  ",\"volt1\":" + String(volt1) + "}";

    int code = http.POST(json);
    http.end();
}
คู่มือการใช้งาน

โครงสร้างระบบ

ไฟล์หน้าที่
index.htmlหน้าแดชบอร์ดหลัก (หน้าโฮม)
api.phpAPI สำหรับแดชบอร์ด (summary, chart, table, daily ฯลฯ)
db.phpการเชื่อมต่อฐานข้อมูล MySQL
api/v1/get.phpAPI รับข้อมูล (GET) สำหรับอุปกรณ์
api/v1/post.phpAPI ส่งข้อมูล (POST) จาก ESP32/ESP8266
api/v1/db.phpการเชื่อมต่อฐานข้อมูลสำหรับ API v1

ขั้นตอนการใช้งาน

  1. ส่งข้อมูลจากเซนเซอร์: อุปกรณ์ ESP32/ESP8266 ส่งข้อมูลผ่าน POST ไปที่ /api/v1/post.php พร้อมพารามิเตอร์ room และค่าต่างๆ
  2. ตรวจสอบข้อมูลเข้ามา: ไปที่เมนู ภาพรวมทั้งหมด เพื่อดูค่า KPI แบบเรียลไทม์ หรือไปที่ ตารางข้อมูล เพื่อดูข้อมูลใหม่
  3. วิเคราะห์ข้อมูล: ใช้เมนู การวิเคราะห์กราฟ เพื่อดูแนวโน้มอุณหภูมิ ความชื้น ไฟฟ้า
  4. ดูสถิติรายวัน: ใช้เมนู สถิติรายวัน เพื่อดูค่าเฉลี่ยแยกตามวัน และ export เป็น CSV
  5. กรองช่วงวันที่: ใช้แถบกรองวันที่ด้านบน (เลือก จาก - ถึง แล้วกด "กรองข้อมูล")
  6. ทดสอบ API: ใช้เมนู API Tester → ทดสอบ API เพื่อลองส่ง/อ่านข้อมูล เปรียบเทียบกับคู่มือ GET / POST

คำอธิบายค่าเซนเซอร์

ค่าหน่วยคำอธิบาย
Temp°Cอุณหภูมิจากเซนเซอร์ DHT22
Humi%RHความชื้นสัมพัทธ์จากเซนเซอร์ DHT22

ปุ่ม Refresh และการอัตโนมัติ

เซนเซอร์ DHT22 อ่านค่าทุก 2 วินาที แล้วส่งผ่าน Serial ไปยัง NodeMCU (หน้าเว็บอุปกรณ์อัปเดตเรียลไทม์) จากนั้น NodeMCU อัปโหลดค่าขึ้นเซิร์ฟเวอร์ทุก 5 วินาที และแดชบอร์ดนี้ดึงข้อมูลล่าสุดทุก 5 วินาที เพื่อแสดงอุณหภูมิ/ความชื้นแบบเรียลไทม์ รวมทั้งสามารถกดปุ่ม "รีเฟรช" เพื่อดึงข้อมูลล่าสุดได้ทันที ส่วนนาฬิกาด้านบนแสดงเวลาปัจจุบันแบบเรียลไทม์

API Key (ตัวเลือก)

API v1 รองรับการตรวจสอบด้วย X-API-Key หัวข้อเสริม:

ตัวอย่าง curl
curl -H "X-API-Key: iot_eeiot_2024" "http://localhost/dashboard_iot/api/v1/get.php?action=latest"
การจำลอง Alert (แจ้งเตือน)

ระบบแจ้งเตือนแบบเรียลไทม์ — กดปุ่มด้านล่างเพื่อ จำลองสถานการณ์ ต่าง ๆ ระบบจะแสดงแถบแจ้งเตือน (Alert Banner) พร้อมระดับความรุนแรง และบันทึกลงรายการ Log ทุกครั้ง (ในทางจริง ระบบจะตรวจสอบเกณฑ์จากค่าที่อ่านได้จากเซนเซอร์)

บันทึกรายการ (Log)

ยังไม่มีเหตุการณ์ — กดปุ่มจำลองสถานการณ์ด้านบนได้เลย