Isi kandungan:

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 tanpa wayar telah menjadi ciri utama dalam projek kami pada masa kini dan membincangkan tentang tanpa wayar, perkara pertama yang terlintas dalam fikiran saya ialah Wi-Fi atau BT, tetapi mengendalikan protokol komunikasi Wi-Fi atau BT bukanlah tugas yang mudah dan memakan banyak sumber MCU, memberikan sedikit ruang untuk mengekod aplikasi saya. Oleh itu, saya biasanya memilih modul Wi-Fi / BT luaran yang disambungkan secara bersiri ke mikrokontroler untuk memecah peranan dan memperoleh kebebasan yang lebih tinggi.

Walau bagaimanapun, kadang-kadang Wi-Fi dan BT "berlebihan" untuk beberapa aplikasi yang memerlukan kadar bit rendah dan jarak komunikasi pendek. Tambahan pula, menggunakan Wi-Fi atau BT menunjukkan perlunya menyambungkan Telefon Pintar atau peranti anda dengan pengesahan yang betul.

Bayangkan bahawa anda hanya perlu menghidupkan / mematikan lampu luaran, atau menukar intensiti lampu, atau membuka pintu elektrik. Adakah berbaloi menggunakan Wi-Fi atau BT?

Bergantung pada persekitaran dan aplikasi, komunikasi tanpa wayar melalui panjang gelombang IR (Inframerah) mungkin sangat berguna. Serial over IR, dilaksanakan dengan beberapa komponen luaran (3 komponen diskrit!), Dan uChip (papan serasi Arduino yang sangat kecil) boleh menjadi penyelesaian yang anda cari!

Bil Bahan (untuk satu peranti Tx-Rx):

1 x uChip

1 x LED IR: mempunyai puncak pelepasan pada 950nm

1 x TSOP-38238 (setara)

Perintang 1 x 1KOhm

Perkakasan

1 x papan roti / papan proto

1 x Tiub Plastik Hitam: diameter dalamannya sama dengan LED IR, tiub itu diperlukan untuk mengelakkan perbincangan silang dengan penerima TSOP.

1 x Aluminium Foil (3cm x 3 cm)

1 x Pita

PETUA: Anda boleh membuat satu-satunya TX atau satu-satunya RX sekiranya anda memerlukan komunikasi satu arah dengan mengeluarkan perkakasan RX / TX yang tidak diperlukan dari litar atau mengaktifkan / mematikan kod yang berkaitan dalam lakaran.

Langkah 1: Pendawaian

Pendawaian
Pendawaian
Pendawaian
Pendawaian
Pendawaian
Pendawaian

Kabelkan komponen bersama mengikut skema.

Beberapa nota mengenai skema ringkas. Oleh kerana TSOP-38238 membenarkan bekalan kuasa dari 2.5V hingga 5V dan menyerap paling banyak 0.45mA (anda dapati lembaran data di SINI), saya akan memberi kuasa kepada penerima menggunakan dua pin, yang masing-masing akan menyediakan bekalan elektrik dan kuasa. Ini membolehkan menghidupkan / mematikan penerima mengikut permintaan dan penyediaan pendawaian perkakasan yang sangat mudah. Selanjutnya, sekiranya anda memerlukan komunikasi satu arah, anda boleh memilih sama ada membuat (Tx / Rx) -hanya peranti dengan hanya mematikan / mengaktifkan TSOP-38238.

Bagaimana litar berfungsi?

Ia cukup sederhana. Pin output TSOP ditarik rendah ketika sensor mengesan tren 6 denyutan atau lebih pada 38KHz, di sisi lain ia ditarik tinggi ketika tidak ada isyarat seperti itu. Oleh itu, untuk menghantar data bersiri melalui IR, apa yang dilakukan oleh rangkaian adalah menghidupkan anod LED dengan 38KHz PWM yang dimodulasi dengan isyarat bersiri TX yang menarik katod LED rendah.

Akibatnya, pada tahap tinggi siri TX0, LED tidak berat sebelah atau berat sebelah terbalik (tiada denyutan) dan pin output TSOP ditarik tinggi. Memancarkan tahap rendah pada siri, LED dihidupkan dan menghasilkan denyutan IR sesuai dengan isyarat PWM yang digunakan; oleh itu, output TSOP ditarik rendah.

Oleh kerana penghantarannya langsung (0-> 0 dan 1-> 1) tidak perlu ada penyongsang atau logik lain di sisi penerima.

Saya mengatur daya output optik LED dengan memilih kitaran tugas PWM sesuai dengan aplikasi. Semakin tinggi kitaran tugas, semakin tinggi daya output optik dan oleh itu, semakin jauh anda akan menghantar mesej anda.

Perlu diingat bahawa kita masih perlu menghasilkan denyutan! Oleh itu, anda tidak boleh melebihi 90% kitaran tugas, jika tidak TSOP tidak akan mengesan isyarat sebagai denyutan.

Adakah anda memerlukan lebih banyak kuasa?

Untuk meningkatkan arus, bolehkah kita mengurangkan nilai perintang 1kOhm?

Mungkin, jangan terlalu menuntut! Arus maksimum yang anda dapat dari pin MCU adalah terhad kepada 7mA ketika menggerakkan pin port lebih kuat daripada biasa (PINCFG. DRVSTR = 1 dan VDD> 3V) seperti yang dinyatakan dalam lembar data SAMD21.

Walau bagaimanapun, konfigurasi standard (yang digunakan oleh perpustakaan Arduino IDE sebagai lalai) menghadkan arus ke 2mA. Oleh itu, menggunakan 1kOhm sudah memberikan had semasa dengan tetapan lalai!

Peningkatan arus bukan hanya masalah komponen elektrik. Secara ringkas:

  • Tukar perintang (yang nilai minimumnya terhad kepada kira-kira 470Ohm -> VDD / 470 ~ 7mA);
  • Tetapkan PORT-> PINCFG-> DRVSTR yang sesuai ke 1;

Saya akan memberikan kod termasuk ciri ini dalam kemas kini yang akan datang.

Tetapi ingat, tenggelam dan mengalirkan arus dari pin MCU hampir dengan hadnya bukanlah pendekatan yang baik. Sesungguhnya, ia menurunkan jangka hayat dan kebolehpercayaan MCU. Oleh itu, saya mencadangkan agar mengekalkan kekuatan pemacu normal untuk penggunaan jangka panjang.

Langkah 2: Pengaturcaraan

Muatkan lakaran "IRSerial.ino" ke uChip (atau papan serasi Arduino yang anda gunakan).

Sekiranya anda perlu menukar pin yang menghasilkan PWM, pastikan anda menggunakan pin yang disambungkan ke pemasa TCC, kerana versi kod ini hanya berfungsi dengan pemasa TCC (periksa "varian.c" papan anda untuk maklumat ini). Saya akan menambahkan kod untuk menggunakan juga pemasa TC dalam kemas kini yang akan datang.

Kodnya agak mudah. Setelah menetapkan PIN_5 rendah (menyediakan TSOP GND) dan tinggi PIN_6 (menghidupkan TSOP), MCU memulakan PWM pada PIN_1, menetapkan jangka masa dan tangkapan membandingkan sesuai dengan modulasi frekuensi yang diperlukan (dalam kes saya itu 38KHz) dan tugas kitaran (12.5% sebagai lalai). Ini dilakukan dengan mengeksploitasi fungsi analogWrite () pada pin PWM dan hanya menukar daftar PER_REG (period period) dan CC (capture membandingkan) (kod bertulis hanyalah cut-and-paste dari perpustakaan wiring_analog). Anda dapat menetapkan frekuensi yang diperlukan sesuai dengan sensor TSOP yang mengubah PER_REG (yang merupakan had atas mengatur semula penghitung pemasa), sambil menetapkan CC secara berkadar dengan nilai tempoh ke peratusan kitaran tugas yang diinginkan.

Seterusnya, kod menetapkan port Serial menggunakan kadar baud yang betul iaitu 2400bps. Mengapa kadar baud yang rendah ?! Jawapannya ada dalam lembaran data TSOP yang anda dapati di SINI. Oleh kerana TSOP mempunyai penapis penolakan bunyi yang tinggi untuk mengelakkan peralihan yang tidak diingini, adalah perlu untuk menghantar rangkaian pelbagai denyutan untuk menarik pin output TSOP (bilangan nadi bergantung pada versi TSOP, 6 adalah nilai khas). Begitu juga, output TSOP ditarik tinggi setelah jumlah masa minimum bersamaan 10 denyutan atau lebih. Oleh itu, untuk menetapkan output TSOP sebagai isyarat TX0 modulasi, perlu menetapkan kadar baud dengan mempertimbangkan persamaan berikut:

Serial Baud <PWM_frequency / 10

Menggunakan 38KHz ini menghasilkan kecepatan baud lebih rendah dari 3800bps, yang bermaksud bahawa kadar baud "standard" yang lebih tinggi adalah 2400pbs, seperti yang dijangkakan sebelumnya.

Adakah anda ingin meningkatkan kadar baud? Terdapat dua pilihan.

Pilihan termudah adalah menukar TSOP menjadi versi frekuensi yang lebih tinggi (seperti TSOP38256), yang membolehkan anda menggandakan kadar baud (4800bps)

Tidak cukup?! Kemudian anda perlu membuat pautan optik anda sendiri menggunakan litar fotodioda dan penguat IR LED + sederhana. Walau bagaimanapun, penyelesaian ini memerlukan banyak pengekodan dan kepakaran elektronik untuk mengelakkan bunyi daripada mempengaruhi data yang dihantar dan oleh itu pelaksanaannya tidak mudah sama sekali! Walau bagaimanapun, jika anda merasa cukup yakin, anda lebih senang untuk membuat sistem TSOP anda sendiri!:)

Akhirnya, saya menetapkan port SerialUSB (2400bps) yang saya gunakan untuk menghantar dan menerima data pada monitor bersiri.

Fungsi loop () merangkumi kod yang diperlukan untuk menyebarkan data ke atas dua siri dan disalin terus dari contoh lakaran SerialPassthrough yang hanya menukar nama siri.

Langkah 3: Melindungi LED IR

LED Perlindungan IR
LED Perlindungan IR
LED Perlindungan IR
LED Perlindungan IR

Sekiranya anda menghidupkan litar di atas setelah memuatkan kod "IRSerial.ino", periksa Serial Monitor di Arduino IDE dan cuba hantarkan tali. Anda mungkin akan melihat bahawa uChip menerima dengan tepat apa yang dihantarnya! Terdapat perbincangan silang dalam litar kerana komunikasi optik antara LED IR dan TSOP peranti yang sama!

Inilah bahagian sukar dari projek ini, menghalang perbincangan silang! Gelung mesti dipatahkan untuk membuat komunikasi Serial dua arah melalui IR.

Bagaimana kita memecahkan gelung?

Pilihan pertama, anda menurunkan kitaran tugas PWM, sehingga menurunkan output daya optik LED. Walau bagaimanapun, pendekatan ini juga mengurangkan jarak di mana anda mendapat saluran IR bersiri yang boleh dipercayai. Pilihan kedua adalah melindungi LED IR, sehingga membuat "sinar" IR arah. Ini adalah masalah cubaan dan kesilapan; akhirnya, menggunakan sehelai selang udara pneumatik hitam yang dibalut dengan kerajang aluminium dan pita (menyediakan penebat elektrik) saya berjaya mematahkan ceramah silang. Meletakkan LED IR pemancar di dalam tiub menghalang komunikasi antara TX dan RX pada peranti yang sama.

Lihat gambar untuk melihat penyelesaian saya, tetapi jangan ragu untuk mencuba kaedah lain dan / atau mencadangkan kaedah anda! Tidak ada penyelesaian mutlak untuk masalah ini (melainkan anda memerlukan saluran satu arah yang mudah) dan anda mungkin perlu menyesuaikan susunan litar, kitaran tugas PWM dan perisai IR sesuai dengan keperluan anda.

Setelah anda memutuskan perbincangan silang, anda dapat mengesahkan bahawa peranti anda masih berfungsi dengan membuat gelung pada peranti Tx-Rx yang memanfaatkan pantulan panjang gelombang IR pada permukaan reflektif IR.

Langkah 4: Berkomunikasi

Berkomunikasi!
Berkomunikasi!
Berkomunikasi!
Berkomunikasi!

Itu sahaja

Peranti bersiri melalui IR anda siap untuk berkomunikasi, menggunakannya untuk menghantar data melalui IR, hidupkan / matikan apa sahaja yang anda suka atau periksa status sensor yang anda sembunyikan secara rahsia!

Jarak komunikasi boleh dipercayai tidak sama dengan peranti WiFi atau BT. Namun, ini bersifat arah (bergantung pada bukaan LED dan sistem pelindung IR yang dilaksanakan), yang sangat berguna dalam beberapa aplikasi!

Tidak lama lagi saya akan memuat naik video di mana anda dapat melihat beberapa contoh aplikasi yang saya buat. Selamat mencuba!

Disyorkan: