ชื่อโปรเจกต์: ควบคุมทีวีของคุณได้อย่างเต็มที่ด้วย Alexa และ Arduino IoT Cloud
หมายเหตุ: บทช่วยสอนนี้อาจล้าสมัย โปรดไปที่นี่สำหรับเวอร์ชันล่าสุด
บทนำ: Arduino IoT Cloud
Arduino IoT Cloud เป็นแพลตฟอร์มที่ช่วยให้ทุกคนสามารถสร้างวัตถุที่เชื่อมต่อกับ IoT ได้อย่างง่ายดาย ในการควบคุมทีวีของเราโดยใช้ Alexa เราจะใช้ Official Arduino Alexa Skill ด้วย
หากคุณยังใหม่กับ Arduino IoT Cloud เราขอแนะนำให้คุณดูที่ โปรเจกต์แนะนำนี้ ก่อน ซึ่งจะให้ภาพรวมและแนะนำขั้นตอนการตั้งค่าบอร์ดที่รองรับ, *Things* และ *Properties* ของ IoT Cloud และช่วยให้คุณเริ่มต้นใช้งานได้
ส่วนที่ 1: วิธีการควบคุมเครื่องรับโทรทัศน์
วิธีที่ง่ายที่สุดในการควบคุมโทรทัศน์ทุกชนิดคือการทำตัวเหมือนเป็นรีโมตอินฟราเรดของมันเอง ในการทำเช่นนั้น เราจะต้อง *ฟัง* สัญญาณที่รีโมตจะส่งมา จับข้อมูล และเลียนแบบด้วยบอร์ด Arduino ของเรา เมื่อประกอบวงจรเสร็จแล้ว เราจะอัปโหลด sketch นี้ ไปยังบอร์ดของเรา มันจะแปลง IR signal bursts ที่เกิดจากการกดปุ่มรีโมตให้เป็น array ของ unsigned integers ให้เราชี้รีโมตไปที่ Arduino IR Receiver ที่เราสร้างขึ้น แล้วกดปุ่มต่อไปนี้:
- POWER/STANDBY
- CHANNELS FROM 1 TO 9
- VOLUME UP
- VOLUME DOWN
- MUTE
- CHANNEL UP
- CHANNEL DOWN
เราจะเห็นค่าที่ส่งผ่าน *Serial Monitor* โดยรายงานเป็น rawData . ตอนนี้ให้จดบันทึกค่าเหล่านี้ลงในไฟล์ข้อความ และกำหนดชื่อ array ของตัวเองให้กับแต่ละรายการ ( chan1 , chan2 และอื่น ๆ) ค่าต่อไปนี้เป็นเพียงสำหรับการอ้างอิง และถูกสร้างขึ้นจากรีโมตทีวีของ Samsung
ช่อง 1
unsigned int chan1[67] = {4450,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 500,1700, 550,1700, 550,1700, 500,1700, 550,1700, 500};
ช่อง 2
unsigned int chan2[67] = {4500,4500, 550,1700, 500,1700, 550,1700, 550,550, 550,550, 550,600, 500,600, 550,600, 500,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,650, 450,1700, 550,600, 500,1700, 550,1700, 500,1700, 550,1700, 550,1700, 500};
ช่อง 3
unsigned int chan3[67] = {4500,4500, 500,1700, 550,1700, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,600, 550,550, 550,550, 550,600, 550,550, 550,1700, 500,600, 550,550, 550,1650, 550,1700, 550,1700, 500,1700, 600};
ช่อง 4
unsigned int chan4[67] = {4450,4450, 550,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 600,550, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 550,1700, 500,1700, 550,1700, 550,1700, 500};
ช่อง 5
unsigned int chan5[67] = {4500,4500, 500,1700, 550,1700, 550,1700, 550,550, 550,550, 550,550, 600,550, 550,550, 550,1700, 550,1650, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,1700, 500,600, 550,550, 550,600, 550,550, 550,550, 550,1700, 550,1700, 500,600, 550,1700, 500,1700, 550,1700, 550,1700, 500};
ช่อง 6
unsigned int chan6[67] = {4500,4500, 550,1650, 550,1700, 550,1700, 500,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 600,550, 500,600, 550,550, 600,550, 550,550, 550,1700, 500,600, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,600, 550,1700, 500,600, 550,1650, 600,1650, 550,1700, 550,1650, 600};
ช่อง 7
unsigned int chan7[67] = {4500,4500, 550,1700, 500,1700, 550,1750, 500,550, 550,600, 500,650, 500,550, 550,550, 550,1750, 500,1700, 500,1700, 550,650, 450,650, 500,550, 550,600, 500,650, 500,550, 550,600, 500,1700, 550,1750, 500,600, 500,550, 550,600, 500,650, 500,1750, 450,1700, 550,600, 500,650, 500,1700, 500,1700, 550,1750, 500,1700, 500};
ช่อง 8
unsigned int chan8[67] = {4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,600, 500,1700, 550,1700, 500,600, 550,550, 550,650, 450,600, 550,550, 550,1700, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,1700, 550};
ช่อง 9
unsigned int chan9[67] = {4450,4500, 550,1700, 550,1700, 500,1700, 550,600, 500,600, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 500,600, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,600, 550,550, 550,550, 550,600, 500,1700, 550,600, 500,600, 550,550, 550,1700, 550,1700, 500,1700, 550,1700, 550};
เพิ่มเสียง
unsigned int volUp[67] = {4500,4500, 550,1700, 500,1750, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,1700, 500,650, 450,600, 550,600, 500,650, 450,650, 500,1700, 500,1750, 500,1750, 500,550, 550,600, 500,650, 500,550, 550,600, 500,650, 500,600, 500,600, 500,1700, 550,1750, 450,1750, 500,1700, 550,1700, 500};
ลดเสียง
unsigned int volDown[67] = {4450,4550, 500,1700, 550,1700, 550,1650, 550,600, 550,550, 550,600, 500,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 500,600, 550,550, 550,600, 500,1700, 550,1700, 550,600, 500,1700, 550,600, 500,600, 500,600, 550,550, 550,600, 500,650, 500,1700, 500,650, 500,1700, 500,1750, 500,1700, 550,1700, 500};
ช่องถัดไป
unsigned int chanUp[67] = {4500,4450, 550,1700, 550,1650, 550,1700, 550,550, 550,600, 550,550, 550,550, 600,550, 550,1650, 550,1700, 550,1650, 600,550, 550,550, 550,600, 500,600, 550,550, 550,550, 550,1700, 550,550, 600,550, 550,1650, 550,600, 550,550, 550,550, 550,1700, 550,550, 550,1700, 550,1700, 550,550, 550,1650, 600,1650, 550,1700, 550};
ช่องก่อนหน้า
unsigned int chanDown[67] = {4500,4450, 600,1650, 550,1700, 550,1650, 550,600, 550,550, 550,550, 550,600, 500,600, 550,1700, 500,1700, 550,1700, 550,550, 550,600, 550,550, 550,550, 550,550, 600,550, 550,550, 550,600, 500,600, 550,1650, 600,550, 550,550, 550,550, 600,1650, 550,1700, 500,1700, 600,1650, 550,550, 600,1650, 550,1700, 500,1700, 550};
ส่วนที่ 2: Arduino IoT Cloud
จากหน้าหลักของ **Arduino IoT Cloud** เราจะสร้าง *Thing* ใหม่และกำหนดชื่อที่มีความหมายให้มัน เราจะเรียกมันว่า **TVRemoteController** จากนั้นเราจะเลือกบอร์ดที่เราจะใช้ สำหรับบทช่วยสอนนี้ เราใช้ Arduino Nano 33 IoT แต่หากคุณมีบอร์ดอื่นที่เข้ากันได้ก็สามารถใช้ได้เช่นกัน เพียงแต่โปรดจำไว้ว่า pinout และพฤติกรรมของ IR library อาจมีการเปลี่ยนแปลง หากคุณไม่เห็นบอร์ดของคุณในตอนนี้ คุณอาจข้ามขั้นตอน *Getting Started* ที่เราได้กล่าวถึงไป