สารบัญ:
- ขั้นตอนที่ 1: ตั้งค่า การเขียนโปรแกรมเบื้องต้น (การทดสอบ)
- ขั้นตอนที่ 2: นำมันมารวมกัน
- ขั้นตอนที่ 3: บทสรุป
วีดีโอ: ใครอยู่ที่ประตู ระบบกล้องกระตุ้นของ Alexa: 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
บางครั้งในขณะที่ดูทีวีคุณไม่ต้องการเปิดประตูเว้นแต่จะเป็นเรื่องสำคัญ โปรเจ็กต์นี้ให้คุณดูบุคคลที่ประตูได้เพียงแค่บอกอุปกรณ์ Echo ของ Amazon ว่า "Alexa เปิดมอนิเตอร์ประตู" คุณตรวจสอบผู้ที่ปรากฏบนหน้าจอทีวีจากนั้นกลับสู่รายการทีวีปกติ "Alexa เปิดทีวี" ระบบยังอาจมีประโยชน์สำหรับผู้สูงอายุหรือเด็กที่อาจเสี่ยงต่อการถูกเอาเปรียบจากพนักงานขาย ขโมย และอื่นๆ สิ่งนี้ทำให้ทีวีจอใหญ่ของระบบความบันเทิงของคุณเป็นจอภาพสำหรับกล้องไม่เพียงแต่กล้องหน้าประตูเท่านั้น แต่สำหรับกล้องรักษาความปลอดภัยอื่นๆ ที่คุณอาจมี ในความเป็นจริง มันสามารถขยายเพื่อแสดงวิดีโอจากกล้องอินเทอร์เน็ต เช่น กล้องชายหาด ฯลฯ
อะไหล่:
ระบบความบันเทิง:
ทีวีที่มีอินพุต HDMI หลายช่อง (ชุดทีวีส่วนใหญ่มี)
กล่องเคเบิลหรือ DVR
เราเตอร์และการเชื่อมต่ออินเทอร์เน็ตผ่านกล่องเคเบิล (อาจไม่จำเป็นถ้าคุณมี WiFi)
อเมซอน เอคโค่ ("อเล็กซ่า")
Harmony Hub
กล้อง
กล้อง IP ที่ประตูหน้า (แนะนำให้ใช้ประเภท Power Over Ethernet - POE)
Raspberry Pi3 ในกล่องโปรเจ็กต์ (Pi ดั้งเดิมอาจใช้งานได้) พร้อมสาย HDMI
Arduino Pro Mini 8 Mhz, 3.3v
โมดูล IR (ประเภททั่วไปส่วนใหญ่จะใช้งานได้)
ขั้นตอนที่ 1: ตั้งค่า การเขียนโปรแกรมเบื้องต้น (การทดสอบ)
โปรเจ็กต์นี้ใช้ Pi3 omxplayer ซึ่งถอดรหัสวิดีโอด้วยการเร่งด้วยฮาร์ดแวร์ สามารถทดสอบ Omxplayer จากบรรทัดคำสั่งในเทอร์มินัล Pi โดยใช้รูปแบบ rtsp://user@password@ipaddress ที่เหมาะสมที่กล้องของคุณต้องการ Pi ควรเชื่อมต่อกับอีเธอร์เน็ต (แม้ว่า Pi3 สามารถเชื่อมต่อผ่าน WiFi ได้เช่นกัน แต่ไม่ได้ทดสอบ) และตั้งอยู่ที่ศูนย์รวมความบันเทิงเพื่อให้สายเคเบิลเอาต์พุต HDMI ของ Pi สามารถเข้าถึงแจ็คอินพุต HDMI ของทีวีได้ โมดูล Arduino และ IR จะเชื่อมต่อกับ Pi และถ่ายทอดข้อมูลที่ได้จากการอ่านการกดปุ่มรีโมทคอนโทรลของทีวี Pi สามารถถอดรหัสนี้ได้โดยตรงจากโมดูล IR แต่ฉันเก่งในการเขียนโปรแกรม Arduino มากกว่าการเขียนโปรแกรม Python และนอกจากจะช่วยประหยัดทรัพยากรโปรเซสเซอร์สำหรับงานหลักของ Pi ในการถอดรหัสสตรีมวิดีโอ
เนื่องจากระบบรักษาความปลอดภัยของฉันมีกล้องหลายตัว ฉันจึงใช้จอแสดงผลการตรวจสอบที่ขับเคลื่อนโดย Pi เป็นวิธีการแสดงกล้อง 4 ตัวในคราวเดียว รวมทั้งแสดงกล้องแต่ละตัวแบบเต็มหน้าจอ ปฏิบัติตามคำแนะนำเหล่านี้ อย่างไรก็ตาม คุณอาจมีปัญหามากมายในการแสดงกล้องในลักษณะที่เสถียร
ปัญหาหนึ่งคือขนาดหน้าต่างทั้ง 4 ที่แสดงในโปรแกรมอาจไม่พอดีกับความละเอียดทีวีของคุณ ค้นหาความละเอียดที่จอภาพของคุณรองรับในขณะที่สังเกตความละเอียดของกล้องที่กล้องของคุณมี กล้อง IP ส่วนใหญ่มีความละเอียดสูง (1080p) และสตรีมความละเอียดต่ำ (640x480) ดังนั้นหากคุณต้องการวิดีโอความละเอียดสูงเพียงรายการเดียวที่ประตูหน้า ให้เลือกสตรีมความละเอียดสูงรูปแบบ rtsp:// ไปกับสตรีมความละเอียดต่ำสำหรับกล้องใน 4 ควอแดรนท์ คุณจะไม่สังเกตเห็นความแตกต่างมากนักกับขนาดภาพที่เล็กกว่า คุณสามารถใช้ขนาดหน้าต่าง bash script (test.sh) ของฉันได้ (ในโหมดความละเอียด 1080p แสดงกล้อง 640x480 ขนาดเท่ากัน 4 ตัวที่ปรับขนาดให้พอดี) มิฉะนั้น ให้ใช้กระดาษกราฟเพื่อจัดวางพิกเซลทีวีของคุณ แล้วร่างเป็นสี่เหลี่ยมที่คุณต้องการในพื้นที่นั้น ต่อไป ให้ค้นหาว่าวิดีโอขนาด 640x480 จะพอดีกับวิดีโอเท่าใดโดยไม่ต้องเปลี่ยนมุมมองมากเกินไป (การยืดในแนวนอนจะดูดีกว่าแนวตั้ง) ฉันไม่ชอบเส้นขอบ เลยไม่ได้คำนวณหา นับสี่เหลี่ยมจากบนซ้ายไปขวาล่าง 1, 2, 3..ฯลฯ จากนั้นสร้างคอลัมน์ของหมายเลขหน้าต่าง สำหรับแต่ละแถวของตัวเลขเหล่านั้น ให้เขียนพิกเซล x, y บนซ้ายบน และพิกเซลขวาล่าง x, y ตัวเลขเหล่านั้นจะถูกแทนที่ลงในสคริปต์เพื่อให้ได้จอแสดงผลแบบกำหนดเอง คุณสามารถมีจอแสดงผลขนาด 3 x 3 ได้หากต้องการ หากคุณต้องการจอแสดงผลเพียงจอเดียว ให้แสดงความคิดเห็นเกี่ยวกับกล้องอีก 3 ตัวที่เหลือ แล้วกำหนดขนาดหน้าต่างให้เป็นความละเอียดเต็มหน้าจอ (และใช้สตรีม rtsp ความละเอียดสูง) และตั้งชื่อสคริปต์ว่า "test1.sh" สร้างสคริปต์ได้มากเท่าที่คุณต้องการ โปรแกรม btn.py Python จะเรียกมันขึ้นมาเมื่อขา GPIO ถูกเปลี่ยนโดย Arduino
ปัญหาหนึ่งในการแสดงผลที่เสถียร (ด้านบนของภาพดี แต่มีเส้นแนวตั้งของภาพที่ต่ำกว่า) คือกล้องจำนวนมากสตรีมได้ดีกว่ามากโดยใช้ rtsp ผ่าน tcp (ฉันใช้กล้อง IP ของ Hikvision 2 ถึง 5 Mp) ดังนั้น ให้ใช้ "--avdict rtsp_transport:tcp" ใน omxplayer ดังที่แสดง คำสั่ง omxplayer ที่มีประโยชน์อื่นๆ ได้แก่ โวลุ่ม (--vol -6000 สำหรับปิดเสียง) และบัฟเฟอร์ (--video queue x) โดยที่ x=1 ขึ้นไป
การตั้งค่ากล้อง IP อาจทำให้เกิดปัญหากับ omxplayer กล้อง IP ทั้งหมดควรตั้งค่าเฟรมเดียวกันต่อวินาที มิฉะนั้น ภาพจะแตก เมื่อตั้งค่าเป็นอัตราเฟรมที่ต่างกันโดยสิ้นเชิง เวลาที่แสดงบนการประทับเวลาของกล้องตัวหนึ่งจะย้อนกลับไปสองสามวินาที จากนั้นไปข้างหน้าแล้วย้อนกลับเป็นต้น ตรวจสอบให้แน่ใจว่าหน้าต่าง omxplayer ของคุณไม่ทับซ้อนกัน ไม่เช่นนั้นส่วนที่ทับซ้อนกันจะสั่นไหว
ขั้นตอนที่ 2: นำมันมารวมกัน
คุณสามารถควบคุมกล่องเคเบิลและทีวีด้วยตนเองเพื่อให้ Pi แสดงกล้องที่ประตูหน้าได้ อย่างไรก็ตาม ต้องใช้การกดปุ่มเพียงไม่กี่ครั้ง รวมถึงการสลับรีโมทสากลจากโหมดเคเบิลเป็นโหมดทีวีอย่างเหมาะสม เพื่อให้เปลี่ยนแหล่งสัญญาณเข้า HDMI เป็นตัวถอดรหัสกล้อง Pi (HDMI 2) หากคุณต้องการความสามารถในการแสดงหน้าจอกล้องเพิ่มเติม คุณต้องเปลี่ยนรีโมทสากลเป็น AUX เพื่อควบคุม Arduino และเลือกกล้อง Pi เพื่อให้กระบวนการนี้ง่ายขึ้น ให้ใช้ Harmony Hub และแอพสมาร์ทโฟน Harmony ที่เกี่ยวข้อง สอนให้ควบคุมทีวีและกล่องเคเบิลสำหรับการดูทีวีปกติในกิจกรรมเดียว จากนั้นสร้างกิจกรรมอื่นเพื่อควบคุมจอภาพวิดีโอ Pi กิจกรรมประกอบด้วยการเปิดทีวี อินพุตทีวีเป็น HDMI 2 และการควบคุมปุ่ม NECx TV เสมือน (เช่น Arduino และ Pi) 0 ถึง 5 ซึ่งช่วยให้สามารถควบคุมทุกอย่างผ่านแอปสมาร์ทโฟน Harmony เพื่อให้ง่ายยิ่งขึ้น ให้เชื่อมโยงแอป Amazon Echo Dot (Alexa) กับแอป Harmony เพื่อควบคุมเสียงของทีวีหรือฟังก์ชันตรวจสอบประตู เว็บไซต์ Harmony ให้รายละเอียดเกี่ยวกับวิธีการเปิดใช้งานทักษะใหม่ของ Alexa ทักษะใหม่ ๆ. เมื่อเชื่อมโยงกับทักษะใหม่ของ Alexa แล้ว คำหลักเช่น "เปิดทีวี" หรือ "เปิดการตรวจสอบประตู" จะเปิดใช้งานการดำเนินการที่เหมาะสมโดยไม่ต้องใช้ IR จากรีโมทสากล
Pi เชื่อมต่อผ่านอีเทอร์เน็ตกับ LAN ของคุณและผ่านสาย HDMI เข้ากับทีวี ฉันติดตั้ง Pro Mini ขนาด 3.3 โวลต์ผ่านสายไปยัง Pi เพื่อเป็นตัวเลือกในการเพิ่มการสลับกล้องเพิ่มเติม Pro Mini สามารถใช้พลังงานจากพิน 3.3 โวลต์ของ Pi โมดูล IR เชื่อมต่อกับพิน 2 ของ Arduino และภาพร่างที่แนบมาจะถอดรหัสการกดปุ่ม 0 ถึง 5 (อันที่จริง 0 ถึง 9 แต่พิน Arduino บางตัวยังไม่ได้เชื่อมต่อ) เอาต์พุต Arduino เชื่อมต่อกับพิน GPIO อินพุตดิจิตอลของ Pi โดยที่การขัดจังหวะสคริปต์ทุบตีจะกำหนดว่า "ปุ่ม" ใดถูกกด จากนั้นหยุดตัวเลือกมุมมองการแสดงผลหนึ่งตัวเลือกแล้วเริ่มอีกตัวเลือกหนึ่ง
กล่องเคเบิลของฉันมาจาก Spectrum (เดิมชื่อ Time Warner Cable) ซึ่งเป็น Motorola DVR รุ่น DCX3510 ใช้โปรโตคอล GI Cable สำหรับ IR Sony TV ใช้โปรโตคอลของ Sony 2 ฉันคิดว่ารหัสใดรหัสหนึ่งนั้นน่าจะควบคุมเครื่องรับ Pi IR และใช้งานได้แม้ว่าจะไม่เป็นประโยชน์ก็ตาม รีโมทคอนโทรลต้องการคำสั่งเพิ่มเติม หรือเปลี่ยนแหล่งสัญญาณเข้าโดยอัตโนมัติเช่นกันเมื่อกดปุ่ม 0 ถึง 9 ดังนั้นฉันจึงต้องใช้รหัสอื่นที่จะไม่โต้ตอบกับเครื่องรับสัญญาณเคเบิลหรือทีวี ฉันพบว่ารีโมทสากลของฉันมีรหัสที่ตั้งโปรแกรมไว้ก่อนหน้านี้สำหรับอุปกรณ์ AUX (ไม่รู้ว่ามันควบคุมอะไร) และตัดสินใจใช้ รหัสที่ผลิตบอกว่าใช้ NECx ซึ่งเป็นรหัส 32 บิต ดังนั้นฉันจึงป้อนรหัสปุ่มเหล่านั้นลงในร่าง Arduino IR_Rev_Codes_Pi_Monitor เปลี่ยนโปรแกรมถ้าคุณมีรุ่นอื่นโดยใช้โปรแกรมรับใน IRLib2 และจดบันทึกค่าผู้สร้าง โปรโตคอล และค่าฐานสิบหกสำหรับปุ่มที่กด
ขั้นตอนที่ 3: บทสรุป
จอมอนิเตอร์ประตูเป็นโครงการบ้านอัตโนมัติที่ใช้งานได้จริง นี่เป็นประสบการณ์ครั้งแรกของฉันในการเขียนโปรแกรม Pi ด้วย Python Python อนุญาตให้ตั้งโปรแกรมขัดจังหวะ ซึ่งเป็นคุณสมบัติที่ฉันคิดว่าสงวนไว้สำหรับไมโครคอนโทรลเลอร์ การขัดจังหวะช่วยให้โปรแกรมทำงานได้ตามปกติ เรียกใช้ omxplayer โดยไม่ต้องตรวจสอบอย่างต่อเนื่องว่าจำเป็นต้องมีการดำเนินการอื่น เช่น เปลี่ยนจอแสดงผลเป็นฟีดกล้องใหม่หรือไม่ อย่างไรก็ตาม หากเกิดการขัดจังหวะ โปรแกรมจะกำหนดว่าควรนำฟีดวิดีโอใหม่ขึ้นมารายการใด Arduino ได้รับการตั้งค่าเพื่อให้พัลส์เพื่อกระตุ้นการขัดจังหวะของ Python หากเกิดการขัดจังหวะ โปรแกรมจะค้นหาว่าเอาต์พุต Arduino ใด (ซึ่งสัมพันธ์กับการกดปุ่มรีโมท IR) ที่เปิดใช้งาน สุดท้าย โปรแกรมจะฆ่าการแสดงผล omxplayer ปัจจุบันและเริ่มการแสดงผล omxplayer ใหม่
ฉันได้เรียนรู้ว่า Pi ไม่ได้ตั้งค่าพิน GPIO ให้อินพุตเหมือนที่ Arduino ทำโดยค่าเริ่มต้น ไม่ใช่ความผิดของ Pi แต่เป็นวิธีที่ Broadcom BCM2837 มาจากโรงงาน ฉันชอบโปรเซสเซอร์ 4 คอร์ 1.2 Ghz ซึ่งเป็นคอมพิวเตอร์ราคาประหยัดและใช้พลังงานต่ำที่สามารถแสดงวิดีโอ HD ที่ยอดเยี่ยมได้ ปุ่ม IR 1 แสดงหน้าจอสี่เหลี่ยม และปุ่ม 2 ถึง 5 แต่ละปุ่มแสดงกล้องขนาดใหญ่เพียงจอเดียวในความคมชัดสูง
การกดปุ่มรีโมท IR 0 จะยกเลิกการแสดงวิดีโอและแสดงบรรทัดคำสั่ง Pi หากคุณต้องการดูวิดีโอ Youtube หรือสิ่งที่คล้ายกัน ให้ใช้แป้นพิมพ์ Bluetooth พิมพ์ "startx" และใช้เบราว์เซอร์ Pi เพื่อนำทางไปยังวิดีโอ Youtube และเล่นแบบเต็มหน้าจอในความละเอียดสูง
แนะนำ:
Rocket Launcher ที่ควบคุมด้วยเสียงของ Alexa: 9 ขั้นตอน (พร้อมรูปภาพ)
Rocket Launcher ที่ควบคุมด้วยเสียงของ Alexa: เมื่อใกล้ถึงฤดูหนาว มาถึงช่วงนั้นของปีที่มีการเฉลิมฉลองเทศกาลแห่งแสงสี ใช่ เรากำลังพูดถึง Diwali ซึ่งเป็นเทศกาลของอินเดียที่แท้จริงซึ่งมีการเฉลิมฉลองทั่วโลก ปีนี้ Diwali จบลงแล้ว และพบกับผู้คน
ควบคุมห้องนั่งเล่นด้วย Alexa และ Raspberry Pi: 12 ขั้นตอน
ควบคุมห้องนั่งเล่นด้วย Alexa และ Raspberry Pi: ควบคุมทีวี ไฟ และพัดลมในห้องนั่งเล่นของคุณด้วย Alexa (Amazon Echo หรือ Dot) และ Raspberry Pi GPIO
Alexa IoT TV-Controller ESP8266: 10 ขั้นตอน (พร้อมรูปภาพ)
Alexa IoT TV-Controller ESP8266: เมื่อเร็ว ๆ นี้ฉันซื้อ Amazon Echo Dot ระหว่างวัน Amazon Prime ในราคาประมาณ 20 ยูโร ผู้ช่วยเสียงขนาดเล็กเหล่านี้มีราคาถูกและยอดเยี่ยมสำหรับ DIY Home Automation หากคุณรู้ว่าสิ่งใดเป็นไปได้และจะสร้างอุปกรณ์อัจฉริยะได้อย่างไร ฉันมี Samsung Smart TV แต่ฉันต้องการเ
ควบคุมไฟ LED ด้วย Alexa หรือ IFTTT (SINRIC PRO TUTORIAL): 6 ขั้นตอน
ควบคุมไฟ LED ด้วย Alexa หรือ IFTTT (SINRIC PRO TUTORIAL): คุณต้องการเป็นคนที่แสดงออกในระหว่างอาหารค่ำทางโลกโดยพูดว่า "Alexa เปิดไฟหรือไม่" โปรเจ็กต์นี้เหมาะสำหรับคุณ! ในตอนท้ายของคำแนะนำนี้ คุณจะสามารถควบคุมแถบ RGB ด้วยอุปกรณ์ Alexa และ IFTTT เป็น
ประตูโรงรถควบคุมโดย Alexa ด้วย Arduino Esp8266: 6 ขั้นตอน
ประตูโรงรถที่ควบคุมโดย Alexa ด้วย Arduino Esp8266: แนวคิดสำหรับโครงการนี้มาจากโครงการเก่าที่ฉันเคยทำเมื่อสักครู่นี้ ฉันต่อวงจรปุ่มกดธรรมดาที่จะเปิดไฟ LED เมื่อกดปุ่มที่ประตูโรงรถ วิธีนี้พิสูจน์แล้วว่าไม่น่าเชื่อถือและไม่มีประโยชน์