Indholdsfortegnelse:
- Trin 1: Nødvendige komponenter
- Trin 2: Hardwareopsætning
- Trin 3: Arduino -kode
- Trin 4: PC -appkode (C#.NET)
Video: Arduino Youtube fjernbetjening til at sove (Leobot Electronics): 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:27
Arduino Youtube fjernbetjening
Hvis du bruger Youtube til at give dig en film eller musik til at se, mens du sover, ville du helt sikkert være blevet vækket af enten en belastningsannonce eller forskellige lydstyrkeniveauer, når en ny film starter. Det er overflødigt at sige, at dette kan være ret irriterende.
Så min løsning, jeg beviser for dig her at bygge til dig selv, er en Arduino-baseret fjernbetjening til at interagere med Youtube på afstand. Fjernbetjeningen er påkrævet for at ændre min pc's hovedlydstyrke, springe over annoncer på Youtube og springe videoer over på Youtube.
Der medfølger også en lydnivåsensor til at bestemme, hvor højttaleren faktisk er, som igen kan bruges til automatisk at sænke lydniveauet ved at detektere høje afbrydelser, f.eks. En annonce.
Endelig tilføjede jeg et diagram på pc -appen for at vise de registrerede lydniveauer.
Løsningen kan forbedres bedre, men for mig udfører den opgaven.
Trin 1: Nødvendige komponenter
Alle disse komponenter leveres af Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 KANAL REMOTE (315MHz) + MODTAGER MODUL (315MHz)
leobot.net/viewproduct.aspx?id=521
3) MIKROFONSTEM & LYDDETEKTIONSENSOR MODUL (KY-037)
leobot.net/viewproduct.aspx?id=217
Software
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Trin 2: Hardwareopsætning
1) Tilslut 4-kanals modtager modulet til Arduino.
4-kanals modtager Pin-> Arduino Uno Pin
GND-> GND
5V-> 5V
D0-> Digital 2
D1-> Digital 3
D2-> Digital 4
D3-> Digital 5
2) Tilslut mikrofon KY-037-modulet til Arduino
Mikrofon KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3,3V
A0-> Analog 3
Trin 3: Arduino -kode
Oversigt
Logikken, som Arduino skal følge, er som følger:
A) Kontroller, om modtageren signalerer nogen stifter.
B) Hvilken kommando, der sendes til pc'en, afhængigt af hvilken IO -port signalet modtages på, er.
C) Når det er gjort med alle fjernbetjeningshandlinger, skal du registrere lydniveauet med mikrofonen og sende det til pc'en.
D) Alle kommandoer, der sendes til pc'en, har et format om først at have et tegn og derefter en værdi (hvis en værdi er nødvendig).
E) Der er fem kommandoer sendt fra Arduino til pc'en
en. “U” - Lydstyrke op
b. “D” - Lydstyrke ned
c. “S” - Spring Tilføj
d. “V” - Spring video over
e. “A” - Lydniveau registreret efterfulgt af værdien
Arduino -koden:
Download Arduino -kode her:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
ugyldig opsætning () {
Serial.begin (9600);
pinMode (A3, INPUT);
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);
}
Trin 4: PC -appkode (C#. NET)
Appen lytter over COM (USB) porten og reagerer afhængigt af hvilken kommando der modtages. Den enkleste måde at skrue op og ned for lyden på pc'en er at bruge Interrop -tjenester til direkte at tale til Windows OS. Vi bruger også Interrop -tjenesterne til at flytte musen til en bestemt position på skærmen og klikke. For at give mulighed for forskellige skærme og visningsstørrelser, tillader vi brugeren at angive placeringen af knapperne til tilføjelse og overspringning af videoer.
Vi bruger et standard.net -diagram til at vise alle lydkommandoer, vi modtager.
Windows -kode:
Hent hele projektet her:
leobot.net/audioadjust.zip
ved hjælp af System;
ved hjælp af System. Collections. Generic;
ved hjælp af System. ComponentModel;
ved hjælp af System. Data;
ved hjælp af System. Drawing;
ved hjælp af System. Linq;
ved hjælp af System. Text;
ved hjælp af System. Windows. Forms;
ved hjælp af System. Runtime. InteropServices;
ved hjælp af System. IO. Ports;
ved hjælp af System. Threading;
navneområde AudioAdjust
{
offentlig delklasse Form1: Form
{
[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);
// Mus handlinger
privat const int MOUSEEVENTF_LEFTDOWN = 0x02;
privat const int MOUSEEVENTF_LEFTUP = 0x04;
privat const int MOUSEEVENTF_RIGHTDOWN = 0x08;
privat const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport ("user32.dll")]
statisk eksternt tomrum keybd_event (byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
Tilfældig aRand = ny Random ();
public int LastLevel = 0;
public int MaxLevel = 255;
statisk SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
offentlig form1 ()
{
InitializeComponent ();
}
private void Form1_Load (objekt afsender, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (navne);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
privat tomrumsknap1_Klik (objektafsender, EventArgs e)
{
_serialPort = ny SerialPort ();
_serialPort. DataReceived += new SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Indstil din board -COM
_serialPort. BaudRate = 9600;
hvis (_serialPort. IsOpen) _serialPort. Close ();
andet
{
_serialPort. Open ();
}
// keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // reducer lydstyrken
}
void _serialPort_DataReceived (objekt afsender, SerialDataReceivedEventArgs e)
{
prøve
{
string fullval = _serialPort. ReadLine ();
string com = fullval [0]. ToString ();
switch (com)
{
tilfælde "a":
{
{
// lydniveau
string val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
pause;
}
sag "u":
{
// lyd op
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // reducer lydstyrken
pause;
}
sag "d":
{
// lyd ned
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // reducer lydstyrken
pause;
}
sag "s":
{
//Spring annoncen over
MoveCursorSkipAd ();
Tråd. Sovende (10);
DoMouseClick ();
pause;
}
sag "v":
{
//Spring annoncen over
MoveCursorSkipVideo ();
Tråd. Sovende (10);
DoMouseClick ();
pause;
}
}
}
fangst
{
}
// smid ny NotImplementedException ();
}
private void MoveCursorSkipAd ()
{
Markør. Position = nyt punkt (1140, 725);
Cursor. Position = nyt punkt (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Cursor. Position = new Point (1140, 725);
Cursor. Position = new Point (vidX, vidY);
}
offentligt tomrum DoMouseClick ()
{
// Ring til den importerede funktion med markørens aktuelle position
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);
}
ugid AddData (int level)
{
hvis (enableAudioChange)
{
hvis (niveau> = MaxLevel)
{
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // reducer lydstyrken
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // reducer lydstyrken
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // reducer lydstyrken
}
andet
{
hvis (niveau <MaxLevel - 0)
{
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // reducer lydstyrken
}
}
}
SetChart (niveau);
currentPoint ++;
}
delegere void SetTextCallback (int val);
private void SetChart (int val)
{
// InvokeRequired required sammenligner tråd -id'et for
// kalder tråd til tråd -id'et for den oprettende tråd.
// Hvis disse tråde er forskellige, returneres det sandt.
hvis (this.chart1. InvokeRequired)
{
SetTextCallback d = ny SetTextCallback (SetChart);
this. Invoke (d, nyt objekt {val});
}
andet
{
chart1. Series [0]. Points. AddXY (0, val);
hvis (currentPoint> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (objekt afsender, EventArgs e)
{
prøve
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
fangst
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (objekt afsender, EventArgs e)
{
MoveCursorSkipAd ();
Tråd. Sovende (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (objekt afsender, EventArgs e)
{
prøve
{
adX = int. Parse (textBoxXpos. Text);
}
fangst
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (objekt afsender, EventArgs e)
{
prøve
{
adY = int. Parse (textBoxYpos. Text);
}
fangst
{
textBoxYpos. Text = adY + "";
}
}
private void buttonSkipVideo_Click (objekt afsender, EventArgs e)
{
MoveCursorSkipVideo ();
Tråd. Sovende (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (objekt afsender, EventArgs e)
{
prøve
{
vidX = int. Parse (textBoxXposVid. Text);
}
fangst
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (objekt afsender, EventArgs e)
{
prøve
{
vidY = int. Parse (textBoxYposVid. Text);
}
fangst
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (objekt afsender, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
offentlig struktur POINT
{
offentlig int x;
offentlig int y;
}
}
Anbefalede:
TV -fjernbetjening Bliver en RF -fjernbetjening -- NRF24L01+ Tutorial: 5 trin (med billeder)
TV -fjernbetjening Bliver en RF -fjernbetjening || NRF24L01+ Tutorial: I dette projekt vil jeg vise dig, hvordan jeg brugte den populære nRF24L01+ RF IC til at justere lysstyrken på en LED -strimmel trådløst gennem tre ubrugelige knapper på en fjernsyns fjernbetjening. Lad os komme igang
IRduino: Arduino fjernbetjening - Efterlign en tabt fjernbetjening: 6 trin
IRduino: Arduino fjernbetjening - Efterlign en tabt fjernbetjening: Hvis du nogensinde har mistet fjernbetjeningen til dit tv eller din dvd -afspiller, ved du, hvor frustrerende det er at skulle gå til, finde og bruge knapperne på selve enheden. Nogle gange tilbyder disse knapper ikke engang den samme funktionalitet som fjernbetjeningen. Modtag
Konverter din IR -fjernbetjening til RF -fjernbetjening: 9 trin (med billeder)
Konverter din IR -fjernbetjening til RF -fjernbetjening: I dagens Instructable viser jeg dig, hvordan du kan bruge et generisk RF -modul uden en mikrokontroller, som i sidste ende vil føre os til at bygge et projekt, hvor du kan konvertere en IR -fjernbetjening af enhver enhed til en RF Fjern. Den største fordel ved at konvertere en
Fjernbetjening til pc Youtube og Netflix: 9 trin (med billeder)
Fjernbetjening til pc Youtube og Netflix: Jeg har min stationære pc -måler væk fra min seng, så naturligvis kan jeg lide at se youtube og film fra min sengs komfort. Hver gang jeg lægger mig, synes jeg imidlertid, at jeg er nødt til at justere lydstyrken, pause videoen af nogle årsager eller simpelthen springe videoen helt over
Styr dine elektriske apparater med din tv -fjernbetjening (ir -fjernbetjening) med temperatur- og luftfugtighedsvisning: 9 trin
Styr dig elektriske apparater med din tv -fjernbetjening (ir -fjernbetjening) med temperatur- og luftfugtighedsdisplay: hej, jeg er Abhay, og det er min første blog om Instructables, og i dag vil jeg vise dig, hvordan du styrer dine elektriske apparater med din fjernsyns fjernbetjening ved at bygge denne simpelt projekt. tak til atl lab for støtte og levering af materialet