โปรเจกต์นี้สร้างขึ้นเพื่อควบคุมบอร์ด 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ในไฟล์ 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 ของคุณในไฟล์ 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; // เซ็นเซอร์วัดแสง- เปิดไฟล์
web/index.htmlในเว็บเบราว์เซอร์ - ระบบจะเชื่อมต่อกับ MQTT broker อัตโนมัติ
- คุณสามารถควบคุมรีเลย์และดูสถานะเซ็นเซอร์ต่างๆ ได้
- กดปุ่ม "เปิด" หรือ "ปิด" เพื่อควบคุมรีเลย์โดยตรง
- ป้อนระยะเวลาที่ต้องการ
- เลือกหน่วยเวลา (วินาที, นาที, ชั่วโมง)
- กดปุ่ม "ตั้งเวลาเปิด" หรือ "ตั้งเวลาปิด"
- สามารถตั้งเวลาหลายรายการพร้อมกันได้
- ดูรายการตั้งเวลาทั้งหมดในตารางด้านล่าง
- สามารถยกเลิกการตั้งเวลาเฉพาะรายการหรือทั้งหมดได้
- สถานะเซ็นเซอร์ทั้งหมดจะแสดงในส่วน "สถานะเซ็นเซอร์" ด้านบนของแต่ละอุปกรณ์
- ข้อมูลจะอัปเดตอัตโนมัติเมื่อได้รับข้อมูลใหม่จาก ESP32
- เพิ่มการกำหนด GPIO ในไฟล์
src/main.rs - เพิ่มการอ่านค่าในฟังก์ชัน thread สำหรับอ่านค่าเซ็นเซอร์
- เพิ่มการส่งข้อมูลผ่าน MQTT
- เพิ่มการแสดงผลในไฟล์
web/index.html - เพิ่มการรับข้อมูลและอัปเดต UI ในไฟล์
web/script.js
- เพิ่มจำนวนรีเลย์ในตัวแปร
RELAY_PINSในไฟล์src/main.rs - เพิ่ม HTML สำหรับรีเลย์ใหม่ในไฟล์
web/index.html
[target.riscv32imc-esp-espidf]
runner = "espflash flash --monitor"-
หากไม่สามารถเชื่อมต่อกับ MQTT broker ได้:
- ตรวจสอบการเชื่อมต่อ WiFi
- ตรวจสอบ URL ของ MQTT broker
- ตรวจสอบว่า MQTT broker รองรับ WebSocket (สำหรับเว็บอินเตอร์เฟซ)
-
หากไม่สามารถอ่านค่าจากเซ็นเซอร์ได้:
- ตรวจสอบการเชื่อมต่อของเซ็นเซอร์
- ตรวจสอบการกำหนด GPIO ที่ถูกต้อง
- ตรวจสอบการจ่ายไฟให้เซ็นเซอร์
-
หากไม่สามารถควบคุมรีเลย์ได้:
- ตรวจสอบการเชื่อมต่อของรีเลย์
- ตรวจสอบการกำหนด GPIO ที่ถูกต้อง
- ตรวจสอบการจ่ายไฟให้รีเลย์