Innholdsfortegnelse:
- Trinn 1: Komponenter som trengs
- Trinn 2: Maskinvareoppsett
- Trinn 3: Arduino -kode
- Trinn 4: PC -appkode (C#.NET)
![Arduino Youtube fjernkontroll for å sove (Leobot Electronics): 4 trinn Arduino Youtube fjernkontroll for å sove (Leobot Electronics): 4 trinn](https://i.howwhatproduce.com/images/001/image-1696-35-j.webp)
Video: Arduino Youtube fjernkontroll for å sove (Leobot Electronics): 4 trinn
![Video: Arduino Youtube fjernkontroll for å sove (Leobot Electronics): 4 trinn Video: Arduino Youtube fjernkontroll for å sove (Leobot Electronics): 4 trinn](https://i.ytimg.com/vi/fsLxbRaqsaE/hqdefault.jpg)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:22
![Arduino Youtube fjernkontroll for å sove (Leobot Electronics) Arduino Youtube fjernkontroll for å sove (Leobot Electronics)](https://i.howwhatproduce.com/images/001/image-1696-36-j.webp)
Arduino Youtube Remote
Hvis du bruker Youtube til å gi deg en film eller musikk å se mens du sover, ville du sikkert ha blitt vekket av enten en lasteannonse eller forskjellige volumnivåer når en ny film starter. Unødvendig å si at dette kan være ganske irriterende.
Så min løsning jeg beviser for deg her å bygge for deg selv er en Arduino-basert fjernkontroll for å samhandle med Youtube på avstand. Fjernkontrollen er nødvendig for å endre PC -ens hovedlydvolum, hoppe over annonser på Youtube og hoppe over videoer på Youtube.
Det følger også med en lydnivåsensor for å bestemme hvor høyt høyttaleren faktisk er, som igjen kan brukes til automatisk å senke lydnivået ved å oppdage høye avbrudd, for eksempel en annonse.
Til slutt la jeg til et diagram på PC -appen for å vise de oppdagede lydnivåene.
Løsningen kan forbedres bedre, men for meg utfører den oppgaven.
Trinn 1: Komponenter som trengs
Alle disse komponentene er levert av Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 KANAL FJERN (315MHZ) + MOTTAKER MODUL (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) MIKROFONSTEMME OG LYDDETEKSJONSENSOR MODUL (KY-037)
leobot.net/viewproduct.aspx?id=217
Programvare
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Trinn 2: Maskinvareoppsett
1) Koble 4-kanals mottakermodulen til Arduino.
4-kanals mottakerpinne-> Arduino Uno-pinne
GND-> GND
5V-> 5V
D0-> Digital 2
D1-> Digital 3
D2-> Digital 4
D3-> Digital 5
2) Koble mikrofon KY-037-modulen til Arduino
Mikrofon KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3,3V
A0-> Analog 3
Trinn 3: Arduino -kode
Oversikt
Logikken som Arduino må følge er som følger:
A) Sjekk om mottakeren signaliserer noen pinner.
B) Avhengig av hvilken IO -port signalet mottas på, er hvilken kommando som skal sendes til PC -en.
C) Når du er ferdig med alle fjernkontrollhandlinger, oppdager du lydnivået med mikrofonen og sender det til PCen.
D) Alle kommandoer som sendes til PC -en har et format for først å ha et tegn og deretter en verdi (hvis en verdi er nødvendig).
E) Det er fem kommandoer sendt fra Arduino til PCen
en. "U" - Volum opp
b. “D” - Volum ned
c. “S” - Hopp over Legg til
d. “V” - Hopp over video
e. "A" - Lydnivå oppdaget etterfulgt av verdien
Arduino -koden:
Last ned Arduino -koden her:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
ugyldig oppsett () {
Serial.begin (9600);
pinMode (A3, INNGANG);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
void loop () {
hvis (digitalRead (in1))
{
Serial.println ("u");
forsinkelse (100);
}
hvis (digitalRead (in2))
{
Serial.println ("d");
forsinkelse (100);
}
hvis (digitalRead (in3))
{
Serial.println ("s");
forsinkelse (100);
}
hvis (digitalRead (in4))
{
Serial.println ("v");
forsinkelse (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ String (readVal));
forsinkelse (50);
}
Trinn 4: PC -appkode (C#. NET)
![PC -appkode (C#. NET) PC -appkode (C#. NET)](https://i.howwhatproduce.com/images/001/image-1696-37-j.webp)
Appen vil lytte over COM (USB) -porten og reagere avhengig av hvilken kommando som mottas. Den enkleste måten å skru lyden opp og ned på PC -en er å bruke Interrop -tjenester for å snakke direkte til Windows OS. Vi bruker også Interrop -tjenestene til å flytte musen til en bestemt posisjon på skjermen og klikke. For å tillate forskjellige skjermer og visningsstørrelser, lar vi brukeren spesifisere plasseringen til knappene for hopp over og hopp over video.
Vi bruker et standard.net -diagram for å vise alle lydkommandoer vi mottar.
Windows -kode:
Last ned hele prosjektet her:
leobot.net/audioadjust.zip
bruker System;
bruker System. Collections. Generic;
bruker System. ComponentModel;
bruker System. Data;
bruker System. Drawing;
bruker System. Linq;
bruker System. Text;
bruker System. Windows. Forms;
bruker System. Runtime. InteropServices;
bruker System. IO. Ports;
bruker System. Threading;
navneplass AudioAdjust
{
offentlig delklasse Form1: Skjema
{
[DllImport ("User32. Dll")]
offentlig statisk ekstern lang SetCursorPos (int x, int y);
[DllImport ("User32. Dll")]
offentlig statisk ekstern 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);
// Mushandlinger
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")]
statisk eksternt tomrom keybd_event (byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
Tilfeldig aRand = ny Tilfeldig ();
public int LastLevel = 0;
offentlig int MaxLevel = 255;
statisk SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
offentlig skjema1 ()
{
InitializeComponent ();
}
private void Form1_Load (objektavsender, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (navn);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (objektavsender, EventArgs e)
{
_serialPort = ny SerialPort ();
_serialPort. DataReceived += new SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Still inn brettets COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
ellers
{
_serialPort. Open ();
}
// keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // redusere volumet
}
void _serialPort_DataReceived (objektavsender, SerialDataReceivedEventArgs e)
{
prøve
{
string fullval = _serialPort. ReadLine ();
string com = fullval [0]. ToString ();
bytte (com)
{
tilfelle "a":
{
{
// lydnivå
string val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
gå i stykker;
}
tilfelle "u":
{
// lyd opp
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // redusere volumet
gå i stykker;
}
tilfelle "d":
{
// lyd ned
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // redusere volumet
gå i stykker;
}
saker :
{
// skipAd
MoveCursorSkipAd ();
Tråd. Sovende (10);
DoMouseClick ();
gå i stykker;
}
sak "v":
{
// skipAd
MoveCursorSkipVideo ();
Tråd. Sovende (10);
DoMouseClick ();
gå i stykker;
}
}
}
å fange
{
}
// kast ny NotImplementedException ();
}
private void MoveCursorSkipAd ()
{
Markør. Posisjon = nytt punkt (1140, 725);
Markør. Posisjon = nytt punkt (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Markør. Posisjon = nytt punkt (1140, 725);
Markør. Posisjon = nytt punkt (vidX, vidY);
}
offentlig tomrom DoMouseClick ()
{
// Ring den importerte funksjonen med markørens nåværende posisjon
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 (int level)
{
hvis (enableAudioChange)
{
hvis (nivå> = Maks. nivå)
{
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // redusere volumet
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // redusere volumet
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // redusere volumet
}
ellers
{
hvis (nivå <Maks. nivå - 0)
{
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // redusere volumet
}
}
}
SetChart (nivå);
currentPoint ++;
}
delegere void SetTextCallback (int val);
private void SetChart (int val)
{
// InvokeRequired required sammenligner tråd -ID -en til
// kaller tråden til tråd -ID -en til den opprettende tråden.
// Hvis disse trådene er forskjellige, returneres det sant.
if (this.chart1. InvokeRequired)
{
SetTextCallback d = ny SetTextCallback (SetChart);
this. Invoke (d, nytt objekt {val});
}
ellers
{
chart1. Series [0]. Points. AddXY (0, val);
hvis (currentPoint> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (objektavsender, EventArgs e)
{
prøve
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
å fange
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (objektavsender, EventArgs e)
{
MoveCursorSkipAd ();
Tråd. Sovende (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (avsender av objekt, EventArgs e)
{
prøve
{
adX = int. Parse (textBoxXpos. Text);
}
å fange
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (objektavsender, EventArgs e)
{
prøve
{
adY = int. Parse (textBoxYpos. Text);
}
å fange
{
textBoxYpos. Text = adY + "";
}
}
private void buttonSkipVideo_Click (objektavsender, EventArgs e)
{
MoveCursorSkipVideo ();
Tråd. Sovende (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (objektavsender, EventArgs e)
{
prøve
{
vidX = int. Parse (textBoxXposVid. Text);
}
å fange
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (avsender av objekt, EventArgs e)
{
prøve
{
vidY = int. Parse (textBoxYposVid. Text);
}
å fange
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (avsender av objekt, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
offentlig struktur POINT
{
offentlig int x;
offentlig int y;
}
}
Anbefalt:
Klon hvilken som helst fjernkontroll med Arduino Nano: 5 trinn
![Klon hvilken som helst fjernkontroll med Arduino Nano: 5 trinn Klon hvilken som helst fjernkontroll med Arduino Nano: 5 trinn](https://i.howwhatproduce.com/images/001/image-2365-j.webp)
Klon hvilken som helst fjernkontroll med Arduino Nano: Klon hvilken som helst fjernkontroll med Arduino Nano
Arduino nettleserbasert fjernkontroll (linux): 9 trinn (med bilder)
![Arduino nettleserbasert fjernkontroll (linux): 9 trinn (med bilder) Arduino nettleserbasert fjernkontroll (linux): 9 trinn (med bilder)](https://i.howwhatproduce.com/images/002/image-4365-j.webp)
Arduino nettleserbasert fjernkontroll (linux): Vi har barn. Jeg elsker dem i stykker, men de gjemmer fjernkontrollen for satellitt og TV når de setter på barnekanalene. Etter at dette skjedde daglig i flere år, og etter at min kjære kone lot meg få en
IRduino: Arduino fjernkontroll - etterlign en tapt fjernkontroll: 6 trinn
![IRduino: Arduino fjernkontroll - etterlign en tapt fjernkontroll: 6 trinn IRduino: Arduino fjernkontroll - etterlign en tapt fjernkontroll: 6 trinn](https://i.howwhatproduce.com/images/012/image-33548-j.webp)
IRduino: Arduino fjernkontroll - Imitate a Lost Remote: Hvis du noen gang har mistet fjernkontrollen for TV -en eller DVD -spilleren, vet du hvor frustrerende det er å måtte gå til, finne og bruke knappene på selve enheten. Noen ganger tilbyr disse knappene ikke engang den samme funksjonaliteten som fjernkontrollen. Motta
Trådløs fjernkontroll ved bruk av 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sendermottaker for quadcopter - Rc Helikopter - RC -fly som bruker Arduino: 5 trinn (med bilder)
![Trådløs fjernkontroll ved bruk av 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sendermottaker for quadcopter - Rc Helikopter - RC -fly som bruker Arduino: 5 trinn (med bilder) Trådløs fjernkontroll ved bruk av 2,4 GHz NRF24L01 -modul med Arduino - Nrf24l01 4 -kanals / 6 -kanals sendermottaker for quadcopter - Rc Helikopter - RC -fly som bruker Arduino: 5 trinn (med bilder)](https://i.howwhatproduce.com/images/003/image-7044-j.webp)
Trådløs fjernkontroll ved bruk av 2,4 GHz NRF24L01 -modul med Arduino | Nrf24l01 4 -kanals / 6 -kanals sendermottaker for quadcopter | Rc Helikopter | Rc -fly ved bruk av Arduino: For å betjene en Rc -bil | Quadcopter | Drone | RC -fly | RC -båt, vi trenger alltid en mottaker og sender, anta at for RC QUADCOPTER trenger vi en 6 -kanals sender og mottaker, og den typen TX og RX er for kostbar, så vi lager en på vår
Fjernkontroll for PC Youtube og Netflix: 9 trinn (med bilder)
![Fjernkontroll for PC Youtube og Netflix: 9 trinn (med bilder) Fjernkontroll for PC Youtube og Netflix: 9 trinn (med bilder)](https://i.howwhatproduce.com/images/002/image-5131-55-j.webp)
Fjernkontroll for PC Youtube og Netflix: Jeg har min stasjonære PC -måler unna sengen min, så naturligvis liker jeg å se youtube og filmer fra sengen min. Hver gang jeg legger meg, synes jeg at jeg må justere volumet, pause videoen av noen grunner eller bare hoppe over videoen helt