วงจรควบคุมระยะไกล Arduino IR

ลองใช้เครื่องมือของเราเพื่อกำจัดปัญหา





ในโพสต์นี้เราจะสร้างสวิตช์ควบคุมระยะไกลไร้สายแบบ IR (อินฟราเรด) ที่ปรับแต่งได้ตาม Arduino ซึ่งประกอบด้วยรีโมท IR และตัวรับคุณสามารถปรับเปลี่ยนได้ตามความต้องการของคุณ ในส่วนต่อมาของบทความเราได้เรียนรู้เกี่ยวกับรีโมทคอนโทรล IR รุ่นที่อัปเกรดแล้วซึ่งจะตอบสนองเฉพาะความถี่ที่กำหนดโดยเฉพาะเท่านั้น

หากคุณอยู่เหนือระดับเริ่มต้นคุณสามารถทำได้อย่างง่ายดาย วงจรที่นำเสนอแสดงไว้ที่นี่มีการควบคุมสามตัวบนรีโมทและรีเลย์ 3 ตัวที่ปลายตัวรับ คุณสามารถแก้ไขรหัสและแผนภาพวงจรเพื่อตอบสนองความต้องการของคุณ



คุณจะต้องมีบอร์ด Arduino สองตัวซึ่งทำหน้าที่เป็นรีโมทและอีกตัวทำหน้าที่เป็นตัวรับสัญญาณ ฉันอยากจะแนะนำ Arduino pro mini สำหรับโครงการนี้เนื่องจากขนาดของมันค่อนข้างเล็กและขนาดโดยรวมของรีโมทอาจถูกปัด

คุณสามารถใช้ Arduino pro mini ที่ใช้ 3.3V สำหรับรีโมทเพื่อให้คุณสามารถใช้พลังงานจากเซลล์ปุ่มสองเซลล์หรือแบตเตอรี่ขนาด AA สองก้อนตามความต้องการของคุณ



วงจรเครื่องส่งสัญญาณ IR มีปุ่มกด 3 ปุ่มและ LED IR สำหรับส่งคำสั่งไปยังเครื่องรับ แต่ละปุ่มมีการตั้งโปรแกรมด้วยรหัสฐานสิบหกที่ไม่ซ้ำกันรหัสเลขฐานสิบหกเดียวกันจะถูกตั้งโปรแกรมไว้ที่ด้านรับด้วย

เมื่อกดปุ่ม IR LED จะส่งรหัสฐานสิบหกไปยังตัวรับสัญญาณเครื่องรับจะรับรู้ว่าปุ่มใดถูกกดและสวิตช์เปิด / ปิดรีเลย์ที่เกี่ยวข้อง

รีโมทที่เสนอใช้โปรโตคอล RC5 สำหรับการสื่อสารกับเครื่องรับคุณสามารถเปลี่ยนแปลงทุกอย่างได้โดยการแก้ไขรหัส

หากคุณเพิ่งเริ่มต้นใน Arduino คุณยังสามารถทำได้เพียงทำตามแผนภาพและอัปโหลดโค้ดโดยไม่ต้องแก้ไข

วงจรและโปรแกรม:

เครื่องส่งสัญญาณระยะไกล Arduino:

วงจรควบคุมระยะไกล IR Foolproof

วงจรข้างต้นแสดงวิธีสร้างเครื่องส่งสัญญาณระยะไกล Arduino IR

ตัวต้านทาน 10K สามตัวเป็นตัวต้านทานแบบดึงลงซึ่งจะป้องกันการเรียกใช้รีโมทโดยไม่ได้ตั้งใจเนื่องจากประจุไฟฟ้าสถิตและใช้ตัวต้านทาน จำกัด กระแสไฟ 220 โอห์มสำหรับ IR LED

โปรแกรมสำหรับเครื่องส่งสัญญาณระยะไกล:

//---------Program developed by R.Girish--------//
#include
IRsend irsend
const int button1 = 4
const int button2 = 5
const int button3 = 6
void setup() {
pinMode(button1, INPUT)
pinMode(button2, INPUT)
pinMode(button3, INPUT)
}
void loop()
{
if (digitalRead(button1) == HIGH)
{
delay(50)
irsend.sendRC5(0x80C, 32)
delay(200)
}
if (digitalRead(button2) == HIGH)
{
delay(50)
irsend.sendRC5(0x821, 32)
delay(200)
}
if (digitalRead(button3) == HIGH)
{
delay(50)
irsend.sendRC5(0x820, 32)
delay(200)
}
}
//---------Program developed by R.Girish--------//

ตัวรับ Arduino:

วงจรรับ IR Arduino ดังที่แสดงด้านบนประกอบด้วย เซ็นเซอร์ TSOP1738 ทรานซิสเตอร์น้อยตัวต้านทาน จำกัด กระแสสำหรับทรานซิสเตอร์รีเลย์และไดโอดสำหรับดูดซับแรงดันไฟฟ้าสูงจากขดลวดรีเลย์

แผนภาพวงจรเป็นตัวอธิบาย

โปรแกรมสำหรับตัวรับ Arduino:

//-----------------Program developed by R.Girish-----------//
#include
int input = 11
int op1 = 8
int op2 = 9
int op3 = 10
int intitial1
int intitial2
int intitial3
IRrecv irrecv(input)
decode_results dec
#define output1 0x80C // code received from button A
#define output2 0x821 // code received from button B
#define output3 0x820 // code received from button C
void setup()
{
irrecv.enableIRIn()
pinMode(op1,1)
pinMode(op2,1)
pinMode(op3,1)
}
void loop() {
if (irrecv.decode(&dec)) {
unsigned int value = dec.value
switch(value) {
case output1:
if(intitial1 == 1) {
digitalWrite(op1, LOW)
intitial1 = 0
} else {
digitalWrite(op1, HIGH)
intitial1 = 1
}
break
case output2:
if(intitial2 == 1) {
digitalWrite(op2, LOW)
intitial2 = 0
} else {
digitalWrite(op2, HIGH)
intitial2 = 1
}
break
case output3:
if(intitial3 == 1) {
digitalWrite(op3, LOW)
intitial3 = 0
} else {
digitalWrite(op3, HIGH)
intitial3 = 1
}
break
}
irrecv.resume()
}
}
//--------------Program developed by R.Girish-----------//

ด้วยการปฏิบัติตามคำอธิบายข้างต้นคุณสามารถดำเนินการควบคุมสามส่วนได้หากคุณต้องการเพิ่มการควบคุมและรีเลย์เพิ่มเติมคุณต้องแก้ไขรหัสและแผนภาพวงจร

คุณสามารถกำหนดเอาต์พุตและอินพุตสำหรับพินที่ไม่ได้ใช้ในเครื่องรับและรีโมทในโปรแกรมและเชื่อมต่อจำนวนทรานซิสเตอร์และรีเลย์สำหรับพินตามลำดับในตัวรับและเชื่อมต่อจำนวนสวิตช์และดึงตัวต้านทานลงในระยะไกล

คุณสามารถใช้รหัสเลขฐานสิบหกแบบสุ่มเพื่อกำหนดจำนวนปุ่มได้มากขึ้น

ตัวอย่างเช่น 0xA235, 0xFFFF, 0xBA556 และอื่น ๆ และยังเพิ่มค่าเลขฐานสิบหกเดียวกันในรหัสตัวรับด้วย ตัวอย่างเช่น #define output4 0xA235, #define outout5 0xFFFF และอื่น ๆ

การสร้างรีโมทคอนโทรล IR ด้วยความถี่เฉพาะ

ในส่วนข้างต้นเราได้เรียนรู้เกี่ยวกับรีโมทคอนโทรล IR ที่ใช้งานได้กับเครื่องส่งสัญญาณระยะไกล IR
ในบทความต่อไปนี้เราจะเรียนรู้วิธีสร้างเวอร์ชันอัพเกรดของแนวคิดข้างต้นสำหรับการควบคุมเครื่องใช้ภายในบ้านที่ไม่สามารถเข้าใจผิดได้โดยใช้ไมโครคอนโทรลเลอร์ arduino ซึ่งจะทำงานกับความถี่ที่ไม่ซ้ำกันและจะไม่ทำงานร่วมกับโทรศัพท์มือถือ IR ทั่วไป

Foolproof IR รีโมทคอนโทรล

วงจรนี้สามารถเปิด / ปิดอุปกรณ์ของคุณโดยใช้ปุ่มที่ไม่ได้ใช้ของรีโมททีวีหรือรีโมทอื่น ๆ ที่ไม่ได้ใช้ซึ่งอาจอยู่ในกล่องขยะของคุณเป็นเวลานาน

คำขวัญของโครงการนี้คือการช่วยเหลือผู้พิการทางร่างกายและช่วยให้พวกเขาเข้าถึงการเปิด / ปิดของเครื่องใช้ไฟฟ้าพื้นฐานในบ้านเช่นพัดลมหรือไฟได้อย่างอิสระ

วัตถุประสงค์ประการที่สองคือเพื่อให้ผู้ใช้สามารถควบคุมแกดเจ็ตที่“ เหมือนเจ้านาย” ได้โดยไม่ต้องย้ายจากตำแหน่งที่มีอยู่

วงจรใช้การสื่อสารแบบ IR แบบดั้งเดิมระหว่างเครื่องส่งและเครื่องรับ

วงจรนี้ป้องกันไม่ได้ร้อยเปอร์เซ็นต์เมื่อเทียบกับรีโมท IR อื่น ๆ และแหล่ง IR อื่น ๆ และเสี่ยงต่อข้อผิดพลาดน้อยกว่า

ปัญหาสำคัญเกี่ยวกับการใช้ไมโครคอนโทรลเลอร์ที่ไม่ใช่ วงจรควบคุมระยะไกล IR ซึ่งพบได้ทั่วไปในอินเทอร์เน็ตคือสามารถเปิด / ปิดด้วยรีโมทที่ใช้ IR และสามารถควบคุมอุปกรณ์ได้เพียงเครื่องเดียวในทันทีและยังเสี่ยงต่อข้อผิดพลาดอีกด้วย

วงจรนี้เอาชนะปัญหาที่ระบุไว้ข้างต้นและเราทำได้ ควบคุมอุปกรณ์ต่างๆบนรีโมทเครื่องเดียว และกำหนดคีย์สำหรับอุปกรณ์เฉพาะ

ก่อนดำเนินโครงการนี้คุณต้องดาวน์โหลดไฟล์ไลบรารีสำหรับ arduino จากลิงค์นี้และทำตามคำแนะนำด้านล่าง: github.com/z3t0/Arduino-IRremote

คำแนะนำ:

1) คลิกปุ่ม 'โคลนหรือดาวน์โหลด' จากลิงก์ที่กำหนดแล้วกด 'ดาวน์โหลด ZIP'

2) แตกไฟล์และย้ายโฟลเดอร์“ IRremote” ไปยังโฟลเดอร์ไลบรารีของ Arduino

3) ลบโฟลเดอร์“ RobotIRremote” จากไลบรารี arduino ของคุณ 'RobotIRremote' มีความหมายคล้ายกันของไลบรารี 'IRremote' ซึ่งขัดแย้งกันและไม่สามารถอัปโหลดโค้ดไปยัง Arduino ได้ดังนั้นการลบ / ลบจึงมีผลบังคับใช้

ด้วยการทำซ้ำคำสั่งข้างต้นซอฟต์แวร์ Arduino IDE ของคุณพร้อมสำหรับโครงการที่ใช้ IR ทั้งหมด / ส่วนใหญ่

กำหนดคีย์สำหรับรีโมท:

ในรีโมททีวีของเราแต่ละปุ่มจะมีรหัสเลขฐานสิบหกที่ไม่ซ้ำกันซึ่งใช้ในการรับรู้ว่าปุ่มใดถูกกดเพื่อการทำงาน ก่อนอัปโหลดรหัสสุดท้ายไปยัง Arduino คุณต้องหารหัสฐานสิบหกสำหรับคีย์ของคุณคืออะไร

ในการสร้างวงจรต่อไปนี้ในเขียงหั่นขนมและทำตามคำแนะนำ

1) เปิด Arduino IDE และอัปโหลดโค้ดตัวอย่าง“ IRrecv Demo”

2) เปิดจอภาพแบบอนุกรมและกดปุ่มบนรีโมทที่คุณต้องการใช้

คุณจะเห็นรหัสฐานสิบหกปรากฏขึ้นทันทีที่คุณกดแป้น นั่นคือรหัสฐานสิบหกสำหรับคีย์นั้น ๆ

3) ทำเช่นเดียวกันสำหรับอีกสองปุ่ม (มี 3 ปุ่มในโครงการนี้สำหรับการควบคุมอุปกรณ์ 3 เครื่อง)

·เราจะใช้รหัสฐานสิบหกเหล่านี้ในโปรแกรมหลักและอัปโหลดไปยัง arduino

โปรแกรม:
//-----------------Program developed by R.Girish-----------//
#include
int input = 11
int op1 = 8
int op2 = 9
int op3 = 10
int intitial1
int intitial2
int intitial3
IRrecv irrecv(input)
decode_results dec
#define output1 0x111 // place your code received from button A
#define output2 0x112 // place your code received from button B
#define output3 0x113 // place your code received from button C
void setup()
{
irrecv.enableIRIn()
pinMode(op1,1)
pinMode(op2,1)
pinMode(op3,1)
}
void loop() {
if (irrecv.decode(&dec)) {
unsigned int value = dec.value
switch(value) {
case output1:
if(intitial1 == 1) {
digitalWrite(op1, LOW)
intitial1 = 0
} else {
digitalWrite(op1, HIGH)
intitial1 = 1
}
break
case output2:
if(intitial2 == 1) {
digitalWrite(op2, LOW)
intitial2 = 0
} else {
digitalWrite(op2, HIGH)
intitial2 = 1
}
break
case output3:
if(intitial3 == 1) {
digitalWrite(op3, LOW)
intitial3 = 0
} else {
digitalWrite(op3, HIGH)
intitial3 = 1
}
break
}
irrecv.resume()
}
}
//--------------Program developed by R.Girish-----------//

บันทึก:

ในโปรแกรม:

#define output1 0x111 // วางรหัสของคุณที่ได้รับจากปุ่ม A

#define output2 0x111 // วางรหัสของคุณที่ได้รับจากปุ่ม B

#define output3 0x111 // วางรหัสของคุณที่ได้รับจากปุ่ม C

·วางรหัสที่ไม่ซ้ำกัน 3 รหัสจากรีโมทของคุณในตำแหน่ง 111, 112 และ 113 และอัปโหลดรหัส รหัสฐานสิบหกจะอยู่ระหว่าง 0 ถึง 9 และ A ถึง F ตัวอย่างเช่น 20156, 26FE789, FFFFFF

·วางรหัสของคุณด้วย“ 0x” (ศูนย์ x)

แผนภูมิวงจรรวม:

·การกดปุ่มจะทำให้รีเลย์เปิดและการกดอีกครั้งจะเป็นการปิดรีเลย์




คู่ของ: ไล่ยุงตามธรรมชาติโดยใช้ตัวต้านทานกำลังวัตต์สูง ถัดไป: วงจรตรวจจับโลหะในดินลึก - เครื่องสแกนพื้น