Obsah:
- Krok 1: Potřebné součásti
- Krok 2: Nastavení hardwaru
- Krok 3: Arduino kód
- Krok 4: Kód aplikace pro PC (C#.NET)
Video: Arduino Youtube dálkové ovládání na spaní (Leobot Electronics): 4 kroky
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:21
Arduino Youtube Remote
Pokud používáte Youtube, aby vám poskytl film nebo hudbu ke sledování, když spíte, určitě by vás probudila reklama na načítání nebo různé úrovně hlasitosti, když začne nový film. Není třeba říkat, že to může být docela nepříjemné.
Moje řešení, které vám zde ukážu, abyste si ho mohli postavit sami, je dálkové ovládání založené na Arduinu pro interakci s Youtube na dálku. Dálkový ovladač je povinen změnit hlavní hlasitost mého počítače, přeskakovat reklamy na Youtube a přeskakovat videa na Youtube.
Součástí je také snímač úrovně zvuku, který určuje, jak hlasitý reproduktor ve skutečnosti je, což lze zase použít k automatickému snížení úrovně zvuku při detekci hlasitých přerušení, jako je reklama.
Nakonec jsem do aplikace pro PC přidal graf pro zobrazení zjištěných úrovní zvuku.
Řešení lze lépe upřesnit, ale pro mě splňuje úkol.
Krok 1: Potřebné součásti
Všechny tyto komponenty dodává společnost Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 KANÁLOVÉ DÁLKOVÉ (315 MHz) + MODUL PŘIJÍMAČE (315 MHz)
leobot.net/viewproduct.aspx?id=521
3) MODUL SENZORU DETEKCE HLASU A ZVUKU MIKROFONU (KY-037)
leobot.net/viewproduct.aspx?id=217
Software
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Krok 2: Nastavení hardwaru
1) Připojte modul 4kanálového přijímače k Arduinu.
4kanálový přijímač Pin-> Pin Arduino Uno
GND-> GND
5V-> 5V
D0-> Digitální 2
D1-> Digitální 3
D2-> Digitální 4
D3-> Digitální 5
2) Připojte modul mikrofonu KY-037 k Arduinu
Mikrofon KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3,3V
A0-> Analogový 3
Krok 3: Arduino kód
Přehled
Logika, kterou musí Arduino dodržovat, je následující:
A) Zkontrolujte, zda přijímač signalizuje nějaké piny.
B) V závislosti na tom, na kterém IO portu je signál přijímán, je jaký příkaz odeslán do PC.
C) Po dokončení všech akcí dálkového ovládání zjistěte pomocí mikrofonu úroveň zvuku a odešlete ji do počítače.
D) Všechny příkazy odeslané do PC mají formát nejprve se znakem, pak s hodnotou (pokud je hodnota potřebná).
E) Z Arduina je do PC odesláno pět příkazů
A. „U“- zvýšení hlasitosti
b. „D“- Snížení hlasitosti
C. „S“- Přeskočit přidání
d. „V“- Přeskočit video
E. „A“- Zjištěna úroveň zvuku následovaná hodnotou
Arduino kód:
Stáhněte si kód Arduino zde:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
neplatné nastavení () {
Serial.begin (9600);
pinMode (A3, VSTUP);
pinMode (in1, INPUT);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
prázdná smyčka () {
if (digitalRead (in1))
{
Serial.println ("u");
zpoždění (100);
}
if (digitalRead (in2))
{
Serial.println ("d");
zpoždění (100);
}
if (digitalRead (in3))
{
Serial.println ("s");
zpoždění (100);
}
if (digitalRead (in4))
{
Serial.println ("v");
zpoždění (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ String (readVal));
zpoždění (50);
}
Krok 4: Kód aplikace pro PC (C#. NET)
Aplikace bude poslouchat přes port COM (USB) a reagovat podle toho, jaký příkaz obdrží. Nejjednodušší způsob, jak v počítači přepnout zvuk nahoru a dolů, je pomocí služeb Interrop přímo hovořit s operačním systémem Windows. Služby Interrop používáme také k přesunutí myši na konkrétní místo na obrazovce a kliknutí. Abychom umožnili různé velikosti obrazovek a zobrazení, umožňujeme uživateli určit polohu tlačítek pro přeskočení přidání a přeskočení videa.
K zobrazení všech zvukových příkazů, které přijímáme, používáme standardní graf.net.
Windows kód:
Stáhněte si celý projekt zde:
leobot.net/audioadjust.zip
pomocí System;
pomocí System. Collections. Generic;
pomocí System. ComponentModel;
pomocí System. Data;
pomocí System. Drawing;
pomocí System. Linq;
pomocí System. Text;
pomocí System. Windows. Forms;
pomocí System. Runtime. InteropServices;
pomocí System. IO. Ports;
pomocí System. Threading;
obor názvů AudioAdjust
{
veřejná částečná třída 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);
// Akce 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;
veřejný formulář1 ()
{
InitializeComponent ();
}
private void Form1_Load (odesílatel objektů, EventArgs e)
{
řetězec names = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (názvy);
comboBoxPort. SelectedIndex = 0;
}
int aktuální Bod = 0;
private void button1_Click (odesílatel objektů, EventArgs e)
{
_serialPort = nový SerialPort ();
_serialPort. DataReceived += new SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Nastavení desky COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
jiný
{
_serialPort. Open ();
}
// keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // snížení hlasitosti
}
void _serialPort_DataReceived (odesílatel objektu, SerialDataReceivedEventArgs e)
{
Snaž se
{
řetězec fullval = _serialPort. ReadLine ();
řetězec com = fullval [0]. ToString ();
přepínač (com)
{
případ "a":
{
{
// úroveň zvuku
řetězec val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
přestávka;
}
případ „u“:
{
// zvuk nahoru
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // snížení hlasitosti
přestávka;
}
případ "d":
{
// ztlumení zvuku
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // snížení hlasitosti
přestávka;
}
případ "s":
{
//přeskočit reklamu
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
přestávka;
}
případ "v":
{
//přeskočit reklamu
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
přestávka;
}
}
}
úlovek
{
}
// házet nový NotImplementedException ();
}
soukromý prázdný MoveCursorSkipAd ()
{
Cursor. Position = nový bod (1140, 725);
Cursor. Position = nový bod (adX, adY);
}
soukromé prázdné MoveCursorSkipVideo ()
{
Cursor. Position = nový bod (1140, 725);
Cursor. Position = nový bod (vidX, vidY);
}
veřejná prázdnota DoMouseClick ()
{
// Volání importované funkce s aktuální pozicí kurzoru
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šit AddData (úroveň int)
{
if (enableAudioChange)
{
if (level> = MaxLevel)
{
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // snížení hlasitosti
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // snížení hlasitosti
keybd_event ((byte) Keys. VolumeDown, 0, 0, 0); // snížení hlasitosti
}
jiný
{
if (úroveň <MaxLevel - 0)
{
keybd_event ((byte) Keys. VolumeUp, 0, 0, 0); // snížení hlasitosti
}
}
}
SetChart (úroveň);
currentPoint ++;
}
delegát neplatný SetTextCallback (int val);
private void SetChart (int val)
{
// InvokeRequired required porovnává ID vlákna
// volání vlákna na ID vlákna vytvářeného vlákna.
// Pokud se tato vlákna liší, vrací true.
if (this.chart1. InvokeRequired)
{
SetTextCallback d = nový SetTextCallback (SetChart);
this. Invoke (d, nový objekt {val});
}
jiný
{
chart1. Series [0]. Points. AddXY (0, val);
if (currentPoint> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (odesílatel objektů, EventArgs e)
{
Snaž se
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
úlovek
{
textBoxLevel. Text = MaxLevel + "";
}
}
tlačítko private voidTestSkip_Click (odesílatel objektů, EventArgs e)
{
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (odesílatel objektů, EventArgs e)
{
Snaž se
{
adX = int. Parse (textBoxXpos. Text);
}
úlovek
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (odesílatel objektů, EventArgs e)
{
Snaž se
{
adY = int. Parse (textBoxYpos. Text);
}
úlovek
{
textBoxYpos. Text = adY + "";
}
}
tlačítko private voidSkipVideo_Click (odesílatel objektů, EventArgs e)
{
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (odesílatel objektů, EventArgs e)
{
Snaž se
{
vidX = int. Parse (textBoxXposVid. Text);
}
úlovek
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (odesílatel objektu, EventArgs e)
{
Snaž se
{
vidY = int. Parse (textBoxYposVid. Text);
}
úlovek
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (odesílatel objektů, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
veřejná struktura BOD
{
public int x;
public int y;
}
}
Doporučuje:
IR senzor a dálkové ovládání Arduino s LCD: 4 kroky
IR senzor a dálkové ovládání Arduino s LCD: Jsme skupina studentů UQD10801 (Robocon1) z Universiti Tun Hussein Onn Malajsie (UTHM) V tomto tutoriálu se naučíte, jak zobrazit tlačítka na IR dálkovém ovládání na displeji z tekutých krystalů (LCD ) pomocí Arduino Uno R3. Tento tutoriál bude
Spolehlivé, zabezpečené, přizpůsobitelné dálkové ovládání SMS (Arduino/pfodApp) - není vyžadováno kódování: 4 kroky
Spolehlivé, zabezpečené, přizpůsobitelné dálkové ovládání SMS (Arduino/pfodApp) - není vyžadováno kódování: aktualizace 6. července 2018: Verze tohoto projektu 3G/2G pomocí SIM5320 je k dispozici zde Aktualizace: 19. května 2015: Použijte knihovnu pfodParser verze 2.5 nebo vyšší. Opravuje nahlášený problém, kdy není dostatek času na to, aby se štít připojil k
IRduino: Dálkové ovládání Arduino - napodobte ztracené dálkové ovládání: 6 kroků
IRduino: Dálkové ovládání Arduino - napodobte ztracené dálkové ovládání: Pokud jste někdy ztratili dálkový ovladač pro váš televizor nebo DVD přehrávač, víte, jak frustrující je chodit k němu, hledat a používat tlačítka na samotném zařízení. Někdy tato tlačítka ani nenabízejí stejné funkce jako dálkové ovládání. Přijmout
Běžná sada dálkového ovládání přeměněna na čtyřkanálové dálkové ovládání RC hraček: 4 kroky
Běžná sada dálkového ovládání přeměněna na čtyřkanálové dálkové ovládání RC hraček: 如何 将 通用 遥控 器 套件 转换 为 玩具 模型 器 使用 的 四 四 通道 遥控 器。 遥控 器 套件 非常 便宜 便宜。 它 采用改造 方法 非常 简单。 只需 准备 一些 瓦楞纸 板 , 然后 按照 视频 教程 教程 完成 这个 电子 项目 为 您 您 服务。 玩具 车船 提供 远程 无线 无线。
Dálkové ovládání pro PC Youtube a Netflix: 9 kroků (s obrázky)
Dálkové ovládání pro PC Youtube a Netflix: Mám měřič stolního počítače od postele, takže přirozeně rád sleduji youtube a filmy z pohodlí postele. Pokaždé, když si lehnu, zjistím, že potřebuji upravit hlasitost, z nějakých důvodů pozastavit video nebo prostě video úplně přeskočit