Obsah:
- Krok 1: Potrebné súčasti
- Krok 2: Nastavenie hardvéru
- Krok 3: Arduino kód
- Krok 4: Kód aplikácie pre počítač (C#.NET)
Video: Arduino Youtube diaľkové ovládanie na spanie (Leobot Electronics): 4 kroky
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:58
Diaľkové ovládanie Arduino Youtube
Ak pomocou služby YouTube poskytnete film alebo hudbu na sledovanie počas spánku, určite by vás pri spustení nového filmu prebudila reklama na načítanie alebo rôzne úrovne hlasitosti. Netreba dodávať, že to môže byť dosť nepríjemné.
Moje riešenie, ktoré vám tu dokážem postaviť, je diaľkové ovládanie na báze Arduina, ktoré umožňuje interakciu s Youtube na diaľku. Diaľkový ovládač je potrebný na zmenu hlavnej hlasitosti môjho počítača, preskakovanie reklám na Youtube a preskakovanie videí na Youtube.
Súčasťou je aj snímač úrovne zvuku, ktorý určuje, aký hlasný reproduktor v skutočnosti je, ktorý je zase možné použiť na automatické zníženie úrovne zvuku pri detekcii hlasných prerušení, ako je reklama.
Nakoniec som do aplikácie pre PC pridal graf na zobrazenie zistených úrovní zvuku.
Riešenie môže byť lepšie upresnené, ale pre mňa úlohu plní.
Krok 1: Potrebné súčasti
Všetky tieto súčiastky dodáva spoločnosť Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 KANÁLOVÝ DIAĽKOVÝ (315 MHz) + MODUL PRIJÍMAČA (315 MHz)
leobot.net/viewproduct.aspx?id=521
3) MODUL SENZORU DETEKCIE HLASU A ZVUKU MIKROFÓNU (KY-037)
leobot.net/viewproduct.aspx?id=217
Softvér
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Krok 2: Nastavenie hardvéru
1) Pripojte 4-kanálový modul prijímača k Arduinu.
Pin 4-kanálového prijímača-> Pin Arduino Uno
GND-> GND
5V-> 5V
D0-> Digitálne 2
D1-> Digitálne 3
D2-> Digitálny 4
D3-> Digitálne 5
2) Pripojte modul mikrofónu KY-037 k Arduinu
Mikrofón KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3,3V
A0-> Analógový 3
Krok 3: Arduino kód
Prehľad
Logika, ktorou sa Arduino musí riadiť, je nasledovná:
A) Skontrolujte, či prijímač signalizuje nejaké piny.
B) V závislosti od toho, na ktorom IO porte je signál prijatý, je príkaz odoslaný do počítača.
C) Po dokončení všetkých akcií diaľkového ovládania zistite pomocou mikrofónu úroveň zvuku a odošlite ju do počítača.
D) Všetky príkazy odoslané do PC majú formát prvého znaku a potom hodnoty (ak je hodnota potrebná).
E) Z Arduina je do PC odoslaných päť príkazov
a. „U“- zvýšenie hlasitosti
b. „D“- zníženie hlasitosti
c. „S“- Preskočiť pridanie
d. „V“- preskočiť video
e. „A“- Zistená úroveň zvuku, za ktorou nasleduje hodnota
Arduino kód:
Stiahnite si kód Arduino tu:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
neplatné nastavenie () {
Serial.begin (9600);
pinMode (A3, VSTUP);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
prázdna slučka () {
if (digitalRead (in1))
{
Serial.println ("u");
oneskorenie (100);
}
if (digitalRead (in2))
{
Serial.println ("d");
oneskorenie (100);
}
if (digitalRead (in3))
{
Serial.println ("s");
oneskorenie (100);
}
if (digitalRead (in4))
{
Serial.println ("v");
oneskorenie (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ String (readVal));
oneskorenie (50);
}
Krok 4: Kód aplikácie pre počítač (C#. NET)
Aplikácia bude počúvať cez port COM (USB) a bude reagovať podľa toho, aký príkaz dostane. Najjednoduchší spôsob, ako zapnúť a vypnúť zvuk v počítači, je použiť služby Interrop na priamy rozhovor s operačným systémom Windows. Služby Interrop používame aj na presun myši na konkrétne miesto na obrazovke a kliknutie. Aby sme umožnili rôzne veľkosti obrazoviek a zobrazení, umožňujeme používateľovi určiť polohu tlačidiel na pridanie a preskočenie videa.
Na zobrazenie všetkých prijatých zvukových príkazov používame štandardný graf.net.
Windows kód:
Stiahnite si celý projekt tu:
leobot.net/audioadjust.zip
pomocou systému;
pomocou System. Collections. Generic;
pomocou System. ComponentModel;
pomocou System. Data;
pomocou System. Drawing;
pomocou System. Linq;
pomocou System. Text;
pomocou System. Windows. Forms;
pomocou System. Runtime. InteropServices;
pomocou System. IO. Ports;
pomocou System. Threading;
priestor názvov AudioAdjust
{
verejná čiastková trieda Form1: Form
{
[DllImport ("User32. Dll")]
public static extern long SetCursorPos (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);
// akcie myši
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;
statický SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
verejný formulár1 ()
{
InitializeComponent ();
}
private void Form1_Load (odosielateľ objektu, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (názvy);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (odosielateľ objektu, EventArgs e)
{
_serialPort = nový SerialPort ();
_serialPort. DataReceived += new SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Nastavenie dosky COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
inak
{
_serialPort. Open ();
}
// keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // zníženie hlasitosti
}
void _serialPort_DataReceived (odosielateľ objektu, SerialDataReceivedEventArgs e)
{
skúsiť
{
reťazec fullval = _serialPort. ReadLine ();
reťazec com = fullval [0]. ToString ();
prepínač (com)
{
prípad "a":
{
{
// úroveň zvuku
reťazec val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
prestávka;
}
prípad „u“:
{
// zvuk hore
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // zníženie hlasitosti
prestávka;
}
prípad „d“:
{
// zvuk dole
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // zníženie hlasitosti
prestávka;
}
prípad "s":
{
//preskočiť reklamu
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
prestávka;
}
prípad "v":
{
//preskočiť reklamu
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
prestávka;
}
}
}
chytiť
{
}
// hod nový NotImplementedException ();
}
súkromné neplatné MoveCursorSkipAd ()
{
Cursor. Position = nový bod (1140, 725);
Cursor. Position = nový bod (adX, adY);
}
súkromné neplatné MoveCursorSkipVideo ()
{
Cursor. Position = nový bod (1140, 725);
Cursor. Position = nový bod (vidX, vidY);
}
verejná prázdnota DoMouseClick ()
{
// Zavolajte importovanú funkciu s aktuálnou pozíciou kurzora
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);
}
zrušiť AddData (vnútorná úroveň)
{
if (enableAudioChange)
{
if (level> = MaxLevel)
{
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // zníženie hlasitosti
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // zníženie hlasitosti
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // zníženie hlasitosti
}
inak
{
if (úroveň <MaxLevel - 0)
{
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // zníženie hlasitosti
}
}
}
SetChart (úroveň);
currentPoint ++;
}
delegát neplatný SetTextCallback (int val);
súkromný prázdny SetChart (int val)
{
// Povinný argument InvokeRequired porovnáva ID vlákna súboru
// volanie vlákna do ID vlákna vytvárajúceho sa vlákna.
// Ak sú tieto vlákna odlišné, vráti hodnotu true.
if (this.chart1. InvokeRequired)
{
SetTextCallback d = nový SetTextCallback (SetChart);
this. Invoke (d, nový objekt {val});
}
inak
{
chart1. Séria [0]. Points. AddXY (0, val);
ak (aktuálny bod> = 10)
{
chart1. Séria [0]. Points. RemoveAt (0);
}
}
}
private neplatný textBoxLevel_TextChanged (odosielateľ objektu, EventArgs e)
{
skúsiť
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
chytiť
{
textBoxLevel. Text = MaxLevel + "";
}
}
tlačidlo súkromnej neplatnostiTestSkip_Click (odosielateľ objektu, EventArgs e)
{
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
}
private neplatný textBoxXpos_TextChanged (odosielateľ objektu, EventArgs e)
{
skúsiť
{
adX = int. Parse (textBoxXpos. Text);
}
chytiť
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (odosielateľ objektu, EventArgs e)
{
skúsiť
{
adY = int. Parse (textBoxYpos. Text);
}
chytiť
{
textBoxYpos. Text = adY + "";
}
}
tlačidlo private voidSkipVideo_Click (odosielateľ objektu, EventArgs e)
{
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
}
private neplatné textBoxXposVid_TextChanged (odosielateľ objektu, EventArgs e)
{
skúsiť
{
vidX = int. Parse (textBoxXposVid. Text);
}
chytiť
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (odosielateľ objektu, EventArgs e)
{
skúsiť
{
vidY = int. Parse (textBoxYposVid. Text);
}
chytiť
{
textBoxYposVid. Text = vidY + "";
}
}
private neplatné checkBoxEnable_CheckedChanged (odosielateľ objektu, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
verejná štruktúra BOD
{
public int x;
verejné int y;
}
}
Odporúča:
IR senzor a diaľkové ovládanie Arduino s LCD: 4 kroky
IR senzor a diaľkové ovládanie Arduino s LCD: Sme skupina študentov UQD10801 (Robocon1) z Universiti Tun Hussein Onn Malajsie (UTHM) V tomto návode sa naučíte, ako zobrazovať tlačidlá na IR diaľkovom ovládači na displeji z tekutých kryštálov (LCD ) pomocou Arduino Uno R3. Tento návod bude
Spoľahlivé, bezpečné, prispôsobiteľné diaľkové ovládanie SMS (Arduino/pfodApp) - nevyžaduje sa žiadne kódovanie: 4 kroky
Spoľahlivé, bezpečné a prispôsobiteľné diaľkové ovládanie SMS (Arduino/pfodApp) - nie je potrebné žiadne kódovanie: Aktualizácia 6. júla 2018: Verzia tohto projektu 3G/2G pomocou SIM5320 je k dispozícii tu Aktualizácia: 19. mája 2015: Použite knižnicu pfodParser verzie 2.5 alebo vyššie. Rieši hlásený problém, keď sa štítu neposkytuje dostatok času na pripojenie k
Robotics Rock Crawler Arduino na diaľkové ovládanie: 4 kroky
Diaľkové ovládanie Rock Crawler Arduino na diaľkové ovládanie: Toto vyzerá a je veľmi barebone. Odporúčam každému, kto chce urobiť tento projekt, aby zvážil nejaký spôsob zakrytia elektroniky na ochranu pred vodou a nečistotami
ESP8266 RGB LED STRIP WIFI ovládanie - NODEMCU Ako IR diaľkové ovládanie pre LED pás ovládané cez Wifi - Ovládanie smartfónu RGB LED STRIP: 4 kroky
ESP8266 RGB LED STRIP WIFI ovládanie | NODEMCU Ako IR diaľkové ovládanie pre LED pás ovládané cez Wifi | Ovládanie smartfónu RGB LED STRIP: Ahoj, v tomto návode sa naučíme, ako používať nodemcu alebo esp8266 ako IR diaľkové ovládanie na ovládanie RGB LED pásu a Nodemcu budete ovládať smartfónom cez wifi. V zásade teda môžete RGB LED STRIP ovládať pomocou svojho smartfónu
Diaľkové ovládanie pre PC Youtube a Netflix: 9 krokov (s obrázkami)
Diaľkové ovládanie pre PC Youtube a Netflix: Mám stolný počítač meter vzdialený od postele, takže prirodzene rád pozerám youtube a filmy z pohodlia postele. Zakaždým, keď si ľahnem, však zistím, že potrebujem upraviť hlasitosť, z nejakých dôvodov pozastaviť video alebo jednoducho video úplne preskočiť