สารบัญ:

I2C รีโมทคอนโทรลอินฟราเรดกับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)
I2C รีโมทคอนโทรลอินฟราเรดกับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: I2C รีโมทคอนโทรลอินฟราเรดกับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: I2C รีโมทคอนโทรลอินฟราเรดกับ Arduino: 8 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Using IR Remote Controls with the Arduino IR Receiver infrared receiver HX1838 VS1838 KY-022 2024, พฤศจิกายน
Anonim
I2C รีโมทคอนโทรลอินฟราเรดกับ Arduino
I2C รีโมทคอนโทรลอินฟราเรดกับ Arduino
I2C รีโมทคอนโทรลอินฟราเรดกับ Arduino
I2C รีโมทคอนโทรลอินฟราเรดกับ Arduino

PreambleThis อธิบายรายละเอียดวิธีการสร้างรีโมทคอนโทรลสากลโดยใช้ I2C สำหรับอินเทอร์เฟซ

คุณพูดแปลกแค่ไหนเมื่อใช้อุปกรณ์ทาส I2C?

ใช่ อุปกรณ์ทาส I2C

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

บทนำ

ตามที่กล่าวไว้ข้างต้นคำแนะนำนี้จะอธิบายวิธีควบคุมเครื่องใช้ในบ้านเช่นทีวีเครื่องเล่นดีวีดีและดาวเทียมเป็นต้นโดยใช้ไลบรารี IRremote บน Arduino

สรุปด้วยตัวอย่างการออกแบบที่เปลี่ยน Arduino ให้เป็นโมดูลควบคุมระยะไกล I2C ทาส (รูปที่ 1 ด้านบน) พร้อมวงจรทดสอบต้นแบบ (รูปที่ 2 ด้านบน) และอธิบายรายละเอียดวิธีย่อการออกแบบของคุณให้เหลือส่วนประกอบขั้นต่ำที่จำเป็นเพื่อให้สามารถ ฝังอยู่ในการออกแบบอื่น ในกรณีของฉัน ฉันใช้อุปกรณ์ฝังตัวนี้ในอุปกรณ์ควบคุมระยะไกล IoT Universal ที่ใช้ ESP8266-12E

ฉันต้องการชิ้นส่วนอะไร?

ในการสร้างวงจรที่แสดงในขั้นตอนที่ 1 (เครื่องส่งสัญญาณ IR) คุณจะต้องมีชิ้นส่วนดังต่อไปนี้

  • ตัวต้านทาน 10K ลด 2 ตัว
  • 1 ปิดตัวต้านทาน 390R
  • 1 ปิดตัวต้านทาน 33R
  • 1 ปิดตัวต้านทาน 3K8
  • 1 ปิด LED สีแดง
  • 1 ปิด IR Led TSAL6400
  • 1 ปิดทรานซิสเตอร์ BC337
  • 1 ปิด 220uF ตัวเก็บประจุ
  • 1 จาก Arduino Uno

ในการสร้างวงจรที่แสดงในขั้นตอนที่ 4 (IR Receiver) คุณจะต้องมีชิ้นส่วนดังต่อไปนี้

  • 1 ปิดตัวต้านทาน 10K
  • 1 ปิด TSOP38328
  • 1 ปิด 220uF ตัวเก็บประจุ
  • 1 จาก Arduino Uno

ในการสร้างวงจรที่แสดงในขั้นตอนที่ 5 (วงจรทดสอบสเลฟ) คุณจะต้องมีชิ้นส่วนดังต่อไปนี้

  • 4 ปิดตัวต้านทาน 10K
  • 2 ปิดตัวต้านทาน 390R
  • 1 ปิดตัวต้านทาน 33R
  • 1 ปิดตัวต้านทาน 3K8
  • 2 ปิด LED สีแดง
  • 1 ปิด IR Led TSAL6400
  • 1 ปิดทรานซิสเตอร์ BC337
  • 1 ปิด 220uF ตัวเก็บประจุ
  • 2 ปิด SPST ปุ่ม
  • 2 ปิด Arduino Unos

ในการสร้างวงจรที่แสดงในขั้นตอนที่ 6 (แบบย่อ) คุณจะต้องมีชิ้นส่วนดังต่อไปนี้

  • ตัวต้านทาน 10K ลด 3 ตัว
  • 1 ปิดตัวต้านทาน 270R
  • 1 ปิดตัวต้านทาน 15R
  • ตัวต้านทาน 4 ตัวออก 1K
  • 1 ปิด LED สีแดง
  • 1 ปิด IR Led TSAL6400 หรือ TSAL5300
  • 1 ปิดทรานซิสเตอร์ BC337
  • 1 ปิด 220uF ตัวเก็บประจุด้วยไฟฟ้า @ 6.3v
  • 1 ปิด 1000uF ตัวเก็บประจุด้วยไฟฟ้า @ 6.3v
  • 2 ปิด 0.1uF ตัวเก็บประจุ
  • 2 ปิดตัวเก็บประจุ 22pF
  • 1 ปิด 16MHz Xtal
  • 1 ปิด ATMega328P-PU

หมายเหตุ: คุณจะต้องใช้อุปกรณ์ FTDI เพื่อตั้งโปรแกรม ATMega328P

ฉันต้องการทักษะอะไร?

  • เข้าใจอุปกรณ์อิเล็กทรอนิกส์เพียงเล็กน้อย
  • ความรู้เกี่ยวกับ Arduino และ IDE
  • อดทนหน่อย
  • ความเข้าใจบางอย่างเกี่ยวกับ I2C จะเป็นประโยชน์ (ดูที่นี่สำหรับรายละเอียดทั่วไปของ I2C/Wire Library)

หัวข้อที่ครอบคลุม

  • ภาพรวมโดยย่อของวงจร
  • ภาพรวมโดยย่อของซอฟต์แวร์
  • เนื้อหาแพ็คเก็ต I2C,
  • การรับรหัสควบคุมระยะไกล (ui32Data)
  • วิธีทดสอบอุปกรณ์ I2C Slave ของคุณ
  • ลดขนาดการออกแบบของคุณ
  • บทสรุป,
  • ข้อมูลอ้างอิงที่ใช้

ข้อจำกัดความรับผิดชอบ

เช่นเคย คุณใช้คำแนะนำเหล่านี้โดยยอมรับความเสี่ยงเองและไม่รองรับ

ขั้นตอนที่ 1: ภาพรวมโดยย่อของวงจร

ภาพรวมโดยย่อของวงจร
ภาพรวมโดยย่อของวงจร

วัตถุประสงค์ของวงจรคือเพื่อส่งรหัสรีโมทคอนโทรล IR การออกแบบค่อนข้างตรงไปตรงมาและค่อนข้างเรียบง่าย

เมื่อทรานซิสเตอร์ Q1 เปิด BC337 NPN ผ่านลอจิกหนึ่งจาก Arduino PWM O/P D3 ถึง Resistor R5 กระแสไฟจะไหลผ่าน Leds 1 และ 2 ถูกจำกัดโดยตัวต้านทานบัลลาสต์ R3 และ R4 ตามลำดับเท่านั้น Q1 ใช้เพื่อเพิ่มกระแสที่ไหลผ่าน IR Diode (IF Max = 100mA) ให้มากกว่าที่ Arduino O/P มีความสามารถ ~40mA @ +5v supply

Capacitor C1 a 220uF Electrolytic ให้ความเสถียรในการป้องกันไม่ให้รางจ่ายไฟตกจากพลังงานที่ดึงมาจาก Leds 1 และ 2

ตัวต้านทาน R1 และ R2 เป็นตัวต้านทานแบบ I2C

ขั้นตอนที่ 2: ภาพรวมโดยย่อของซอฟต์แวร์

ภาพรวมโดยย่อของซอฟต์แวร์
ภาพรวมโดยย่อของซอฟต์แวร์
ภาพรวมโดยย่อของซอฟต์แวร์
ภาพรวมโดยย่อของซอฟต์แวร์
ภาพรวมโดยย่อของซอฟต์แวร์
ภาพรวมโดยย่อของซอฟต์แวร์

คำนำ

ในการคอมไพล์ซอร์สโค้ดนี้ให้สำเร็จ คุณจะต้องมีไลบรารีเพิ่มเติมดังต่อไปนี้

IRremote.h

  • โดย: z3t0
  • วัตถุประสงค์: ไลบรารีระยะไกลอินฟราเรดสำหรับ Arduino: ส่งและรับสัญญาณอินฟราเรดด้วยโปรโตคอลหลายตัว
  • จาก:

ภาพรวมรหัส

ดังแสดงในภาพที่ 1 ด้านบน เมื่อเริ่มต้นโค้ดจะกำหนดค่าไมโครคอนโทรลเลอร์ I/O จากนั้นจะสำรวจสถานะของซอฟต์แวร์ภายในแฟล็ก 'bFreshDataFlag' เมื่อตั้งค่าสถานะนี้ตัวควบคุมยืนยันว่าเป็นบรรทัด 'ไม่ว่าง' (กำลังส่งข้อมูลพิน D4 ต่ำ) และย้ายไปยังสถานะ 'eBUSY' โดยกดปุ่มอ่านตามลำดับซึ่งอยู่ใน uDataArray และส่งข้อมูลการปรับ IR ไปยัง IR LED ใน ลำดับการส่ง

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

การรับข้อมูลการกดปุ่ม IR

เมื่อข้อมูลถูกส่งไปยังรีโมตคอนโทรลอินฟราเรดผ่าน I2C จะทริกเกอร์การขัดจังหวะและการเรียกใช้ฟังก์ชัน receiveEvent() จะถูกทริกเกอร์แบบอะซิงโครนัส

เมื่อทริกเกอร์ข้อมูล I2C ที่ได้รับจะถูกเขียนตามลำดับลงในบัฟเฟอร์ 'uDataArray'

ในระหว่างการรับข้อมูล ถ้าการสิ้นสุดของลำดับถูกส่งสัญญาณโดยต้นแบบ (bFreshData!=0x00) 'bFreshDataFlag' จะถูกตั้งค่า ดังนั้นจึงเป็นการส่งสัญญาณการเริ่มต้นของลำดับการส่งข้อมูล

รูปภาพ 2…3 ให้ตัวอย่างของลำดับแพ็กเก็ตทั่วไป

หมายเหตุ: ดูซอร์สโค้ดแบบเต็มได้ที่นี่

ขั้นตอนที่ 3: เนื้อหาแพ็คเก็ต I2C

เนื้อหาแพ็คเก็ต I2C
เนื้อหาแพ็คเก็ต I2C

รูปแบบของแพ็คเก็ตควบคุมที่ส่งไปยังสเลฟผ่าน I2C นั้นแสดงไว้ด้านบนในรูปที่ 1 ความหมายของแต่ละฟิลด์แสดงไว้ด้านล่าง

ความหมายของฟิลด์แพ็คเก็ตควบคุม

ไบต์ bEncoding;

  • การเข้ารหัสการควบคุมระยะไกล IR,

    • RC6 (ท้องฟ้า) = 0,
    • โซนี่ = 1,
    • ซัมซุง = 2,
    • NEC = 3,
    • LG = 4

uint32_t ui32ข้อมูล;

การแทนค่าฐานสิบหกของสตรีมข้อมูล IR แบบไบนารี 4 ไบต์ข้อมูล (แบบยาวที่ไม่ได้ลงนาม), LSByte … MSByte

ไบต์ bNumberOfBitsInTheData;

จำนวนบิตในข้อมูล (สูงสุด 32) ช่วง = 1 … 32

ไบต์ bPulseTrainRepeats;

กี่ครั้งของรถไฟชีพจรนี้ ช่วง = 1 … 255. โดยปกติ 2…4 ซ้ำ คุณอาจต้องการขยายเวลานี้สำหรับคำสั่งเปิด/ปิด เนื่องจากอุปกรณ์ที่รับบางครั้งอาจต้องใช้พัลส์เทรนซ้ำหลายครั้งเพื่อรับสัญญาณเปิดเครื่อง

ไบต์ bDelayBetweenPulseTrainRepeats;

ความล่าช้าระหว่างการทำซ้ำของพัลส์เทรนนี้ ช่วง = 1 … 255mS โดยทั่วไปแล้ว 22mS … 124mS

ไบต์ bButtonRepeats;

จำลองการกดปุ่มเดิมซ้ำๆ (แต่ไม่รองรับโค้ดที่แก้ไขแล้ว เช่น รีโมทของ Apple แต่ใช้รหัสปุ่มซ้ำ) ช่วง = 1 … 256. ค่าเริ่มต้น = 1

uint16_t ui16DelayBetweenButton ซ้ำ;

หน่วงเวลาระหว่างปุ่มซ้ำ (unsigned int) LSByte ทั้งหมด 2 ไบต์ … MSByte ช่วง = 1 … 65535mS ค่าเริ่มต้น = 0mS

ไบต์ bFreshData;

  • ข้อมูลสด ค่าที่ไม่เป็นศูนย์ เขียนล่าสุด ทริกเกอร์ลำดับ IR TX ช่วง 0x00…0xFF

    • แพ็กเก็ตควบคุมเพิ่มเติมกำลังจะมา = 0
    • นี่คือแพ็กเก็ตควบคุมสุดท้าย = ค่าที่ไม่ใช่ศูนย์ 1, 2, … 255

สังเกตการใช้คำสั่งคอมไพเลอร์ '_packed_' เพื่อให้แน่ใจว่าข้อมูลเป็นแพ็คเก็ตไบต์สำหรับไบต์ในหน่วยความจำโดยไม่คำนึงถึงระบบเป้าหมายที่ใช้ (Uno, Due, ESP8266 เป็นต้น) ซึ่งหมายความว่าการรวมกันระหว่าง registerAllocationType และ dataArrayType ต้องการเพียงนาฬิกาเอาท์/นาฬิกาเป็นไบต์ตามลำดับจากแพ็กเก็ตควบคุมเท่านั้น ทำให้ซอฟต์แวร์ TX/RX ใช้งานง่าย

ขั้นตอนที่ 4: การรับรหัสการควบคุมระยะไกล (ui32Data)

การรับรหัสการควบคุมระยะไกล (ui32Data)
การรับรหัสการควบคุมระยะไกล (ui32Data)
การรับรหัสการควบคุมระยะไกล (ui32Data)
การรับรหัสการควบคุมระยะไกล (ui32Data)
การรับรหัสการควบคุมระยะไกล (ui32Data)
การรับรหัสการควบคุมระยะไกล (ui32Data)
การรับรหัสการควบคุมระยะไกล (ui32Data)
การรับรหัสการควบคุมระยะไกล (ui32Data)

คุณสามารถรับรหัสคีย์รีโมตคอนโทรลได้สามวิธี

  1. ผ่านการนับบิตด้วยออสซิลโลสโคป
  2. ดูในเว็บไซต์,
  3. ถอดรหัสโดยตรงจากสตรีมข้อมูลในซอฟต์แวร์

ผ่านการนับบิตด้วยขอบเขต

วิธีนี้ไม่ใช่วิธีที่มีประสิทธิภาพ เนื่องจากต้องใช้เวลาค่อนข้างนานและอาจต้องใช้ความพยายามมากกว่า 1 ครั้ง อย่างไรก็ตาม วิธีนี้อาจมีความแม่นยำสูง นอกจากนี้ยังมีประโยชน์ในการตรวจสอบรหัสด้วยสายตาที่ได้รับโดยใช้วิธีที่ 2 และ 3 รวมถึงการกำหนดลักษณะเฉพาะของรีโมต ตัวอย่างเช่นเมื่อกดปุ่มบนรีโมท Apple IR ค้างไว้ รีโมตจะออกลำดับคำสั่งในขั้นต้น จากนั้นตามด้วยลำดับการบีบอัดซ้ำเป็น 0xF….

ดูในเว็บไซต์

ฐานข้อมูลรหัสการควบคุมระยะไกลบนเว็บไซต์ Linux Infrared Remote Control เป็นแหล่งที่ดี

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

ถอดรหัสโดยตรงจากสตรีมข้อมูล

การใช้วงจรในรูปที่ 1 ด้านบนร่วมกับตัวอย่างไลบรารี IRremote 'IRrecvDumpV2.ino' ทำให้สามารถถอดรหัสสตรีมข้อมูลได้โดยตรงจากรีโมต ภาพที่ 2 แสดงรีโมททีวี Samsung ที่ถอดรหัสแล้วสำหรับการกดปุ่มเปิด/ปิดในหน้าต่างเทอร์มินัล Arduino IDE

เครื่องรับ/เครื่องส่งแบบรวม

รูปภาพที่ 3 และ 4 ด้านบนแสดงถึงโซลูชันที่ช่วยให้ทั้งรับและส่งคำสั่ง IR เพื่อให้สร้างต้นแบบได้ง่าย

ในการถอดรหัสการกดปุ่มควบคุมระยะไกล IR คุณจะต้องแฟลช Arduino ด้วยตัวอย่าง 'IRrecvDumpV2.ino' ซึ่งมาพร้อมกับไลบรารี IRremote

นอกจากนี้ยังทำงานได้ดีสำหรับการส่งสัญญาณหากคำสั่ง IR มีไฟ LED สีแดงเป็นตัวบ่งชี้ว่าอุปกรณ์กำลังทำงานอยู่

ขั้นตอนที่ 5: วิธีทดสอบอุปกรณ์ทาส I2C ของคุณ

วิธีทดสอบอุปกรณ์ทาส I2C ของคุณ
วิธีทดสอบอุปกรณ์ทาส I2C ของคุณ
วิธีทดสอบอุปกรณ์ทาส I2C ของคุณ
วิธีทดสอบอุปกรณ์ทาส I2C ของคุณ

ใช้ซอร์สโค้ดที่นี่ และวงจรที่ระบุไว้ด้านบนในภาพที่ 1 ตั้งโปรแกรม Arduino 'Master' ด้วย 'IR_Remote_Sim_Test.ino' และ 'Slave' Arduino ด้วย 'IR_Remote_Sim.ino'

สมมติว่าคุณมีทีวี Sony Bravia กล่อง Sky HD และ Sony BT SoundBar ให้กดปุ่ม 1 แล้วทีวีของคุณจะเปลี่ยนเป็น BBC1 (ช่อง 101) กดปุ่ม 2 และซาวด์บาร์ของคุณจะปิดเสียง กดอีกครั้งและจะปิดเสียง

ในระหว่างการดำเนินการของลำดับการส่ง IR LED3 จะสว่างขึ้นเพื่อระบุว่าทาสไม่ว่างและ LED1 จะกะพริบในแนวเดียวกับกระบวนการส่งสัญญาณ IR

แน่นอน หากคุณไม่ได้ตั้งค่าระบบความบันเทิงแบบเดียวกับด้านบน คุณสามารถตั้งโปรแกรมทาสใหม่ด้วย 'IRrecvDumpV2.ino' ถอดรหัสคำสั่งทางไกลที่คุณสนใจ จากนั้นตั้งโปรแกรมให้เป็น 'IR_Remote_Sim_Test.ino' สำหรับคุณ สถานการณ์ที่กำหนด

ภาพที่ 2 แสดงภาพรวมซอฟต์แวร์ทดสอบระดับระบบระหว่าง Master และ Slave

ขั้นตอนที่ 6: ลดขนาดการออกแบบของคุณ

ลดขนาดการออกแบบของคุณ
ลดขนาดการออกแบบของคุณ

ตกลง สมมติว่าคุณได้ปฏิบัติตามคำแนะนำนี้โดยอาศัย Arduinos สองตัวเพื่อควบคุมอุปกรณ์ในบ้านของคุณ ไม่ใช่การใช้สต็อก Arduino ของคุณอย่างมีประสิทธิภาพมากที่สุด ดังนั้น หากคุณสร้างวงจรที่แสดงในภาพด้านบน และทำตามคำแนะนำที่นี่เพื่อตั้งโปรแกรม ATMega328P ด้วย 'IR_Remote_Sim.ino' คุณจะสามารถลดทั้งระบบให้เป็นส่วนประกอบที่น้อยที่สุดได้ ซึ่งจะช่วยให้คุณสามารถฝังการออกแบบของคุณลงในระบบอื่นได้

ขั้นตอนที่ 7: บทสรุป

บทสรุป
บทสรุป
บทสรุป
บทสรุป

วิธีแก้ปัญหามีความเสถียรและทำงานได้ดี มันถูกฝังอยู่ในระบบอื่นมาหลายสัปดาห์แล้วโดยไม่มีปัญหาใดๆ

ฉันเลือก Arduino Uno R3 เนื่องจากฉันต้องการอุปกรณ์ที่มี RAM เพียงพอเพื่อให้ฉันมีบัฟเฟอร์ปุ่มที่มีความลึกพอสมควร ฉันตัดสินใจใช้ขนาดบัฟเฟอร์ 20 แพ็กเก็ต (MAX_SEQUENCES)

แผงป้องกัน Hybrid TX/RX ที่ฉันสร้างขึ้นนั้นมีประโยชน์มากเมื่อถอดรหัสการควบคุมระยะไกลของ Sony และ Sky แม้ว่าฉันต้องสารภาพว่าใช้ขอบเขตดิจิทัลของฉันเป็นครั้งคราวเพื่อตรวจสอบซอฟต์แวร์ถอดรหัสคำสั่ง IR เหมือนกับที่มาจาก IR ที่ได้รับ (TSOP38328)

สิ่งเดียวที่ฉันจะทำแตกต่างออกไปคือการใช้วงจรขับกระแสคงที่สำหรับไฟ LED IR ดังที่แสดงด้านบนในรูปที่ 2

ข้อสังเกตอีกประการหนึ่งคือ เครื่องส่งสัญญาณ IR บางตัวไม่ได้รับการปรับความถี่ด้วย 38KHz, TSOP38328 ได้รับการปรับให้เหมาะสมสำหรับ 38KHz

ขั้นตอนที่ 8: ข้อมูลอ้างอิงที่ใช้

IRRemote.h

  • โดย: z3t0
  • วัตถุประสงค์: ไลบรารีระยะไกลอินฟราเรดสำหรับ Arduino: ส่งและรับสัญญาณอินฟราเรดด้วยโปรโตคอลหลายตัว
  • จาก:

ห้องสมุด IR Remote

  • z3t0.github.io/Arduino-IRremote/
  • https://arcfn.com/2009/08/multi-protocol-infrared-remote-library.html

IR (อินฟราเรด) ตัวรับ เซนเซอร์ - TSOP38238 (เทียบเท่า)

https://cdn-shop.adafruit.com/datasheets/top382.pdf

เพื่อหลีกเลี่ยงการขยายโครงสร้างข้อมูลไปยังขอบเขตคำ

  • https://github.com/esp8266/Arduino/issues/1825
  • https://github.com/tuanpmt/esp_bridge/blob/master/modules/include/cmd.h#L15
  • https://stackoverflow.com/questions/11770451/what-is-the-meaning-of-attribute-packed-aligned4

แหล่งที่มาของรายละเอียดรีโมท IR ที่ดี

https://www.sbprojects.com/knowledge/ir/index.php

I2C

  • https://playground.arduino.cc/Main/WireLibraryDetailedReference
  • https://www.arduino.cc/en/Reference/WireSend

ฐานข้อมูลรีโมท IR

  • https://www.lirc.org/
  • https://lirc-remotes.sourceforge.net/remotes-table.html

BC337 เอกสารข้อมูลสินค้า

https://www.onsemi.com/pub/Collateral/BC337-D. PDF

1N4148 เอกสารข้อมูลสินค้า

https://www.vishay.com/docs/81857/1n4148.pdf

เอกสารข้อมูล ATMega328P-PU

แนะนำ: