กลับไปหน้ารวมไฟล์
az-touch-iot-controller-f99226.md

ในยุคที่อุปกรณ์ IoT (Internet of Things) เข้ามาเป็นส่วนหนึ่งของบ้าน ไม่ว่าจะเป็นหลอดไฟอัจฉริยะ, เครื่องปรับอากาศ, หรือระบบรดน้ำต้นไม้ ปัญหาที่ตามมาคือเรามีแอปพลิเคชันหรือตัวควบคุมที่กระจัดกระจาย โปรเจคนี้จึงเกิดขึ้นเพื่อสร้าง "ศูนย์กลางการควบคุม IoT (Universal IoT Controller)" ที่ทรงพลังและยืดหยุ่น โดยใช้พื้นฐานจากชุดอุปกรณ์ AZ-Touch

การสั่งงานไฟเส้น LED (LED Strip) ผ่านหน้าจอ AZ-Touch IoT Controller

หัวใจหลักของโปรเจคนี้คือการเปลี่ยนหน้าจอ TFT ระบบสัมผัสให้กลายเป็น Dashboard ควบคุมบ้านอัจฉริยะ โดยใช้ชุด AZ-Touch kit จาก AZ-Delivery ซึ่งเป็นโซลูชันที่สมบูรณ์แบบมากสำหรับวิศวกรหรือนักประดิษฐ์ เพราะในชุดมาพร้อมกับแผงวงจร (PCB) ที่ออกแบบมาอย่างดี, หน้าจอ TFT พร้อมตัวอ่าน SD Card และเคสสำหรับติดตั้งบนผนังที่ดูเป็นมืออาชีพ

สถาปัตยกรรมฮาร์ดแวร์และการเลือกใช้งาน

โปรเจคนี้ได้รับการออกแบบให้รองรับไมโครคอนโทรลเลอร์สองตระกูลยอดนิยม:

  • ESP32 Dev Kit C: แนะนำเป็นพิเศษสำหรับโปรเจคนี้ เนื่องจากมีหน่วยความจำ (SRAM) ที่มากกว่าและประมวลผลได้รวดเร็ว ทำให้การจัดการกับ JSON Payload ขนาดใหญ่และการแสดงผลบนหน้าจอราบรื่น
  • Wemos D1 Mini (ESP8266): สามารถใช้งานได้เช่นกัน แต่อาจมีข้อจำกัดเรื่องการแสดงผลสีที่ไม่ครบถ้วนเท่า ESP32 เนื่องด้วยขีดจำกัดของ Hardware Interface และ Library ที่ใช้

ในเชิงวิศวกรรม หน้าจอ TFT นี้เชื่อมต่อผ่านโปรโตคอล SPI (Serial Peripheral Interface) ซึ่งให้ความเร็วในการรับส่งข้อมูลภาพที่สูงพอสำหรับการทำ GUI (Graphical User Interface) ที่ตอบสนองได้ทันใจ

เจาะลึกระบบการทำงาน (System Logic)

หัวใจสำคัญที่ทำให้โปรเจคนี้ "ฉลาด" กว่าตัวควบคุมทั่วไปคือการใช้ Dynamic Menu System ผ่านโปรโตคอล MQTT ร่วมกับ Backend (เช่น Python Script และ MySQL) แทนที่จะ Hard-code รายชื่ออุปกรณ์ลงไปใน Arduino โดยตรง

ขั้นตอนการทำงานแบ่งออกเป็น 3 ระดับ (Three-Level Hierarchy):

  1. Level 1: Home Screen (Device Categories)
    หน้าจอหลักจะแสดงประเภทของอุปกรณ์ (เช่น Relay, Curtains, Air Conditioners) เมื่อผู้ใช้สัมผัสที่ไอคอน ระบบจะส่งข้อความ (Publish) ไปยัง Topic ที่กำหนดไว้ เพื่อแจ้งให้ Backend ทราบว่าต้องการดูรายการอุปกรณ์ในหมวดหมู่นี้
  2. <li><strong>Level 2: Device List (Dynamic Fetching)</strong>
        <br>เมื่อ Backend (เช่น Python Script) ได้รับข้อความ จะทำการ Query ข้อมูลจาก Database (MySQL) และส่งรายการอุปกรณ์ทั้งหมดในรูปแบบ <strong>JSON Array</strong> กลับมายังหน้าจอ ตัว Controller จะทำการ Parse ข้อมูล JSON นี้และสร้างปุ่มกดบนหน้าจอแบบ Real-time ตามรายชื่อที่ได้รับ</li>
    
    <li><strong>Level 3: Command List (Action Execution)</strong>
        <br>เมื่อเลือกอุปกรณ์เฉพาะเจาะจงแล้ว ระบบจะดึงคำสั่งที่อุปกรณ์นั้นทำได้ (เช่น Smart Socket อาจจะมีแค่ "On" หรือ "Off") มาแสดงผล เมื่อกดปุ่มคำสั่ง Controller จะส่งคำสั่งสุดท้ายไปยัง Topic ของอุปกรณ์นั้นๆ โดยตรงเพื่อควบคุมการทำงาน</li>
    

ทำไมต้องใช้ Python และ MySQL เป็นตัวกลาง?

การใช้ Python script (ตัวอย่างอยู่ในโฟลเดอร์ doc ใน Repository) เป็นตัวจัดการ Logic เบื้องหลัง ช่วยให้ระบบมีความยืดหยุ่นสูงมาก:

  • Scalability: คุณสามารถเพิ่มอุปกรณ์ใหม่ในบ้านได้เพียงแค่เพิ่มบรรทัดใน MySQL Database โดยไม่ต้องอัปโหลด Code ลงในตัว Controller ใหม่
  • Complex Logic: สามารถเขียนเงื่อนไขที่ซับซ้อนใน Python ได้ง่ายกว่าในภาษา C++ ของ Arduino
  • Centralized Control: ข้อมูลสถานะของอุปกรณ์ทุกตัวจะถูกเก็บไว้อย่างเป็นระบบ

การนำไปใช้งานและการพัฒนาต่อยอด

สำหรับ Source Code ทั้งหมด รวมถึงคำแนะนำในการติดตั้งอย่างละเอียด สามารถเข้าชมได้ที่ GitHub Repository ของโปรเจคนี้ ซึ่งมีการอัปเดตฟีเจอร์ใหม่ๆ อยู่เสมอ

โปรเจคนี้ไม่เพียงแต่เป็นรีโมทควบคุมไฟ แต่เป็นรากฐานของการสร้าง Smart Home Gateway ที่คุณสามารถปรับแต่งหน้าตา Interface และลำดับการสั่งงานได้ตามต้องการ เหมาะสำหรับผู้ที่ต้องการยกระดับระบบ Home Automation ให้มีความเป็นมืออาชีพและใช้งานได้จริงสำหรับทุกคนในครอบครัว

ข้อมูล Frontmatter ดั้งเดิม

title: "AZ-Touch IoT Controller"
description: "Controller for IoT devices based on the AZ-Delivery AZ-Touch kit"
author: "francescor93"
category: ""
tags:
  - "home automation"
  - "smart appliances"
  - "internet of things"
views: 1938
likes: 0
price: 2450
difficulty: "Intermediate"
components:
  - "1x Wemos D1 Mini"
  - "1x Soldering iron (generic)"
  - "1x Flash Memory Card, SD Card"
  - "1x AZ-Touch kit"
  - "1x ESP32 Dev Kit C"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://github.com/francescor93/az-touch-iot-controller"
documentationLinks: []
passwordHash: "c55f68ca857d7dcf4df3d2e56aedc694e3b28fa8cf30c75446ac795c6983eeb1"
encryptedPayload: "U2FsdGVkX1/u2T/8iajO4P7w4aMWAmp8s/arl20WGeTFYJG3x3AVoEsNt/+nRs1gRaLMBqMLlFI11SR/hyGzQJYsnX98pNPtZhDL82bYLbQ="
seoDescription: "Build an IoT Controller using the AZ-Delivery AZ-Touch kit. A versatile Arduino-based project for managing your IoT devices."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/az-touch-iot-controller-f99226_cover.jpg"
lang: "en"