Table des matières:
- Étape 1: Composants nécessaires
- Étape 2: configuration du matériel
- Étape 3: Code Arduino
- Étape 4: Code d'application PC (C#.NET)
Vidéo: Télécommande Arduino Youtube pour dormir (Leobot Electronics): 4 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Télécommande Arduino Youtube
Si vous utilisez Youtube pour vous fournir un film ou de la musique à regarder pendant que vous dormez, vous auriez sûrement été réveillé par une annonce de chargement ou par différents niveaux de volume lorsqu'un nouveau film commence. Inutile de dire que cela peut être assez irritant.
Donc, ma solution que je vous prouve ici à construire par vous-même est une télécommande basée sur Arduino pour interagir avec Youtube à distance. La télécommande est nécessaire pour modifier le volume sonore principal de mon PC, ignorer les publicités sur Youtube et ignorer les vidéos sur Youtube.
Un capteur de niveau audio est également inclus pour déterminer le niveau sonore réel du haut-parleur, qui à son tour peut être utilisé pour réduire automatiquement le niveau sonore lors de la détection d'interruptions bruyantes telles qu'une publicité.
Enfin, j'ai ajouté un graphique sur l'application PC pour afficher les niveaux audio détectés.
La solution peut être mieux affinée mais pour moi, elle accomplit la tâche.
Étape 1: Composants nécessaires
Tous ces composants sont fournis par Leobot Electronics (https://leobot.net)
1) Arduino UNO R3
leobot.net/viewproduct.aspx?id=530
2) TÉLÉCOMMANDE 4 CANAUX (315MHZ) + MODULE RÉCEPTEUR (315MHZ)
leobot.net/viewproduct.aspx?id=521
3) MODULE DE CAPTEUR DE DÉTECTION DE VOIX ET DE SON MICROPHONE (KY-037)
leobot.net/viewproduct.aspx?id=217
Logiciel
1) Visual Studio
visualstudio.microsoft.com/
2) IDE Arduino
www.arduino.cc/en/main/software
Étape 2: configuration du matériel
1) Connectez le module récepteur 4 canaux à l'Arduino.
Broche du récepteur 4 canaux -> Broche Arduino Uno
GND->GND
5V->5V
D0->Numérique 2
D1->Numérique 3
D2->Numérique 4
D3->Numérique 5
2) Connectez le module Microphone KY-037 à l'Arduino
Micro KY-037 Pin->Arduino Uno Pin
GND->GND
+->3.3V
A0->Analogique 3
Étape 3: Code Arduino
Aperçu
La logique que l'Arduino doit suivre est la suivante:
A) Vérifiez si le récepteur signale des broches.
B) Selon le port IO sur lequel le signal est reçu, la commande sera envoyée au PC.
C) Une fois toutes les actions de la télécommande terminées, détectez le niveau audio avec le microphone et envoyez-le au PC.
D) Toutes les commandes envoyées au PC ont le format d'avoir d'abord un caractère puis une valeur (si une valeur est nécessaire).
E) Il y a cinq commandes envoyées de l'Arduino au PC
une. "u" - Augmenter le volume
b. "d" - Baisser le volume
c. "s" - Ignorer l'ajout
ré. "v" - Ignorer la vidéo
e. "a" - Niveau audio détecté suivi de la valeur
Le code Arduino:
Téléchargez le code Arduino ici:
int in1=2;
int in2=3;
int in3=4;
int in4=5;
void setup() {
Serial.begin(9600);
pinMode (A3, ENTREE);
pinMode(in1, INPUT);
pinMode(in2, INPUT);
pinMode(in3, INPUT);
pinMode(in4, INPUT);
}
boucle vide() {
if(digitalRead(in1))
{
Serial.println("u");
retard (100);
}
if(digitalRead(in2))
{
Serial.println("d");
retard (100);
}
if(digitalRead(in3))
{
Serial.println("s");
retard (100);
}
if(digitalRead(in4))
{
Serial.println("v");
retard (100);
}
int readVal= analogRead(A3);
Serial.println(String("a")+ String(readVal));
retard (50);
}
Étape 4: Code d'application PC (C#. NET)
L'application écoutera via le port COM (USB) et réagira en fonction de la commande reçue. Le moyen le plus simple d'augmenter et de réduire le son sur le PC consiste à utiliser les services Interrop pour parler directement au système d'exploitation Windows. Nous utilisons également les services Interrop pour déplacer la souris à une position spécifique sur l'écran et cliquer. Afin de permettre différents écrans et tailles de vue, nous permettons à l'utilisateur de spécifier la position des boutons de saut d'ajout et de saut de vidéo.
Nous utilisons un graphique.net standard pour afficher toutes les commandes audio que nous recevons.
Code Windows:
Téléchargez le projet complet ici:
leobot.net/audioadjust.zip
en utilisant le système;
en utilisant System. Collections. Generic;
en utilisant System. ComponentModel;
en utilisant System. Data;
en utilisant System. Drawing;
en utilisant System. Linq;
en utilisant System. Text;
en utilisant System. Windows. Forms;
en utilisant System. Runtime. InteropServices;
en utilisant System. IO. Ports;
en utilisant System. Threading;
espace de noms AudioAdjust
{
classe partielle publique 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 externe void mouse_event(uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
//Actions de la souris
privé const int MOUSEEVENTF_LEFTDOWN = 0x02;
privé const int MOUSEEVENTF_LEFTUP = 0x04;
privé const int MOUSEEVENTF_RIGHTDOWN = 0x08;
privé const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport("user32.dll")]
static externe void keybd_event (octet bVk, octet bScan, uint dwFlags, int dwExtraInfo);
Random aRand = new Random();
public int LastLevel = 0;
public int MaxLevel = 255;
SerialPort statique _serialPort;
int adX = 1281;
entier adY = 706;
entier vidX = 250;
entier vidY = 780;
bool enableAudioChange = false;
publique Form1()
{
InitializeComponent();
}
Private void Form1_Load (expéditeur d'objet, EventArgs e)
{
string names = System. IO. Ports. SerialPort. GetPortNames();
comboBoxPort. Items. AddRange(noms);
comboBoxPort. SelectedIndex = 0;
}
int CurrentPoint = 0;
private void button1_Click (expéditeur d'objet, EventArgs e)
{
_serialPort = nouveau SerialPort();
_serialPort. DataReceived += new SerialDataReceivedEventHandler(_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString();//Définissez votre carte COM
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close();
autre
{
_serialPort. Open();
}
// keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // baisse le volume
}
void _serialPort_DataReceived (expéditeur d'objet, SerialDataReceivedEventArgs e)
{
essayer
{
chaîne fullval = _serialPort. ReadLine();
chaîne com = fullval[0]. ToString();
commutateur (com)
{
cas "a":
{
{
//niveau audio
chaîne val = fullval. Replace("a", "");
int valInt = int. Parse(val);
AddData(valInt);
}
Pause;
}
cas "u":
{
//audio up
keybd_event((byte)Keys. VolumeUp, 0, 0, 0); // baisse le volume
Pause;
}
cas "d":
{
//audio vers le bas
keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // baisse le volume
Pause;
}
cas "s":
{
//passer la pub
MoveCursorSkipAd();
Thread. Sleep(10);
DoMouseClick();
Pause;
}
cas "v":
{
//passer la pub
MoveCursorSkipVideo();
Thread. Sleep(10);
DoMouseClick();
Pause;
}
}
}
attraper
{
}
//lance une nouvelle exception NotImplemented();
}
vide privé MoveCursorSkipAd()
{
Curseur. Position = nouveau Point(1140, 725);
Cursor. Position = new Point(adX, adY);
}
vide privé MoveCursorSkipVideo()
{
Curseur. Position = nouveau Point(1140, 725);
Curseur. Position = nouveau Point(vidX, vidY);
}
public void DoMouseClick()
{
//Appelle la fonction importée avec la position actuelle du curseur
uint X = (uint)Curseur. Position. X;
uint Y = (uint)Curseur. Position. Y;
mouse_event(MOUSEEVENTF_LEFTDOWN, X, Y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X, Y, 0, 0);
}
void AddData(int level)
{
if (activerAudioChange)
{
si (niveau >= MaxLevel)
{
keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // baisse le volume
keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // baisse le volume
keybd_event((byte)Keys. VolumeDown, 0, 0, 0); // baisse le volume
}
autre
{
si (niveau < MaxLevel - 0)
{
keybd_event((byte)Keys. VolumeUp, 0, 0, 0); // baisse le volume
}
}
}
SetChart(niveau);
CurrentPoint++;
}
déléguer void SetTextCallback(int val);
Private void SetChart(int val)
{
// InvokeRequired required compare l'ID de thread du
// thread d'appel à l'ID de thread du thread créateur.
// Si ces threads sont différents, il renvoie true.
si (this.chart1. InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetChart);
this. Invoke(d, nouvel objet { val });
}
autre
{
chart1. Series[0]. Points. AddXY(0, val);
si (PointCourant >= 10)
{
chart1. Series[0]. Points. RemoveAt(0);
}
}
}
private void textBoxLevel_TextChanged (expéditeur d'objet, EventArgs e)
{
essayer
{
MaxLevel = int. Parse(textBoxLevel. Text);
}
attraper
{
textBoxLevel. Text = MaxLevel + "";
}
}
bouton d'annulation privéTestSkip_Click (expéditeur d'objet, EventArgs e)
{
MoveCursorSkipAd();
Thread. Sleep(10);
DoMouseClick();
}
textBoxXpos_TextChanged privé vide (expéditeur d'objet, EventArgs e)
{
essayer
{
adX = int. Parse(textBoxXpos. Text);
}
attraper
{
textBoxXpos. Text = adX + "";
}
}
private void textBoxYpos_TextChanged (expéditeur d'objet, EventArgs e)
{
essayer
{
adY = int. Parse(textBoxYpos. Text);
}
attraper
{
textBoxYpos. Text = adY + "";
}
}
bouton d'annulation privéSkipVideo_Click (expéditeur d'objet, EventArgs e)
{
MoveCursorSkipVideo();
Thread. Sleep(10);
DoMouseClick();
}
textBoxXposVid_TextChanged privé vide (expéditeur d'objet, EventArgs e)
{
essayer
{
vidX = int. Parse(textBoxXposVid. Text);
}
attraper
{
textBoxXposVid. Text = vidX + "";
}
}
textBoxYposVid_TextChanged privé vide (expéditeur d'objet, EventArgs e)
{
essayer
{
vidY = int. Parse(textBoxYposVid. Text);
}
attraper
{
textBoxYposVid. Text = vidY + "";
}
}
private void checkBoxEnable_CheckedChanged (expéditeur d'objet, EventArgs e)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout(LayoutKind. Sequential)]
structure publique POINT
{
public int x;
public int y;
}
}
Conseillé:
La télécommande TV devient une télécommande RF -- Tutoriel NRF24L01+ : 5 étapes (avec photos)
La télécommande TV devient une télécommande RF || Tutoriel NRF24L01+ : Dans ce projet, je vais vous montrer comment j'ai utilisé le populaire IC RF nRF24L01+ pour régler la luminosité d'une bande LED sans fil à l'aide de trois boutons inutiles d'une télécommande de téléviseur. Commençons
IRduino : télécommande Arduino - Imiter une télécommande perdue : 6 étapes
IRduino : télécommande Arduino - Imitez une télécommande perdue : si vous avez déjà perdu la télécommande de votre téléviseur ou lecteur DVD, vous savez à quel point il est frustrant de devoir marcher, trouver et utiliser les boutons de l'appareil lui-même. Parfois, ces boutons n'offrent même pas les mêmes fonctionnalités que la télécommande. Recevoir
Télécommande pour PC Youtube et Netflix : 9 étapes (avec photos)
Télécommande pour PC Youtube et Netflix : j'ai mon ordinateur de bureau éloigné de mon lit, donc naturellement j'aime regarder youtube et des films dans le confort de mon lit. Chaque fois que je m'allonge, je me retrouve à devoir régler le volume, mettre la vidéo en pause pour certaines raisons ou simplement sauter complètement la vidéo
Contrôleur numérique pour suspension pneumatique à l'aide d'Arduino et d'une télécommande pour smartphone : 7 étapes (avec photos)
Contrôleur numérique pour suspension pneumatique à l'aide d'Arduino et d'une télécommande pour smartphone : Bonjour à tous. c'est aussi mon tout premier instructable donc supporter w
Télécommande vidéo pour tout-petits pour lecteur vidéo PC : 6 étapes
Télécommande vidéo pour tout-petits pour lecteur vidéo sur PC : je construis une télécommande qui se connecte à un PC avec USB. La grande télécommande permet à mon tout-petit de sélectionner et de lire des vidéos sur un vieil ordinateur. Il s'agit d'un projet relativement simple. Le composant principal est soit un clavier USB, soit un clavier USB sans fil. Ensuite