Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Remote Control TV Bertenaga Baterai dengan Casing Cetakan 3D

Komponen dan persediaan

Arduino UNO
× 1
Baterai 9V (generik)
× 1
Konektor 9V ke Barrel Jack
× 1
Pemancar IR (generik)
× 1
Sekrup Mesin, M3
× 4
Sekrup Mesin, M2.5
× 3
M3 nut
× 4
M2.5 nut
× 3
Melalui Resistor Lubang, 47 ohm
× 2
Papan prototipe, 2,54 mm
× 1
tombol tekan PCB
× 6
Male-Header 36 Posisi 1 Baris- Panjang (0,1")
× 1

Alat dan mesin yang diperlukan

Printer 3D (generik)
Besi solder (generik)
Kawat Solder, Bebas Timah
filamen PLA, diameter 1,75 mm

Tentang proyek ini

Pendahuluan

Remote control TV pacar saya berhenti bekerja. Dia bisa saja membeli pengganti yang murah di toko terdekat, tapi kemudian dia berpikir:kita berdua adalah insinyur, mari kita buat sendiri bersama!

Karena kami cukup saling melengkapi dalam keterampilan kami, ini adalah cara yang berbeda, tetapi menyenangkan untuk menghabiskan waktu selama penguncian dan memberi kami kesempatan untuk belajar sedikit tentang cara kerja teknologi sehari-hari ini.

Oh, dan memiliki printer 3D kecil di rumah juga berperan.

Cara kerjanya

Pertama-tama, karena kami ingin membuat desain sederhana yang mengandalkan Arduino UNO, kami mengevaluasi jumlah minimum perintah yang kami perlukan untuk mengoperasikan TV kami. Kami menganggap bahwa 6 perintah sudah cukup:sakelar ON/OFF, Pemilihan sumber, Ch+, Ch-, Vol+, Vol-.

Membaca tombol

Untuk menghindari penggunaan resistor tambahan, desain bergantung pada resistor pull-up internal Arduino. Jika remote control tidak dalam mode tidur (lihat di bawah), setiap status tombol disurvei dalam setiap siklus loop. Untuk menghindari penghitungan beberapa hit, rutinitas debouncing sederhana diterapkan dengan mengeksploitasi millis() fungsi.

Mengirim sinyal inframerah

Komunikasi inframerah ditangani oleh IRremote.h perpustakaan (pujian untuk pembuat kode!). Yang harus kami lakukan hanyalah mengatur protokol untuk tv kami (produsen yang berbeda telah mengembangkan protokol mereka sendiri) dan mencari di Google untuk kode dalam HEX dari berbagai perintah yang ingin kami gunakan dan mengaitkannya ke tombol. Sehubungan dengan desain sirkuit, agar perintah dari perpustakaan secara efektif mengemudikan LED IR, ini harus terhubung ke pin3 Arduino UNO.

Saat ini, kode tersebut ditulis untuk tiga jenis tv yang berbeda, dapat dipilih dengan mengomentari/membatalkan komentar #define direktif di bagian pertama kode.

Baterai menyimpan

Untuk mengurangi konsumsi daya, beberapa strategi diterapkan, memanfaatkan perintah dari avr/sleep.h dan avr/power.h perpustakaan.

Semua periferal dan antarmuka yang tidak digunakan (ADC, SPI, TWI, timer1, usart) dimatikan dalam rutinitas pengaturan. LED built-in pada PWM pin13 juga dimatikan. Kami juga memutuskan untuk melepas solder LED daya Arduino UNO, yang jika tidak selalu menyala, meskipun itu bukan pengoperasian yang disarankan.

Juga, mengeksploitasi millis() , jika tidak ada tombol yang ditekan selama 5 detik, remote control memasuki mode tidur, yang akan dibangunkan saat tombol Nyala/Mati ditekan lagi.

Bagaimana itu dibangun

Elektronik perakitan

Seluruh sirkuit tertanam pada papan prototyping, dirancang agar sesuai dengan header Arduino UNO. Dengan menggunakan besi solder, tombol disolder mengingat posisi akhir pada remote. Di bagian bawah, dua resistor 47ohm disolder secara paralel, untuk mencapai arus yang diinginkan melalui LED IR.

Menggunakan kawat solder, jejak dibuat pada papan prototipe untuk menghubungkan pin tombol dan LED IR ke header pin jantan.

Dengan cara ini, papan menyerupai perisai yang dipasang pada Arduino UNO menggunakan pin header, memastikan semua koneksi yang benar.

Lampiran CAD dan CAM

Enklosur dirancang untuk menampung baterai, rakitan papan prototipe Arduino UNO +, yang hanya memperlihatkan tombol di bagian atas dan LED IR di sisi depan.

Enklosur terdiri dari dua bagian, dirancang menggunakan perangkat lunak CAD SolidWorks, diproses sebelumnya dengan perangkat lunak pengiris Ultimaker Cura dan akhirnya dicetak 3D di PLA menggunakan printer 3D Mega Zero Anycubic.

Arduino UNO diamankan ke alas dengan menggunakan 3 sekrup M2.5, yang sesuai dengan lubang pelurusan yang diekstrusi dari bagian dalam alas. Setelah Arduino diamankan, LED IR akan menonjol di luar papan prototipe, untuk menyelaraskannya dengan lubang yang dibuat dan untuk menjaga posisinya saat merakit dua bagian enklosur, tiga tiang mini ditambahkan untuk menghindari gerakan lateral lead LED. Baterai dipasang di ruang khusus.

Penutup dirancang untuk memperlihatkan hanya tombol dan di samping masing-masing tombol, sebuah simbol terukir di penutup untuk menunjukkan fungsi setiap tombol.

Basis dan penutup enklosur dirakit menggunakan 4 sekrup M3.

Kode

  • TV_remote.ino
TV_remote.inoArduino
#include #include #include // Definisi pin// LED IR harus terhubung ke pin Arduino PWM 3#define OnOff 1# tentukan Sumber 0# tentukan CH_plus 4# tentukan CH_minus 5# tentukan Vol_plus 6# tentukan Vol_minus 7# tentukan Interrupt_Pin 2 //Hanya pin 2 atau 3 pada Arduino Uno// TV model definition//#define LG_TV//#define SAMSUNG_TV#define SONY_TV// Definisi kode#ifdef LG_TV unsigned long on_off_code =551489775; // HEX 20DF10EF unsigned long vol_plus_code =551502015; //HEX 20DF40BF unsigned long vol_minus_code =551534655; //HEX 20DFC03F panjang tanpa tanda ch_plus_code =551485695; //HEX 20DF00FF unsigned long ch_minus_code =551518335; //HEX 20DF807F kode sumber panjang yang tidak ditandatangani =551538735; //HEX 20DFD02F#endif#ifdef SAMSUNG_TV unsigned long on_off_code =3772793023; // HEX E0E040BF unsigned long vol_plus_code =3772833823; //HEX E0E0E01F panjang tanpa tanda vol_minus_code =3772829743; //HEX E0E0D02F panjang tanpa tanda ch_plus_code =3772795063; //HEX E0E048B7 unsigned long ch_minus_code =3772778743; //HEX E0E008F7 kode_sumber panjang yang tidak ditandatangani =3772809343; //HEX E0E0807F#endif#ifdef SONY_TV unsigned long on_off_code =2704; //HEX A90 unsigned long vol_plus_code =1168; //HEX 490 unsigned long vol_minus_code =3216; //HEX C90 unsigned long ch_plus_code =144; //HEX 090 unsigned long ch_minus_code =2192; //HEX 890 kode_sumber panjang yang tidak ditandatangani =2640; //HEX A50#endif//Aktifkan Debug//#define DEBUG//IRsend irsend; //Buat IR objectunsigned long debounce_time;unsigned long last_time;void setup() { analogWrite(13,0); //putaran led bawaan //noInterrupts(); //nonaktifkan interupsi //CLKPR =_BV(CLKPCE); //aktifkan pengaturan clock prescaler //CLKPR =_BV(CLKPS0); //set clock prescaler =2 --> 8 MHz //interupsi(); pinMode(OnOff,INPUT_PULLUP); pinMode(Sumber,INPUT_PULLUP); pinMode(CH_plus,INPUT_PULLUP); pinMode(CH_minus,INPUT_PULLUP); pinMode(Vol_plus,INPUT_PULLUP); pinMode(Vol_minus,INPUT_PULLUP); pinMode(Interrupt_Pin,INPUT_PULLUP); //hemat daya power_adc_disable(); //nonaktifkan semua ADC power_spi_disable(); //nonaktifkan SPI power_timer1_disable(); //disbale timer 1 (0 untuk milis(), 2 untuk irremote.h) power_usart0_disable(); //nonaktifkan serial power_twi_disable(); //nonaktifkan TWI #ifdef DEBUG Serial.begin(9600); #endif}void loop() { //centang OnOff if (!digitalRead(OnOff)) { debounce_time =milis(); while (millis() - debounce_time <40 ) {; } if (!digitalRead(OnOff)) { #ifdef LG_TV irsend.sendNEC(on_off_code, 32); #endif #ifdef SAMSUNG_TV irsend.sendSAMSUNG(on_off_code, 32); #endif #ifdef SONY_TV irsend.sendSony(on_off_code, 12); #endif last_time =milis(); //terakhir kali sebuah tombol ditekan #ifdef DEBUG Serial.println("OnOff"); #endif } } //centang Sumber if (!digitalRead(Sumber)) { debounce_time =milis(); while (millis() - debounce_time <40 ) {; } if (!digitalRead(Sumber)) { #ifdef LG_TV irsend.sendNEC(source_code, 32); #endif #ifdef SAMSUNG_TV irsend.sendSAMSUNG(kode_sumber, 32); #endif #ifdef SONY_TV irsend.sendSony(source_code, 12); #endif last_time =milis(); //terakhir kali sebuah tombol ditekan #ifdef DEBUG Serial.println("Sumber"); #endif } } //periksa CH_plus if (!digitalRead(CH_plus)) { debounce_time =milis(); while (millis() - debounce_time <40 ) {; } if (!digitalRead(CH_plus)) { #ifdef LG_TV irsend.sendNEC(ch_plus_code, 32); #endif #ifdef SAMSUNG_TV irsend.sendSAMSUNG(ch_plus_code, 32); #endif #ifdef SONY_TV irsend.sendSony(ch_plus_code, 12); #endif last_time =milis(); //terakhir kali sebuah tombol ditekan #ifdef DEBUG Serial.println("CH+"); #endif } } //periksa CH_minus if (!digitalRead(CH_minus)) { debounce_time =milis(); while (millis() - debounce_time <40 ) {; } if (!digitalRead(CH_minus)) { #ifdef LG_TV irsend.sendNEC(ch_minus_code, 32); #endif #ifdef SAMSUNG_TV irsend.sendSAMSUNG(ch_minus_code, 32); #endif #ifdef SONY_TV irsend.sendSony(ch_minus_code, 12); #endif last_time =milis(); //terakhir kali sebuah tombol ditekan #ifdef DEBUG Serial.println("CH-"); #endif } } //periksa Vol_plus if (!digitalRead(Vol_plus)) { debounce_time =milis(); while (millis() - debounce_time <40 ) {; } if (!digitalRead(Vol_plus)) { #ifdef LG_TV irsend.sendNEC(vol_plus_code, 32); #endif #ifdef SAMSUNG_TV irsend.sendSAMSUNG(vol_plus_code, 32); #endif #ifdef SONY_TV irsend.sendSony(vol_plus_code, 12); #endif last_time =milis(); //terakhir kali sebuah tombol ditekan #ifdef DEBUG Serial.println("Vol+"); #endif } } //periksa Vol_minus if (!digitalRead(Vol_minus)) { debounce_time =milis(); while (millis() - debounce_time <40 ) {; } if (!digitalRead(Vol_minus)) { #ifdef LG_TV irsend.sendNEC(vol_minus_code, 32); #endif #ifdef SAMSUNG_TV irsend.sendSAMSUNG(vol_minus_code, 32); #endif #ifdef SONY_TV irsend.sendSony(vol_minus_code, 12); #endif last_time =milis(); //terakhir kali sebuah tombol ditekan #ifdef DEBUG Serial.println("Vol-"); #endif } } if (millis()-last_time> 5000) { //tombol belum ditekan selama 10 detik #ifdef DEBUG Serial.println("Going to sleep..."); #endif pergi_ke_tidur(); //masuk ke mode tidur #ifdef DEBUG Serial.println("Bangun..."); #endif }}//Mode Tidur functionvoid going_to_sleep() { sleep_enable(); //aktifkan mode tidur attachInterrupt(digitalPinToInterrupt(Interrupt_Pin), wake_up, LOW); //interupsi untuk bangun --> konfigurasikan Interrupt Pin sebagai WIRED NOR!!! set_sleep_mode(SLEEP_MODE_PWR_DOWN); //mode tidur penuh sleep_cpu(); //mengaktifkan mode tidur}//Fungsi Bangunvoid wake_up() { sleep_disable(); //nonaktifkan mode tidur detachInterrupt(digitalPinToInterrupt(Interrupt_Pin)); //hapus interupsi}

Suku cadang dan penutup khusus

Skema

remote_sketch_r4f8a47oWX.fz

Proses manufaktur

  1. Kontrol akses dengan QR, RFID, dan verifikasi suhu
  2. Menggunakan IR Remote dengan Raspberry Pi tanpa LIRC
  3. PiCy – Robot Kecil Bertenaga Raspberry Pi!
  4. Game Arduino Gyroscope dengan MPU-6050
  5. Kamera Keamanan Discord dengan ESP32
  6. Kontrol Penerima Koin dengan Arduino
  7. Unopad - Pengontrol MIDI Arduino dengan Ableton
  8. Arduino dengan Bluetooth untuk Mengontrol LED!
  9. Bubut Dengan CNC
  10. 5 keuntungan dari kendali produksi jarak jauh