Arduino: remote control dan penerima inframerah. Mengontrol arduino dengan remote control IR

Penerima IR dan kendali jarak jauh inframerah kendali jarak jauh– metode pengendalian yang paling umum dan paling sederhana peralatan elektronik. Spektrum radiasi infra merah tidak terlihat oleh mata manusia, namun diterima dengan sempurna oleh penerima IR yang terpasang pada perangkat elektronik. Modul jarak jauh Arduino ir digunakan untuk kontrol berbagai teknik dalam garis pandang.

Meluasnya penggunaan pemancar IR dimungkinkan karena biayanya yang rendah, kesederhanaan dan kemudahan penggunaannya. Radiasi IR terletak pada kisaran 750 hingga 1000 mikron - ini adalah bagian spektrum yang paling dekat dengan cahaya tampak. Di wilayah radiasi infra merah, sifat optik dapat berubah berbagai bahan. Beberapa kaca, misalnya, menjadi buram terhadap sinar IR, sedangkan parafin, sebaliknya, transparan dalam spektrum IR.

Radiasi direkam menggunakan bahan fotografi khusus, yang menjadi dasar pembuatan penerima. Selain benda yang dipanaskan (Matahari, lampu pijar atau lilin), sumber radiasi infra merah dapat berupa perangkat solid-state - LED IR, laser. Radiasi dalam jangkauan inframerah memiliki sejumlah fitur yang membuatnya nyaman digunakan pada remote control:

  • Pemancar solid state (LED IR) murah dan kompak.
  • Sinar inframerah tidak dirasakan atau dideteksi oleh mata manusia.
  • Penerima IR juga murah dan berukuran kecil.
  • Interferensi rendah karena pemancar dan penerima disetel ke frekuensi yang sama.
  • Absen pengaruh negatif pada kesehatan manusia.
  • Reflektansi tinggi dari sebagian besar bahan.
  • Pemancar IR tidak mempengaruhi pengoperasian perangkat lain.

Remote control berfungsi sebagai berikut. Saat Anda menekan tombol, sinyal dikodekan dalam cahaya inframerah, penerima menerimanya dan melakukan tindakan yang diperlukan. Informasi dikodekan sebagai urutan logis dari paket pulsa dengan frekuensi tertentu. Penerima menerima urutan ini dan mendemodulasi data. Untuk menerima sinyal digunakan rangkaian mikro yang berisi fotodetektor (fotodioda), amplifier, filter lolos pita, demodulator (detektor yang memungkinkan Anda mengisolasi selubung sinyal) dan transistor keluaran. Ia juga memiliki filter – listrik dan optik. Perangkat tersebut beroperasi pada jarak hingga 40 meter. Metode transmisi data IR ada di banyak perangkat: peralatan Rumah Tangga, dalam peralatan industri, komputer, jalur serat optik.

Penerima IR Arduino

Untuk membaca sinyal IR Anda memerlukan papan Arduino itu sendiri, papan tempat memotong roti, penerima sinyal IR, dan jumper. Ada banyak sekali receiver yang berbeda, tetapi lebih baik menggunakan TSOP312 atau receiver lain yang cocok untuk Arduino. Data dari remote control ke penerima dapat dikirim melalui protokol RC5 atau NEC.

Untuk menentukan kaki mana yang dimiliki, Anda perlu melihat sensor dari sisi penerima. Kemudian pada receiver kontak pusatnya adalah ground, di sebelah kiri adalah output ke mikrokontroler, di sebelah kanan adalah power.

Untuk kenyamanan, Anda bisa menggunakan modul yang sudah jadi Penerima IR.

Menghubungkan penerima IR ke Arduino

Output penerima IR terhubung ke Arduino ke port input GND, 5V dan digital. Diagram menghubungkan sensor ke pin digital ke-11 ditunjukkan di bawah ini.

Berikut tampilan rangkaian modul penerima infra merah:


Perpustakaan untuk bekerja dengan IR

Untuk bekerja dengan perangkat IR, Anda dapat menggunakan perpustakaan IRremote, yang menyederhanakan pembangunan sistem kontrol. Anda dapat mengunduh perpustakaan. Setelah diunduh, salin file ke folder \arduino\libraries. Untuk terhubung ke sketsa perpustakaan Anda, Anda perlu menambahkan file header #include .

Untuk membaca informasi, gunakan contoh IRrecvDumpV2 dari perpustakaan. Jika remote control sudah ada dalam daftar yang dikenali, maka pemindaian tidak diperlukan. Untuk membaca kodenya, Anda perlu meluncurkan ARduino IDE dan membuka contoh IRrecvDemo dari IRremote.

Ada perpustakaan kedua untuk bekerja dengan sinyal IR - ini adalah IRLib. Fungsinya mirip dengan yang sebelumnya. Dibandingkan IRremote, IRLib memiliki contoh untuk menentukan frekuensi sensor IR. Namun perpustakaan pertama lebih sederhana dan nyaman digunakan.

Setelah memuat perpustakaan, Anda dapat mulai membaca sinyal yang diterima. Kode berikut digunakan untuk ini.

Operator decode_results diperlukan untuk menetapkan hasil nama variabel ke sinyal yang diterima.

Dalam kode Anda perlu menulis ulang "HEX" menjadi "DEC".

Kemudian, setelah memuat program, Anda perlu membuka monitor serial dan menekan tombol pada remote control. akan muncul di layar berbagai kode. Anda perlu membuat catatan yang menunjukkan tombol mana yang sesuai dengan kode yang diterima. Lebih mudah untuk mencatat data yang diperoleh dalam sebuah tabel. Kode ini kemudian dapat ditulis ke dalam program agar perangkat dapat dikontrol. Kode-kode tersebut ditulis ke dalam memori papan Arduino EEPROM itu sendiri, yang sangat nyaman karena Anda tidak perlu memprogram tombol setiap kali Anda menghidupkan remote control.

Kebetulan saat memuat suatu program, kesalahan "TDK2 tidak dideklarasikan dalam cakupannya" ditampilkan. Untuk memperbaikinya, Anda harus pergi ke Explorer, buka folder tempat aplikasi diinstal Arduino IDE dan hapus file IRremoteTools.cpp dan IRremoteTools.h. Setelah ini, Anda perlu memuat ulang program ke mikrokontroler.

Kesimpulan

Menggunakan Arduino ir remote membuat hidup lebih mudah bagi pengguna. Dapat bertindak sebagai pengendali jarak jauh telepon genggam, tablet atau komputer - yang Anda butuhkan hanyalah perangkat lunak khusus. Menggunakan Arduino Anda dapat memusatkan semua kontrol. Dengan satu tombol di remote control Anda dapat melakukan beberapa tindakan sekaligus - misalnya menyalakan TV dan Blu-Ray secara bersamaan.

Setiap rumah memiliki remote control TV, atau remote control lainnya. Perangkat ini memungkinkan Anda mengontrol perangkat apa pun dari jarak jauh, yang sangat nyaman. Tidak perlu membuang kalori yang berharga dan melakukan gerakan yang tidak perlu. Jika Anda memiliki perangkat dan ingin mengontrolnya dari jarak jauh, Anda dapat mengontrol perangkat tersebut dari jarak jauh. Jika mau, Anda dapat membuat remote control dengan tangan Anda sendiri, tetapi ini tidak diperlukan dan itu lain ceritanya. Mengapa Anda mungkin memerlukan kendali jarak jauh?! - sederhana saja:

Kemalasan adalah kualitas yang memaksa kita melakukan upaya besar untuk mengurangi biaya energi secara keseluruhan.

Untuk pertama kalinya, kendali jarak jauh diperlihatkan kepada dunia oleh penemu Nikola Tesla pada tahun 1898, di sebuah pameran di Madison Square Garden, ia memperkenalkan perahu yang dikendalikan radio yang disebut “teleautomatic”. Saat ini, teknologi ini sudah tersebar luas, hanya saja lebih luas lagi cara yang berbeda transmisi perintah (saluran komunikasi).

Saluran komunikasi utama meliputi:

  • saluran radio
  • ultrasonik
  • Inframerah

Pada artikel ini kita akan berbicara tentang mengendalikan perangkat dengan remote control inframerah. Radiasi inframerah - radiasi elektromagnetik, menempati wilayah spektral antara ujung merah cahaya tampak dan radiasi gelombang mikro. Radiasi infra merah tidak terlihat oleh mata manusia, namun dapat dilihat dengan kamera atau kamera video. Seringkali ini adalah cara mereka memeriksa fungsi remote control TV di rumah.

Sudah berapa lama pekerjaan lama Saya mengambil remote control dan "lubang intip" (penerima IR) dari sistem keamanan yang sedang dihapuskan, tidak digunakan untuk waktu yang lama dan akhirnya saya sempat memeriksa pengoperasiannya.

Setelah membongkar receiver ini, saya melihat beberapa trik; di “mata” ini 4 receiver IR disolder menjadi satu. Hal ini dilakukan agar dapat menerima gelombang IR dari empat sisi. Dan nyamannya, Anda tidak perlu membatasi diri pada sudut penerimaan tertentu.

Saya juga membuat sketsa sirkuit serupa dengan empat receiver, kalau-kalau saya membutuhkannya. Saya menggunakan receiver IR TSOP1836, namun Anda dapat menggunakan receiver lain. Untuk memastikan penerimaan 360 derajat, Anda perlu memilih penerima IR yang sesuai (dengan sudut penerimaan lebar) dan menempatkannya sedekat mungkin satu sama lain. Saya tidak melihat adanya masalah penerimaan pada receiver saya. Saya juga menambahkannya ke lampiran papan sirkuit tercetak dan susunan elemen.

Untuk memproses perintah secara alami saya akan menggunakan arduino uno, dapat digunakan sebagai penerima IR
TSOP34836 (memiliki jangkauan penerimaan yang tinggi, tetapi lebih mahal) atau TL1838. Anda dapat mengambil remote control IR apa pun, bahkan dari TV. Nah, jika Anda membutuhkan remote control sendiri, Anda bisa membeli kit untuk Arduino.

Prinsip kerja:
Saat Anda menekan tombol pada remote control, ia mengirimkan kode tombol dalam cahaya inframerah, setelah itu penerima menerima kode tombol ini dan mengirimkannya ke aktuator, yang, bergantung pada tombolnya, akan melakukan tindakan tertentu.

Anda juga dapat menggunakan gelombang IR untuk mengirimkan informasi jarak pendek. Untuk mengirimkan perintah atau informasi Anda, Anda dapat menggunakan Arduino kedua dengan pemancar IR. Namun kecepatan transmisi tersebut sangat lambat. Keunggulan saluran inframerah termasuk ketidakpekaan terhadap interferensi elektromagnetik.

Untuk menerima sinyal IR arduino, kami akan menghubungkan penerima IR sebagai berikut:

Harap dicatat bahwa lokasi kaki penerima mungkin berbeda.


Penerima memiliki 3 kaki, catu daya “+” dan “-” (terutama tegangan 3,3-5V) dan kaki data adalah yang mengirimkan informasi ke perangkat (dalam kasus kami, Arduino). Tegangan suplai untuk TSOP34836 adalah 2,7-5,5 volt. Saya akan menggunakan 5 volt dari output arduino standar.

Nah, tentunya Anda membutuhkan firmware untuk arduino. Algoritma operasinya adalah sebagai berikut: ketika Anda mengklik tombol atas Remote control arduino menyalakan relay, dan ketika ditekan lagi, mematikannya. Dengan menggunakan relai ini, Anda dapat menyalakan, misalnya, lampu latar, tetapi tidak perlu memprogram dengan menekan tombol pada relai; Anda dapat mengeluarkan perintah ke komputer atau melakukan operasi tertentu di Arduino, dll.
Untuk mempermudah pekerjaan, kami akan menggunakan perpustakaan yang sudah jadi. Kode firmware:

#termasuk int RECEIVE_PIN = 11;//kontak penerima int RELAY_PIN = 3;//kontak relai IRrecv irrecv(RECEIVE_PIN);//tetapkan hasil decode_results pin penerima;//data yang diterima

batalkan pengaturan() (
Serial.mulai(9600);
irrecv.enableIRIn(); // nyalakan penerima
pinMode(RELAY_PIN, KELUARAN); // konfigurasikan relai untuk keluaran
digitalWrite(RELAY_PIN,TINGGI); //tetapkan nilainya tinggi
}

lingkaran kosong() (
if (irrecv.decode(&results)) (//jika data diterima
Serial.cetak("0x");
Serial.println(results.value, HEX);//mengeluarkan pesan yang diterima ke terminal
if ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF)) digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));//jika kode tombolnya adalah 0x8FF40BF atau 0xD72040BF ubah status relai ke sebaliknya
delay(200); // penundaan dari pemicuan ganda
irrecv.resume();// Dapatkan nilai berikutnya
}
}

Mari saya jelaskan sedikit dengan sketsanya:



if ((hasil.nilai == 0x8FF40BF) ||(hasil.nilai == 0xD72040BF))

Nilai yang dihasilkan dibandingkan dengan "0x8FF40BF" dan "0xD72040BF" - ini adalah kode tombol di sistem heksadesimal kalkulus. Dua arti saja karena saya menggunakan dua remote control dengan kode unik.



digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));

Prosedur standar rekaman digital pin kecuali untuk "!digitalRead(RELAY_PIN)". Tanda "!" menunjukkan inversi, dalam kasus kami inversi status keluaran digital "RELAY_PIN".



Serial.cetak("0x");
Serial.println(results.value, HEX);//mengeluarkan pesan yang diterima ke terminal

Baris-baris ini menampilkan semua kode yang diterima ke terminal. DI DALAM program kerja ini tidak perlu, tetapi Anda perlu mencari tahu kode yang diperlukan satu tombol atau lainnya. Artinya, pertama kita upload sketsa ke Arduino, masuk ke terminal dan dengan mengklik tombol kita akan mendapatkan kode yang diinginkan.


Ada juga beberapa contoh berbeda di perpustakaan IRremote yang mungkin berguna.


Dalam lampiran artikel:


  • sketsa untuk arduino

  • PCB untuk 4 sensor

Ada banyak artikel di Internet tentang cara membuat remote control TV sendiri menggunakan Arduino, tetapi saya memerlukan remote control universal untuk mengontrol TV dan pemutar media saya. Keuntungan utama saya kendali jarak jauh universal Soalnya tombol-tombol di aplikasi hp android itu dual fungsi, tapi lihat videonya.



Remote control sangat nyaman karena tombol yang hampir sama di layar digunakan untuk mengontrol TV dan pemutar. Salah satu perbedaannya adalah " AV"dalam mode kontrol TV berubah menjadi tombol" " (berhenti) saat beralih ke mode kontrol pemutar. Gambar menunjukkan dua mode, di sebelah kiri adalah mode kontrol TV, di sebelah kanan adalah mode kontrol pemutar.

Nah, sekarang saya akan bercerita sedikit tentang cara membuat remote control tersebut. Untuk perangkat saya menggunakan remote control ERGO TV dan remote control pemutar media DUNE HD TV101W.

Untuk menerima data dari remote control, saya menggunakan sensor infra merah TSOP1138 (analog dari TSOP4838) pada frekuensi operasi 38 kHz dan menghubungkannya ke papan Arduino sesuai skema:

Sketsa ini tidak diperlukan untuk menentukan pengkodean transmisi data dan membaca kode tombol remote control.

Pada sketsa di baris int RECV_PIN = 11; tunjukkan pin kami nomor 4

Setelah mengunggah sketsa, buka "port monitor" dan, dengan menekan tombol remote control, lihat data yang diterima.

Gambar menunjukkan contoh pemindaian tombol power dari remote control TV dan remote control player. Sekarang kita membuat tabel untuk kode tombol.

Saya mendapatkannya seperti pada foto di atas. Di bawah tulisan itu televisi Kode tombol remote control TV; di bawah prasasti Pemain- kode dari remote control pemutar media.

Sekarang kita lepaskan penerima sinyal inframerah dari papan Arduino dan sambungkan ke sana Modul Bluetooth HC-05 dan cahaya inframerah dioda sesuai rangkaian di foto.

Setelah itu kita langsung lanjut ke sketsanya.

Sketsa

#termasuk aku mengirim aku tidak mengirim; ke dalam kamu = 1; void setup() ( Serial.begin(9600); ) void loop() ( if (Serial.available() > 0) ( int x = Serial.read(); if (x == 49) ( y = 1; ) if (x == 50) ( y = 2; ) if (y == 1) ( // kode tombol untuk remote TV if (x == 97) ( irsend.sendNEC(0x807F08F7, 32); delay(40 ); ) jika (x == 98) ( irsend.sendNEC(0x807FA857, 32); tunda(40); ) jika (x == 99) ( irsend.sendNEC(0x807F708F, 32); tunda(40); ) jika (x == 100) ( irsend.sendNEC(0x807FF00F, 32); tunda(40); ) jika (x == 101) ( irsend.sendNEC(0x807F30CF, 32); tunda(40); ) jika (x == 102) ( irsend.sendNEC(0x807FB04F, 32); delay(40); ) if (x == 103) ( irsend.sendNEC(0x807F9867, 32); delay(40); ) if (x == 104) ( irsend .sendNEC(0x807F58A7, 32); penundaan(40); jika (x == 105) (irsend.sendNEC(0x807FD827, 32); penundaan(40); , 32); penundaan(40); 107) ( irsend.sendNEC(0x807F48B7, 32); penundaan(40); ) jika (x == 108) ( irsend.sendNEC(0x807FB847, 32); penundaan(40); jika (x == 109) ( irkirim. kirimNEC(0x807F6897, 32);


penundaan(40);

) ) if (y == 2) ( //kode tombol remote control pemutar media if (x == 97) ( irsend.sendNEC(0xFDC23D, 32); delay(40); ) if (x == 98) ( irsend.sendNEC(0xFDE01F, 32); penundaan(40); jika (x == 99) ( irsend.sendNEC(0xFD18E7, 32); penundaan(40); ) jika (x == 100) ( irsend.sendNEC( 0xFDE817, 32); penundaan(40); ) jika (x == 101) ( irsend.sendNEC(0xFDA857, 32); penundaan(40); ) jika (x == 102) ( irsend.sendNEC(0xFD6897, 32) ; tunda (40); ) jika (x == 103) ( irsend.sendNEC(0xFDA857, 32); tunda(40); ) jika (x == 104) ( irsend.sendNEC(0xFD6897, 32); tunda(40 ); ) jika (x == 105) ( irsend.sendNEC(0xFDE817, 32); tunda(40); ) jika (x == 106) ( irsend.sendNEC(0xFD18E7, 32); tunda(40); ) jika (x == 107) ( irsend.sendNEC(0xFD9867, 32); tunda(40); ) jika (x == 108) ( irsend.sendNEC(0xFD28D7, 32); tunda(40); ) jika (x == 109) ( irsend.sendNEC(0xFD20DF, 32); penundaan(40); ) ) ) )
Pada sketsa Anda perlu mengedit kode tombol, yaitu pada baris:

Jika (x == 97) ( irsend.sendNEC(0x807F08F7, 32); penundaan(40);
Ubah nilai 807F08F7 menjadi:

If (y == 1) ( //kode tombol untuk remote control TV if (x == 97) ( irsend.sendNEC(0x12345678, 32); delay(40); ) Dimana 12345678 adalah kode tombol anda. Setelah mengedit sketsa menggunakan kode tombol Anda, unggah sketsa tersebut ke

papan Arduino Pult di telepon.

Saat startup kita akan memiliki layar dengan warna merah ikon bluetooth di pojok kanan bawah, yang menandakan bahwa kita tidak terhubung ke perangkat kita.

Setelah itu, klik ikon ini. Kita akan melihat jendela dengan daftar semua yang tersedia perangkat bluetooth, tempat kami memilih perangkat untuk dihubungkan.

Sekarang kami kembali lagi layar beranda dan kita sudah bisa mengontrol TV:

Untuk beralih ke mode kontrol kita perlu menekan tombol berlabel "Pemain". Seperti yang saya katakan sebelumnya, tombol kita yang berlabel "AV" akan berubah menjadi tombol " ":

Untuk memutuskan sambungan dari perangkat kami, cukup tahan tombol "Daya" selama beberapa detik.

Nah, beberapa foto perangkat saya yang sudah jadi.

Ternyata hasilnya cukup baik. Saya menunggu komentar pada artikel tersebut.

Biasanya remote control TV, kotak kabel, Pemutar Blu-ray dan sistem stereo tidak hanya memakan ruang, tetapi juga mempersulit pengelolaan semua perangkat tersebut. Anda mungkin mempertimbangkan untuk membeli remote universal, tetapi biasanya harganya mahal dan terkadang tidak memberikan tingkat kontrol atau antarmuka yang Anda perlukan. Proyek ini menciptakan perangkat yang dapat mengirim dan menerima kode kendali jarak jauh dari halaman web standar. Anda dapat memprogram fungsionalitas yang diperlukan dari ponsel cerdas atau komputer mana pun!

Proyek ini menggunakan Modul Arduino Yún, yang dirancang khusus untuk mengelola perangkat yang mendukung koneksi jaringan. Yún memiliki dua prosesor, yang pertama menjalankan sistem operasi sistem Linux dan dapat terhubung ke kabel atau jaringan nirkabel. Prosesor kedua menjalankan fungsi yang sama seperti prosesor pada modul Arduino Leonardo. Oleh karena itu, ia memberikan kompatibilitas yang baik dengan perpustakaan dan perangkat keras Arduino.

Proyek ini menggunakan LED inframerah dan penerima untuk mengirim dan menerima sinyal kendali jarak jauh. Cahaya inframerah tidak terlihat oleh mata manusia, namun mudah dideteksi oleh sensor elektronik. Untuk transmisi sinyal yang lebih andal, perangkat menggunakan cahaya inframerah termodulasi, yang menghilangkan kemungkinan menerima sinyal palsu. Penerima inframerah adalah perangkat kecil, yang menerima sinyal inframerah yang dimodulasi pada frekuensi tertentu, biasanya 38 kHz. Dengan menggunakan receiver ini, modul Arduino menentukan bit informasi yang dikirim dari panel kontrol.

Mengirim perintah ke Anda pusat multimedia akan dilakukan menggunakan antarmuka web sederhana yang berjalan secara lokal pada modul Yún dan dapat diakses oleh sebagian besar browser web modern. Situs web memudahkan pengelolaan perangkat inframerah dan bahkan memungkinkan Anda memproses beberapa perintah secara bersamaan. Misalnya, menekan tombol 'Tonton Film' dapat mengirimkan sinyal untuk menyalakan TV, pemutar Blu-ray dan menghubungkannya ke input TV.

Proyek ini memerlukan pengalaman menjalankan sketsa Arduino dan menggunakan alat baris perintah. Komponen elektronik proyek dapat diinstal pada papan tempat memotong roti.

Langkah #1: Menghubungkan Komponen

  • Hubungkan LED inframerah ke modul Yún dengan menjalankan kabel dari anoda LED (kabel panjang) ke keluaran digital 13 modul Yun.
  • Menggunakan resistor 100 ohm, sambungkan katoda LED (kabel lebih pendek) ke pin ground sensor inframerah ( keluaran rata-rata sensor).
  • Hubungkan pin pendeteksi sensor infra merah (pin paling kiri jika dilihat dari depan sensor) ke pin digital 11 modul Yún.
  • Hubungkan pin ground sensor inframerah (pin tengah) ke pin ground modul Yún.
  • Terakhir, sambungkan kabel daya sensor (pin paling kanan jika dilihat dari depan sensor) ke pin 5 volt modul Yún.

Langkah #2: Instal Ketergantungan Perangkat Lunak

  • Saat dimasukkan Kartu MicroSD ke dalam modul Yún, nyalakan Yún dengan menghubungkan USB Mikro Kabel B ke modul Yún dan adaptor USB nutrisi.
  • Pastikan Yún sudah diatur dan terhubung ke jaringan nirkabel Anda. Mengonfigurasi modul Yún ditunjukkan di halaman ini.
  • Hubungkan ke baris perintah Anda menggunakan SSH. Proses ini dijelaskan di halaman ini.
  • Setelah terhubung ke baris perintah, Anda akan melihat versi firmware. Proyek ini diuji dengan versi BusyBox v1.19.4 dari 10-04-2014 dan lebih tinggi. Jika Anda menggunakan lebih banyak versi lama, lalu ikuti petunjuk berikut.
  • Pada prompt perintah, jalankan perintah berikut untuk memperbarui manajer paket:
pembaruan opkg opkg install distribusikan && opkg install python-openssl && opkg install python-expat && easy_install pip

Proses ini memakan waktu beberapa menit. Anda mungkin melihat beberapa pesan peringatan, namun Anda dapat mengabaikannya.

  • Buat direktori di kartu SD Anda untuk menyimpan paket Python:
mkdir /mnt/sda1/python-packages
  • Instal kerangka Flask Python:
pip install --target /mnt/sda1/python-packages labu

Anda mungkin melihat beberapa pesan peringatan, namun Anda dapat mengabaikannya.

  • Perbarui jalur pencarian untuk file paket Python:
echo "ekspor PYTHONPATH=/mnt/sda1/python-packages" >> /etc/profile
  • Buat direktori tempat Arduino IDE akan mengunggah file server web:
mkdir /mnt/sda1/Arduino mkdir /mnt/sda1/arduino/www
  • Nyalakan ulang Arduino Yún Anda untuk memperbarui jalur pencarian file Python.

  • Unduh perpustakaan IR. (Arduino IRremote, perpustakaan yang dibuat oleh Ken Shirriff.)
    Buka zip arsip, ganti nama folder dengan Arduino_ IR jarak jauh- menguasai pada Arduino_ IR jarak jauh, dan impor folder Arduino_IRremote sebagai perpustakaan ke dalam Arduino IDE. Informasi rinci ditunjukkan
  • Unggah sketsa Cerdas Kendali Jarak Jauh Arduino dari arsip zip dari sini.
    Buka zip arsip dan seret foldernya Kontrol Jarak Jauh Cerdas ke folder dengan Sketsa Arduino. Buka sketsa di Arduino IDE.
  • Kompilasi sketsa dan unggah ke modul Yún melalui WiFi dengan memilih opsi yang sesuai di daftar port Arduino Yún. Pastikan untuk mengunggah sketsa melalui WiFi sehingga skrip python yang diperlukan dapat disalin ke modul Yún! Setelah mendownload sketsa, buka Serial Monitor di lingkungan Arduino IDE (ini mungkin memakan waktu beberapa menit).
  • Arahkan remote control ke sensor infra merah dan tekan beberapa tombol pada remote control. Anda akan melihat kode di Serial Monitor. Jika kode tidak ditampilkan, maka periksa sambungan rangkaian sensor.

Langkah #4: Konfigurasikan Kode Remote Control

  • Anda sekarang dapat mengonfigurasi aktivitas dan kode kendali jarak jauh dengan mengaitkannya berkas XML konfigurasi. Menggunakan editor teks, buka filenya kegiatan. xml dalam subdirektori www folder sketsa di PC Anda. (Dari Arduino IDE, klik menu Sketsa dan pilih "Tampilkan Folder Sketsa").
  • Pertimbangkan format contoh operasi dalam file. Setiap blok operasi menentukan nama atribut yang akan muncul sebagai tombol di halaman web remote. Dalam setiap operasi, blok kode berisi urutan kode inframerah yang harus dijalankan. Pada contoh, perintah Sony A90 (power on/off) dijalankan terlebih dahulu untuk menghidupkan TV, kemudian perintah Panasonic (power on/off) untuk menghidupkan pemutar Blu-ray. Setiap kode memiliki parameter string yang merupakan keluaran data langsung dari kode jarak jauh yang terdeteksi dari sketsa Arduino.
  • Tambahkan perintah Anda ke file dengan menyalin contoh dan mengubah nama dan kode. Saat remote diarahkan ke sensor inframerah, tekan tombol dan tuliskan dengan hati-hati urutan kode inframerah tertentu. Salin urutannya ke dalam konfigurasi opcode.
  • Segera setelah Anda menerima berkas yang diperlukan konfigurasi, simpan file dan unggah ulang sketsa ke modul Yún melalui WiFi. Untuk memperbarui file konfigurasi, edit file dan unggah sketsa melalui WiFi menggunakan Arduino IDE.

Langkah #5: Memulai server dengan antarmuka web

  • Untuk memulai server, sambungkan modul Yún melalui SSH. Untuk memulai server, jalankan perintah berikut:
python /mnt/sda1/arduino/www/SmartRemoteControl/server.py
  • Ketika server berhasil dimulai, Anda akan melihat pesan:
* Berjalan di http://0.0.0.0:5000/ * Restart dengan reloader
  • Jika Anda melihat kesalahan, periksa semua dependensi yang diinstal pada langkah sebelumnya.
  • Di browser web Anda, masukkan http://arduino.local:5000/. Jika browser tidak mendukung URL mDNS (seperti Windows, Android, dan lainnya Distribusi Linux) masukkan http:// Arduino_ aku p_ alamat:5000/, dimana Arduino_ aku p_ alamat adalah alamat IP Arduino Yún Anda. Alamat IP terletak di bagian bawah Arduino IDE saat menghubungkan Yún (Gambar 2).
  • Setelah halaman dimuat, Anda akan melihat daftar tindakan tombol yang dikonfigurasi. Jika Anda melihat kesalahan, periksa apakah dependensi telah diinstal dengan benar, sketsa telah dimuat, dan server berjalan tanpa kesalahan.
  • Untuk menghentikan server, tekan Ctrl-C di jendela perintah tempat server dimulai.

Langkah #6: Menggunakan Antarmuka Web

  • Untuk digunakan kendali jarak jauh yang cerdas arahkan LED ke perangkat elektronik dan tekan salah satu tombol aktif. Jika perangkat yang diperlukan tidak menyala, coba dekatkan LED ke perangkat yang diperlukan. Jangkauan LED kecil, sekitar 6 kaki. Perlu menambahkan transistor untuk meningkatkan jangkauan LED. Informasi rinci disediakan Di Sini.
  • Anda juga dapat menguji kode inframerah dengan membuka Yún Serial Monitor di Arduino IDE dan mengirimkan kode inframerah sebagai perintah. Misalnya mengirimkan kode “SONY:C A90” (tanpa tanda kutip) akan menyebabkan perangkat keras mengirimkan perintah ke menyalakan Sony A90. ("C" mewakili bit panjang perintah, 12, dikonversi ke heksadesimal).
  • Untuk mulai otomatis server saat memuat, edit file / dll./ rc. lokal di modul Yún (menggunakan editor nano atau vi) dan tambahkan baris berikut sebelum dengan baris "exit 0" di akhir:
PYTHONPATH=/mnt/sda1/paket python python /mnt/sda1/arduino/www/SmartRemoteControl/server.py
  • Untuk pengenalan suara, luncurkan browser Anda Google Chrome. Klik tombol "Bicara" dan peramban Chrome akan meminta izin untuk menggunakan mikrofon. Kemudian ucapkan nama operasi yang aktif dan tunggu hingga dikenali. Misalnya, untuk menjalankan pengoperasian film "Film", tekan tombol "Bicara" dan ucapkan kata "Film" ke mikrofon. Frasa seperti "Putar Film" atau "Jalankan Film" tidak didukung - hanya nama jelas dari operasi aktif yang dikenali.

Remote control inframerah adalah salah satu yang paling banyak cara sederhana interaksi dengan perangkat elektronik. Jadi, di hampir setiap rumah ada beberapa perangkat seperti itu: TV, pusat musik, pemutar video, AC. Tapi yang paling banyak aplikasi yang menarik remote control inframerah - remote control robot. Sebenarnya dalam pelajaran ini kita akan mencoba mengimplementasikan metode kontrol ini menggunakan pengontrol Arduino Uno yang populer.

1. Pengendali jarak jauh IR

Apa yang diperlukan untuk mengajarkan robot agar mematuhi kendali jarak jauh inframerah (IR)? Pertama, kita memerlukan remote control itu sendiri. Anda dapat menggunakan remote control TV biasa, atau Anda dapat membeli remote control mini untuk radio mobil Anda. Remote control jenis ini sering digunakan untuk mengendalikan robot.

Remote control ini memiliki 10 tombol digital dan 11 tombol untuk memanipulasi musik: volume, mundur, putar, berhenti, dll. Lebih dari cukup untuk tujuan kita.

2. sensor inframerah

Kedua, untuk menerima sinyal dari remote control kita memerlukan sensor IR khusus. Secara umum, kita dapat mendeteksi radiasi infra merah dengan fotodioda/fototransistor konvensional, namun berbeda dengan sensor infra merah, sensor IR kita hanya menangkap sinyal infra merah pada frekuensi 38 kHz (terkadang 40 kHz). Properti inilah yang memungkinkan sensor mengabaikan banyak kebisingan cahaya asing dari lampu penerangan dan matahari.

Untuk tutorial ini kita akan menggunakan sensor IR yang populer VS1838B, yang memiliki ciri-ciri sebagai berikut:

  • frekuensi pembawa: 38 kHz;
  • tegangan suplai: 2,7 - 5,5 V;
  • konsumsi saat ini: 50 μA.

Sensor lain dapat digunakan, misalnya: TSOP4838, TSOP1736, SFH506.

3. Koneksi

Sensor memiliki tiga sadapan (tiga kaki). Jika Anda melihat sensor dari sisi penerima sinyal IR, seperti yang ditunjukkan pada gambar,

  • lalu di sebelah kiri akan ada output ke controller,
  • di tengah - kontak daya negatif (ground),
  • dan di sebelah kanan - kontak daya positif (2,7 - 5,5V).

Diagram skema koneksi

Penampilan tata letak

4. Program

Setelah menghubungkan sensor IR, kita akan menulis program untuk Arduino Uno. Untuk ini kami akan menggunakan perpustakaan standar IR jarak jauh, yang dirancang khusus untuk menyederhanakan pekerjaan menerima dan mentransmisikan sinyal IR. Dengan menggunakan perpustakaan ini, kami akan menerima perintah dari remote control, dan untuk memulainya, cukup tampilkan di jendela monitor port serial. Program ini akan berguna bagi kita untuk memahami kode apa yang diberikan setiap tombol.

#termasuk "IRremote.h" IRrecv irrecv(2); // menunjukkan pin yang terhubung dengan penerima hasil decode_results; void setup() ( Serial.begin(9600); // atur kecepatan Pelabuhan COM irrecv.enableIRIn(); // mulai menerima ) void loop() ( if (irrecv.decode(&results)) ( // jika data sudah sampai Serial.println(results.value, HEX); // mencetak data irrecv.resume(); // menerima tim selanjutnya))

Muat program ke Arduino. Setelah itu, kami mencoba menerima perintah dari remote control. Buka monitor port serial (Ctrl+Shift+M), ambil remote control, dan arahkan ke sensor. Dengan menekan tombol yang berbeda, kami mengamati kode yang sesuai dengan tombol-tombol ini di jendela monitor.

Masalah saat memuat program

Dalam beberapa kasus, ketika mencoba memuat program ke pengontrol, kesalahan mungkin muncul:

TDK2 tidak dideklarasikan dalam ruang lingkupnya

Untuk memperbaikinya cukup hapus dua file dari folder perpustakaan. Ayo pergi ke penjelajah. Masuk ke folder tempat aplikasi Arduino IDE diinstal (kemungkinan besar “C:\Program Files (x86)\Arduino”). Kemudian ke folder perpustakaan:

…\Arduino\libraries\RobotIRremote

Dan hapus file: IRremoteTools.cpp Dan IRremoteTools.h. Kemudian, kita restart Arduino IDE dan coba memuat kembali program ke controller.

5. Kontrol LED menggunakan remote control IR

Sekarang setelah kita mengetahui kode mana yang sesuai dengan tombol remote control, kita mencoba memprogram pengontrol untuk menghidupkan dan mematikan LED ketika tombol volume ditekan. Untuk melakukan ini kita memerlukan kode (dapat bervariasi tergantung pada remote control):

  • FFA857 - meningkatkan volume;
  • FFE01F - mengurangi volume.

Sebagai LED, kami menggunakan LED built-in pada pin No. 13, sehingga diagram koneksi akan tetap sama. Jadi, programnya:

#termasuk "IRremote.h" IRrecv irrecv(2); // menunjukkan pin yang terhubung dengan penerima hasil decode_results; void setup() ( irrecv.enableIRIn(); // mulai menerima ) void loop() ( if (irrecv.decode(&results)) ( // jika data tiba, switch (results.value) ( ​​case 0xFFA857: digitalWrite( 13, TINGGI); istirahat; kasus 0xFFE01F: digitalWrite(13, RENDAH);

Kami mengunggahnya ke Arduino dan mengujinya. Klik jilid+— LED menyala. Klik vol-- padam. Sekarang, mengetahui cara kerjanya, Anda dapat mengontrol motor robot atau perangkat mikroelektronik buatan sendiri lainnya selain LED!

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat