Mục lục:

ATtiny85 IR USB Receiver: 11 bước (có hình ảnh)
ATtiny85 IR USB Receiver: 11 bước (có hình ảnh)

Video: ATtiny85 IR USB Receiver: 11 bước (có hình ảnh)

Video: ATtiny85 IR USB Receiver: 11 bước (có hình ảnh)
Video: Hướng dẫn giải mã Remote hồng ngoại_ Sử dụng ATTiny85 2024, Tháng bảy
Anonim
Bộ thu USB IR ATtiny85
Bộ thu USB IR ATtiny85

CẢNH BÁO, BẢNG HƯỚNG DẪN NÀY ĐÃ TRỞ THÀNH

Thư viện v-usb được thiết kế để hoạt động với giao thức USB 1.1 mà ngày nay hầu như không tồn tại. Với sự xuất hiện của USB3, bạn sẽ không phải đau đầu khi cố gắng làm cho các thiết bị v-usb hoạt động. Sau khi thay đổi trung tâm đa phương tiện của mình, tôi đã gặp nhiều vấn đề về độ ổn định và mặc dù bộ thu hoạt động nhưng sau một thời gian, nó sẽ ngừng hoạt động. Tôi đã không thành công khi cố gắng sửa chữa nó. Tôi cũng đã tạo một phiên bản atmega328p nhưng phiên bản này cũng có vấn đề tương tự. Sử dụng bộ đếm thời gian của cơ quan giám sát để đặt lại bảng định kỳ cũng không giúp được gì nên tôi đã từ bỏ v-usb.

Hãy tạo cho mình một ưu ái và không tiếp tục với hướng dẫn này trừ khi nó dành cho mục đích giáo dục. Thay vào đó, tôi khuyên bạn nên mua mô-đun chip ATmega 32U4 đã tích hợp giao diện usb và làm theo hướng dẫn sau:

www.sparkfun.com/tutorials/337

Sau đó, ném vào một cảm biến IR TSOP31238 và bạn đã sẵn sàng.

Xin chào các nhà sản xuất! Đây là hướng dẫn để xây dựng bộ thu USB IR hoạt động bằng vi điều khiển Attiny85. Tôi bắt đầu dự án này để khắc phục tình trạng thiếu hỗ trợ (ít nhất là hỗ trợ hoàn chỉnh) cho một số điều khiển từ xa IR trong HĐH GNU / Linux. Làm theo hướng dẫn này, bạn có thể xây dựng một bộ thu USB IR có thể lập trình hoạt động với bất kỳ điều khiển từ xa IR nào chỉ với một vài đô la.

Trước hết, hướng dẫn này sẽ không tồn tại nếu không có sự làm việc chăm chỉ của những người đã tạo ra các thư viện mà tôi sử dụng ở đây:

  • David A. Mellis cho cốt lõi cơ bản của anh ấy
  • Rowdy Dog Software cho thư viện TinyTuner của họ
  • Phần mềm Rowdy Dog dành cho bộ tải khởi động nhỏ bé của họ
  • Rancidbacon (https://rancidbacon.com/) cho cổng arduino của thư viện v-usb (https://code.google.com/archive/p/vusb-for-arduino/downloads)
  • seejaydee cho thư viện IR của anh ấy cho các lõi nhỏ được tìm thấy trên các nhận xét của mã https://www.instructables.com/id/Attiny-IR-librar… có thể hướng dẫn trên https://www.instructables.com/id/Attiny-IR -librar…

Đôi khi không dễ dàng để tìm đúng chủ sở hữu của một thư viện, vì vậy trong trường hợp tôi mắc lỗi, vui lòng để lại nhận xét và tôi sẽ giải quyết vấn đề càng sớm càng tốt.

Hướng dẫn này tồn tại bởi vì tôi không tìm thấy một hướng dẫn / hướng dẫn hoàn chỉnh hoạt động ngoài hộp (nó có thể tồn tại, nhưng tôi không thể tìm thấy nó) vì vậy tôi đã thu thập tất cả thông tin có sẵn trên web và sau một lượng lớn bản dùng thử và lỗi Tôi đã đưa ra một hướng dẫn đầy đủ để xây dựng một bộ thu USB IR hoạt động thực sự hoạt động khá tốt.

Các nguồn thông tin chính mà tôi đã theo dõi:

  • https://nathan.chantrell.net/20121014/tinypcremot…
  • https://forum.arduino.cc/index.php?PHPSESSID=ap4jg…
  • https://blog.petrockblock.com/2012/05/19/usb-keybo…
  • https://learn.adafruit.com/using-an-infrared-libr…
  • https://codeandlife.com/2012/03/03/diy-usb-passwor…
  • https://codeandlife.com/2012/02/22/v-usb-with-atti…
  • https://www.instructables.com/id/Attiny-IR-librar…

Bước 1: Một số cân nhắc

  • Tôi không sở hữu một lập trình AVR ISP và tôi không thực sự thích mua một cái nên tôi đã sử dụng Arduino để lập trình attiny85
  • Tôi không quan tâm đến bất kỳ hệ điều hành nào khác ngoài GNU / Linux nên tôi không biết liệu điều này có hoạt động khác hay không.
  • có các thư viện IR khác nhưng tôi không thể làm cho chúng hoạt động ngay cả với arduino. Hãy xem xét mặc dù tôi đã bắt đầu với kiến thức hạn chế về các thư viện IR. Có lẽ tôi có thể làm cho chúng hoạt động ngay bây giờ sau khi có được kinh nghiệm đối phó với nhiều vấn đề. Dù sao, tôi đã bị lạc và tuyệt vọng trước khi tìm thấy thư viện mà Seejaydee đã cung cấp và tôi đã sử dụng nó kể từ đó (cảm ơn rất nhiều!).
  • Có các cấu hình phần cứng khác, nhưng tôi chỉ sử dụng một cấu hình sử dụng 5V để cấp nguồn cho attiny85 và hai điốt zener 3.6V 0,5W để kẹp điện áp của các đường dữ liệu, nó hoạt động ngoài hộp nên tôi không gây rối. các cấu hình khác.
  • Bạn có thể sử dụng tinh thể 16Mhz hoặc bạn có thể sử dụng thư viện tinytuner để hiệu chỉnh đồng hồ bên trong attiny85 của bạn. Tôi thực sự khuyên bạn nên sử dụng tinh thể, nó ổn định hơn nhiều và có lẽ sẽ giúp bạn đỡ đau đầu.
  • Tôi đang sử dụng ở đây hai bộ nạp khởi động khác nhau cho attiny85:

a) Phiên bản Phần mềm Rowdy Dog, nó đã tích hợp một giao diện nối tiếp rất tuyệt và rất nhỏ để bạn có nhiều không gian hơn cho chương trình của mình và các thư viện khác. Vấn đề là vì một số lý do, mặc dù nó hoạt động khá tốt, nhưng sau một thời gian thiết bị usb bị ngắt kết nối (bạn có thể tìm thấy các vấn đề với lệnh dmesg). Tôi không biết đây là vấn đề của lõi hay sự kết hợp hỗn hợp của lõi cộng với các thư viện đã chọn nên sau một thời gian, tôi quyết định sử dụng lõi này chỉ để giải mã các phím từ xa và hiệu chỉnh xung nhịp (khi không sử dụng 16Mhz pha lê). Sau đó, tôi chỉ cần ghi bộ nạp khởi động Mellis và tải lên bản phác thảo cuối cùng không sử dụng giao diện nối tiếp.

b) Phiên bản Mellis, bộ nạp khởi động ổn định, tôi đã sử dụng cái này trong nhiều dự án. Tôi sẽ luôn sử dụng bộ nạp khởi động này nếu nó có giao diện nối tiếp. Tôi sử dụng lõi này trong bản phác thảo cuối cùng sau khi giải mã tất cả các phím trên điều khiển từ xa của mình.

Bước 2: Hãy bắt đầu với phần cứng

Hãy bắt đầu với phần cứng
Hãy bắt đầu với phần cứng
Hãy bắt đầu với phần cứng
Hãy bắt đầu với phần cứng
Hãy bắt đầu với phần cứng
Hãy bắt đầu với phần cứng

Công cụ bạn cần:

  • một bảng tương thích với arduino
  • một bộ điều hợp nối tiếp sang USB để giải mã khóa từ xa của bạn (chỉ cần sử dụng FT232RL)
  • PC đã cài đặt GNU / Linux và arduino IDE được định cấu hình đúng cách, tôi đang sử dụng arduino IDE 1.8.0
  • một điều khiển từ xa IR để kiểm tra thiết bị của bạn (ngay cả một điều khiển tồi tệ như những thứ được tìm thấy trong bộ khởi động arduino cũng sẽ hoạt động)
  • một vạn năng để gỡ lỗi bảng của bạn (Tôi hy vọng bạn sẽ không cần nó, chúc may mắn!)

Danh sách các vật liệu:

  • 1 attiny85
  • 2 điện trở 68R
  • 1 điện trở 1.5K
  • 1 điện trở 4,7K
  • 1 tinh thể 16Mhz
  • 1 tụ điện 22pF
  • 1 tụ điện 0,1uF
  • 1 tụ điện 10uF
  • 2 điốt zener 3.6V 0.5W
  • 1 đầu nối USB loại A nam
  • 1 chân dải với 6 chân để lập trình và gỡ lỗi bo mạch.
  • 1 cảm biến hồng ngoại TSOP31238
  • rất nhiều cà phê để giữ cho bạn tỉnh táo

Trước khi hàn bo mạch chính xác, bạn có thể muốn tạo một nguyên mẫu breadboard cho mục đích thử nghiệm, theo lược đồ được đính kèm với chỉ dẫn này là đủ để xây dựng nó.

Để kết nối attiny85 với PC, thiết kế cuối cùng sử dụng đầu nối USB loại A được hàn vào bo mạch, nhưng đối với nguyên mẫu, bạn sẽ cần tạo cáp USB để có thể kết nối với breadboard:

Hàn thành một đoạn nhỏ của 4 chân perfboard, sau đó cắt một cáp USB cũ và hàn các chân vào 4 trong số các dây bên trong cáp USB:

  • màu đỏ là VCC (5V)
  • màu đen là GND
  • màu trắng là D-
  • màu xanh lá cây là D +

Giữ mọi thứ lại với nhau bằng keo nóng.

Bây giờ chúng ta cần kết nối bộ lập trình ISP (Arduino), bộ chuyển đổi USB sang nối tiếp (FT232RL) và cảm biến hồng ngoại với attiny85.

Bạn có thể kết nối tất cả lại với nhau để có thể ghi các bộ nạp khởi động khác nhau, tải các bản phác thảo và kiểm tra cổng nối tiếp mà không cần thay dây, Để làm như vậy, hãy kết nối mọi thứ theo các hướng dẫn sau:

Lập trình viên ISP (Arduino): điều này cho phép chúng tôi ghi các bộ nạp khởi động và tải các bản phác thảo

  • attiny85 PB0 (pin5) đến pin11 (MOSI) trong arduino
  • attiny85 PB1 (pin6) đến pin12 (MISO) trong arduino
  • attiny85 PB2 (pin7) đến pin13 (SCK) trong arduino
  • attiny85 ĐẶT LẠI (pin1) với pullup (4,6k đến VCC) đến chân 10 trong arduino
  • attiny85 VCC đến 5V trong arduino
  • attiny85 GND sang GND trong arduino

USB sang bộ điều hợp nối tiếp (FT232RL): điều này cho phép chúng tôi kiểm tra cổng nối tiếp

  • attiny85 PB0 (pin5 RX) sang TX trong FT232RL
  • attiny85 PB2 (pin7 TX) sang RX trong FT232RL
  • attiny85 GND (pin4) sang GND trên FT232RL
  • vì attiny85 đã được cấp nguồn bởi arduino nên bạn không cần kết nối 5v trên FT232RL, nếu không hãy kết nối: attiny85 VCC (pin8) với 5V trên FT232RL

USB sang bộ điều hợp nối tiếp (FT232RL) chỉ để hiệu chuẩn đồng hồ (chỉ dành cho bộ nạp khởi động "ATtiny85 @ 8MHz (bộ dao động nội bộ; BOD bị vô hiệu hóa)")

  • PB4 (pin3 RX) sang TX trong FT232RL attiny85
  • PB3 (pin2 TX) sang RX trong FT232RL attiny85
  • GND (pin4) thành GND trên FT232RL
  • vì attiny85 đã được cấp nguồn bởi arduino nên bạn không cần kết nối 5v trên FT232RL, nếu không hãy kết nối: attiny85 VCC (pin8) với 5V trên FT232RL

Nếu bạn sử dụng tinh thể 16Mhz, hãy kết nối nó với các chân Attiny85 PB3 (pin2) và PB4 (pin3) và kết nối từng chân với GND thông qua một nắp 22pF mỗi chân.

Lọc Attiny85 VCC với tụ điện 0,1uF và 10uF kết nối chúng song song với GND

Kết nối chân đầu ra của cảm biến IR với attiny85 PB1 (pin6), bật nguồn.

Xây dựng và kết nối giao diện usb:

  • GND (dây đen): kết nối nó với GND chung (tất cả các cơ sở được kết nối với nhau)
  • D- (dây trắng) được kết nối với attiny85 PB0 (pin5) thông qua một điện trở 68R, kết nối nó cũng với đất thông qua một zener 3,6V 0,5W và kéo nó lên VCC bằng một điện trở 1,5K
  • D + (dây màu xanh lá cây) được kết nối với PB2 thông qua một điện trở 68R, kết nối nó với đất thông qua một zener 3,6V 0,5W
  • 5V, bạn có thể để nó không kết nối vì mọi thứ đều được cấp nguồn bởi Arduino ở giai đoạn này, nếu không hãy kết nối nó với attiny85 VCC

Các điốt zener được kết nối để các cực dương được gắn với GND và các cực âm được kết nối với các đường dữ liệu D + và D-.

Bước 3: Thiết kế cuối cùng

Thiết kế cuối cùng
Thiết kế cuối cùng
Thiết kế cuối cùng
Thiết kế cuối cùng
Thiết kế cuối cùng
Thiết kế cuối cùng

Đối với thiết kế cuối cùng, bạn có thể sử dụng tấm đục lỗ thông qua các thành phần lỗ hoặc khắc bo mạch của riêng bạn và sử dụng các thành phần smd. Để tìm hiểu cách khắc một bảng, chỉ cần google nó, có những hướng dẫn tuyệt vời trên mạng.

Tôi đã khắc bảng của riêng mình và tôi rất hài lòng với kết quả cuối cùng (bảng nhỏ, ổn định và chắc chắn). Vâng, tôi biết rằng vết cắt rất tệ, nhưng tôi không thể sử dụng bất kỳ dụng cụ điện nào vào đêm khuya và tôi chỉ cần cắt bảng bằng kéo cắt thiếc của tôi.

Nhân tiện, các dấu vết trên hình ảnh không phải là đồng trần, chúng đã được xử lý bằng một loại hóa chất khó chịu làm hơi đồng (nghi ngờ gây ung thư, vì vậy hãy sử dụng nó thật cẩn thận, quả cầu cao su và mặt nạ chống bụi):

Sử dụng các sơ đồ trên để thiết kế bố cục của bạn hoặc bạn chỉ có thể sử dụng dấu chân pcb của tôi để khắc bảng của bạn.

Bước 4: Xử lý phần mềm

Mạch trong dự án này rất dễ dàng, phần mềm thay vào đó đòi hỏi một nỗ lực lớn hơn.

Chúng tôi cần ít nhất 2 thư viện (thêm một thư viện nếu bạn không sử dụng pha lê) cộng với 2 bộ nạp khởi động để làm cho việc này hoạt động. Khi tôi bắt đầu dự án này, tôi đã thử nghiệm một số thư viện, đôi khi chúng không hoạt động và nhiều lần chúng không được định cấu hình để hoạt động với Attiny85 bên ngoài (tôi chưa biết điều đó). Sau đó, tôi đã tìm thấy vấn đề với các thư viện / bộ nạp khởi động ngắt chồng chéo. Cuối cùng, tôi đã phải đối mặt với rất nhiều lỗi khi kết nối mạch cuối cùng với PC của mình. Tuy nhiên, tôi không có hướng dẫn này, vì vậy tôi nghĩ bạn sẽ ổn thôi, chỉ cần làm theo các bước trong hướng dẫn này, nếu bạn làm điều đó mà không mắc lỗi, bạn sẽ ổn thôi:)

Bây giờ chúng ta cần cài đặt và cấu hình một vài thư viện:

  • v-usb cho thư viện arduino: thư viện này cho phép PC nhận dạng vi điều khiển dưới dạng Bàn phím HID USB và chúng tôi sẽ sử dụng nó để gửi các phím bấm đến PC. Thư viện này cần một số thay đổi để tương thích với attiny85
  • thư viện tinytuner chỉ khi bạn không sử dụng tinh thể 16Mhz. Sau đó, bạn sẽ cần hiệu chỉnh xung nhịp bên trong của bộ vi điều khiển. Thư viện này hoạt động hiệu quả.
  • Attiny-IR-thư viện để tương tác với cảm biến IR. Thư viện này hoạt động hiệu quả.

Chúng tôi cũng cần 2 bộ nạp khởi động:

  • Phiên bản phần mềm Dog, với giao diện nối tiếp có sẵn. Bộ nạp khởi động này cần một chỉnh sửa nhỏ để hoạt động với attiny85 vì nó sử dụng timer1 cho hàm millis () và sẽ không hoạt động với thư viện IR. Chúng ta cần thay đổi bộ định thời thành timer0.
  • Phiên bản Mellis, bộ nạp khởi động ổn định mà chúng ta sẽ sử dụng trong giai đoạn cuối. Điều này hoạt động ra khỏi hộp.

Bước 5: Cài đặt và cấu hình Thư viện V-usb

Tải xuống thư viện từ https://code.google.com/archive/p/vusb-for-arduin… Giải nén tệp và sao chép thư mục thư viện / UsbKeyboard vào thư mục thư viện sổ phác thảo của bạn.

Bây giờ bạn cần chỉnh sửa một vài tệp để tương thích với ATtiny85 (nó được cấu hình để hoạt động với arduino):

A) chỉnh sửa usbconfig.h:

trong thay đổi "Cấu hình phần cứng":

# xác định USB_CFG_IOPORTNAME Dto ## xác định USB_CFG_IOPORTNAME B

# xác định USB_CFG_DMINUS_BIT 4để # xác định USB_CFG_DMINUS_BIT 0

trong thay đổi "Cấu hình phần cứng tùy chọn":

# xác định USB_CFG_PULLUP_IOPORTNAME D đến ## xác định USB_CFG_PULLUP_IOPORTNAME B

Để tạo thông số kỹ thuật đầy đủ "HID tương thích với khởi động" (nếu không sẽ không có khóa đa phương tiện nào hoạt động), hãy thay đổi cả:

# xác định USB_CFG_INTERFACE_SUBCLASS 0 // Khởi động # định nghĩa USB_CFG_INTERFACE_SUBCLASS 0x01 // Khởi động

#define USB_CFG_INTERFACE_PROTOCOL 0 // Bàn phím # định nghĩa USB_CFG_INTERFACE_PROTOCOL 0x01 // Bàn phím

Theo tùy chọn, bạn cũng có thể thay đổi nhà sản xuất và tên thiết bị trong các định nghĩa sau:

#define USB_CFG_VENDOR_NAME

#define USB_CFG_DEVICE_NAME

B) chỉnh sửa UsbKeyboard.h:

thay đổi:

PORTD = 0; // VIỆC CẦN LÀM: Chỉ dành cho chân USB? DDRD | = ~ USBMASK;

đến

PORTB = 0; // VIỆC CẦN LÀM: Chỉ dành cho chân USB? DDRB | = ~ USBMASK;

Để cho phép mã khóa hơn 101 cũng thay đổi:

0x25, 0x65, // LOGICAL_MAXIMUM (101) thành: 0x25, 0xE7, // LOGICAL_MAXIMUM (231)

0x29, 0x65, // USAGE_MAXIMUM (Ứng dụng bàn phím) thành: 0x29, 0xE7, // USAGE_MAXIMUM (Ứng dụng bàn phím)

Bạn cũng có thể cần chỉnh sửa 3 tệp sau:

usbdrv.husbdrv.cUsbKeyboard.h

và mỗi khi bạn thấy PROGMEM hãy thêm "const" trước tên loại biến (ví dụ: PROGMEN char usbHidReportDescriptor [35] ==> PROGMEM const char usbHidReportDescriptor [35])

Nếu điều này không rõ ràng, hãy truy cập

Bạn có thể tránh tất cả những thay đổi này nếu bạn chỉ cần tải xuống thư viện đính kèm (tôi đã tự thực hiện tất cả những thay đổi này) và chỉ cần giải nén nó trong thư mục thư viện sổ phác thảo của bạn:

UsbKeyboard được cấu hình cho attiny85

Chỉnh sửa: gần đây tôi đã phát hiện ra rằng Alejandro Leiva (https://github.com/gloob) đã được chăm sóc cho thư viện này và dường như cũng hoạt động tốt. Bạn cũng có thể thử phiên bản của anh ấy với những thay đổi cần thiết mà tôi đã thực hiện để làm cho nó hoạt động với attiny, vì vậy nếu bạn muốn kiểm tra điều này, chỉ cần giải nén nó trong thư mục thư viện sổ phác thảo của bạn.

UsbKeyboard được định cấu hình cho attiny85 (phiên bản Alejandro Leiva)

Bước 6: Cài đặt các Thư viện Attiny-IR và Tinytuner

A) Thư viện Attiny-IR:

tải xuống từ https://drive.google.com/open?id=0B_w9z88wnDtFNHlq… sau đó giải nén vào thư mục thư viện sổ phác thảo của bạn.

B) Thư viện Tinytuner:

Điều này chỉ cần thiết nếu bạn không sử dụng pha lê 16Mhz, nhưng hãy tin tôi, mặc dù nó hoạt động cũng không có pha lê, nhưng nó ổn định hơn nhiều với nó và chúng có giá vài xu, vì vậy hãy giữ nó đơn giản, sử dụng pha lê và bỏ qua thư viện này.

Bạn chưa thuyết phục? được, tải xuống thư viện từhttps://storage.googleapis.com/google-code-archive… sau đó giải nén nó vào thư mục thư viện sổ phác thảo của bạn.

Chúng tôi đã hoàn thành với các thư viện, bây giờ chúng tôi chuyển sang cài đặt bộ nạp khởi động.

Bước 7: Cài đặt và cấu hình Bootloaders

Theo kinh nghiệm của tôi, chúng tôi sẽ cài đặt hai bộ nạp khởi động, một là Mellis ổn định hơn và chúng tôi sẽ sử dụng nó trong bản phác thảo cuối cùng. Cái còn lại được phát triển bởi Rowdy Dog Software là một lõi tuyệt vời, rất nhỏ và có sẵn giao diện nối tiếp tích hợp, nhưng điều khiển từ xa của tôi bị hỏng sau một thời gian sử dụng nó, vì vậy chúng tôi sẽ sử dụng bộ nạp khởi động này chỉ để hiệu chỉnh đồng hồ bên trong attiny85 và để giải mã điều khiển từ xa của chúng tôi nút.

Tôi biết rằng có các thư viện có sẵn để cung cấp các khả năng nối tiếp của attiny85, nhưng sau đó bạn sẽ cần phải tinh chỉnh các thư viện sử dụng đối tượng nối tiếp… Tôi thích thủ tục này hơn.

Hãy bắt đầu với cài đặt:

A) Bộ nạp khởi động Mellis:

chỉ cần mở tùy chọn Arduino IDE và thêm vào URL trình quản lý bảng bổ sung:

raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json

Sau đó, mở trình quản lý bo mạch Arduino IDE và tìm kiếm attiny, cài đặt các bo mạch từ Mellis. Bây giờ bạn sẽ thấy ID Arduino là các bo mạch ATtiny25 / 45/85 và ATtiny24 / 44/84.

B) Bộ nạp khởi động nhỏ của Phần mềm Rowdy Dog:

tải xuống bộ nạp khởi động từ

Giải nén tệp và sao chép thư mục nhỏ bên trong sổ phác thảo / phần cứng của bạn (tạo thư mục này nếu nó chưa tồn tại). sau đó di chuyển đến thư mục sketchbook / hardware / tiny / avr / và:

1) sao chép tệp Prospective Boards.txt vào tệpboards.txt

2) chỉnh sửa tệp platform.txt và thực hiện một số thay đổi:

Bỏ ghi chú biến compiler.path và để nó trỏ đến thư mục phần cứng / công cụ / avr / bin / bên trong thư mục cài đặt arduino của bạn:

compiler.path = {PATH_TO_YOUR_ARDUINO_FOLDER} / hardware / tools / avr / bin /

change alsocompiler. S.flags = -c -g -assembler-with-cpptocompiler. S.flags = -c -g -x assembly-with-cpp

Sau đó, thay đổi các biến sau đây để đảm bảo mọi thứ đều ở đúng vị trí của nó (các tệp đó phải tồn tại, nếu không, hãy trỏ các biến đến đúng đường dẫn):

tools.avrdude.cmd.path = {runtime.ide.path} / hardware / tools / avr / bin / avrdude

tools.avrdude.config.path = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

tools.avrdude.cmd.path.linux = {runtime.ide.path} / hardware / tools / avr / bin / avrdude

tools.avrdude.config.path.linux = {runtime.ide.path} /hardware/tools/avr/etc/avrdude.conf

3) chỉnh sửa các lõi tệp / tiny / core_build_options.h và thay đổi:

# xác định TIMER_TO_USE_FOR_MILLIS 1 để # xác định TIMER_TO_USE_FOR_MILLIS 0

Điều này rất quan trọng, nếu không bộ thu IR sẽ xuất ra các số không cho mọi nút. Câu lệnh này cấu hình timer0 cho hàm millis () để timer1 có sẵn cho thư viện IR. Bản phác thảo cuối cùng sẽ vô hiệu hóa timer0, vì vậy bạn sẽ không có sẵn các hàm millis () và delay (). Thay vào đó, bạn có thể có sẵn hàm delayMicroseconds ().

Bộ nạp khởi động này là tối thiểu, nhưng đã bao gồm hỗ trợ đối tượng Serial:

Attiny85 PB2 (pin7) là TX và PB0 (pin5) là RX

Bạn có thể cấu hình với bộ lập trình ISP (arduino) và bộ điều hợp nối tiếp sang USB được kết nối cùng một lúc, do đó bạn không cần phải thay dây quá thường xuyên:

Bây giờ chúng tôi đã cài đặt cả thư viện và bộ nạp khởi động và cấu hình đúng cách, công việc khó nhất đã hoàn thành và chúng tôi có thể bắt đầu kiểm tra mọi thứ.

Bước 8: Ghi Bootloaders và tải lên bản phác thảo

Tôi thực sự khuyên bạn nên kích hoạt đầu ra dài dòng theo tùy chọn Arduino IDE để bạn có thể tìm ra bất kỳ vấn đề cuối cùng nào.

Để ghi bộ nạp khởi động vào Attiny85, bạn cần tải ví dụ ISP lên Arduino và sau đó chọn lập trình viên Arduino làm ISP.

Bây giờ đặt một tụ điện 10uF giữa chân đặt lại và chân nối đất trên arduino (nó không cần thiết cho quá trình ghi đĩa, nhưng nó là để tải các bản phác thảo lên attiny85).

Bây giờ arduino đã sẵn sàng để ghi bộ nạp khởi động và tải các bản phác thảo. Bạn chỉ cần chọn đúng bảng tương thích với trang phục của bạn và ghi nó.

Để tải bản phác thảo vào Attiny85, hãy tải bản phác thảo đó vào arduino IDE và nhấp vào "Tải lên bằng lập trình viên".

QUAN TRỌNG: khi tải lên bản phác thảo có 3 bước, biên dịch, viết và xác minh. Nếu quá trình biên dịch và viết thành công, nhưng quá trình xác minh không thành công, có thể là bản phác thảo vẫn hoạt động.

Bước 9: Hiệu chỉnh Đồng hồ bên trong Attiny85 (bỏ qua bước này nếu bạn sử dụng pha lê)

Trong trường hợp bạn quyết định không sử dụng tinh thể 16Mhz, bạn cần hiệu chỉnh đồng hồ attiny85 của mình, vì vậy chúng tôi sẽ cần một bộ nạp khởi động có giao diện nối tiếp có sẵn và chúng tôi sẽ sử dụng thư viện tinytuner để hiệu chỉnh chính xác.

Làm theo các bước tiếp theo

  • chọn bên dưới các công cụ Arduino làm lập trình viên ISP
  • chọn bảng "ATtiny85 @ 8MHz (bộ dao động nội bộ; BOD bị vô hiệu hóa)"
  • Tôi giả sử rằng bạn đã sẵn sàng kết nối ISP như được mô tả trước khi kết nối, nếu không, hãy thực hiện các kết nối
  • ghi bộ nạp khởi động
  • bộ nạp khởi động này đã định cấu hình các chân khác nhau cho giao diện nối tiếp, chỉ sử dụng cấu hình này cho bộ nạp khởi động hiện tại

- PB4 (pin3 RX) đến TX trong FT232RL attiny85 - PB3 (pin2 TX) đến RX trong FT232RL attiny85 - GND (pin4) đến GND trên FT232RL vì attiny85 đã được cấp nguồn bởi arduino mà bạn không cần kết nối 5v trên FT232RL, nếu không kết nối: attiny85 VCC (pin8) với 5V trên FT232RL

  • tải ví dụ tinytuner lên attiny85
  • mở chương trình màn hình để theo dõi giao tiếp nối tiếp: screen / dev / ttyUSB0 9600
  • đặt lại attiny85 kết nối chân ĐẶT LẠI (pin1) với GND (chỉ trong giây lát), Một thông báo chào mừng sẽ hiển thị trên cửa sổ màn hình
  • Tiếp tục gửi các ký tự 'x' đơn lẻ (không có dấu xuống dòng; không có nguồn cấp dòng) cho đến khi quá trình hiệu chuẩn kết thúc
  • chú thích ở đâu đó giá trị của hiệu chuẩn (OSCCAL = 0x). Đây là giá trị mà bạn sẽ cần khai báo trên các bản phác thảo cuối cùng

Bước 10: Giải mã các nút từ xa của bạn

Bây giờ đã đến lúc giải mã các nút từ xa của chúng tôi và gán chúng cho các phím bấm cụ thể trong PC, hãy làm theo các bước tiếp theo:

  • chọn bảng "ATtiny85 @ 16MHz (Internal PLL; 4.3V BOD)" nếu bạn không sử dụng tinh thể, "ATtiny85 @ 16 MHz (tinh thể bên ngoài; 4.3 V BOD", nếu không, sau đó đốt nó
  • tải bản phác thảo:
  • Nếu bạn không sử dụng tinh thể, hãy bỏ ghi chú hàng có chứa biến OSCCAL và gán nó cho giá trị mà bạn đã tìm thấy khi hiệu chỉnh đồng hồ
  • Tôi giả định rằng cảm biến được kết nối như mô tả trước đó, nếu không hãy kết nối nó
  • Tôi cũng giả định rằng bộ điều hợp FT232RL nối tiếp với USB đã được kết nối, nếu không hãy kết nối nó
  • đặt lại attiny85 kết nối chân ĐẶT LẠI (pin1) với GND (chỉ trong giây lát)
  • nhấn nhiều lần vào các nút của điều khiển từ xa và kiểm tra cửa sổ màn hình, bạn cần chú thích số cuối cùng cho mỗi bản ghi, mỗi nút có thể tạo ra 2 số khác nhau

Thí dụ:

ĐÃ NHẬN D44 3396 ĐÃ NHẬN 544 1348

Chú thích 3396 và 1348 liên quan đến nút bạn vừa nhấn, sau đó bạn phải quyết định bạn muốn làm gì với nút đó. Ví dụ: tôi có thể muốn nút đó gửi mã khóa đa phương tiện "Tăng âm lượng", sau đó tôi cần tìm ID cho mã khóa đó. Để làm điều đó, hãy tải xuống PDF:

Hãy tìm phần "Trang Bàn phím / Bàn phím" trang 53 và sử dụng các số trong cột ID Sử dụng (Tháng 12) để liên kết các nút từ xa của bạn với mã bàn phím. Trong ví dụ của chúng tôi, chúng ta có thể thấy rằng mã khóa cho "Tăng âm lượng" là: 128.

Chỉnh sửa tệp cho tệp UsbKeyboard.h bên trong thư viện UsbKeyboard từ gói v-usb mà chúng tôi đã cài đặt trước đó và thêm vào các định nghĩa hiện có nếu nó chưa có ở đó:

#define KEY_VOL_UP 128

Khi chúng ta hoàn thành tất cả các nút điều khiển từ xa và tất cả các định nghĩa trong tệp UsbKeyboard.h đã sẵn sàng, chúng ta có thể chuyển sang bước cuối cùng.

Bước 11: Tải bản phác thảo cuối cùng và hy vọng điều tốt nhất

Đang tải bản phác thảo cuối cùng và hy vọng điều tốt nhất!
Đang tải bản phác thảo cuối cùng và hy vọng điều tốt nhất!
Đang tải bản phác thảo cuối cùng và hy vọng điều tốt nhất!
Đang tải bản phác thảo cuối cùng và hy vọng điều tốt nhất!

Bây giờ chúng tôi đã giải mã tất cả các nút từ xa, tệp UsbKeyboard.h chứa đầy các mã khóa của chúng tôi, vì vậy bây giờ chúng tôi có thể tải vào arduino IDE bản phác thảo cuối cùng từ:

github.com/venumz/ATtiny85-USB-IR-receiver…

Tệp này là tệp chính xác mà tôi đang sử dụng cho bộ thu của mình và nó đang hoạt động cho 2 điều khiển từ xa khác nhau, vì vậy rõ ràng bạn cần cập nhật tệp để hoạt động với / s điều khiển từ xa của mình.

Nếu bạn không sử dụng tinh thể, hãy bỏ ghi chú hàng có chứa biến OSCCAL và gán nó cho giá trị mà bạn đã tìm thấy khi hiệu chỉnh đồng hồ

Lưu ý rằng trong hàm vòng lặp có rất nhiều câu lệnh như sau:

if (results.value == 3405 || results.value == 1357) {// mũi tên lên

if (lastStroke! = results.value) UsbKeyboard.sendKeyStroke (KEY_ARROW_UP);

}

Bạn phải tạo câu lệnh của riêng mình, một câu lệnh cho mỗi nút trong điều khiển từ xa của bạn. Trong điều kiện "nếu", bạn phải nhập vào results.value các giá trị mà bạn đã tìm thấy khi giải mã điều khiển từ xa của mình và là đối số của phương thức UsbKeyboard.sendKeyStroke, bạn phải đặt một trong các mã khóa đã được xác định trong tệp UsbKeyboard.h.

Điều kiện "if (lastStroke! = Results.value)" là cần thiết vì một số điều kiện từ xa gửi cùng một mã hai lần cho mỗi lần truy cập và điều này ngăn chặn lần truy cập thứ hai. Tôi không hoàn toàn chắc chắn và nó có thể phụ thuộc vào giao thức IR đã được lập trình vào điều khiển từ xa của bạn (tôi thực sự không phải là chuyên gia về giao thức IR) nhưng theo kinh nghiệm của tôi với điều khiển từ xa của mình, mỗi nút có thể tạo ra 2 mã khác nhau và trong khi bạn nhấn và giữ nút, nó sẽ gửi cùng một mã, nhưng nếu bạn nhấn lại vào nút, nó sẽ gửi mã khác. Vì vậy, có vẻ như các mã được gửi theo cách thay thế, tôi đoán đó là một chế độ tiêu chuẩn để biết bạn thực sự nhấn nút bao nhiêu lần.

Ok, chúng ta đã gần hoàn tất, chỉ cần tải lên bản phác thảo cuối cùng, kết nối nó với PC và xem nó diễn ra như thế nào.

Đối với bước này, sẽ tốt hơn nếu bạn rút cả arduino và usb sang bộ điều hợp nối tiếp và chỉ sau đó, cắm USB vào cổng PC của bạn (trong trường hợp xảy ra sự cố, mạch của bạn sẽ gỡ lỗi đơn giản hơn).

Nếu mọi thứ hoạt động tốt, khi bạn mở một thiết bị đầu cuối và gửi lệnh dmesg, bạn sẽ thấy một cái gì đó tương tự như hình ảnh đầu tiên ở bước này. Nếu có vấn đề, bạn sẽ gặp phải các lỗi như được tìm thấy trong hình ảnh thứ hai và bạn phải bắt đầu gỡ lỗi mạch và / hoặc phần mềm của mình. Một trong những nguyên nhân gây ra lỗi ban đầu mà tôi gặp phải là bộ chia USB không hoạt động với bộ thu IR của tôi (các bộ thu khác hoạt động được)… vì vậy, tốt hơn hết ở bước cuối cùng này là cắm bộ thu IR trực tiếp vào cổng PC của bạn. Sai sót cuối cùng có thể khó tìm ra, nhưng cuối cùng, giống như tôi, bạn sẽ học được rất nhiều điều và cái giá phải trả là xứng đáng, tôi đảm bảo với bạn.

Đó là tất cả mọi người, hãy cho tôi biết nếu bạn nhận thấy bất kỳ lỗi nào trong tài liệu hướng dẫn này và tận hưởng bộ thu USB IR hoàn toàn mới của bạn!

Đề xuất: