Mục lục:
- Bước 1: Các thành phần cần thiết
- Bước 2: Thiết lập phần cứng
- Bước 3: Mã Arduino
- Bước 4: Mã ứng dụng PC (C #.NET)
Video: Điều khiển từ xa Arduino Youtube để ngủ (Leobot Electronics): 4 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Arduino Youtube Remote
Nếu bạn sử dụng Youtube để cung cấp cho bạn một bộ phim hoặc bản nhạc để xem khi đang ngủ, chắc chắn bạn sẽ bị đánh thức bởi một quảng cáo tải hoặc các mức âm lượng khác nhau khi một bộ phim mới bắt đầu. Không cần phải nói, điều này có thể khá khó chịu.
Vì vậy, giải pháp của tôi mà tôi chứng minh cho bạn ở đây để xây dựng cho chính bạn là một điều khiển từ xa dựa trên Arduino để tương tác với Youtube ở khoảng cách xa. Điều khiển từ xa được yêu cầu để thay đổi âm lượng âm thanh chính của PC của tôi, bỏ qua quảng cáo trên Youtube và bỏ qua video trên Youtube.
Ngoài ra, đi kèm là một cảm biến mức âm thanh để xác định mức độ thực sự của loa, từ đó có thể được sử dụng để tự động giảm mức âm thanh khi phát hiện ra những gián đoạn lớn chẳng hạn như quảng cáo.
Cuối cùng, tôi đã thêm một biểu đồ trên ứng dụng PC để hiển thị các mức âm thanh được phát hiện.
Giải pháp có thể được tinh chỉnh tốt hơn nhưng đối với tôi, nó đã hoàn thành nhiệm vụ.
Bước 1: Các thành phần cần thiết
Tất cả các thành phần này được cung cấp bởi Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 TỪ XA CỦA KÊNH (315MHZ) + MODULE BỘ NHẬN (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) MÔ HÌNH CẢM BIẾN PHÁT HIỆN ÂM THANH & MICROPHONE VOICE (KY-037)
leobot.net/viewproduct.aspx?id=217
Phần mềm
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Bước 2: Thiết lập phần cứng
1) Kết nối mô-đun thu 4 kênh với Arduino.
Chân thu 4 kênh-> Pin Arduino Uno
GND-> GND
5V-> 5V
D0-> Kỹ thuật số 2
D1-> Kỹ thuật số 3
D2-> Kỹ thuật số 4
D3-> Kỹ thuật số 5
2) Kết nối mô-đun Micrô KY-037 với Arduino
Pin micrô KY-037-> Pin Arduino Uno
GND-> GND
+ -> 3,3V
A0-> Tương tự 3
Bước 3: Mã Arduino
Tổng quat
Logic mà Arduino cần tuân theo như sau:
A) Kiểm tra xem bộ thu có đang báo hiệu bất kỳ chân nào không.
B) Tùy thuộc vào cổng IO mà tín hiệu nhận được là lệnh nào sẽ được gửi đến PC.
C) Sau khi thực hiện xong tất cả các thao tác điều khiển từ xa, hãy phát hiện mức âm thanh bằng micrô và gửi đến PC.
D) Tất cả các lệnh gửi đến PC có định dạng đầu tiên là một ký tự sau đó là một giá trị (nếu cần một giá trị).
E) Có năm lệnh được gửi từ Arduino đến PC
Một. “U” - Tăng âm lượng
NS. “D” - Giảm âm lượng
NS. “S” - Bỏ qua Thêm
NS. “V” - Bỏ qua Video
e. “A” - Mức âm thanh được phát hiện theo sau là giá trị
Mã Arduino:
Tải xuống Mã Arduino tại đây:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
void setup () {
Serial.begin (9600);
pinMode (A3, INPUT);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
void loop () {
if (digitalRead (in1))
{
Serial.println ("u");
chậm trễ (100);
}
if (digitalRead (in2))
{
Serial.println ("d");
chậm trễ (100);
}
if (digitalRead (in3))
{
Serial.println ("s");
chậm trễ (100);
}
if (digitalRead (in4))
{
Serial.println ("v");
chậm trễ (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a") + String (readVal));
chậm trễ (50);
}
Bước 4: Mã ứng dụng PC (C #. NET)
Ứng dụng sẽ lắng nghe qua cổng COM (USB) và phản ứng tùy thuộc vào lệnh nào được nhận. Cách đơn giản nhất để tăng và giảm âm thanh trên PC là sử dụng dịch vụ Interrop để nói chuyện trực tiếp với hệ điều hành Windows. Chúng tôi cũng sử dụng các dịch vụ Interrop để di chuyển chuột đến một vị trí cụ thể trên màn hình và nhấp chuột. Để cho phép các kích thước màn hình & chế độ xem khác nhau, chúng tôi cho phép người dùng chỉ định vị trí của các nút bỏ qua thêm và bỏ qua video.
Chúng tôi sử dụng biểu đồ.net tiêu chuẩn để hiển thị bất kỳ lệnh âm thanh nào mà chúng tôi nhận được.
Mã Windows:
Tải toàn bộ dự án tại đây:
leobot.net/audioadjust.zip
sử dụng Hệ thống;
sử dụng System. Collections. Generic;
sử dụng System. ComponentModel;
sử dụng System. Data;
sử dụng System. Drawing;
sử dụng System. Linq;
sử dụng System. Text;
sử dụng System. Windows. Forms;
sử dụng System. Runtime. InteropServices;
sử dụng System. IO. Ports;
sử dụng System. Threading;
không gian tên AudioAdjust
{
public part class Form1: Form
{
[DllImport ("User32. Dll")]
public static extern long SetCursorPos (int x, int y);
[DllImport ("User32. Dll")]
public static extern bool ClientToScreen (IntPtr hWnd, điểm ref POINT);
[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = GọiConvention. StdCall)]
public static extern void mouse_event (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
// Các hành động của chuột
private const int MOUSEEVENTF_LEFTDOWN = 0x02;
private const int MOUSEEVENTF_LEFTUP = 0x04;
private const int MOUSEEVENTF_RIGHTDOWN = 0x08;
private const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport ("user32.dll")]
static extern void keybd_event (byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
Random aRand = new Random ();
public int LastLevel = 0;
public int MaxLevel = 255;
tĩnh SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
public Form1 ()
{
InitializeComponent ();
}
private void Form1_Load (object sender, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (tên);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (object sender, EventArgs e)
{
_serialPort = new SerialPort ();
_serialPort. DataReceive + = new SerialDataReceiveEventHandler (_serialPort_DataReceive);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Đặt bảng COM của bạn
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
khác
{
_serialPort. Open ();
}
// keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // giảm âm lượng
}
void _serialPort_DataReceive (người gửi đối tượng, SerialDataReceiveEventArgs e)
{
cố gắng
{
string fullval = _serialPort. ReadLine ();
string com = fullval [0]. ToString ();
switch (com)
{
trường hợp "a":
{
{
// mức âm thanh
string val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
nghỉ;
}
trường hợp "u":
{
// tăng âm thanh
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // giảm âm lượng
nghỉ;
}
trường hợp "d":
{
// giảm âm thanh
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // giảm âm lượng
nghỉ;
}
các trường hợp :
{
//bỏ qua quảng cáo
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
nghỉ;
}
trường hợp "v":
{
//bỏ qua quảng cáo
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
nghỉ;
}
}
}
chụp lấy
{
}
// ném NotImplementedException () mới;
}
private void MoveCursorSkipAd ()
{
Cursor. Position = new Point (1140, 725);
Cursor. Position = new Point (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Cursor. Position = new Point (1140, 725);
Cursor. Position = new Point (vidX, vidY);
}
public void DoMouseClick ()
{
// Gọi hàm đã nhập với vị trí hiện tại của con trỏ
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);
}
void AddData (cấp int)
{
if (enableAudioChange)
{
if (level> = MaxLevel)
{
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // giảm âm lượng
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // giảm âm lượng
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // giảm âm lượng
}
khác
{
if (cấp độ <MaxLevel - 0)
{
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // giảm âm lượng
}
}
}
SetChart (cấp độ);
currentPoint ++;
}
ủy quyền void SetTextCallback (int val);
private void SetChart (int val)
{
// Yêu cầu InvokeRequired so sánh ID chuỗi của
// gọi luồng tới ID luồng của luồng đang tạo.
// Nếu các luồng này khác nhau, nó trả về true.
if (this.chart1. InvokeRequired)
{
SetTextCallback d = new SetTextCallback (SetChart);
this. Invoke (d, đối tượng mới {val});
}
khác
{
chart1. Series [0]. Points. AddXY (0, val);
if (currentPoint> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (người gửi đối tượng, EventArgs e)
{
cố gắng
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
chụp lấy
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (object sender, EventArgs e)
{
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (người gửi đối tượng, EventArgs e)
{
cố gắng
{
adX = int. Parse (textBoxXpos. Text);
}
chụp lấy
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (người gửi đối tượng, EventArgs e)
{
cố gắng
{
adY = int. Parse (textBoxYpos. Text);
}
chụp lấy
{
textBoxYpos. Text = adY + "";
}
}
private void buttonSkipVideo_Click (object sender, EventArgs e)
{
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (người gửi đối tượng, EventArgs e)
{
cố gắng
{
vidX = int. Parse (textBoxXposVid. Text);
}
chụp lấy
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (người gửi đối tượng, EventArgs e)
{
cố gắng
{
vidY = int. Parse (textBoxYposVid. Text);
}
chụp lấy
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (người gửi đối tượng, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
cấu trúc công khai POINT
{
công khai int x;
công khai int y;
}
}
Đề xuất:
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: 5 bước
Ô tô được điều khiển từ xa - Được điều khiển bằng Bộ điều khiển Xbox 360 không dây: Đây là các hướng dẫn để tạo ô tô được điều khiển từ xa của riêng bạn, được điều khiển bằng bộ điều khiển Xbox 360 không dây
ESP8266 RGB LED STRIP Điều khiển WIFI - NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi - Điều khiển điện thoại thông minh RGB LED STRIP: 4 bước
ESP8266 RGB LED STRIP Điều khiển WIFI | NODEMCU làm điều khiển từ xa hồng ngoại cho dải đèn Led được điều khiển qua Wi-Fi | Điều khiển bằng điện thoại thông minh RGB LED STRIP: Xin chào các bạn trong hướng dẫn này, chúng ta sẽ học cách sử dụng gật đầu hoặc esp8266 làm điều khiển từ xa IR để điều khiển dải LED RGB và Nodemcu sẽ được điều khiển bằng điện thoại thông minh qua wifi. Vì vậy, về cơ bản bạn có thể điều khiển DÂY CHUYỀN LED RGB bằng điện thoại thông minh của mình
Tự làm bộ điều khiển bay điều khiển đa hệ điều khiển Arduino: 7 bước (có hình ảnh)
Tự làm bộ điều khiển máy bay đa năng điều khiển Arduino: Dự án này là tạo ra một bảng logic máy bay không người lái đa năng linh hoạt nhưng tùy chỉnh dựa trên Arduino và Multiwii
Bộ vi điều khiển AVR. Điều chế độ rộng xung. С bộ điều khiển động cơ DC và cường độ ánh sáng LED.: 6 bước
Bộ vi điều khiển AVR. Điều chế độ rộng xung. Bộ điều khiển của Động cơ DC và Cường độ ánh sáng LED: Xin chào mọi người! Điều chế độ rộng xung (PWM) là một kỹ thuật rất phổ biến trong viễn thông và điều khiển điện năng. nó thường được sử dụng để điều khiển công suất cấp cho thiết bị điện, cho dù đó là động cơ, đèn LED, loa, v.v. Về cơ bản, nó là một modu
Điều khiển các thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) với Màn hình nhiệt độ và độ ẩm: 9 bước
Điều khiển thiết bị điện của bạn bằng Điều khiển từ xa Tv (Điều khiển từ xa) Có Hiển thị nhiệt độ và độ ẩm: xin chào, tôi là Abhay và đây là blog đầu tiên của tôi về Các thiết bị điện và hôm nay tôi sẽ hướng dẫn bạn cách điều khiển các thiết bị điện bằng điều khiển từ xa bằng cách xây dựng cái này dự án đơn giản. cảm ơn atl lab đã hỗ trợ và cung cấp tài liệu