Skip to content

JntnCH/ESP32_Control_Website

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ระบบควบคุม ESP32 ด้วย Rust

โปรเจกต์นี้สร้างขึ้นเพื่อควบคุมบอร์ด ESP32-S3 ด้วยภาษา Rust พร้อมการเชื่อมต่อ WiFi, MQTT และ OTA Firmware update อัตโนมัติจาก GitHub

ฟีเจอร์

  • ✅ ควบคุม GPIO
  • ✅ เชื่อมต่อ WiFi
  • ✅ OTA Firmware Update
  • ✅ MQTT Subscribe เพื่อควบคุมวาล์ว
  • ✅ แสดงสถานะ input ทั้งหมด (เซ็นเซอร์, การไหลของน้ำ)
  • ✅ ระบบตั้งเวลาที่ใช้งานง่าย (รองรับหน่วยวินาที, นาที, ชั่วโมง)
  • ✅ แสดงแผงควบคุมเป็น 2 คอลัมน์

การใช้งาน

cargo build --release
cargo espflash flash --monitor

การตั้งค่า WiFi และ MQTT

ในไฟล์ src/main.rs ให้แก้ไขค่าต่อไปนี้:

// ตั้งค่า Wi-Fi
wifi.set_configuration(&Configuration::Client(ClientConfiguration {
    ssid: "YOUR_SSID".into(),
    password: "YOUR_PASSWORD".into(),
    ..Default::default()
}))?;

// ตั้งค่า MQTT
let mqtt_url = "mqtt://broker.hivemq.com"; // เปลี่ยนเป็น MQTT broker ของคุณ

การตั้งค่า GPIO

ในไฟล์ src/main.rs คุณสามารถกำหนด GPIO สำหรับรีเลย์และเซ็นเซอร์ต่างๆ:

// กำหนด GPIO สำหรับรีเลย์ 6 ตัว
const RELAY_PINS: [u32; 6] = [23, 22, 21, 19, 18, 5]; // ปรับ GPIO ตามบอร์ดของคุณ

// กำหนด GPIO สำหรับเซ็นเซอร์ต่างๆ
const WATER_FLOW_SENSOR_PIN: u32 = 26; // เซ็นเซอร์วัดการไหลของน้ำ
const SOIL_MOISTURE_SENSOR_PIN: u32 = 32; // เซ็นเซอร์วัดความชื้นในดิน
const TEMPERATURE_SENSOR_PIN: u32 = 33; // เซ็นเซอร์วัดอุณหภูมิ
const WATER_LEVEL_SENSOR_PIN: u32 = 34; // เซ็นเซอร์วัดระดับน้ำ
const LIGHT_SENSOR_PIN: u32 = 35; // เซ็นเซอร์วัดแสง

การใช้งานเว็บอินเตอร์เฟซ

  1. เปิดไฟล์ web/index.html ในเว็บเบราว์เซอร์
  2. ระบบจะเชื่อมต่อกับ MQTT broker อัตโนมัติ
  3. คุณสามารถควบคุมรีเลย์และดูสถานะเซ็นเซอร์ต่างๆ ได้

การควบคุมรีเลย์

  • กดปุ่ม "เปิด" หรือ "ปิด" เพื่อควบคุมรีเลย์โดยตรง

การตั้งเวลา

  1. ป้อนระยะเวลาที่ต้องการ
  2. เลือกหน่วยเวลา (วินาที, นาที, ชั่วโมง)
  3. กดปุ่ม "ตั้งเวลาเปิด" หรือ "ตั้งเวลาปิด"
  4. สามารถตั้งเวลาหลายรายการพร้อมกันได้
  5. ดูรายการตั้งเวลาทั้งหมดในตารางด้านล่าง
  6. สามารถยกเลิกการตั้งเวลาเฉพาะรายการหรือทั้งหมดได้

การดูสถานะเซ็นเซอร์

  • สถานะเซ็นเซอร์ทั้งหมดจะแสดงในส่วน "สถานะเซ็นเซอร์" ด้านบนของแต่ละอุปกรณ์
  • ข้อมูลจะอัปเดตอัตโนมัติเมื่อได้รับข้อมูลใหม่จาก ESP32

การปรับแต่งเพิ่มเติม

การเพิ่มเซ็นเซอร์

  1. เพิ่มการกำหนด GPIO ในไฟล์ src/main.rs
  2. เพิ่มการอ่านค่าในฟังก์ชัน thread สำหรับอ่านค่าเซ็นเซอร์
  3. เพิ่มการส่งข้อมูลผ่าน MQTT
  4. เพิ่มการแสดงผลในไฟล์ web/index.html
  5. เพิ่มการรับข้อมูลและอัปเดต UI ในไฟล์ web/script.js

การเพิ่มรีเลย์

  1. เพิ่มจำนวนรีเลย์ในตัวแปร RELAY_PINS ในไฟล์ src/main.rs
  2. เพิ่ม HTML สำหรับรีเลย์ใหม่ในไฟล์ web/index.html

toml สำหรับ ESP32-C3

[target.riscv32imc-esp-espidf]  
runner = "espflash flash --monitor"

การแก้ไขปัญหา

  1. หากไม่สามารถเชื่อมต่อกับ MQTT broker ได้:

    • ตรวจสอบการเชื่อมต่อ WiFi
    • ตรวจสอบ URL ของ MQTT broker
    • ตรวจสอบว่า MQTT broker รองรับ WebSocket (สำหรับเว็บอินเตอร์เฟซ)
  2. หากไม่สามารถอ่านค่าจากเซ็นเซอร์ได้:

    • ตรวจสอบการเชื่อมต่อของเซ็นเซอร์
    • ตรวจสอบการกำหนด GPIO ที่ถูกต้อง
    • ตรวจสอบการจ่ายไฟให้เซ็นเซอร์
  3. หากไม่สามารถควบคุมรีเลย์ได้:

    • ตรวจสอบการเชื่อมต่อของรีเลย์
    • ตรวจสอบการกำหนด GPIO ที่ถูกต้อง
    • ตรวจสอบการจ่ายไฟให้รีเลย์

About

ESP32 Control Website

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages