Saturday, 1 February 2025

ESP32 เก็บ ข้อมูล การเปิดปิดประตู เข้า google sheet งบไม่เกิน 100 บาท

 


วิธีการทำงานโดยรวม

  1. ESP32 ตรวจจับสถานะประตู

    • ใช้เซ็นเซอร์แม่เหล็ก (Reed Switch) หรือเซ็นเซอร์ Hall Effect เพื่อตรวจจับว่าเปิดหรือปิด
    • ใช้ ESP32 อ่านค่าสถานะจาก GPIO
  2. ESP32 ส่งข้อมูลไปยัง Google Sheets

    • ESP32 ใช้ HTTP POST/GET เพื่อส่งข้อมูลไปยัง Google Apps Script
    • Google Apps Script จะจัดการบันทึกข้อมูลลง Google Sheets

ขั้นตอนการตั้งค่า Google Sheets และ Apps Script

  1. สร้าง Google Sheets

    • สร้างไฟล์ใหม่ ตั้งชื่อ เช่น DoorLog
    • ตั้งชื่อคอลัมน์ เช่น Timestamp, Status
  2. สร้าง Google Apps Script

    • เปิด Extensions > Apps Script
    • วางโค้ดนี้ลงไป

function doGet(e) {
    return doPost(e);
}

function doPost(e) {
    var sheet = SpreadsheetApp.openById("YOUR_SHEET_ID").getActiveSheet();
    var status = e.parameter.status;
    var timestamp = new Date();

    sheet.appendRow([timestamp, status]);

    return ContentService.createTextOutput("Success");
}


    • เปลี่ยน "YOUR_SHEET_ID" เป็น ID ของ Google Sheets
    • กด Deploy > New Deployment > Web app
    • กำหนดให้ Anyone สามารถเข้าถึงได้
    • คัดลอก URL ที่ได้มา
โค้ด ESP32 (Arduino)

#include <WiFi.h>
#include <HTTPClient.h>

const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
const char* scriptURL = "YOUR_SCRIPT_URL"; 

const int doorSensor = 4; // ขา GPIO ที่เชื่อมกับเซ็นเซอร์
int lastState = HIGH;

void setup() {
    Serial.begin(115200);
    pinMode(doorSensor, INPUT_PULLUP);
    WiFi.begin(ssid, password);
    
    while (WiFi.status() != WL_CONNECTED) {
        delay(1000);
        Serial.println("Connecting to WiFi...");
    }
    Serial.println("Connected to WiFi!");
}

void loop() {
    int currentState = digitalRead(doorSensor);

    if (currentState != lastState) {
        lastState = currentState;
        String status = (currentState == HIGH) ? "Closed" : "Opened";
        
        HTTPClient http;
        http.begin(scriptURL + "?status=" + status);
        int httpResponseCode = http.GET();
        http.end();

        Serial.println("Door Status: " + status);
    }

    delay(1000);
}



  • ESP32 ตรวจจับสถานะประตู
  • ส่งข้อมูลไปยัง Google Apps Script
  • Apps Script บันทึกข้อมูลลง Google Sheets

หากต้องการปรับปรุงระบบ เช่น เพิ่มการแจ้งเตือนผ่าน Line Notify หรือ Telegram แจ้งให้ฉันทราบได้! 


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

  1. ESP32
  2. Reed Switch (เซ็นเซอร์แม่เหล็ก)
  3. ตัวต้านทาน 10kΩ (Pull-up Resistor)
  4. สาย Jumper

การต่อวงจร

  • Reed Switch มี 2 ขา
    • ขาหนึ่งต่อกับ GND
    • อีกขาหนึ่งต่อกับ GPIO 4 ของ ESP32 (สามารถใช้ขาอื่นได้)
    • ใช้ตัวต้านทาน 10kΩ ต่อระหว่าง GPIO 4 และ 3.3V เพื่อทำ Pull-up

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

  • เมื่อประตูปิด → วงจรสมบูรณ์ → GPIO 4 อ่านค่า LOW
  • เมื่อประตูเปิด → วงจรขาด → GPIO 4 อ่านค่า HIGH