Mục lục:

UChip - Serial Over IR !: 4 bước
UChip - Serial Over IR !: 4 bước

Video: UChip - Serial Over IR !: 4 bước

Video: UChip - Serial Over IR !: 4 bước
Video: SKR 1.3 - TMC2208 UART v3.0 2024, Tháng bảy
Anonim
UChip - Nối tiếp qua IR!
UChip - Nối tiếp qua IR!
UChip - Nối tiếp qua IR!
UChip - Nối tiếp qua IR!

Giao tiếp không dây đã trở thành một tính năng chính trong các dự án của chúng tôi ngày nay và nói về không dây, điều đầu tiên tôi nghĩ đến là Wi-Fi hoặc BT, nhưng xử lý các giao thức truyền thông Wi-Fi hoặc BT không phải là một nhiệm vụ dễ dàng và tiêu tốn rất nhiều tài nguyên MCU, để lại không gian nhỏ cho việc viết mã ứng dụng của tôi. Do đó, tôi thường chọn mô-đun Wi-Fi / BT bên ngoài được kết nối nối tiếp với bộ vi điều khiển để phân chia các vai trò và có được sự tự do cao hơn.

Tuy nhiên, đôi khi Wi-Fi và BT là "quá mức cần thiết" đối với một số ứng dụng yêu cầu tốc độ bit thấp và khoảng cách giao tiếp ngắn. Hơn nữa, việc sử dụng Wi-Fi hoặc BT ngụ ý sự cần thiết của việc kết nối Điện thoại thông minh hoặc thiết bị của bạn với xác thực thích hợp.

Hãy tưởng tượng rằng bạn chỉ cần bật / tắt đèn bên ngoài, hoặc thay đổi cường độ đèn, hoặc mở cổng điện. Nó có đáng để sử dụng Wi-Fi hoặc BT không?

Tùy thuộc vào môi trường và ứng dụng, giao tiếp không dây qua bước sóng IR (Hồng ngoại) có thể hữu ích. Một nối tiếp qua IR, được triển khai với ít thành phần bên ngoài (3 thành phần rời rạc!) Và uChip (một bo mạch tương thích Arduino rất nhỏ) có thể là giải pháp bạn đang tìm kiếm!

Hóa đơn vật liệu (cho một thiết bị Tx-Rx):

1 x uChip

1 x IR LED: có đỉnh phát xạ ở 950nm

1 x TSOP-38238 (tương đương)

Điện trở 1 x 1KOhm

Phần cứng

1 x breadboard / proto board

1 x Ống nhựa màu đen: có đường kính trong cùng kích thước với đèn LED hồng ngoại, ống cần thiết để ngăn chặn đàm thoại chéo với bộ thu TSOP.

1 x Lá nhôm (3 cm x 3 cm)

1 x băng

MẸO: Bạn có thể tạo thiết bị only-TX hoặc only-RX trong trường hợp bạn cần giao tiếp một chiều bằng cách tháo phần cứng RX / TX không cần thiết khỏi mạch hoặc bật / tắt mã liên quan trong bản phác thảo.

Bước 1: Đấu dây

Đấu dây
Đấu dây
Đấu dây
Đấu dây
Đấu dây
Đấu dây

Nối các thành phần lại với nhau cho phù hợp với sơ đồ.

Một vài lưu ý về giản đồ đơn giản. Vì TSOP-38238 cho phép cấp nguồn từ 2,5V đến 5V và hấp thụ tối đa 0,45mA (bạn tìm thấy biểu dữ liệu TẠI ĐÂY), tôi sẽ cấp nguồn cho bộ thu bằng hai chân, sẽ cung cấp nguồn điện mặt đất và nguồn điện tương ứng. Điều này cho phép bật / tắt bộ thu theo yêu cầu và thiết lập hệ thống dây phần cứng rất đơn giản. Hơn nữa, trong trường hợp bạn cần giao tiếp một chiều, bạn có thể chọn tạo một thiết bị (Tx / Rx) -chỉ bằng cách tắt / bật TSOP-38238.

Mạch hoạt động như thế nào?

Nó khá đơn giản. Chân đầu ra TSOP được kéo xuống thấp khi cảm biến phát hiện một đoàn tàu từ 6 xung trở lên ở 38KHz, mặt khác nó được kéo lên cao khi không có tín hiệu như vậy. Do đó, để truyền dữ liệu nối tiếp qua IR, những gì mạch làm là cấp nguồn cho cực dương LED với công suất 38KHz PWM được điều chế với tín hiệu nối tiếp TX để kéo cực âm LED xuống thấp.

Do đó, ở mức cao của TX0 nối tiếp, đèn LED không được phân cực hoặc phân cực ngược (không có xung) và chân đầu ra TSOP được kéo lên cao. Truyền mức thấp trên nối tiếp, đèn LED được cấp nguồn và tạo ra các xung IR tương ứng với tín hiệu PWM được áp dụng; do đó, sản lượng TSOP bị kéo xuống thấp.

Vì quá trình truyền là trực tiếp (0-> 0 và 1-> 1) nên không cần bộ nghịch lưu hoặc logic khác ở phía thu.

Tôi điều chỉnh công suất đầu ra quang học của đèn LED bằng cách chọn chu kỳ nhiệm vụ PWM phù hợp với ứng dụng. Chu kỳ nhiệm vụ càng cao, công suất đầu ra quang càng cao và do đó, bạn sẽ truyền tải thông điệp của mình càng xa.

Hãy nhớ rằng chúng ta vẫn cần tạo xung! Do đó, bạn không nên vượt quá 90% chu kỳ nhiệm vụ, nếu không TSOP sẽ không phát hiện ra tín hiệu dưới dạng xung.

Bạn có cần thêm sức mạnh?

Để tăng cường độ dòng điện ta có thể giảm giá trị của biến trở 1kOhm một cách đơn giản?

Có thể, đừng quá đòi hỏi! Dòng điện tối đa bạn nhận được từ chân của MCU được giới hạn ở 7mA khi điều khiển chân cổng mạnh hơn bình thường (PINCFG. DRVSTR = 1 và VDD> 3V) như đã nêu trong biểu dữ liệu SAMD21.

Tuy nhiên, cấu hình tiêu chuẩn (là cấu hình được sử dụng bởi các thư viện Arduino IDE làm mặc định) giới hạn dòng điện ở mức 2mA. Do đó, việc sử dụng 1kOhm đã đưa ra giới hạn hiện tại với cài đặt mặc định!

Tăng dòng điện không chỉ là vấn đề của các thành phần điện. Tóm tắt:

  • Thay đổi điện trở (có giá trị nhỏ nhất được giới hạn ở khoảng 470Ohm -> VDD / 470 ~ 7mA);
  • Đặt PORT-> PINCFG-> DRVSTR tương ứng thành 1;

Tôi sẽ cung cấp mã bao gồm tính năng này trong một bản cập nhật trong tương lai.

Nhưng hãy nhớ rằng, chìm và thoát dòng điện từ các chân MCU gần với giới hạn của nó không phải là một cách tiếp cận tốt. Thật vậy, nó làm giảm tuổi thọ và độ tin cậy của MCU. Do đó, tôi khuyên bạn nên giữ sức mạnh ổ đĩa bình thường để sử dụng lâu dài.

Bước 2: Lập trình

Tải bản phác thảo “IRSerial.ino” vào uChip (hoặc bo mạch tương thích Arduino bạn đang sử dụng).

Trong trường hợp bạn cần thay đổi chân tạo PWM, hãy đảm bảo rằng bạn đang sử dụng chân cắm được kết nối với bộ hẹn giờ TCC, vì phiên bản mã này chỉ hoạt động với bộ định thời TCC (kiểm tra “biến thể.c” trên bảng của bạn để biết thông tin này). Tôi sẽ thêm mã để sử dụng đồng thời bộ tính giờ TC trong các bản cập nhật trong tương lai.

Mã này khá đơn giản. Sau khi đặt PIN_5 ở mức thấp (cung cấp TSOP GND) và PIN_6 ở mức cao (cấp nguồn cho TSOP), MCU bắt đầu PWM trên PIN_1, đặt khoảng thời gian hẹn giờ và so sánh tương ứng với điều chế tần số cần thiết (trong trường hợp của tôi là 38KHz) và nhiệm vụ chu kỳ (12,5% theo mặc định). Điều này được thực hiện khi khai thác hàm analogWrite () tiêu chuẩn trên các chân PWM và chỉ thay đổi thanh ghi PER_REG (thanh ghi chu kỳ) và thanh ghi CC (so sánh chụp) (mã được viết chỉ đơn giản là cắt và dán từ thư viện wiring_analog). Bạn có thể đặt tần số cần thiết tương ứng để cảm biến TSOP thay đổi PER_REG (là giới hạn trên khi đặt lại bộ đếm hẹn giờ), trong khi đặt CC tương ứng với giá trị chu kỳ đến phần trăm chu kỳ nhiệm vụ mong muốn.

Tiếp theo, mã đặt cổng Nối tiếp sử dụng tốc độ truyền chính xác là 2400bps. Tại sao tốc độ truyền thấp như vậy ?! Câu trả lời nằm trong biểu dữ liệu TSOP mà bạn có thể tìm thấy TẠI ĐÂY. Vì TSOP có bộ lọc loại bỏ tiếng ồn cao để ngăn chặn chuyển đổi không mong muốn, nên cần phải gửi một nhóm nhiều xung để kéo chân đầu ra TSOP xuống (số lượng xung phụ thuộc vào phiên bản TSOP, 6 là giá trị điển hình). Tương tự, đầu ra TSOP được kéo lên cao sau một khoảng thời gian tối thiểu tương đương với 10 xung hoặc hơn. Do đó, để đặt đầu ra TSOP làm tín hiệu điều chế TX0, cần phải đặt tốc độ truyền theo phương trình sau:

Serial Baud <PWM_frequency / 10

Sử dụng 38KHz, điều này dẫn đến tốc độ truyền thấp hơn 3800bps, có nghĩa là tốc độ truyền cho phép “tiêu chuẩn” cao hơn là 2400pbs, như đã dự đoán trước đó.

Bạn có muốn tăng tốc độ truyền không? Có hai lựa chọn.

Tùy chọn dễ nhất là thay đổi TSOP thành phiên bản tần số cao hơn (như TSOP38256), điều này sẽ cho phép bạn tăng gấp đôi tốc độ truyền (4800bps)

Không đủ?! Sau đó, bạn cần tạo liên kết quang học của riêng mình bằng cách sử dụng đèn LED hồng ngoại + điốt quang đơn giản và mạch khuếch đại. Tuy nhiên, giải pháp này đòi hỏi rất nhiều chuyên môn về mã hóa và điện tử để ngăn chặn nhiễu ảnh hưởng đến dữ liệu được truyền và do đó việc thực hiện nó không hề dễ dàng chút nào! Tuy nhiên, nếu bạn cảm thấy đủ tự tin, bạn có thể thử tạo hệ thống TSOP của riêng mình!:)

Cuối cùng, tôi đặt cổng SerialUSB (2400bps) mà tôi sử dụng để gửi và nhận dữ liệu trên màn hình nối tiếp.

Hàm loop () bao gồm mã cần thiết để truyền dữ liệu qua hai phần nối tiếp và được sao chép trực tiếp từ bản phác thảo ví dụ SerialPassthrough chỉ thay đổi tên các phần nối tiếp.

Bước 3: Che chắn đèn LED hồng ngoại

Che chắn đèn LED hồng ngoại
Che chắn đèn LED hồng ngoại
Che chắn đèn LED hồng ngoại
Che chắn đèn LED hồng ngoại

Nếu bạn cấp nguồn cho mạch trên sau khi tải mã “IRSerial.ino”, hãy kiểm tra Serial Monitor trên Arduino IDE và thử gửi một chuỗi. Bạn có thể sẽ thấy rằng uChip đang nhận chính xác những gì nó đang truyền! Có một cuộc nói chuyện chéo trong mạch do giao tiếp quang học giữa đèn LED hồng ngoại và TSOP của cùng một thiết bị!

Đây là phần khó của dự án này, ngăn chặn việc nói chuyện chéo! Vòng lặp phải được phá vỡ để thực hiện giao tiếp nối tiếp hai chiều qua IR.

Làm thế nào để chúng tôi phá vỡ vòng lặp?

Tùy chọn đầu tiên, bạn giảm chu kỳ nhiệm vụ PWM, do đó giảm công suất quang của đèn LED. Tuy nhiên, cách tiếp cận này cũng làm giảm khoảng cách mà bạn có được một kênh IR nối tiếp đáng tin cậy. Tùy chọn thứ hai là che chắn đèn LED hồng ngoại, do đó tạo ra "chùm tia" hồng ngoại định hướng. Đó là một vấn đề của thử và sai; cuối cùng, bằng cách sử dụng một đoạn ống dẫn khí nén màu đen quấn vào lá nhôm và băng (cung cấp cách điện), tôi đã phá vỡ cuộc nói chuyện chéo. Đặt đèn LED hồng ngoại truyền bên trong ống ngăn cản giao tiếp giữa TX và RX của cùng một thiết bị.

Nhìn vào hình ảnh để xem giải pháp của tôi, nhưng hãy thử các phương pháp khác và / hoặc đề xuất của bạn! Không có giải pháp tuyệt đối nào cho vấn đề này (trừ khi bạn cần một kênh một hướng đơn giản) và bạn có thể cần điều chỉnh bố cục mạch, chu kỳ nhiệm vụ PWM và lá chắn IR cho phù hợp với nhu cầu của mình.

Khi bạn phá vỡ cuộc nói chuyện chéo, bạn có thể xác minh rằng thiết bị của mình vẫn hoạt động bằng cách tạo một vòng lặp trên thiết bị Tx-Rx khai thác sự phản xạ của bước sóng IR trên các bề mặt phản xạ IR.

Bước 4: Giao tiếp

Giao tiếp!
Giao tiếp!
Giao tiếp!
Giao tiếp!

Đó là tất cả

Thiết bị nối tiếp qua IR của bạn đã sẵn sàng giao tiếp, sử dụng chúng để gửi dữ liệu qua IR, bật / tắt bất kỳ thứ gì bạn thích hoặc kiểm tra trạng thái của cảm biến mà bạn đang bí mật giấu!

Khoảng cách mà thông tin liên lạc đáng tin cậy không nhiều như đối với thiết bị WiFi hoặc BT. Tuy nhiên, nó có tính định hướng (tùy thuộc vào khẩu độ đèn LED và hệ thống che chắn hồng ngoại được thực hiện), có thể rất hữu ích trong một số ứng dụng!

Tôi sẽ sớm tải lên một video nơi bạn có thể xem một vài ví dụ về các ứng dụng tôi đã thực hiện. Thưởng thức!

Đề xuất: