Съдържание:
- Стъпка 1: Необходими компоненти
- Стъпка 2: Настройка на хардуера
- Стъпка 3: Arduino код
- Стъпка 4: PC App Code (C#.NET)
Видео: Arduino Youtube дистанционно управление за сън (Leobot Electronics): 4 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Arduino YouTube дистанционно
Ако използвате Youtube, за да ви осигурим филм или музика, които да гледате, докато спите, със сигурност бихте се събудили или от реклама за зареждане, или от различни нива на силата на звука, когато започне нов филм. Излишно е да казвам, че това може да бъде доста дразнещо.
И така, моето решение, което ви доказвам тук, за да създадете за себе си, е дистанционно управление, базирано на Arduino, за взаимодействие с Youtube от разстояние. Дистанционното е необходимо за промяна на основния звук на моя компютър, пропускане на реклами в Youtube и пропускане на видеоклипове в Youtube.
Включен е и сензор за ниво на звука, за да се определи колко висок е високоговорителят, което от своя страна може да се използва за автоматично понижаване на нивото на звука при откриване на силни прекъсвания, като например реклама.
И накрая, добавих диаграма в приложението за компютър, за да покажа откритите аудио нива.
Решението може да бъде по -добре усъвършенствано, но за мен то изпълнява задачата.
Стъпка 1: Необходими компоненти
Всички тези компоненти се доставят от Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) 4 КАНАЛНО ДИСТАНЦИОННО (315MHZ) + РЕЦИВЕРЕН МОДУЛ (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) МОДУЛ НА СЕНЗОР НА МИКРОФОНЕН ГЛАС И ЗВУК (KY-037)
leobot.net/viewproduct.aspx?id=217
Софтуер
1) Visual Studio
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
Стъпка 2: Настройка на хардуера
1) Свържете 4-каналния приемник към Arduino.
4-канален приемник Pin-> Arduino Uno Pin
GND-> GND
5V-> 5V
D0-> Цифров 2
D1-> Цифров 3
D2-> Цифров 4
D3-> Цифров 5
2) Свържете микрофонния модул KY-037 към Arduino
Микрофон KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3.3V
A0-> Аналогов 3
Стъпка 3: Arduino код
Общ преглед
Логиката, която Arduino трябва да следва, е следната:
A) Проверете дали приемникът сигнализира някакви пинове.
Б) В зависимост от това кой IO порт е получен сигналът, това е командата, която ще бъде изпратена на компютъра.
В) След като приключите с всички действия за дистанционно управление, открийте нивото на звука с микрофона и го изпратете на компютъра.
D) Всички команди, изпратени до компютъра, имат формат първо да имат символ, след това стойност (ако е необходима стойност).
Д) Има пет команди, изпратени от Arduino към компютъра
а. „U“- Увеличаване на звука
б. “D” - намаляване на звука
° С. “S” - Пропуснете добавянето
д. „V“- Пропускане на видео
д. “A” - Нивото на звука е открито, последвано от стойността
Кодът на Arduino:
Изтеглете Arduino Code тук:
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 () {
ако (digitalRead (in1))
{
Serial.println ("u");
забавяне (100);
}
ако (digitalRead (in2))
{
Serial.println ("d");
забавяне (100);
}
ако (digitalRead (in3))
{
Serial.println ("s");
забавяне (100);
}
ако (digitalRead (in4))
{
Serial.println ("v");
забавяне (100);
}
int readVal = analogRead (A3);
Serial.println (String ("a")+ String (readVal));
забавяне (50);
}
Стъпка 4: PC App Code (C#. NET)
Приложението ще слуша през COM (USB) порта и ще реагира в зависимост от получената команда. Най -простият начин да увеличите и намалите звука на компютъра е да използвате услугите Interrop, за да говорите директно с операционната система Windows. Ние също използваме услугите Interrop за преместване на мишката до определена позиция на екрана и щракване. За да позволим различни екрани и размери на изгледа, ние позволяваме на потребителя да определи позицията на бутоните за пропускане на добавяне и пропускане на видео.
Използваме стандартна.net диаграма за показване на всички аудио команди, които получаваме.
Windows код:
Изтеглете пълния проект тук:
leobot.net/audioadjust.zip
използване на System;
използване на System. Collections. Generic;
използване на System. ComponentModel;
използване на System. Data;
използване на System. Drawing;
използване на System. Linq;
използване на System. Text;
използване на System. Windows. Forms;
използване на System. Runtime. InteropServices;
използване на System. IO. Ports;
използване на System. Threading;
пространство за имена AudioAdjust
{
публичен частичен клас Form1: Form
{
[DllImport ("User32. Dll")]
публичен статичен външен дълъг SetCursorPos (int x, int y);
[DllImport ("User32. Dll")]
публичен статичен външен bool ClientToScreen (IntPtr hWnd, ref POINT точка);
[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]
публична статична външна void mouse_event (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
// Действия с мишката
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")]
статичен extern void keybd_event (байт bVk, байт bScan, uint dwFlags, int dwExtraInfo);
Random aRand = new Random ();
public int LastLevel = 0;
public int MaxLevel = 255;
статичен SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = false;
публичен формуляр1 ()
{
InitializeComponent ();
}
private void Form1_Load (изпращач на обект, EventArgs e)
{
низ имена = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (имена);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
private void button1_Click (изпращач на обект, EventArgs e)
{
_serialPort = нов SerialPort ();
_serialPort. DataReceived += new SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // Задайте вашата дъска COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
иначе
{
_serialPort. Open ();
}
// keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // намаляване на силата на звука
}
void _serialPort_DataReceived (изпращач на обект, SerialDataReceivedEventArgs e)
{
опитвам
{
низ fullval = _serialPort. ReadLine ();
низ com = fullval [0]. ToString ();
превключвател (com)
{
случай "а":
{
{
// аудио ниво
низ val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
прекъсване;
}
регистър "u":
{
// аудио нагоре
keybd_event ((байт) Keys. VolumeUp, 0, 0, 0); // намаляване на силата на звука
прекъсване;
}
регистър "d":
{
// звук надолу
keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // намаляване на силата на звука
прекъсване;
}
регистър "s":
{
//пропуснете обява
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
прекъсване;
}
регистър "v":
{
//пропуснете обява
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
прекъсване;
}
}
}
улов
{
}
// хвърлям нов NotImplementedException ();
}
private void MoveCursorSkipAd ()
{
Cursor. Position = нова точка (1140, 725);
Cursor. Position = нова точка (adX, adY);
}
private void MoveCursorSkipVideo ()
{
Cursor. Position = нова точка (1140, 725);
Cursor. Position = нова точка (vidX, vidY);
}
обществена празнота DoMouseClick ()
{
// Извиква импортираната функция с текущата позиция на курсора
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 ниво)
{
if (enableAudioChange)
{
if (ниво> = MaxLevel)
{
keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // намаляване на силата на звука
keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // намаляване на силата на звука
keybd_event ((байт) Keys. VolumeDown, 0, 0, 0); // намаляване на силата на звука
}
иначе
{
if (ниво <MaxLevel - 0)
{
keybd_event ((байт) Keys. VolumeUp, 0, 0, 0); // намаляване на силата на звука
}
}
}
SetChart (ниво);
currentPoint ++;
}
делегиране на невалидна SetTextCallback (int val);
private void SetChart (int val)
{
// InvokeRequired required сравнява ID на нишката на
// извикване на нишка към идентификатора на нишката на създаващата нишка.
// Ако тези нишки са различни, връща true.
if (this.chart1. InvokeRequired)
{
SetTextCallback d = нов SetTextCallback (SetChart);
this. Invoke (d, нов обект {val});
}
иначе
{
chart1. Series [0]. Points. AddXY (0, val);
ако (текуща точка> = 10)
{
chart1. Series [0]. Points. RemoveAt (0);
}
}
}
private void textBoxLevel_TextChanged (подател на обект, EventArgs e)
{
опитвам
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
улов
{
textBoxLevel. Text = MaxLevel + "";
}
}
private void buttonTestSkip_Click (изпращач на обект, EventArgs e)
{
MoveCursorSkipAd ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXpos_TextChanged (изпращач на обект, EventArgs e)
{
опитвам
{
adX = int. Parse (textBoxXpos. Text);
}
улов
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (изпращач на обект, EventArgs e)
{
опитвам
{
adY = int. Parse (textBoxYpos. Text);
}
улов
{
textBoxYpos. Text = adY + "";
}
}
частен бутон за пустота SkipVideo_Click (подател на обект, EventArgs e)
{
MoveCursorSkipVideo ();
Thread. Sleep (10);
DoMouseClick ();
}
private void textBoxXposVid_TextChanged (подател на обект, EventArgs e)
{
опитвам
{
vidX = int. Parse (textBoxXposVid. Text);
}
улов
{
textBoxXposVid. Text = vidX + "";
}
}
private void textBoxYposVid_TextChanged (изпращач на обект, EventArgs e)
{
опитвам
{
vidY = int. Parse (textBoxYposVid. Text);
}
улов
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (изпращач на обект, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
обществена структура POINT
{
публичен int x;
public int y;
}
}
Препоръчано:
IRduino: Дистанционно управление Arduino - имитирайте изгубено дистанционно: 6 стъпки
IRduino: Дистанционно управление Arduino - имитирайте изгубено дистанционно: Ако някога сте загубили дистанционното управление за вашия телевизор или DVD плейър, знаете колко е разочароващо да се налага да ходите, да намирате и използвате бутоните на самото устройство. Понякога тези бутони дори не предлагат същата функционалност като дистанционното. Получаване
Обикновен комплект за дистанционно управление, трансформиран в четириканално дистанционно управление RC играчка: 4 стъпки
Обикновен комплект за дистанционно управление, трансформиран в четириканално дистанционно управление RC Toy: 如何 将 通用 遥控 套件 转换 为 玩具 中 使用 的 四 遥控 器。 遥控 套件 非常 便宜。 采用 62 62 2262 和 2272 芯片 433 模块 构建。方法 非常 简单。 只需 一些 瓦楞纸 板 , 然后 按照 视频 教程 这个 电子 项目 并 为 服务。 玩具 车船 提供 远程 无线 控制
Уеб дистанционно дистанционно управление с Esp8266 (NodeMCU): 4 стъпки
Уеб дистанционно дистанционно управление с Esp8266 (NodeMCU): Проблем На масата в хола има три дистанционни управления. За да гледате любимото си предаване, трябва точно да следвате специална последователност от натискания на бутони върху поне две от тях. И твоята съквартирантка, майка, приятелка никога не си спомня за това … Решение Купуваш
Робот с дистанционно управление с помощта на Arduino и T.V. Дистанционно: 11 стъпки
Робот с дистанционно управление с помощта на Arduino и телевизионно дистанционно: Тази кола с дистанционно управление може да се движи, използвайки практически всякакъв вид дистанционно управление, като телевизор, променлив ток и др. Той използва факта, че дистанционното излъчва IR (инфрачервено). Това свойство се използва чрез използване на IR приемник, който е много евтин сензор
Кабелно дистанционно дистанционно управление на Canon за затвор и фокус: 4 стъпки
Кабелно дистанционно дистанционно управление на Canon за затвор и фокус: Хей! Това е друга версия на кабелното дистанционно управление на Canon. Мисля, че е по -гъвкав от другите дизайни. Тази инструкция е мястото, откъдето получих моето вдъхновение. Това по принцип ви позволява да правите снимки с помощта на това дистанционно, вместо да натискате дупето