สารบัญ:

การใช้เซ็นเซอร์อินฟราเรดกับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)
การใช้เซ็นเซอร์อินฟราเรดกับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การใช้เซ็นเซอร์อินฟราเรดกับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: การใช้เซ็นเซอร์อินฟราเรดกับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: แนะนำ เซนเซอร์อินฟราเรด ตรวจจับวัตถุ #15 สอนเขียนโปรแกรม arduino เบื้องต้น ระดับรากหญ้า 2024, พฤศจิกายน
Anonim
การใช้เซ็นเซอร์อินฟราเรดกับ Arduino
การใช้เซ็นเซอร์อินฟราเรดกับ Arduino

เซ็นเซอร์อินฟราเรด (aka IR) คืออะไร?

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

โปรโตคอลการสื่อสาร IR

แต่ละสัญญาณแสดงถึงรหัสเฉพาะ สัญญาณไฟฟ้าสามารถแปลงกลับไปเป็นข้อมูล/รหัสจริงที่ผู้ส่งส่งไป เมื่อคุณกดปุ่มบนรีโมทคอนโทรลทีวีของคุณ มันจะสร้างสัญญาณที่สอดคล้องกับรหัสปุ่ม (เช่น เปิด/ปิด เพิ่มระดับเสียง ฯลฯ) และส่งไปยังเครื่องรับ (ในกรณีนี้คือทีวีของคุณ) ทั้งผู้ส่งและผู้รับตกลงกันในชุดรหัสเพื่อให้ผู้รับรู้ว่าต้องทำอะไรตามแต่ละรหัส วิธีการมอดูเลตโค้ด (แบบจำลอง) เนื่องจากสัญญาณถูกกำหนดในมาตรฐานที่แตกต่างกัน และผู้ผลิตเซ็นเซอร์แต่ละรายมักจะพยายามผลิตผลิตภัณฑ์ที่เข้ากันได้กับพวกเขา เพื่อให้สามารถนำไปใช้ในอุปกรณ์ต่างๆ ได้ หนึ่งในโปรโตคอลมาตรฐานที่เป็นที่รู้จักมากที่สุดคือจาก NEC คุณสามารถค้นหาประวัติโดยย่อของโปรโตคอล IR ได้ที่ Wikipedia ภายใต้หัวข้อ Consumer IR

ขั้นตอนที่ 1: เซ็นเซอร์ IR มีลักษณะอย่างไร

เซ็นเซอร์ IR มีลักษณะอย่างไร?
เซ็นเซอร์ IR มีลักษณะอย่างไร?
เซ็นเซอร์ IR มีลักษณะอย่างไร?
เซ็นเซอร์ IR มีลักษณะอย่างไร?
เซ็นเซอร์ IR มีลักษณะอย่างไร?
เซ็นเซอร์ IR มีลักษณะอย่างไร?

เซ็นเซอร์ IR มีอยู่ในแพ็คเกจต่างๆ คุณสามารถดูบรรจุภัณฑ์ทั่วไปสำหรับตัวรับสัญญาณ IR ได้ที่นี่

ขั้นตอนที่ 2: IR Sensor Breakout Board/โมดูล

IR Sensor Breakout Board/โมดูล
IR Sensor Breakout Board/โมดูล
IR Sensor Breakout Board/โมดูล
IR Sensor Breakout Board/โมดูล
IR Sensor Breakout Board/โมดูล
IR Sensor Breakout Board/โมดูล
IR Sensor Breakout Board/โมดูล
IR Sensor Breakout Board/โมดูล

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

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

ขั้นตอนที่ 3: ชิ้นส่วนและส่วนประกอบที่จำเป็น

ชิ้นส่วนและส่วนประกอบที่จำเป็น
ชิ้นส่วนและส่วนประกอบที่จำเป็น

คุณสามารถค้นหารายการส่วนประกอบที่คุณจำเป็นต้องทำในบทช่วยสอนนี้ให้สมบูรณ์ได้ที่นี่:

ลิงค์อีเบย์:

  • 1 x Arduino Uno:
  • 1 x โมดูลเซ็นเซอร์ IR พร้อมรีโมท:
  • ตัวต้านทาน 4 x 220 โอห์ม:
  • LED 4 ดวง:
  • 8 x สายดูปองท์:
  • 1 x เขียงหั่นขนม Solderless:
  • 1 x เขียงหั่นขนมขนาดเล็ก (อุปกรณ์เสริม):

ลิงค์ Amazon.com:

  • 1 x Arduino Uno:
  • 1 x โมดูลเซ็นเซอร์ IR พร้อมรีโมท:
  • 1 x เขียงหั่นขนม Solderless:
  • ตัวต้านทาน 4 x 220 โอห์ม:
  • LED 4 ดวง:
  • 8 x สายดูปองท์:
  • 1 x เขียงหั่นขนมขนาดเล็ก (อุปกรณ์เสริม):

ขั้นตอนที่ 4: เชื่อมต่อ IR Sensor กับ Arduino

การเชื่อมต่อเซ็นเซอร์ IR กับ Arduino
การเชื่อมต่อเซ็นเซอร์ IR กับ Arduino
การเชื่อมต่อเซ็นเซอร์ IR กับ Arduino
การเชื่อมต่อเซ็นเซอร์ IR กับ Arduino
การเชื่อมต่อเซ็นเซอร์ IR กับ Arduino
การเชื่อมต่อเซ็นเซอร์ IR กับ Arduino

การตั้งค่าการเชื่อมต่อเซ็นเซอร์ IR กับ Arduino นั้นง่ายมาก นอกจากพิน VCC และ GND แล้ว เซ็นเซอร์มีพินเอาต์พุตเพียงพินเดียวที่ควรเชื่อมต่อกับพินดิจิทัลตัวใดตัวหนึ่งของ Arduino ในกรณีนี้มันเชื่อมต่อกับพิน 13

ฉันพยายามสาธิตทั้งโมดูลเซ็นเซอร์ IR และการตั้งค่าเซ็นเซอร์ IR ดิบ ดังที่เห็นในภาพ ตำแหน่งของพิน VCC และ GND บนโมดูลเซ็นเซอร์นั้นตรงกันข้ามกับเซ็นเซอร์ดิบ อย่างไรก็ตาม เซนเซอร์ของคุณอาจไม่ใช่กรณีดังกล่าว ดังนั้นดังที่กล่าวไว้ในขั้นตอนที่แล้ว ในกรณีที่ใช้เซ็นเซอร์ดิบ ให้ตรวจสอบเอกสารข้อมูลก่อน

ขั้นตอนที่ 5: ค้นหารหัสที่สอดคล้องกับแต่ละคีย์บนรีโมท

ค้นหารหัสที่ตรงกับแต่ละคีย์บนรีโมท
ค้นหารหัสที่ตรงกับแต่ละคีย์บนรีโมท
ค้นหารหัสที่ตรงกับแต่ละคีย์บนรีโมท
ค้นหารหัสที่ตรงกับแต่ละคีย์บนรีโมท
ค้นหารหัสที่ตรงกับแต่ละคีย์บนรีโมท
ค้นหารหัสที่ตรงกับแต่ละคีย์บนรีโมท

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

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

คุณยังสามารถเข้าถึงซอร์สโค้ดจริงที่แชร์บนโปรแกรมแก้ไขเว็บ Arduino ของฉันได้ที่ ir-key-code-logger

หมายเหตุ: อย่ากลัวถ้าคุณเห็นรหัสเช่น FFFFFF ในระหว่างนั้น หมายความว่าคุณได้กดปุ่มค้างไว้ชั่วขณะหนึ่ง เราจะกลับเข้าไปใหม่ในภายหลัง สำหรับตอนนี้ ให้เพิกเฉยและมุ่งไปที่รหัสอื่นๆ

ขั้นตอนที่ 6: ควบคุมชุดไฟ LED โดยใช้ IR Remote

ควบคุมชุดไฟ LED โดยใช้ IR Remote
ควบคุมชุดไฟ LED โดยใช้ IR Remote
ควบคุมชุดไฟ LED โดยใช้ IR Remote
ควบคุมชุดไฟ LED โดยใช้ IR Remote
ควบคุมชุดไฟ LED โดยใช้ IR Remote
ควบคุมชุดไฟ LED โดยใช้ IR Remote

ตอนนี้เรามีโค้ดสำหรับแต่ละปุ่มแล้ว ถึงเวลาเน้นที่วิธีการใช้งาน โดยปกติคุณใช้รีโมต IR เพื่อส่งคำสั่งไปยัง Arduino เพื่อทำบางอย่าง เช่น เปิดหรือปิดหลอดไฟ ย้ายหุ่นยนต์ไปในทิศทางที่กำหนด แสดงบางอย่างบนหน้าจอ LCD/OLED ฯลฯ ในที่นี้เราพยายามสาธิตกระบวนการโดยใช้วิธีง่ายๆ วงจรประกอบด้วยไฟ LED 4 ดวงในสีต่างๆ เราต้องการเปิดหรือปิดแต่ละรายการด้วยปุ่มเฉพาะของรีโมท IR ดังที่คุณเห็นในแผนผัง คุณต้องเชื่อมต่อ Arduino ด้วยวิธีต่อไปนี้กับ LED และเซ็นเซอร์:

Arduino GND -> เซ็นเซอร์ IR GND

Arduino VCC -> เซ็นเซอร์ IR VCC

Arduino 13 -> เอาต์พุตสัญญาณเซ็นเซอร์ IR

Arduino 2 -> Anode ของ LED สีน้ำเงิน (ขาสั้นของ LED สีน้ำเงิน)

Arduino 3 -> Anode ของ LED สีเขียว (ขาสั้นของ LED สีเขียว)

Arduino 4 -> Anode ของ LED สีเหลือง (ขาสั้นของ LED สีเหลือง)

Arduino 5 -> Anode ของ LED สีแดง (ขาสั้นของ LED สีแดง)

Arduino GND -> แคโทดของ LED ทั้งหมดผ่านตัวต้านทาน 220 โอห์ม (พินที่ยาวกว่าของ LEDs)

คุณสามารถค้นหาโค้ดที่สอดคล้องกับวงจรนี้ได้ในไฟล์แนบหรือในโปรแกรมแก้ไขเว็บ Arduino ของฉันที่ ir-led-control

ขั้นตอนที่ 7: การแก้ไขปัญหา

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

รับ FFFFFF เมื่อกดปุ่ม

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

IR Sensor ไม่ตอบสนองเลย และดูเหมือนว่าจะร้อนขึ้น

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

บางครั้งเซ็นเซอร์ตรวจจับรหัสที่ฉันไม่เคยเห็นมาก่อน

นี่เป็นหนึ่งในปัญหาที่พบบ่อยที่สุด เป็นไปได้มากว่าเกิดจากสาเหตุใดสาเหตุหนึ่งต่อไปนี้:

คุณไม่ได้ชี้รีโมท IR ของคุณไปทางเซ็นเซอร์โดยตรง

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

คุณกำลังใช้รีโมท IR ราคาถูก (เช่นเดียวกับที่ฉันใช้ในบทช่วยสอนนี้)

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

ฉันจะรู้ได้อย่างไรว่ารหัสที่บันทึกไว้ไม่ใช่ขยะ

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

1111 1111 0111 1010 1000 0101

จากซ้ายไปขวา ตัวเลข 4 หลักแต่ละชุดจะแสดงอักขระในเลขฐานสิบหกเดิม อย่างที่คุณเห็น แบทช์ที่ตรงกับ 7 คือ 0111 และแบทช์ที่ตรงกับ 8 คือ 1,000 ซึ่งเป็นการปฏิเสธที่แน่นอน โดยการปฏิเสธฉันหมายถึง 0s ทั้งหมดจะเป็น 1s และ 1s ทั้งหมดจะถูกแทนที่ด้วย 0s เช่นเดียวกันกับข้อถัดไปซึ่งก็คือ A (1010) และ 5 (0101)

ขั้นตอนที่ 8: จะทำอย่างไรต่อไป?

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

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

แจ้งให้เราทราบในความคิดเห็น คุณจะทำอย่างไร (หรือทำไปแล้ว) โดยใช้รีโมท IR

แนะนำ: