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



electronic

About electronic

Author Description here.. Nulla sagittis convallis. Curabitur consequat. Quisque metus enim, venenatis fermentum, mollis in, porta et, nibh. Duis vulputate elit in elit. Mauris dictum libero id justo.

Subscribe to this Blog via Email :