รีโมทคอนโทรลสากลสำหรับ Arduino การส่งข้อมูลในช่วงอินฟราเรดโดยใช้ Arduino การเชื่อมต่อตัวรับสัญญาณอินฟราเรดกับ Arduino
มีบทความมากมายบนอินเทอร์เน็ตเกี่ยวกับวิธีสร้างรีโมทคอนโทรลทีวีของคุณเองโดยใช้ Arduino แต่ฉันต้องการรีโมทคอนโทรลสากลเพื่อควบคุมทีวีและเครื่องเล่นสื่อของฉัน ข้อได้เปรียบหลักของการควบคุมระยะไกลสากลของฉันคือปุ่มในแอปพลิเคชันโทรศัพท์ Android นั้นมีจุดประสงค์สองประการ แต่ให้ดูวิดีโอ
รีโมทคอนโทรลสะดวกมากโดยใช้ปุ่มเกือบเดียวกันบนหน้าจอเพื่อควบคุมทีวีและเครื่องเล่น ข้อแตกต่างประการหนึ่งก็คือ " เอวี"ในโหมดควบคุมทีวีจะเปลี่ยนเป็นปุ่ม" ◻
" (หยุด) เมื่อสลับไปยังโหมดควบคุมเครื่องเล่น รูปภาพแสดงสองโหมด ด้านซ้ายคือโหมดควบคุมทีวี ทางด้านขวาคือโหมดควบคุมเครื่องเล่น
ตอนนี้ฉันจะบอกคุณเล็กน้อยเกี่ยวกับการสร้างรีโมตคอนโทรล สำหรับอุปกรณ์ ฉันใช้รีโมทคอนโทรลสำหรับ ERGO TV และรีโมทคอนโทรลสำหรับเครื่องเล่นมีเดีย DUNE HD TV101W
ในการรับข้อมูลจากรีโมทคอนโทรลฉันใช้เซ็นเซอร์อินฟราเรด TSOP1138 (คล้ายกับ TSOP4838) ที่ความถี่การทำงาน 38 kHz และเชื่อมต่อกับบอร์ด Arduino ตามรูปแบบ:
ไม่จำเป็นต้องใช้ร่างนี้เพื่อกำหนดการเข้ารหัสการส่งข้อมูลและอ่านโค้ดของปุ่มควบคุมระยะไกล
ในแบบร่างในบรรทัด int RECV_PIN = 11; ระบุหมายเลขพินของเรา 4
หลังจากอัปโหลดภาพร่างแล้ว ให้เปิด "พอร์ตมอนิเตอร์" แล้วกดปุ่มรีโมทคอนโทรลเพื่อดูข้อมูลที่ได้รับ
รูปภาพแสดงตัวอย่างการสแกนปุ่มเปิด/ปิดจากรีโมทคอนโทรลของทีวีและรีโมทคอนโทรลของเครื่องเล่น ตอนนี้เราสร้างตารางสำหรับรหัสปุ่ม
ฉันได้รับมันเหมือนในภาพด้านบน ภายใต้คำจารึก โทรทัศน์รหัสปุ่มรีโมทคอนโทรลของทีวี ภายใต้คำจารึก ผู้เล่น- รหัสจากรีโมทคอนโทรลของเครื่องเล่นสื่อ
ตอนนี้เราตัดการเชื่อมต่อตัวรับสัญญาณอินฟราเรดของเราออกจากบอร์ด Arduino และเชื่อมต่อโมดูล Bluetooth HC-05 และ LED อินฟราเรดเข้ากับโมดูลตามแผนภาพในรูปภาพ
หลังจากนั้นเราก็ไปที่ร่างโดยตรง
ร่าง
#รวม
ในแบบร่างคุณจะต้องแก้ไขโค้ดของปุ่ม ได้แก่ ในบรรทัด:
ถ้า (x == 97) ( irsend.sendNEC(0x807F08F7, 32) ล่าช้า(40);
เปลี่ยนค่า 807F08F7 เป็น:
ถ้า (y == 1) ( // รหัสปุ่มสำหรับรีโมทคอนโทรลทีวีถ้า (x == 97) ( irsend.sendNEC(0x12345678, 32); ล่าช้า(40); )
โดยที่ 12345678 คือรหัสสำหรับปุ่มของคุณ
หลังจากแก้ไขสเก็ตช์โดยใช้โค้ดปุ่มของคุณแล้ว ให้อัปโหลดสเก็ตช์ไปยังบอร์ด Arduino และดำเนินการติดตั้งแอปพลิเคชันบนโทรศัพท์ของคุณ
เราเปิดบลูทูธในโทรศัพท์ ค้นหาอุปกรณ์ของเรา สร้างคู่ จากนั้นจึงเปิดแอปพลิเคชัน พูลท์บนโทรศัพท์
เมื่อเริ่มต้น เราจะมีหน้าจอที่มีไอคอนบลูทูธสีแดงที่มุมขวาล่าง ซึ่งเป็นสัญญาณว่าเราไม่ได้เชื่อมต่อกับอุปกรณ์ของเรา
หลังจากนั้นให้คลิกที่ไอคอนนี้ เราควรเห็นหน้าต่างพร้อมรายการอุปกรณ์บลูทู ธ ที่มีอยู่ทั้งหมดซึ่งเราเลือกอุปกรณ์ของเราที่จะเชื่อมต่อ
ตอนนี้เรากลับมาที่หน้าจอหลักและสามารถควบคุมทีวีได้แล้ว:
หากต้องการเปลี่ยนเป็นโหมดควบคุมเราต้องกดปุ่มที่มีข้อความกำกับไว้ "ผู้เล่น". อย่างที่บอกไปแล้วว่าปุ่มของเราที่มีชื่อว่า "AV" จะเปลี่ยนเป็นปุ่ม " ◻ ":
หากต้องการตัดการเชื่อมต่อจากอุปกรณ์ของเรา เพียงกดปุ่ม "เปิด/ปิด" ค้างไว้สักครู่
รูปภาพบางส่วนของอุปกรณ์ที่เสร็จแล้วของฉัน
ดูเหมือนว่ามันจะออกมาค่อนข้างดี ฉันกำลังรอความคิดเห็นในบทความ
โดยจะส่งแพ็กเก็ตของข้อมูลที่เข้ารหัสและมอดูเลตไปยัง IR LED และเมื่อกดปุ่มค้างไว้ ก็จะส่งแพ็กเก็ตซ้ำด้วย
อุปกรณ์จะมีประโยชน์หากคุณกำหนดปุ่มที่ไม่ได้ใช้บนรีโมทคอนโทรลโทรทัศน์ (เช่น ปุ่มเทเลเท็กซ์แบบสี) เพื่อควบคุมแสงสว่างในห้อง
แทนที่จะใช้หลอดไส้ คุณสามารถเชื่อมต่ออุปกรณ์เครือข่าย ~ 220 V ใดๆ ที่มีการสิ้นเปลืองกระแสไฟสูงสุด 2 A
เราจะต้อง:
- รีโมทคอนโทรล IR x 1 ชิ้น (รีโมทคอนโทรล IR ของทีวีจะทำได้)
- อุปกรณ์ (โคมไฟ) ที่เราจะควบคุม x 3 ชิ้น
ในการดำเนินโครงการเราจำเป็นต้องติดตั้งไลบรารี:
- Library iarduino_IR สำหรับการทำงานกับตัวรับส่งสัญญาณ IR
สำคัญ: ห้องสมุดใช้ตัวจับเวลาฮาร์ดแวร์ตัวที่สอง
อย่าส่งสัญญาณ PWM ไปที่ 3 หรือ 11 OUTPUT!
คุณสามารถดูวิธีติดตั้งไลบรารี่ได้ที่หน้า Wiki - การติดตั้งไลบรารีใน Arduino IDE
วิดีโอ:
แผนภาพการเชื่อมต่อ:
วงจรนี้ใช้เฉพาะโมดูลดิจิทัลเท่านั้น สามารถเชื่อมต่อกับพิน Arduino ใดก็ได้ (ทั้งแบบดิจิทัลและแอนะล็อก) ตัวอย่างเช่น เราเชื่อมต่อโมดูลทั้งหมดเข้ากับเอาต์พุตแบบอะนาล็อก ไม่ใช่ทุกคนที่รู้ว่าพินแอนะล็อกของ Arduino สามารถทำงานเป็นพินดิจิทัลทั่วไปได้ ซึ่งช่วยให้คุณรับ (จากตัวรับสัญญาณ IR) และส่ง (ไปยังโซลิดสเตตรีเลย์) สัญญาณดิจิทัลในรูปแบบของโลจิคัล "0" และ "1"
หากคุณจะเชื่อมต่ออุปกรณ์เข้ากับพินอื่น จะต้องระบุหมายเลขของอุปกรณ์เหล่านั้นในบรรทัดที่สอง (การประกาศวัตถุ IR) และบรรทัดที่สาม (การประกาศอาร์เรย์ pinRelay) ของแบบร่าง รหัสโปรแกรมถูกเขียนขึ้นเพื่อให้คุณสามารถเชื่อมต่อรีเลย์ได้มากเท่าที่มีพินว่างบน Arduino ของคุณ เพียงแค่แสดงหมายเลขพินในบรรทัดที่สามของแบบร่าง (การประกาศอาร์เรย์ pinRelay)
อัลกอริธึมการทำงาน:
- เมื่อเริ่มต้นแบบร่างจะกำหนดรหัสปุ่มรีโมท IR ให้กับโซลิดสเตตรีเลย์แต่ละตัวตามลำดับ ขั้นแรกไฟ LED จะกะพริบและวงจรของโซลิดสเตตรีเลย์จะปิดซึ่งเอาต์พุตจะถูกระบุก่อน หากคุณกดปุ่มใดๆ บนรีโมทคอนโทรล IR รหัสสำหรับปุ่มนั้นจะถูกกำหนดให้กับรีเลย์นั้น และรีเลย์ตัวถัดไปจะเริ่มกะพริบ ไปเรื่อยๆ จนกว่ารีเลย์ทั้งหมดจะได้รับการกำหนดปุ่มบนรีโมทคอนโทรล IR
- หลังจากได้รับการแต่งตั้งแล้วฟังก์ชั่นปุ่ม, รีเลย์ทั้งหมดปิดอยู่ หากคุณกดปุ่มควบคุมระยะไกล IR รีเลย์ที่กำหนดรหัสของปุ่มนี้จะเปิดขึ้น หากคุณกดปุ่มที่ระบุอีกครั้งรีเลย์จะปิด อุปกรณ์จะไม่ตอบสนองต่อการกดปุ่มที่ไม่ได้กำหนดรหัสให้กับรีเลย์ใดๆ
- ถ้าหากคุณไม่ต้องการกำหนดโค้ดปุ่มทุกครั้งที่สตาร์ท ให้ระบุอย่างชัดเจนเมื่อประกาศอาร์เรย์ varRelay และลบลูป for และ while ออกจากโค้ดการตั้งค่า
- ค้นหารหัสสำหรับแต่ละปุ่มคุณสามารถเขียนบรรทัดต่อไปนี้: if(IR.check())(Serial.println(IR.data);)
รหัสโปรแกรม:
#รวมไม่มีอะไรมากไปกว่าตัวรับสัญญาณ IR VS1838B ที่ติดตั้งสายรัดที่ผู้ผลิตแนะนำไว้บนบอร์ด
หากต้องการทำงานกับโมดูลนี้นอกกรอบ คุณต้องมีรีโมทคอนโทรลที่มีความถี่ 38 kHz
ข้อดีของบอร์ดนี้คือตัวเชื่อมต่อแบบกดเข้าซึ่งช่วยให้คุณเปลี่ยนตัวรับสัญญาณ IR ด้วยอีกอันที่ทำงานที่ความถี่ที่จำเป็นสำหรับโครงการของคุณโดยไม่ต้องบัดกรี
ลักษณะทางเทคนิคหลัก:
แรงดันไฟฟ้า: 2.7 - 5.5V
ความถี่การมอดูเลต: 38kHz
ช่วงอุณหภูมิ: - 20 ... + 80°C
อินเทอร์เฟซ: ดิจิตอล
การเชื่อมต่อกับ Arduino
โมดูลนี้มาพร้อมกับขั้วต่อ 2.54 มม. สามพิน
: เชื่อมต่อกับขา GND
: เชื่อมต่อกับเอาต์พุต +5V
: เชื่อมต่อกับขาดิจิตอล (ตัวอย่าง D2)
ตัวอย่างการทำงานในสภาพแวดล้อม Arduino
ในการทำงานกับโมดูลนี้ คุณต้องติดตั้งไลบรารี IRRemote
ดาวน์โหลด แกะและวางลงในโฟลเดอร์ไลบรารีในโฟลเดอร์ Arduino หาก Arduino IDE เปิดอยู่ในขณะที่เพิ่มไลบรารี ให้รีบูตสภาพแวดล้อม
การอ่านปุ่มควบคุมระยะไกล
หากต้องการอ่านค่าที่อ่านได้จากรีโมทคอนโทรล ให้กรอกแบบร่างด้านล่าง มันจะส่งออกการเข้ารหัสของปุ่มกดไปยังพอร์ต
ดังตัวอย่างเราจะใช้รีโมตคอนโทรลดังในรูปเพราะว่า รีโมทคอนโทรลชนิดนี้รวมอยู่ในชุดด้วย
คุณสามารถอ่านเกี่ยวกับความแตกต่างในตรรกะการทำงานของรีโมทคอนโทรลต่างๆ ได้ในบทความต้นฉบับจากสมาชิกของชุมชนของเราภายใต้ชื่อเล่น
รหัสตัวอย่าง:
#รวมคุณควรเห็นสิ่งต่อไปนี้ในมอนิเตอร์พอร์ต:
กดปุ่มแต่ละปุ่มค้างไว้เกือบวินาทีก็จะได้รหัสประมาณ 10 รหัส อันแรกคือรหัสปุ่ม และหลังจากนั้นรหัสมาตรฐานก็เริ่มปรากฏขึ้นซึ่งรายงานว่าปุ่มค้าง
การควบคุมบอร์ด Arduino ด้วยรีโมทคอนโทรล
มาทำให้ไฟ LED บนบอร์ด Arduino (D13) สว่างขึ้นเมื่อปุ่มแรกถูกเข้ารหัส และปิดเมื่อปุ่มที่สองถูกเข้ารหัส
รหัสตัวอย่าง:
// ทดสอบบน Arduino IDE 1.0.3#รวมสวัสดีทุกคน (หรือกลางคืนก็ได้ตามใจชอบ) เรามาเริ่มด้วยบทนำเป็นโคลงสั้น ๆ กันดีกว่า ปัจจุบันนี้หลายคนมีบ้าน ทีวีพร้อมรีโมท จูนเนอร์ เครื่องเล่นดีวีดี . หลายๆ คน (และครอบครัว) ไม่สามารถจินตนาการถึงชีวิตในบ้านของตนเองได้หากไม่มีรีโมทคอนโทรลอยู่ในมือ เห็นด้วย - ช่างดีแค่ไหนที่ได้เป็นเจ้าแห่งเครื่องใช้ในบ้านและเมื่อใดก็ได้คุณก็กำหนดความตั้งใจของคุณต่อฮาร์ดแวร์ชิ้นนี้ ในบทความนี้ เราอยากจะเจาะลึกเทคโนโลยีการควบคุมระยะไกลมากขึ้น และยกตัวอย่างการประยุกต์ใช้งานตามความต้องการของเรา
แล้วเราต้องการอะไรเป็นส่วนประกอบในการทดลองของเรา? เป็นทางเลือก จำหน่ายรีโมทคอนโทรล IR และโมดูลรับสัญญาณ IR สำเร็จรูป. แต่เราไม่อยากรอและจ่ายเงิน ดังนั้นเราจะทำตัวฮาร์ดคอร์มากขึ้น ลองใช้รีโมทคอนโทรลที่ไม่ทราบแหล่งกำเนิดเป็นพื้นฐาน นอกจากนี้เรายังมีชิ้นส่วนของบอร์ดจากจูนเนอร์จีนที่ใช้บัดกรีตัวรับอินฟราเรด ในภาพด้านล่างคุณจะเห็นส่วนประกอบเหล่านี้ พูดตามตรงพบว่ารีโมตคอนโทรลอยู่ท่ามกลางขยะที่ไม่จำเป็นบนโต๊ะทำงานและบอร์ดที่มีตัวรับสัญญาณ IR ก็ถูกนำมาจากร้านซ่อมวิทยุที่ใกล้ที่สุด
ก็อย่างที่ฉันเคยบอกนั่นแหละ ฮันนิบาล - "มุ่งหน้าสู่คาร์เธจ" . เราเพียงแค่ต้องถอดเครื่องรับออกและเชื่อมต่อเข้ากับบอร์ด อาร์ดูโน่ตามโครงการดังต่อไปนี้...
- การเชื่อมต่อตัวรับสัญญาณ IR
ตัวรับสัญญาณอินฟราเรด ซึ่งบัดกรีจากบอร์ดไม่มีเครื่องหมายใด ๆ มันเป็นเพียงส่วนประกอบวิทยุจีนอีกชิ้นที่ไม่รู้จักซึ่งผลิตได้หลายพันชิ้น กล่าวโดยย่อคือเราสามารถพูดได้ - รวมอยู่ในอาคารเดียวโฟโตไดโอด ปรีแอมป์ และไดรเวอร์ . ผลลัพธ์ที่ได้จะเกิดขึ้นตามปกติสัญญาณทีทีแอล ไม่มีช่องว่างภายใน เหมาะสำหรับการประมวลผลเพิ่มเติมโดยไมโครคอนโทรลเลอร์ ความถี่พาหะอาจเป็น (!) 36 kHz แต่ตอนนี้ไม่สำคัญนัก... ลองเชื่อมต่อกับบอร์ดกันดีกว่าอาร์ดูโน่ แผนภาพแบบมีเงื่อนไขจะให้ pinout ที่ต้องการของอุปกรณ์นี้ ในแผนภาพด้านล่าง ที่เน้นด้วยสีแดงคือรูปร่างของร่างกายที่เราสร้างขึ้นตัวรับสัญญาณอินฟราเรด เน้นด้วยสีเขียว - pinout ที่เชื่อมต่อกับบอร์ดอาร์ดูโน่ .
ความสนใจ!!! บนอินเทอร์เน็ตมีไดอะแกรม pinout มากมายสำหรับอุปกรณ์ในแพ็คเกจดังกล่าว (TSOP) pinouts ที่ให้ไว้ในบทความนี้อาจไม่ตรงกับที่พบในอินเทอร์เน็ต แต่นี่คือวิธีที่ทุกอย่างเชื่อมโยงกับเรา หากตัวรับสัญญาณ IR เริ่มร้อนขึ้นเมื่อเชื่อมต่อให้ปิดวงจรที่ประกอบทันทีซึ่งหมายความว่า pinout การเชื่อมต่อไม่ตรงกับของจริงและคุณจะต้องเลือกมันเกือบจะสุ่ม นี่คือสิ่งที่เราทำเพราะวงจรที่พบในอินเทอร์เน็ตไม่เหมาะกับตัวรับสัญญาณ IR ของเรา โดยทั่วไปสิ่งสำคัญคืออย่าเผาบอร์ด Arduino ดำเนินการด้วยความระมัดระวัง!!!
- ไลบรารี IRremote
ทุกอย่างจึงเชื่อมโยงกัน มีไลบรารี่สำหรับอ่านโค้ดจากรีโมทคอนโทรล IRremote.hด้วยความช่วยเหลือที่เราจะศึกษารีโมทคอนโทรลของเราหรือรหัสปุ่ม ในอนาคตเราจะใช้โค้ดการอ่านเพื่อจุดประสงค์ของเราเอง เรียกว่าร่างที่จะอ่านรหัสปุ่มในตัวอย่างของไลบรารีนี้ IRrecvDemo ความสนใจ!!! เมื่อรวบรวมแบบร่างจะมีข้อผิดพลาดที่จุดเริ่มต้นคุณต้องเพิ่มไลบรารีปลั๊กอินอีกสองไลบรารี:
#include "boarddefs.h" //ไลบรารีเพิ่มเติม #include "IRremote.h" #include "IRremoteInt.h" //ไลบรารีเพิ่มเติม int RECV_PIN = 2; //พินสำหรับเชื่อมต่อสัญญาณเอาท์พุตจากตัวรับ IR //สร้างอินสแตนซ์ของคลาส IRrecv โดยส่งพินสำหรับเชื่อมต่อสัญญาณจากตัวรับ IR เป็นพารามิเตอร์ IRrecv irrecv(RECV_PIN); ผลลัพธ์ decode_results; //ตัวแปรสำหรับบันทึกรหัสที่ได้รับของปุ่มที่กด void setup() ( Serial.begin(9600); irrecv.enableIRIn(); // เปิดใช้งานตัวรับสัญญาณ IR ให้ทำงาน ) void loop() ( if (irrecv.decode( &results)) //หากมีเหตุการณ์เกิดขึ้น/กดปุ่ม ( Serial.println(results.value, HEX); //ส่งออกโค้ดของปุ่มที่กดในรูปแบบเลขฐานสิบหกไปยังพอร์ตมอนิเตอร์ irrecv.resume(); // อ่านค่าถัดไป/ปุ่ม ) ล่าช้า(100 ); )
หลังจากอัพโหลดภาพร่างขึ้นบอร์ดแล้วอาร์ดูโน่(เราใช้ อาร์ดูโน่ นาโนบนโล่ แผงป้องกันไร้สาย I/O สำหรับนาโน ) สามารถเปิดได้ มอนิเตอร์พอร์ต และดูว่ารหัสใดปรากฏขึ้นเมื่อคุณกดปุ่มบนรีโมทคอนโทรล ผลลัพธ์ของแบบร่างแสดงอยู่ในภาพหน้าจอด้านล่าง:
โดยวิธีการเช่น มอนิเตอร์พอร์ต เราใช้ซอฟต์แวร์ที่ได้รับการพิสูจน์แล้วของเรา หากใครสนใจ คุณสามารถอ่านบทความและดาวน์โหลด Serial Monitor Pro ได้
#define KEY_ONOFF 0x807F807F // ปุ่มเปิด/ปิด #define KEY_MUTE 0x807F48B7 // ปุ่มปิดเสียง #define KEY_1 0x807F00FF // ปุ่ม 1 #define KEY_2 0x807FE01F // ปุ่ม 2 #define KEY_3 0x807F609F // ปุ่ม K 3 #define KEY_4 0x 807F20DF // ปุ่ม 4 #กำหนด KEY_5 0x807FD02F // ปุ่ม 5 #กำหนด KEY_6 0x807F50AF // ปุ่ม 6 #กำหนด KEY_7 0x807F10EF // ปุ่ม 7 #กำหนด KEY_8 0x807FF00F // ปุ่ม 8 #กำหนด KEY_9 0x807F708F // ปุ่ม 9 #กำหนด KEY_0 0x 807FC837 // ปุ่ม 0
โดยทั่วไปแล้วตอนนี้ทุกอย่างพร้อมสำหรับการทดสอบขั้นสุดท้ายแล้ว - นี่จะเป็นการทดสอบเบื้องต้นในการควบคุมการเปิด/ปิดโมดูลรีเลย์ นี่เป็นงานเล็กๆ:
- เราใช้โมดูลรีเลย์สองตัว
- เราผูกรีเลย์หมายเลข 1 กับปุ่ม "1" ของรีโมทคอนโทรล
- รีเลย์หมายเลข 2 เชื่อมโยงกับปุ่ม “2” ของรีโมทคอนโทรล
- การเปิดโมดูลรีเลย์ใด ๆ ทำได้โดยการกดปุ่มที่กำหนดไว้
- การปิดโมดูลรีเลย์ใด ๆ ก็ทำได้โดยการกดปุ่มที่กำหนดไว้
- การกดปุ่มเปิด/ปิดจะเป็นการปิดโมดูลรีเลย์ทั้งสองโดยไม่มีเงื่อนไข (หากเปิดอยู่หรือเปิดโมดูลใดโมดูลหนึ่งอยู่)
ร่างที่ดำเนินงานข้างต้น:
#include "boarddefs.h" //ไลบรารีเพิ่มเติม #include "IRremote.h" #include "IRremoteInt.h" //ไลบรารีเพิ่มเติม #define KEY_ONOFF 0x807F807F // ปุ่มเปิด/ปิด #define KEY_1 0x807F00FF //Button 1 #define KEY_2 0x807FE01F // ปุ่ม 2 #define RELOUT1 3 // พอร์ตเอาท์พุตสำหรับรีเลย์ 1 #define RELOUT2 4 // พอร์ตเอาท์พุตสำหรับรีเลย์ 2 int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); ผลลัพธ์ decode_results; บูลีนแบบคงที่ REL1_ONOFF = เท็จ; บูลีนแบบคงที่ REL2_ONOFF = เท็จ; การตั้งค่าเป็นโมฆะ () ( pinMode (RELOUT1, OUTPUT); pinMode (RELOUT2, OUTPUT); Serial.begin (9600); irrecv.enableIRIn (); // เริ่มตัวรับ) void loop () ( if (irrecv.decode (&results )) ( สวิตช์(results.value) ( case(KEY_ONOFF): REL1_ONOFF = false; REL2_ONOFF = false; break; case(KEY_1): if(REL1_ONOFF) REL1_ONOFF = false; else REL1_ONOFF = true; break; case(KEY_2 ): if(REL2_ONOFF) REL2_ONOFF = false; else REL2_ONOFF = true; break; ) irrecv.resume(); ) digitalWrite(RELOUT1, REL1_ONOFF); digitalWrite(RELOUT2, REL2_ONOFF); ล่าช้า (100); )
และในตอนท้ายของบทความมีวิดีโอสาธิตการทำงานของภาพร่างทั้งสอง หากคุณต้องการและมีจินตนาการที่สร้างสรรค์ คุณสามารถขยายกลุ่มปลั๊กอินและจัดการทุกอย่างในวิธีที่ล้ำหน้ายิ่งขึ้น ในบทความของเรา เราพยายามยกตัวอย่างพื้นฐานของการใช้เทคโนโลยีนี้ ขอบคุณสำหรับความสนใจและสนุกกับการรับชม!!!
โปรดเปิดใช้งานจาวาสคริปต์เพื่อให้ความคิดเห็นทำงานได้
มีบทความมากมายบนอินเทอร์เน็ตเกี่ยวกับวิธีสร้างรีโมทคอนโทรลทีวีของคุณเองโดยใช้ Arduino แต่ฉันต้องการรีโมทคอนโทรลสากลเพื่อควบคุมทีวีและเครื่องเล่นสื่อของฉัน ข้อได้เปรียบหลักของการควบคุมระยะไกลสากลของฉันคือปุ่มในแอปพลิเคชันโทรศัพท์ Android นั้นมีจุดประสงค์สองประการ แต่ให้ดูวิดีโอ
รีโมทคอนโทรลสะดวกมากโดยใช้ปุ่มเกือบเดียวกันบนหน้าจอเพื่อควบคุมทีวีและเครื่องเล่น ข้อแตกต่างประการหนึ่งก็คือ " เอวี"ในโหมดควบคุมทีวีจะเปลี่ยนเป็นปุ่ม" ◻
" (หยุด) เมื่อสลับไปยังโหมดควบคุมเครื่องเล่น รูปภาพแสดงสองโหมด ด้านซ้ายคือโหมดควบคุมทีวี ทางด้านขวาคือโหมดควบคุมเครื่องเล่น
ตอนนี้ฉันจะบอกคุณเล็กน้อยเกี่ยวกับการสร้างรีโมตคอนโทรล สำหรับอุปกรณ์ ฉันใช้รีโมทคอนโทรลสำหรับ ERGO TV และรีโมทคอนโทรลสำหรับเครื่องเล่นมีเดีย DUNE HD TV101W
ในการรับข้อมูลจากรีโมทคอนโทรลฉันใช้เซ็นเซอร์อินฟราเรด TSOP1138 (คล้ายกับ TSOP4838) ที่ความถี่การทำงาน 38 kHz และเชื่อมต่อกับบอร์ด Arduino ตามรูปแบบ:
ไม่จำเป็นต้องใช้ร่างนี้เพื่อกำหนดการเข้ารหัสการส่งข้อมูลและอ่านโค้ดของปุ่มควบคุมระยะไกล
ในแบบร่างในบรรทัด int RECV_PIN = 11; ระบุหมายเลขพินของเรา 4
หลังจากอัปโหลดภาพร่างแล้ว ให้เปิด "พอร์ตมอนิเตอร์" แล้วกดปุ่มรีโมทคอนโทรลเพื่อดูข้อมูลที่ได้รับ
รูปภาพแสดงตัวอย่างการสแกนปุ่มเปิด/ปิดจากรีโมทคอนโทรลของทีวีและรีโมทคอนโทรลของเครื่องเล่น ตอนนี้เราสร้างตารางสำหรับรหัสปุ่ม
ฉันได้รับมันเหมือนในภาพด้านบน ภายใต้คำจารึก โทรทัศน์รหัสปุ่มรีโมทคอนโทรลของทีวี ภายใต้คำจารึก ผู้เล่น- รหัสจากรีโมทคอนโทรลของเครื่องเล่นสื่อ
ตอนนี้เราตัดการเชื่อมต่อตัวรับสัญญาณอินฟราเรดของเราออกจากบอร์ด Arduino และเชื่อมต่อโมดูล Bluetooth HC-05 และ LED อินฟราเรดเข้ากับโมดูลตามแผนภาพในรูปภาพ
หลังจากนั้นเราก็ไปที่ร่างโดยตรง
ร่าง
#รวม
ในแบบร่างคุณจะต้องแก้ไขโค้ดของปุ่ม ได้แก่ ในบรรทัด:
ถ้า (x == 97) ( irsend.sendNEC(0x807F08F7, 32) ล่าช้า(40);
เปลี่ยนค่า 807F08F7 เป็น:
ถ้า (y == 1) ( // รหัสปุ่มสำหรับรีโมทคอนโทรลทีวีถ้า (x == 97) ( irsend.sendNEC(0x12345678, 32); ล่าช้า(40); )
โดยที่ 12345678 คือรหัสสำหรับปุ่มของคุณ
หลังจากแก้ไขสเก็ตช์โดยใช้โค้ดปุ่มของคุณแล้ว ให้อัปโหลดสเก็ตช์ไปยังบอร์ด Arduino และดำเนินการติดตั้งแอปพลิเคชันบนโทรศัพท์ของคุณ
เราเปิดบลูทูธในโทรศัพท์ ค้นหาอุปกรณ์ของเรา สร้างคู่ จากนั้นจึงเปิดแอปพลิเคชัน พูลท์บนโทรศัพท์
เมื่อเริ่มต้น เราจะมีหน้าจอที่มีไอคอนบลูทูธสีแดงที่มุมขวาล่าง ซึ่งเป็นสัญญาณว่าเราไม่ได้เชื่อมต่อกับอุปกรณ์ของเรา
หลังจากนั้นให้คลิกที่ไอคอนนี้ เราควรเห็นหน้าต่างพร้อมรายการอุปกรณ์บลูทู ธ ที่มีอยู่ทั้งหมดซึ่งเราเลือกอุปกรณ์ของเราที่จะเชื่อมต่อ
ตอนนี้เรากลับมาที่หน้าจอหลักและสามารถควบคุมทีวีได้แล้ว:
หากต้องการเปลี่ยนเป็นโหมดควบคุมเราต้องกดปุ่มที่มีข้อความกำกับไว้ "ผู้เล่น". อย่างที่บอกไปแล้วว่าปุ่มของเราที่มีชื่อว่า "AV" จะเปลี่ยนเป็นปุ่ม " ◻ ":
หากต้องการตัดการเชื่อมต่อจากอุปกรณ์ของเรา เพียงกดปุ่ม "เปิด/ปิด" ค้างไว้สักครู่
รูปภาพบางส่วนของอุปกรณ์ที่เสร็จแล้วของฉัน
ดูเหมือนว่ามันจะออกมาค่อนข้างดี ฉันกำลังรอความคิดเห็นในบทความ