Daftar Isi:
- Langkah 1: Komponen yang Dibutuhkan
- Langkah 2: Pengaturan Perangkat Keras
- Langkah 3: Kode Arduino
- Langkah 4: Kode Aplikasi PC (C#.NET)
Video: Arduino Youtube Remote Control untuk Tidur (Leobot Electronics): 4 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:55
Arduino Youtube Remote
Jika Anda menggunakan Youtube untuk memberi Anda film atau musik untuk ditonton saat tidur, Anda pasti akan terbangun oleh iklan beban atau tingkat volume yang berbeda saat film baru dimulai. Tak perlu dikatakan, ini bisa sangat menjengkelkan.
Jadi, solusi saya yang saya buktikan kepada Anda di sini untuk membangun sendiri adalah remote control berbasis Arduino untuk berinteraksi dengan Youtube dari jarak jauh. Remote diperlukan untuk mengubah volume suara utama PC saya, melewatkan iklan di Youtube dan melewatkan video di Youtube.
Juga, disertakan adalah sensor level audio untuk menentukan seberapa keras speaker sebenarnya, yang pada gilirannya dapat digunakan untuk secara otomatis menurunkan level suara setelah mendeteksi gangguan keras seperti iklan.
Terakhir, saya menambahkan bagan pada aplikasi PC untuk menampilkan level audio yang terdeteksi.
Solusinya dapat disempurnakan dengan lebih baik tetapi bagi saya itu menyelesaikan tugas.
Langkah 1: Komponen yang Dibutuhkan
Semua komponen ini dipasok oleh Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 CHANNEL REMOTE (315MHZ) + MODUL PENERIMA (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) MODUL SENSOR DETEKSI SUARA & SUARA MIKROFON (KY-037)
leobot.net/viewproduct.aspx?id=217
Perangkat lunak
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Langkah 2: Pengaturan Perangkat Keras
1) Hubungkan modul penerima 4-Channel ke Arduino.
Pin Penerima 4 Saluran-> Pin Arduino Uno
GND->GND
5V-> 5V
D0->Digital 2
D1->Digital 3
D2->Digital 4
D3->Digital 5
2) Hubungkan modul Mikrofon KY-037 ke Arduino
Mikrofon KY-037 Pin->Arduino Uno Pin
GND->GND
+->3.3V
A0->Analog 3
Langkah 3: Kode Arduino
Gambaran
Logika yang perlu diikuti Arduino adalah sebagai berikut:
A) Periksa apakah penerima memberi sinyal pin.
B) Tergantung pada port IO mana sinyal diterima, perintah apa yang akan dikirim ke PC.
C) Setelah selesai dengan semua tindakan kendali jarak jauh, deteksi level audio dengan mikrofon dan kirimkan ke PC.
D) Semua perintah yang dikirim ke PC memiliki format yang pertama memiliki karakter kemudian nilai (jika diperlukan nilai).
E) Ada lima perintah yang dikirim dari Arduino ke PC
A. "u" - Volume Naik
B. "d" - Volume Turun
C. "s" - Lewati Tambah
D. "v" - Lewati Video
e. "a" - Tingkat Audio terdeteksi diikuti dengan nilainya
Kode Arduinonya:
Unduh Kode Arduino di sini:
int dalam1=2;
int dalam2=3;
int dalam3=4;
int dalam4=5;
batalkan pengaturan() {
Serial.begin(9600);
pinMode(A3, INPUT);
pinMode(in1, INPUT);
pinMode(in2, INPUT);
pinMode(in3, INPUT);
pinMode(in4, INPUT);
}
lingkaran kosong() {
jika(DigitalBaca(dalam1))
{
Serial.println("u");
penundaan(100);
}
jika(DigitalBaca(dalam2))
{
Serial.println("d");
penundaan(100);
}
jika(digitalBaca(dalam3))
{
Serial.println("s");
penundaan(100);
}
jika(DigitalBaca(dalam4))
{
Serial.println("v");
penundaan(100);
}
int readVal= analogRead(A3);
Serial.println(String("a")+ String(readVal));
penundaan(50);
}
Langkah 4: Kode Aplikasi PC (C#. NET)
Aplikasi akan mendengarkan melalui port COM (USB) dan bereaksi tergantung pada perintah apa yang diterima. Cara paling sederhana untuk menaikkan dan menurunkan suara di PC adalah dengan menggunakan layanan Interrop untuk berbicara langsung dengan OS Windows. Kami juga menggunakan layanan Interrop untuk menggerakkan mouse ke posisi tertentu di layar dan klik. Untuk memungkinkan layar & ukuran tampilan yang berbeda, kami mengizinkan pengguna untuk menentukan posisi tombol lewati tambahkan dan lewati video.
Kami menggunakan bagan.net standar untuk menampilkan perintah audio apa pun yang kami terima.
Kode Windows:
Unduh proyek lengkap di sini:
leobot.net/audioadjust.zip
menggunakan Sistem;
menggunakan System. Collections. Generic;
menggunakan System. ComponentModel;
menggunakan System. Data;
menggunakan System. Drawing;
menggunakan System. Linq;
menggunakan System. Text;
menggunakan System. Windows. Forms;
menggunakan System. Runtime. InteropServices;
menggunakan System. IO. Ports;
menggunakan System. Threading;
namespace AudioAdjust
{
kelas parsial publik Form1: Form
{
[DllImport("User32. Dll")]
SetCursorPos panjang eksternal statis publik (int x, int y);
[DllImport("User32. Dll")]
public static extern bool ClientToScreen(IntPtr hWnd, ref POINT point);
[DllImport("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]
public static extern void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
//Tindakan mouse
pribadi const int MOUSEEVENTF_LEFTDOWN = 0x02;
pribadi const int MOUSEEVENTF_LEFTUP = 0x04;
pribadi const int MOUSEEVENTF_RIGHTDOWN = 0x08;
pribadi const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
ARand acak = Acak baru();
public int Tingkat Terakhir = 0;
int publik MaxLevel = 255;
SerialPort _serialPort statis;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
Formulir1 publik()
{
Inisialisasi Komponen();
}
private void Form1_Load (pengirim objek, EventArgs e)
{
string nama = System. IO. Ports. SerialPort. GetPortNames();
comboBoxPort. Items. AddRange(nama);
comboBoxPort. SelectedIndex = 0;
}
int titik saat ini = 0;
private void button1_Click(pengirim objek, EventArgs e)
{
_serialPort = SerialPort baru();
_serialPort. DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString();//Setel COM papan Anda
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close();
lain
{
_serialPort. Open();
}
// keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // mengecilkan volume
}
void _serialPort_DataReceived(pengirim objek, SerialDataReceivedEventArgs e)
{
mencoba
{
string fullval = _serialPort. ReadLine();
string com = fullval[0]. ToString();
beralih (com)
{
kasus "a":
{
{
//tingkat audio
string val = fullval. Replace("a", "");
int valInt = int. Parse(val);
TambahData(valInt);
}
merusak;
}
kasus "u":
{
//suara naik
keybd_event((byte)Keys. VolumeUp, 0, 0, 0); // mengecilkan volume
merusak;
}
kasus "d":
{
//suara turun
keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // mengecilkan volume
merusak;
}
kasus "s":
{
//melewatkan iklan
MoveCursorSkipAd();
Benang. Tidur (10);
DoMouseKlik();
merusak;
}
kasus "v":
{
//melewatkan iklan
MoveCursorLewatiVideo();
Benang. Tidur (10);
DoMouseKlik();
merusak;
}
}
}
menangkap
{
}
//lempar NotImplementedException baru();
}
kekosongan pribadi MoveCursorSkipAd()
{
Kursor. Position = Titik baru(1140, 725);
Kursor. Posisi = Titik baru(adX, adY);
}
kekosongan pribadi MoveCursorSkipVideo()
{
Kursor. Position = Titik baru(1140, 725);
Kursor. Posisi = Titik baru(vidX, vidY);
}
kekosongan publik DoMouseClick()
{
//Panggil fungsi yang diimpor dengan posisi kursor saat ini
uint X = (uint)Cursor. Position. X;
uint Y = (uint)Cursor. Position. Y;
mouse_event(MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
batalkan AddData (tingkat int)
{
jika (aktifkanAudioChange)
{
jika (tingkat >= Tingkat Maks)
{
keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // mengecilkan volume
keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // mengecilkan volume
keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // mengecilkan volume
}
lain
{
jika (tingkat < Tingkat Maks - 0)
{
keybd_event((byte)Keys. VolumeUp, 0, 0, 0); // mengecilkan volume
}
}
}
SetChart(tingkat);
titik saat ini++;
}
delegasikan void SetTextCallback(int val);
private void SetChart(int val)
{
// InvokeRequired diperlukan membandingkan ID utas dari
// memanggil utas ke ID utas dari utas yang membuat.
// Jika utas ini berbeda, hasilnya benar.
jika (this.chart1. InvokeRequired)
{
SetTextCallback d = baru SetTextCallback(SetChart);
this. Invoke(d, objek baru { val });
}
lain
{
chart1. Series[0]. Points. AddXY(0, val);
jika (titik saat ini >= 10)
{
chart1. Series[0]. Points. RemoveAt(0);
}
}
}
private void textBoxLevel_TextChanged (pengirim objek, EventArgs e)
{
mencoba
{
MaxLevel = int. Parse(textBoxLevel. Text);
}
menangkap
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click(pengirim objek, EventArgs e)
{
MoveCursorSkipAd();
Benang. Tidur (10);
DoMouseKlik();
}
private void textBoxXpos_TextChanged (pengirim objek, EventArgs e)
{
mencoba
{
adX = int. Parse(textBoxXpos. Text);
}
menangkap
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (pengirim objek, EventArgs e)
{
mencoba
{
adY = int. Parse(textBoxYpos. Text);
}
menangkap
{
textBoxYpos. Text = adY + "";
}
}
tombol batal pribadiLewatiVideo_Click(pengirim objek, EventArgs e)
{
MoveCursorLewatiVideo();
Benang. Tidur (10);
DoMouseKlik();
}
private void textBoxXposVid_TextChanged (pengirim objek, EventArgs e)
{
mencoba
{
vidX = int. Parse(textBoxXposVid. Text);
}
menangkap
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (pengirim objek, EventArgs e)
{
mencoba
{
vidY = int. Parse(textBoxYposVid. Text);
}
menangkap
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (pengirim objek, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout(LayoutKind. Sequential)]
POINT struktur publik
{
int publik x;
int publik y;
}
}
Direkomendasikan:
Termometer IR untuk Tidur: 5 Langkah
Termometer IR untuk Tidur: Jadi Geek Tua Malas (L.O.G.) ini baru saja membeli modul termal IR, MLX90614 dari AliExpress.com. Lihat gambar Ini adalah jenis sensor yang sama yang digunakan pada termometer dahi dan telinga yang ditunjukkan pada gambar ketiga. Mereka disebut non-kontak karena
Alarm untuk Kamar Tidur Dengan Lampu dan Suara!: 6 Langkah
Alarm untuk Kamar Tidur Dengan Lampu dan Suara!: Hai, hari ini saya akan menunjukkan cara membuat alarm untuk pintu kamar tidur Anda dengan Arduino UNO
Mengatasinya Pelindung Mata (untuk Adaptasi Penglihatan Saat Bangun Tidur): 35 Langkah
Mengatasinya Pelindung Mata (Untuk Adaptasi Penglihatan Saat Bangun Tidur): Masalah utama: Ketika kita bangun dari tidur dan teman kita menyalakan lampu kamar, kebanyakan dari kita langsung dibutakan oleh cahaya karena mata kita membutuhkan waktu untuk menyesuaikan diri dari lingkungan gelap ke lingkungan terang. Apa yang akan kita lakukan jika kita ingin menyelesaikan
Kit Remote Control Biasa Diubah Menjadi Remote Control Mainan RC Empat Saluran: 4 Langkah
Kit Remote Control Biasa Diubah Menjadi Remote Control Mainan RC Empat Saluran: 2262和2272芯片和433个模块构建。 kan
Jam Samping Tempat Tidur Terhubung untuk Anak-Anak: 12 Langkah
Jam Samping Tempat Tidur yang Terhubung untuk Anak-Anak: Dengan mengikuti petunjuk ini, Anda akan dapat membuat jam yang diaktifkan dengan gerakan dan akan menunjukkan tanggal, waktu, dan acara yang relevan pada hari itu. Ini akan menunjukkan mode malam ketika saatnya untuk tidur dan ketika anak-anak bangun mereka dapat dengan cepat mengingat apa