เครื่องใช้ในบ้านอัตโนมัติที่ควบคุมด้วย Arduino
![PC Controlled Home Automation using Arduino](https://circuitdigest.com/sites/default/files/projectimage_mic/Home-automation-using-Ardui.jpg)
องค์ประกอบที่จำเป็น
- Arduino UNO
- สายเคเบิลอนุกรม
- ULN2003
- รีเลย์ 5 โวลต์
- หลอดไฟพร้อมที่ใส่
- สายเชื่อมต่อ
- คณะกรรมการขนมปัง
- จอ LCD ขนาด 16x2
- แล็ปท็อป
- แหล่งจ่ายไฟ
- PVT
- Single Single Single Single (SPST)
- เสาเดี่ยวคู่ผ่าน (SPDT)
- Single Double Pole Single (DPST)
- Double Pole Double Through (DPDT)
ถ่ายทอด
เราจำเป็นต้องมีรีเลย์เพื่อเชื่อมต่อวงจรกับเครื่องใช้ไฟฟ้าแรงสูงเช่นหลอดไฟทีวีพัดลม ฯลฯ รีเลย์เป็นสวิทช์ชนิดหนึ่งที่ใช้สำหรับการเชื่อมต่อทางไฟฟ้ากับไฟฟ้า รีเลย์มีขดลวดและแกนสวิทช์บางตัว มีรีเลย์ประเภทต่างๆเช่น:
![ถ่ายทอด](https://circuitdigest.com/sites/default/files/inlineimages/Relay.jpg)
ที่นี่เราได้ใช้ขั้วเดียวผ่าน (SPDT) relay รีเลย์ SPDT มีหมุดห้าตัวซึ่งมี 2 พินสำหรับขดลวดและหนึ่งขั้วและอีก 2 ขั้วคือ "Normally Connected" (NC) และ "Normally Open" (NO)
คำอธิบายโค้ด
ประการแรกเรามีไลบรารีสำหรับการแสดงผลคริสตัลเหลวและเราจะกำหนดข้อมูลและหมุดควบคุมสำหรับ LCD และเครื่องใช้ภายในบ้าน
หลังจากที่มีการเริ่มต้นการสื่อสารแบบอนุกรมที่ 9600 บิตต่อวินาทีและให้ทิศทางการใช้ขา
สำหรับการรับข้อมูลเป็นลำดับเราใช้ฟังก์ชันสองอย่างคือ Serial.available ซึ่งจะตรวจสอบข้อมูลอนุกรมใด ๆ ที่มาหรือไม่และข้อมูล Serial จะอ่านซึ่งอ่านข้อมูลที่มาพร้อมกัน
หลังจากที่ได้รับข้อมูลเป็นชุดแล้วเราจะเก็บข้อมูลไว้เป็นสตริงจากนั้นรอ Enter
เมื่อป้อนถูกกดโปรแกรมจะเริ่มเปรียบเทียบสตริงที่ได้รับกับสตริงที่กำหนดไว้แล้วและหากสตริงที่ตรงกับนั้นการดำเนินการสัมพัทธ์จะดำเนินการโดยใช้คำสั่งที่เหมาะสมซึ่งมีอยู่ในโค้ด
สำหรับการใช้สตริงเปรียบเทียบเราได้ใช้ไลบรารีที่เป็น string.h ซึ่งมีคำหลักบางคำเช่น strcmp, strncmp, strcpy เป็นต้น
รหัส
#include <LiquidCrystal.h>
#include <
string.h > LiquidCrystal lcd (13, 12, 11, 10, 9, 8);
#include <
string.h > LiquidCrystal lcd (13, 12, 11, 10, 9, 8);
#define light 3
#define fan 4
#define TV 5
#define fan 4
#define TV 5
ถ่าน temp;
char str [10];
char i = 0;
char str [10];
char i = 0;
การตั้งค่าเป็นโมฆะ ()
{
lcd.begin (16, 2);
Serial.begin (9600);
pinMode (แสง OUTPUT);
pinMode (พัดลม, เอาท์พุท);
pinMode (TV, OUTPUT);
lcd.print ("Home Automation");
lcd.setCursor (0,1);
lcd.print ("การใช้คอมพิวเตอร์");
ล่าช้า (2000);
lcd.clear ();
lcd.print ("คำหลักสำหรับ");
lcd.setCursor (0,1);
lcd.print ( "การควบคุม");
ล่าช้า (2000);
lcd.clear ();
lcd.print ("1. เปิด");
lcd.setCursor (0,1);
lcd.print ("2. แสงปิด");
ล่าช้า (2000);
lcd.clear ();
lcd.print ("3 FAN ON");
lcd.setCursor (0,
lcd.print ("4 FAN OFF");
ล่าช้า (2000);
lcd.clear ();
lcd.print ("5. TV ON");
lcd.setCursor (0,1);
lcd.print ("6. TV OFF");
ล่าช้า (2000);
ค่าเริ่มต้น ();
ล่าช้า (1000)
}
{
lcd.begin (16, 2);
Serial.begin (9600);
pinMode (แสง OUTPUT);
pinMode (พัดลม, เอาท์พุท);
pinMode (TV, OUTPUT);
lcd.print ("Home Automation");
lcd.setCursor (0,1);
lcd.print ("การใช้คอมพิวเตอร์");
ล่าช้า (2000);
lcd.clear ();
lcd.print ("คำหลักสำหรับ");
lcd.setCursor (0,1);
lcd.print ( "การควบคุม");
ล่าช้า (2000);
lcd.clear ();
lcd.print ("1. เปิด");
lcd.setCursor (0,1);
lcd.print ("2. แสงปิด");
ล่าช้า (2000);
lcd.clear ();
lcd.print ("3 FAN ON");
lcd.setCursor (0,
lcd.print ("4 FAN OFF");
ล่าช้า (2000);
lcd.clear ();
lcd.print ("5. TV ON");
lcd.setCursor (0,1);
lcd.print ("6. TV OFF");
ล่าช้า (2000);
ค่าเริ่มต้น ();
ล่าช้า (1000)
}
void loop ()
{
ถ้า (temp == 1)
{
if ((strncmp (str, "FAN ON", 6)) == 0)
{
lcd.clear ();
digitalWrite (พัดลม, HIGH);
lcd.clear ();
lcd.print ("Fan Turned On");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else ถ้า (strncmp (str, "FAN OFF", 7) == 0)
{
digitalWrite (พัดลม, ต่ำ);
lcd.clear ();
lcd.print ("Fan OFF");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else ถ้า (strncmp (str, "LIGHT ON", 8) == 0)
{
digitalWrite (แสงสูง);
lcd.clear ();
lcd.print ("เปิดใช้งาน");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else ถ้า (strncmp (str, "LIGHT OFF", 9) == 0)
{
digitalWrite (แสง, ต่ำ);
lcd.clear ();
lcd.print ("Light Turned OFF");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else if (strncmp (str, "TV ON", 5) == 0)
{
digitalWrite (ทีวีสูง);
lcd.clear ();
lcd.print ("TV Turn on");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else ถ้า (strncmp (str, "TV OFF", 6) == 0)
{
digitalWrite (TV, LOW);
lcd.clear ();
lcd.print ("TV Turned OFF");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else
{
lcd.clear ();
lcd.print ("อินพุตไม่ถูกต้อง");
lcd.setCursor (0,1);
lcd.print ("ลองอีกครั้ง");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
}
}
โมฆะ serialEvent ()
{
while (Serial.available ())
{
char Inchar = Serial.read ();
STR [ผม] = Inchar;
i ++;
lcd.print (Inchar);
ล่าช้า (50);
if (Inchar == 0x0d)
{
temp = 1;
// Inchar = 0;
}
}
}
{
ถ้า (temp == 1)
{
if ((strncmp (str, "FAN ON", 6)) == 0)
{
lcd.clear ();
digitalWrite (พัดลม, HIGH);
lcd.clear ();
lcd.print ("Fan Turned On");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else ถ้า (strncmp (str, "FAN OFF", 7) == 0)
{
digitalWrite (พัดลม, ต่ำ);
lcd.clear ();
lcd.print ("Fan OFF");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else ถ้า (strncmp (str, "LIGHT ON", 8) == 0)
{
digitalWrite (แสงสูง);
lcd.clear ();
lcd.print ("เปิดใช้งาน");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else ถ้า (strncmp (str, "LIGHT OFF", 9) == 0)
{
digitalWrite (แสง, ต่ำ);
lcd.clear ();
lcd.print ("Light Turned OFF");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else if (strncmp (str, "TV ON", 5) == 0)
{
digitalWrite (ทีวีสูง);
lcd.clear ();
lcd.print ("TV Turn on");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else ถ้า (strncmp (str, "TV OFF", 6) == 0)
{
digitalWrite (TV, LOW);
lcd.clear ();
lcd.print ("TV Turned OFF");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
else
{
lcd.clear ();
lcd.print ("อินพุตไม่ถูกต้อง");
lcd.setCursor (0,1);
lcd.print ("ลองอีกครั้ง");
ล่าช้า (3000);
ค่าเริ่มต้น ();
}
}
}
โมฆะ serialEvent ()
{
while (Serial.available ())
{
char Inchar = Serial.read ();
STR [ผม] = Inchar;
i ++;
lcd.print (Inchar);
ล่าช้า (50);
if (Inchar == 0x0d)
{
temp = 1;
// Inchar = 0;
}
}
}
void defualt ()
{
lcd.clear ();
lcd.print ("Enter UR Choise:");
lcd.setCursor (0,1);
lcd.cursor ();
i = 0;
อุณหภูมิ = 0;
}
{
lcd.clear ();
lcd.print ("Enter UR Choise:");
lcd.setCursor (0,1);
lcd.cursor ();
i = 0;
อุณหภูมิ = 0;
}
วีดีโอ