Daftar Isi:

UChip - Serial Over IR!: 4 Langkah
UChip - Serial Over IR!: 4 Langkah

Video: UChip - Serial Over IR!: 4 Langkah

Video: UChip - Serial Over IR!: 4 Langkah
Video: don't move!!!!!! #squidgame 2024, November
Anonim
UChip - Serial Over IR!
UChip - Serial Over IR!
UChip - Serial Over IR!
UChip - Serial Over IR!

Komunikasi nirkabel telah menjadi fitur utama dalam proyek kami saat ini dan berbicara tentang nirkabel, hal pertama yang terlintas dalam pikiran saya adalah Wi-Fi atau BT, tetapi menangani protokol komunikasi Wi-Fi atau BT bukanlah tugas yang mudah dan menghabiskan banyak waktu. sumber daya MCU, menyisakan ruang kecil untuk mengkodekan aplikasi saya. Oleh karena itu, saya biasanya memilih modul Wi-Fi/BT eksternal yang terhubung secara serial ke mikrokontroler untuk membagi peran dan mendapatkan kebebasan yang lebih tinggi.

Namun, terkadang Wi-Fi dan BT "berlebihan" untuk beberapa aplikasi yang membutuhkan bitrate rendah dan jarak komunikasi pendek. Selanjutnya, menggunakan Wi-Fi atau BT menyiratkan perlunya menghubungkan Smartphone atau perangkat Anda dengan otentikasi yang tepat.

Bayangkan Anda hanya perlu menyalakan/mematikan lampu eksternal, atau mengubah intensitas lampu, atau membuka gerbang listrik. Apakah layak menggunakan Wi-Fi atau BT?

Tergantung pada lingkungan dan aplikasinya, komunikasi nirkabel melalui panjang gelombang IR (Inframerah) mungkin berguna. Serial over IR, diimplementasikan dengan beberapa komponen eksternal (3 komponen terpisah!), dan uChip (papan kompatibel Arduino yang sangat kecil) dapat menjadi solusi yang Anda cari!

Bill of Material (untuk satu perangkat Tx-Rx):

1 x uChip

1 x IR LED: memiliki puncak emisi pada 950nm

1 x TSOP-38238 (setara)

1x1KOhm Resistor

Perangkat keras

1 x papan tempat memotong roti/papan proto

1 x Tabung Plastik Hitam: diameter dalam dengan ukuran yang sama dengan LED IR, tabung diperlukan untuk mencegah pembicaraan silang dengan penerima TSOP.

1 x Aluminium Foil (3 cm x 3 cm)

1 x Pita

TIPS: Anda dapat membuat perangkat only-TX atau only-RX jika Anda memerlukan komunikasi satu arah dengan menghapus perangkat keras RX/TX yang tidak perlu dari sirkuit atau mengaktifkan/menonaktifkan kode terkait dalam sketsa.

Langkah 1: Pengkabelan

Pengkabelan
Pengkabelan
Pengkabelan
Pengkabelan
Pengkabelan
Pengkabelan

Hubungkan komponen bersama-sama sesuai dengan skema.

Beberapa catatan tentang skema sederhana. Karena TSOP-38238 memungkinkan catu daya dari 2.5V ke 5V dan menyerap paling banyak 0,45mA (Anda dapat menemukan lembar data DI SINI), saya akan memberi daya pada receiver menggunakan dua pin, yang masing-masing akan menyediakan ground dan catu daya. Hal ini memungkinkan menghidupkan/mematikan receiver sesuai permintaan dan pengaturan kabel perangkat keras yang sangat sederhana. Selanjutnya, jika Anda memerlukan komunikasi satu arah, Anda dapat memilih apakah akan membuat perangkat (Tx/Rx) saja dengan menonaktifkan/mengaktifkan TSOP-38238.

Bagaimana cara kerja sirkuit?

Hal ini cukup sederhana. Pin output TSOP ditarik rendah ketika sensor mendeteksi rangkaian 6 pulsa atau lebih pada 38KHz, di sisi lain ditarik tinggi ketika tidak ada sinyal seperti itu. Oleh karena itu, untuk mengirimkan data serial melalui IR, apa yang dilakukan rangkaian adalah memberi daya pada anoda LED dengan PWM 38KHz yang dimodulasi dengan sinyal serial TX yang menarik katoda LED rendah.

Akibatnya, pada level tinggi dari serial TX0, LED tidak bias atau bias mundur (tidak ada pulsa) dan pin output TSOP ditarik tinggi. Mengirimkan level rendah pada serial, LED ditenagai dan menghasilkan pulsa IR sesuai dengan sinyal PWM yang diterapkan; oleh karena itu, output TSOP ditarik rendah.

Karena transmisi langsung (0->0 dan 1->1) tidak diperlukan inverter atau logika lain di sisi penerima.

Saya mengatur daya output optik LED dengan memilih siklus tugas PWM sesuai dengan aplikasi. Semakin tinggi siklus tugas, semakin tinggi daya output optik dan oleh karena itu, semakin jauh Anda akan mengirimkan pesan Anda.

Perlu diingat bahwa kita masih perlu menghasilkan pulsa! Dengan demikian, Anda tidak boleh melebihi siklus tugas 90%, jika tidak, TSOP tidak akan mendeteksi sinyal sebagai pulsa.

Apakah Anda membutuhkan lebih banyak kekuatan?

Untuk meningkatkan arus, dapatkah kita mengurangi nilai resistor 1kOhm?

Mungkin, jangan terlalu menuntut! Arus maksimum yang Anda dapatkan dari pin MCU dibatasi hingga 7mA saat menggerakkan pin port yang lebih kuat dari biasanya (PINCFG. DRVSTR = 1 dan VDD > 3V) seperti yang dinyatakan dalam lembar data SAMD21.

Namun, konfigurasi standar (yang diadopsi oleh perpustakaan Arduino IDE sebagai default) membatasi arus hingga 2mA. Oleh karena itu, menggunakan 1kOhm sudah memberikan batas saat ini dengan pengaturan default!

Meningkatkan arus tidak hanya masalah komponen listrik. Secara singkat:

  • Ubah resistor (yang nilai minimumnya dibatasi sekitar 470Ohm -> VDD/470~7mA);
  • Atur PORT->PINCFG->DRVSTR yang sesuai menjadi 1;

Saya akan memberikan kode termasuk fitur ini di pembaruan mendatang.

Tapi ingat, menenggelamkan dan menguras arus dari pin MCU yang mendekati batasnya bukanlah pendekatan yang baik. Memang, ini menurunkan masa pakai dan keandalan MCU. Oleh karena itu, saya sarankan menjaga kekuatan drive normal untuk penggunaan jangka panjang.

Langkah 2: Pemrograman

Muat sketsa “IRSerial.ino” ke uChip (atau papan Arduino yang kompatibel yang Anda gunakan).

Jika Anda perlu mengubah pin yang menghasilkan PWM, pastikan Anda menggunakan pin yang terhubung ke timer TCC, karena versi kode ini hanya berfungsi dengan timer TCC (periksa "variant.c" papan Anda untuk info ini). Saya akan menambahkan kode untuk menggunakan juga pengatur waktu TC di pembaruan mendatang.

Kodenya cukup sederhana. Setelah menyetel PIN_5 rendah (menyediakan TSOP GND) dan PIN_6 tinggi (menyalakan TSOP), MCU memulai PWM pada PIN_1, menyetel periode timer dan menangkap bandingkan sesuai dengan modulasi frekuensi yang diperlukan (dalam kasus saya ini adalah 38KHz) dan tugas siklus (12,5% sebagai default). Ini dilakukan dengan mengeksploitasi fungsi analogWrite() standar pada pin PWM dan hanya mengubah register PER_REG (register periode) dan register CC (capture compare) (kode tertulis hanyalah cut-and-paste dari pustaka wiring_analog). Anda dapat mengatur frekuensi yang diperlukan sesuai dengan perubahan sensor TSOP PER_REG (yang merupakan batas atas mengatur ulang penghitung waktu), sementara mengatur CC secara proporsional dengan nilai periode ke persentase siklus kerja yang diinginkan.

Selanjutnya, kode mengatur port Serial menggunakan baud rate yang benar yaitu 2400bps. Mengapa baud rate yang rendah?! Jawabannya ada di datasheet TSOP yang bisa Anda temukan DI SINI. Karena TSOP memiliki filter penolakan kebisingan yang tinggi untuk mencegah peralihan yang tidak diinginkan, maka perlu mengirim rangkaian beberapa pulsa untuk menarik pin keluaran TSOP (jumlah pulsa tergantung pada versi TSOP, 6 adalah nilai tipikal). Demikian pula, output TSOP ditarik tinggi setelah jumlah waktu minimum yang setara dengan 10 pulsa atau lebih. Oleh karena itu, untuk mengatur output TSOP sebagai sinyal TX0 modulasi, perlu untuk mengatur baud rate dengan memperhatikan persamaan berikut:

Baud Serial < PWM_frekuensi/10

Menggunakan 38KHz, ini menghasilkan baudrate yang lebih rendah dari 3800bps, yang berarti bahwa "standar" yang lebih tinggi memungkinkan baud rate adalah 2400pbs, seperti yang diantisipasi sebelumnya.

Apakah Anda ingin meningkatkan baud rate? Ada dua pilihan.

Opsi termudah adalah mengubah TSOP menjadi versi frekuensi yang lebih tinggi (seperti TSOP38256), yang memungkinkan Anda menggandakan baud rate (4800bps)

Tidak cukup?! Maka Anda perlu membuat tautan optik Anda sendiri menggunakan IR LED+fotodioda dan sirkuit amplifikasi sederhana. Namun, solusi ini membutuhkan banyak keahlian pengkodean dan elektronik untuk mencegah noise mempengaruhi data yang dikirimkan dan oleh karena itu implementasinya sama sekali tidak mudah! Namun, jika Anda merasa cukup percaya diri, Anda dipersilakan untuk mencoba membuat sistem TSOP Anda sendiri!:)

Terakhir, saya mengatur port SerialUSB (2400bps) yang saya gunakan untuk mengirim dan menerima data pada monitor serial.

Fungsi loop() menyertakan kode yang diperlukan untuk melewati data melalui dua serial dan disalin langsung dari contoh sketsa SerialPassthrough yang hanya mengubah nama serial.

Langkah 3: Melindungi LED IR

Perisai IR LED
Perisai IR LED
Perisai IR LED
Perisai IR LED

Jika Anda menyalakan sirkuit di atas setelah memuat kode “IRSerial.ino”, periksa Serial Monitor pada Arduino IDE dan coba kirim string. Anda mungkin akan melihat bahwa uChip menerima persis apa yang dikirimkannya! Ada pembicaraan silang di sirkuit karena komunikasi optik antara LED IR dan TSOP dari perangkat yang sama!

Inilah bagian tersulit dari proyek ini, mencegah pembicaraan silang! Loop harus diputus untuk membuat komunikasi Serial dua arah melalui IR.

Bagaimana kita memecahkan lingkaran?

Opsi pertama, Anda menurunkan siklus tugas PWM, sehingga menurunkan output daya optik LED. Namun, pendekatan ini juga mengurangi jarak di mana Anda mendapatkan saluran IR serial yang andal. Opsi kedua adalah melindungi LED IR, sehingga membuat "sinar" IR terarah. Ini adalah masalah coba-coba; akhirnya, dengan menggunakan sepotong selang udara pneumatik hitam yang dibungkus dengan aluminium foil dan selotip (menyediakan insulasi listrik) saya berhasil memecahkan pembicaraan. Menempatkan transmisi LED IR di dalam tabung mencegah komunikasi antara TX dan RX dari perangkat yang sama.

Lihat gambar untuk melihat solusi saya, tetapi jangan ragu untuk mencoba metode lain dan/atau menyarankan Anda! Tidak ada solusi mutlak untuk masalah ini (kecuali Anda memerlukan saluran satu arah yang sederhana) dan Anda mungkin perlu menyetel tata letak sirkuit, siklus tugas PWM, dan pelindung IR sesuai dengan kebutuhan Anda.

Setelah Anda memutuskan pembicaraan silang, Anda dapat memverifikasi bahwa perangkat Anda masih berfungsi dengan membuat loop pada perangkat Tx-Rx yang memanfaatkan pantulan panjang gelombang IR pada permukaan reflektif IR.

Langkah 4: Berkomunikasi

Menyampaikan!
Menyampaikan!
Menyampaikan!
Menyampaikan!

Itu semuanya

Perangkat serial over IR Anda siap untuk berkomunikasi, gunakan untuk mengirim data melalui IR, nyalakan/matikan apa pun yang Anda suka atau periksa status sensor yang Anda sembunyikan secara diam-diam!

Jarak di mana komunikasi dapat diandalkan tidak sebanyak untuk perangkat WiFi atau BT. Namun, ini terarah (tergantung pada aperture LED dan sistem pelindung IR yang diterapkan), yang bisa sangat berguna di beberapa aplikasi!

Segera saya akan mengunggah video di mana Anda dapat melihat beberapa contoh aplikasi yang saya buat. Menikmati!

Direkomendasikan: