Sadržaj:
- Korak 1: Potrebne komponente
- Korak 2: Postavljanje hardvera
- Korak 3: Arduino kod
- Korak 4: Kôd aplikacije za PC (C#.NET)
Video: Arduino Youtube daljinski upravljač za spavanje (Leobot Electronics): 4 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:06
Arduino Youtube daljinski
Ako koristite Youtube za pružanje filma ili muzike za gledanje dok spavate, sigurno bi vas probudio oglas za učitavanje ili različiti nivoi jačine zvuka kada počne novi film. Nepotrebno je reći da ovo može biti prilično iritantno.
Dakle, moje rješenje koje vam ovdje dokazujem da sami izgradite je daljinski upravljač zasnovan na Arduinu za interakciju s Youtubeom na daljinu. Daljinski upravljač je potreban za promjenu glavne jačine zvuka računara, preskakanje oglasa na Youtube -u i preskakanje video zapisa na Youtube -u.
Također, uključen je i senzor razine zvuka koji određuje koliko je zvučnik zapravo glasan, a koji se zatim može koristiti za automatsko snižavanje razine zvuka nakon otkrivanja glasnih prekida, poput oglasa.
Na kraju, dodao sam grafikon u aplikaciju za računare za prikaz otkrivenih nivoa zvuka.
Rješenje se može bolje doraditi, ali za mene ispunjava zadatak.
Korak 1: Potrebne komponente
Sve ove komponente isporučuje Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 DALJINSKI KANAL (315 MHz) + MODUL PRIMAČA (315 MHz)
leobot.net/viewproduct.aspx?id=521
3) MODUL SENZORA MIKROFONSKOG GLASA I DETEKCIJE ZVUKA (KY-037)
leobot.net/viewproduct.aspx?id=217
Softver
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Korak 2: Postavljanje hardvera
1) Spojite 4-kanalni prijemnički modul na Arduino.
4-kanalni pin prijemnika-> Arduino Uno pin
GND-> GND
5V-> 5V
D0-> Digitalno 2
D1-> Digital 3
D2-> Digitalni 4
D3-> Digitalni 5
2) Spojite modul mikrofona KY-037 na Arduino
Mikrofon KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3.3V
A0-> Analogni 3
Korak 3: Arduino kod
Pregled
Logika koju Arduino treba slijediti je sljedeća:
A) Provjerite signalizira li prijemnik bilo kakve pinove.
B) Ovisno o tome na koji IO port se prima signal, naredba će se poslati na PC.
C) Kada završite sa svim radnjama na daljinskom upravljaču, otkrijte nivo zvuka pomoću mikrofona i pošaljite ga na računar.
D) Sve naredbe koje se šalju na računar imaju format koji prvo ima karakter, a zatim vrijednost (ako je vrijednost potrebna).
E) Postoji pet naredbi poslanih s Arduina na PC
a. “U” - Pojačavanje zvuka
b. “D” - Smanjivanje jačine zvuka
c. “S” - Preskoči dodavanje
d. “V” - Preskočite video zapis
e. “A” - Detektovan nivo zvuka iza kojeg slijedi vrijednost
Arduino kod:
Arduino kod preuzmite ovdje:
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 () {{100} {101}
if (digitalRead (in1))
{
Serial.println ("u");
kašnjenje (100);
}
if (digitalRead (in2))
{
Serial.println ("d");
kašnjenje (100);
}
if (digitalRead (in3))
{
Serial.println ("s");
kašnjenje (100);
}
if (digitalRead (in4))
{
Serial.println ("v");
kašnjenje (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ String (readVal));
kašnjenje (50);
}
Korak 4: Kôd aplikacije za PC (C#. NET)
Aplikacija će slušati preko COM (USB) porta i reagirati ovisno o primljenoj naredbi. Najjednostavniji način pojačavanja i smanjivanja zvuka na računaru je korištenje Interrop usluga za direktan razgovor s Windows OS -om. Interrop usluge koristimo i za pomicanje miša na određeno mjesto na ekranu i klik. Kako bismo omogućili različite ekrane i veličine prikaza, dopuštamo korisniku da navede položaj tipki za preskakanje dodavanja i preskakanja videa.
Koristimo standardni.net grafikon za prikaz svih audio naredbi koje primamo.
Windows kôd:
Preuzmite cijeli projekt ovdje:
leobot.net/audioadjust.zip
pomoću System;
pomoću System. Collections. Generic;
pomoću System. ComponentModel;
pomoću System. Data;
pomoću System. Drawing;
pomoću System. Linq;
pomoću System. Text;
pomoću System. Windows. Forms;
pomoću System. Runtime. InteropServices;
pomoću System. IO. Ports;
pomoću System. Threading;
imenski prostor AudioAdjust
{
javna parcijalna klasa Obrazac 1: Obrazac
{
[DllImport ("User32. Dll")]
javni statički vanjski dugi SetCursorPos (int x, int y);
[DllImport ("User32. Dll")]
javni statički vanjski bool ClientToScreen (IntPtr hWnd, ref POINT point);
[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]
javna statička vanjska void mouse_event (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
// Radnje mišem
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")]
statički extern void keybd_event (bajt bVk, bajt bScan, uint dwFlags, int dwExtraInfo);
Random aRand = new Random ();
public int LastLevel = 0;
javni int MaxLevel = 255;
statički SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
javni obrazac1 ()
{
InitializeComponent ();
}
privatna praznina Form1_Load (pošiljalac objekta, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (imena);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (pošiljalac objekta, EventArgs e)
{
_serialPort = novi SerialPort ();
_serialPort. DataReceived += new SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Postavite vašu ploču COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
else
{
_serialPort. Open ();
}
// keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
}
void _serialPort_DataReceived (pošiljatelj objekta, SerialDataReceivedEventArgs e)
{
probaj
{
string fullval = _serialPort. ReadLine ();
string com = fullval [0]. ToString ();
prekidač (com)
{
slučaj "a":
{
{
// audio nivo
string val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
break;
}
slučaj "u":
{
// pojačan zvuk
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // smanjenje glasnoće
break;
}
slučaj "d":
{
// zvuk je isključen
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
break;
}
velika slova "s":
{
// skipAd
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
break;
}
slučaj "v":
{
// skipAd
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
break;
}
}
}
uloviti
{
}
// baca novi NotImplementedException ();
}
privatna praznina MoveCursorSkipAd ()
{
Cursor. Position = nova tačka (1140, 725);
Cursor. Position = nova tačka (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Cursor. Position = nova tačka (1140, 725);
Cursor. Position = nova tačka (vidX, vidY);
}
javna praznina DoMouseClick ()
{
// Pozivamo uvezenu funkciju s trenutnim položajem kursora
uint X = (uint) kursor.pozicija. X;
uint Y = (uint) kursor.pozicija. Y;
mouse_event (MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
mouse_event (MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
void AddData (int nivo)
{
if (enableAudioChange)
{
if (nivo> = MaxLevel)
{
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // smanjenje glasnoće
}
else
{
if (nivo <MaxLevel - 0)
{
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // smanjenje glasnoće
}
}
}
SetChart (nivo);
currentPoint ++;
}
delegate void SetTextCallback (int val);
privatna praznina SetChart (int val)
{
// InvokeRequired required uspoređuje ID niti za
// pozivanje niti na ID niti kreirajuće niti.
// Ako su ove niti različite, vraća true.
if (this.chart1. InvokeRequired)
{
SetTextCallback d = novi SetTextCallback (SetChart);
this. Invoke (d, novi objekt {val});
}
else
{
chart1. Series [0]. Points. AddXY (0, val);
if (trenutna tačka> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
privatna praznina textBoxLevel_TextChanged (pošiljalac objekta, EventArgs e)
{
probaj
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
uloviti
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (pošiljalac objekta, EventArgs e)
{
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (pošiljalac objekta, EventArgs e)
{
probaj
{
adX = int. Parse (textBoxXpos. Text);
}
uloviti
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (pošiljalac objekta, EventArgs e)
{
probaj
{
adY = int. Parse (textBoxYpos. Text);
}
uloviti
{
textBoxYpos. Text = adY + "";
}
}
private void buttonSkipVideo_Click (pošiljalac objekta, EventArgs e)
{
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (pošiljalac objekta, EventArgs e)
{
probaj
{
vidX = int. Parse (textBoxXposVid. Text);
}
uloviti
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (pošiljalac objekta, EventArgs e)
{
probaj
{
vidY = int. Parse (textBoxYposVid. Text);
}
uloviti
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (pošiljalac objekta, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
javna struktura POINT
{
javni int x;
javni int y;
}
}
Preporučuje se:
Klonirajte bilo koji daljinski upravljač s Arduino Nano: 5 koraka
Klonirajte bilo koji daljinski upravljač pomoću Arduino Nano: Klonirajte bilo koji daljinski upravljač pomoću Arduino Nano
Arduino daljinski upravljač zasnovan na pregledniku (linux): 9 koraka (sa slikama)
Arduino daljinski upravljač zasnovan na pregledniku (linux): Imamo djecu. Volim ih do komadića, ali stalno skrivaju daljinski upravljač za satelit i televiziju kad uključe dječje kanale. Nakon što se to svakodnevno događalo nekoliko godina, i nakon što mi je draga žena dozvolila
TV daljinski upravljač postaje RF daljinski -- NRF24L01+ Vodič: 5 koraka (sa slikama)
TV daljinski upravljač postaje RF daljinski || Vodič za NRF24L01+: U ovom projektu ću vam pokazati kako sam koristio popularni nRF24L01+ RF IC za bežično podešavanje svjetline LED trake putem tri beskorisna dugmeta na daljinskom upravljaču televizora. Hajde da počnemo
IRduino: Arduino daljinski upravljač - oponašajte izgubljeni daljinski upravljač: 6 koraka
IRduino: Arduino daljinski upravljač - oponašajte izgubljeni daljinski upravljač: Ako ste ikada izgubili daljinski upravljač za televizor ili DVD uređaj, znate koliko je frustrirajuće morati hodati do, pronaći i koristiti tipke na samom uređaju. Ponekad ti gumbi čak ne nude istu funkcionalnost kao daljinski. Primiti
Daljinski video daljinski upravljač za računare Video player: 6 koraka
Video daljinski upravljač za malu djecu za PC Video player: Izrađujem daljinski upravljač koji se povezuje s računarom putem USB -a. Veliki daljinski upravljač omogućuje mom djetetu odabir i reprodukciju videozapisa na starom računaru. Ovo je relativno jednostavan projekt. Osnovna komponenta je ili USB tastatura ili bežična USB tastatura. Zatim