กลับไปหน้ารวมไฟล์
voice-controlled-home-automation-abd0d6.md

รูปภาพ

Arduino MEGA กับ HC06

เกริ่นนำ

ระบบควบคุมด้วยเสียงส่วนใหญ่ชอบส่งข้อมูลไปประมวลผลบนเซิร์ฟเวอร์เมฆยักษ์อย่าง Amazon Alexa กันใช่ไหมล่ะ? แต่โปรเจค **Voice Controlled Home Automation** นี้มันตัดขาดจากอินเทอร์เน็ตซะเลย! มันใช้เอนจินแปลงเสียงเป็นข้อความ (Google Speech-to-Text) แบบออฟไลน์ในสมาร์ทโฟน Android แล้วส่งข้อความล้วนๆ ผ่านบลูทูธตรงเข้าไปยังเมทริกซ์รีเลย์สวิตชิ่งของ Arduino เลยจ้า

พูดง่ายๆ ก็คือ ในระบบ Home Automation ทั่วไปเรามีสวิตช์ไร้สายไว้เปิดปิดอุปกรณ์ใช่ไหม? แต่โปรเจคนี้เราควบคุมอุปกรณ์ด้วยเสียงเราเองเลยว่ะ! Arduino Mega มีขา Digital ตั้ง 54 ขา เพราะฉะนั้นเราจะต่ออุปกรณ์ได้เพียบเลย โปรเจคนี้จะช่วยเหลือผู้ที่มีข้อจำกัดทางร่างกาย ให้สามารถใช้เสียงควบคุมสิ่งต่างๆ ในบ้านได้ สู้งานนะน้อง!

แยกชิ้นส่วนข้อมูลจากบลูทูธ (String Parsing)

สมมติน้องพูดว่า "เปิดไฟห้องนั่งเล่น" แอพในมือถือจะแปลงคลื่นเสียงนั้นเป็นสายอักขระ ASCII

  1. มือถือจะส่งสายอักขระนี้ผ่านบลูทูธเข้าไปที่ ขา RX ของ HC-05 หรือ HC-06 ที่ต่อกับ Arduino
  2. การประกอบบัฟเฟอร์: Arduino อ่านสายอักขระทั้งเส้นทีเดียวไม่ได้ มันอ่านทีละตัวอักษร ('T', 'u', 'r', 'n'...)
  3. น้องต้องเขียนลูป while(Serial.available()) เพื่อต่อตัวอักษรแต่ละตัวให้กลายเป็นวัตถุ String ของ C++ ที่สมบูรณ์
  4. ตัวอักษรจบประโยคสุดสำคัญ: แอพ Android ต้องถูกโปรแกรมให้ส่งตัวอักษร \n (Newline) ตอนจบประโยค Arduino จะใช้เงื่อนไข if (incomingChar == '\n') เป็นตัวบอกให้หยุดฟังและเริ่มประมวลผลข้อมูล! ห้ามช็อตนะตัวนี้

ค้นหาคำสั่งด้วย indexOf

พอ Arduino ได้สายอักขระสมบูรณ์มาแล้ว เช่น message = "เปิดพัดลมห้องนอน" การตรวจสอบเงื่อนไขต้องทำแบบยืดหยุ่นหน่อย

  • อย่าใช้ if (message == "เปิดพัดลมห้องนอน") เด็ดขาด! เพราะถ้ามือถือได้ยินเป็น "เปิดพัดลมห้องนอนที" การเปรียบเทียบตรงๆ จะล้มเหลวทันที
  • ให้ใช้ฟังก์ชัน .indexOf() แบบให้อภัย ที่ค้นหาคำหลักภายในสายอักขระแทน
if (message.indexOf("bedroom") >= 0 && message.indexOf("on") >= 0) {
  digitalWrite(RelayPin1, LOW); // เปิดพัดลมซะ!
} else if (message.indexOf("all") >= 0 && message.indexOf("off") >= 0) {
  // ปิดรีเลย์ทุกตัวในบ้านซะ!
}

อุปกรณ์ฮาร์ดแวร์ที่ต้องจัด

  • Arduino Uno/Mega (แนะนำ Mega เพราะแรมเยอะ ช่วยบัฟเฟอร์สายอักขระยาวๆ ได้ดี)
  • โมดูลบลูทูธ HC-05 หรือ HC-06 (ตามรูปด้านบนเลย)
  • รีเลย์แบบแยกส่วนด้วยแสง (Optically Isolated Relays) หลายๆ ตัว 5V (ต้องทนแรงดันไฟบ้าน 120V / 10A AC ได้ เพื่อใช้กับหลอดไฟและพัดลม)
  • สมาร์ทโฟน Android ที่รันแอพ "Bluetooth Voice Controller" ทั่วไป หรือจะเป็นแอพที่เขียนเองด้วย MIT App Inventor ก็ได้จัดไปวัยรุ่น

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

apps:
  - "1x Android App"
author: "abhijitbrain"
category: ""
components:
  - "2x Relay (generic)"
  - "10x Jumper wires (generic)"
  - "1x Arduino Mega 2560"
  - "1x HC-06 Bluetooth Module"
description: "โครงการนี้เราจะมาควบคุมอุปกรณ์ด้วยเสียงผ่านแอพ Android กัน! ใช้บอร์ด Arduino MEGA เป็นหลัก แต่จะเปลี่ยนไปใช้บอร์ด Arduino รุ่นอื่นๆ ก็ได้เหมือนกัน งานนี้ทั้งตึงและเทพ วัยรุ่นสายช่างต้องจัดไป!"
difficulty: "Intermediate"
documentationLinks: []
downloadableFiles: []
encryptedPayload: "U2FsdGVkX1+ytmqcCts7ZDqVnrtdDyB3uDttP31jzouFqtCvd+UBm2S29FrzxFcKxT6q2iI+2kTTFxjn2Ip6BBYZHxm02g/vWvZJ5F0DG/0="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/voice-controlled-home-automation-abd0d6_cover.png"
lang: "en"
likes: 3
passwordHash: "d9bb46a0e355551810abe1f633444155e68eeb45467791176289048162c7873a"
price: 299
seoDescription: "Build a Voice Controlled Home Automation system using Arduino MEGA and Android APP to control devices with voice commands."
tags:
  - "voice control"
  - "bluetooth"
  - "home automation"
title: "บ้านอัจฉริยะสั่งการด้วยเสียง งานง่ายแต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/UDMNFxzJZ4I"
views: 30291