সুচিপত্র:
- ধাপ 1: উপাদান প্রয়োজন
- পদক্ষেপ 2: হার্ডওয়্যার সেটআপ
- ধাপ 3: Arduino কোড
- ধাপ 4: পিসি অ্যাপ কোড (C#.NET)
ভিডিও: আরডুইনো ইউটিউব রিমোট কন্ট্রোল ফর স্লিপিং (লিওবট ইলেকট্রনিক্স): 4 টি ধাপ
2024 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2024-01-30 08:00
আরডুইনো ইউটিউব রিমোট
যদি আপনি ইউটিউব ব্যবহার করে আপনাকে ঘুমানোর সময় দেখার জন্য একটি সিনেমা বা সঙ্গীত প্রদান করেন তাহলে আপনি নিশ্চয়ই একটি নতুন সিনেমা শুরু হওয়ার সময় লোড বিজ্ঞাপন বা বিভিন্ন ভলিউম লেভেল দ্বারা জেগে উঠতেন। বলা বাহুল্য, এটি বেশ বিরক্তিকর হতে পারে।
সুতরাং, আমার সমাধান আমি আপনাকে এখানে প্রমাণ করেছি যে আপনি নিজের জন্য তৈরি করছেন একটি দূরত্বের সাথে ইউটিউবের সাথে যোগাযোগ করার জন্য একটি আরডুইনো-ভিত্তিক রিমোট কন্ট্রোল। আমার পিসির মূল সাউন্ড ভলিউম পরিবর্তন করতে, ইউটিউবে বিজ্ঞাপন এড়িয়ে যাওয়ার এবং ইউটিউবে ভিডিও এড়িয়ে যাওয়ার জন্য রিমোট প্রয়োজন।
এছাড়াও, একটি অডিও লেভেল সেন্সর অন্তর্ভুক্ত করা হয়েছে যাতে স্পিকারটি আসলে কতটা জোরে তা নির্ধারণ করতে পারে, যা বিজ্ঞাপনের মতো জোরে বাধা সনাক্ত করার পরে স্বয়ংক্রিয়ভাবে সাউন্ড লেভেল কমানোর জন্য ব্যবহার করা যেতে পারে।
অবশেষে, আমি সনাক্ত করা অডিও স্তরগুলি প্রদর্শনের জন্য পিসি অ্যাপে একটি চার্ট যুক্ত করেছি।
সমাধানটি আরও ভালভাবে পরিমার্জিত হতে পারে তবে আমার জন্য এটি কাজটি সম্পাদন করে।
ধাপ 1: উপাদান প্রয়োজন
এই সমস্ত উপাদান লিওবট ইলেকট্রনিক্স দ্বারা সরবরাহ করা হয় (https://leobot.net)
1) আরডুইনো ইউএনও আর 3
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) ভিজ্যুয়াল স্টুডিও
visualstudio.microsoft.com/
2) Arduino IDE
www.arduino.cc/en/main/software
পদক্ষেপ 2: হার্ডওয়্যার সেটআপ
1) 4-চ্যানেল রিসিভার মডিউলটি আরডুইনোতে সংযুক্ত করুন।
4-চ্যানেল রিসিভার পিন-> আরডুইনো ইউনো পিন
GND-> GND
5V-> 5V
D0-> ডিজিটাল 2
D1-> ডিজিটাল 3
D2-> ডিজিটাল 4
D3-> ডিজিটাল 5
2) মাইক্রোফোন KY-037 মডিউলটি আরডুইনোতে সংযুক্ত করুন
মাইক্রোফোন KY-037 Pin-> Arduino Uno Pin
GND-> GND
+-> 3.3V
A0-> এনালগ 3
ধাপ 3: Arduino কোড
ওভারভিউ
Arduino যে যুক্তি অনুসরণ করতে হবে তা হল নিম্নরূপ:
ক) রিসিভার কোন পিনের সংকেত দিচ্ছে কিনা তা পরীক্ষা করুন।
খ) কোন আইও পোর্টে সিগন্যাল প্রাপ্ত হয় তার উপর নির্ভর করে পিসিতে কোন কমান্ড পাঠানো হবে।
গ) একবার সব রিমোট-কন্ট্রোল অ্যাকশন সম্পন্ন হয়ে গেলে, মাইক্রোফোন দিয়ে অডিও লেভেল শনাক্ত করুন এবং পিসিতে পাঠান।
D) পিসিতে পাঠানো সমস্ত কমান্ডের প্রথমে একটি অক্ষর এবং তারপর একটি মান (যদি একটি মান প্রয়োজন হয়) এর একটি বিন্যাস থাকে।
E) আরডুইনো থেকে পিসিতে পাঁচটি কমান্ড পাঠানো হয়েছে
ক। "আপনি" - ভলিউম আপ
খ। "ডি" - ভলিউম কম
গ। "গুলি" - অ্যাড এড়িয়ে যান
ঘ। "V" - ভিডিও এড়িয়ে যান
ই "A" - মান অনুসারে অডিও লেভেল ধরা পড়ে
Arduino কোড:
এখানে Arduino কোড ডাউনলোড করুন:
int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
অকার্যকর সেটআপ() {
Serial.begin (9600);
পিনমোড (এ 3, ইনপুট);
পিনমোড (ইন 1, ইনপুট);
pinMode (in2, INPUT);
pinMode (in3, INPUT);
pinMode (in4, INPUT);
}
অকার্যকর লুপ () {
যদি (digitalRead (in1))
{
Serial.println ("u");
বিলম্ব (100);
}
যদি (digitalRead (in2))
{
Serial.println ("d");
বিলম্ব (100);
}
যদি (digitalRead (in3))
{
Serial.println ("s");
বিলম্ব (100);
}
যদি (ডিজিটাল রিড (in4))
{
Serial.println ("v");
বিলম্ব (100);
}
int readVal = analogRead (A3);
Serial.println (স্ট্রিং ("a")+ স্ট্রিং (readVal));
বিলম্ব (50);
}
ধাপ 4: পিসি অ্যাপ কোড (C#. NET)
অ্যাপ্লিকেশনটি COM (USB) পোর্টে শুনবে এবং কোন কমান্ডটি প্রাপ্ত হবে তার উপর নির্ভর করে প্রতিক্রিয়া জানাবে। পিসিতে সাউন্ড আপ এবং ডাউন করার সবচেয়ে সহজ উপায় হল উইন্ডোজ অপারেটিং সিস্টেমের সাথে সরাসরি কথা বলার জন্য ইন্টাররপ সার্ভিস ব্যবহার করা। আমরা মাউসকে স্ক্রিনে একটি নির্দিষ্ট অবস্থানে নিয়ে যেতে এবং ক্লিক করতে ইন্টারপ পরিষেবাগুলিও ব্যবহার করি। বিভিন্ন স্ক্রিন এবং ভিউ সাইজের অনুমতি দেওয়ার জন্য, আমরা ব্যবহারকারীকে স্কিপ অ্যাড এবং স্কিপ ভিডিও বোতামগুলির অবস্থান নির্দিষ্ট করার অনুমতি দিই।
আমরা যে কোনো অডিও কমান্ড দেখানোর জন্য একটি স্ট্যান্ডার্ড.net চার্ট ব্যবহার করি।
উইন্ডোজ কোড:
এখানে সম্পূর্ণ প্রকল্প ডাউনলোড করুন:
leobot.net/audioadjust.zip
সিস্টেম ব্যবহার করে;
System. Collections. Generic ব্যবহার করে;
System. ComponentModel ব্যবহার করে;
System. Data ব্যবহার করে;
System. Drawing ব্যবহার করে;
System. Linq ব্যবহার করে;
System. Text ব্যবহার করে;
System. Windows. Forms ব্যবহার করে;
System. Runtime. InteropServices ব্যবহার করে;
System. IO. Ports ব্যবহার করে;
System. Threading ব্যবহার করে;
নেমস্পেস অডিও অ্যাডজাস্ট
{
পাবলিক আংশিক ক্লাস ফর্ম 1: ফর্ম
{
[DllImport ("User32. Dll")]
পাবলিক স্ট্যাটিক এক্সটার্ন লং SetCursorPos (int x, int y);
[DllImport ("User32. Dll")]
পাবলিক স্ট্যাটিক এক্সটার্ন বুল ClientToScreen (IntPtr hWnd, ref POINT point);
[DllImport ("user32.dll", CharSet = CharSet. Auto, CallingConvention = CallingConvention. StdCall)]
পাবলিক স্ট্যাটিক এক্সটার্ন অকার্যকর মাউস_ইভেন্ট (uint dwFlags, uint dx, uint dy, uint cButtons, uint dwExtraInfo);
// মাউস কর্ম
ব্যক্তিগত কনস্ট int MOUSEEVENTF_LEFTDOWN = 0x02;
ব্যক্তিগত কনস্ট int MOUSEEVENTF_LEFTUP = 0x04;
ব্যক্তিগত const int MOUSEEVENTF_RIGHTDOWN = 0x08;
ব্যক্তিগত const int MOUSEEVENTF_RIGHTUP = 0x10;
[DllImport ("user32.dll")]
স্ট্যাটিক বহিরাগত শূন্য keybd_event (বাইট bVk, বাইট bScan, uint dwFlags, int dwExtraInfo);
এলোমেলো aRand = নতুন এলোমেলো ();
সর্বজনীন int LastLevel = 0;
সর্বজনীন int MaxLevel = 255;
স্ট্যাটিক SerialPort _serialPort;
int adX = 1281;
int adY = 706;
int vidX = 250;
int vidY = 780;
bool enableAudioChange = মিথ্যা;
পাবলিক ফর্ম 1 ()
{
InitializeComponent ();
}
ব্যক্তিগত অকার্যকর Form1_Load (বস্তু প্রেরক, EventArgs ই)
{
স্ট্রিং নাম = System. IO. Ports. SerialPort. GetPortNames ();
comboBoxPort. Items. AddRange (নাম);
comboBoxPort. SelectedIndex = 0;
}
int currentPoint = 0;
ব্যক্তিগত অকার্যকর বোতাম 1_ ক্লিক করুন (বস্তু প্রেরক, ইভেন্ট আর্গস ই)
{
_serialPort = নতুন সিরিয়ালপোর্ট ();
_serialPort. DataReceived += নতুন SerialDataReceivedEventHandler (_serialPort_DataReceived);
_serialPort. PortName = comboBoxPort. SelectedItem. ToString (); // আপনার বোর্ড COM সেট করুন
_serialPort. BaudRate = 9600;
if (_serialPort. IsOpen) _serialPort. Close ();
অন্য
{
_serialPort. Open ();
}
// keybd_event ((বাইট) কী। ভলিউমডাউন, 0, 0, 0); // ভলিউম হ্রাস
}
void _serialPort_DataReceived (অবজেক্ট প্রেরক, SerialDataReceivedEventArgs e)
{
চেষ্টা করুন
{
স্ট্রিং fullval = _serialPort. ReadLine ();
স্ট্রিং com = fullval [0]. ToString ();
সুইচ (com)
{
কেস "a":
{
{
// অডিও স্তর
string val = fullval. Replace ("a", "");
int valInt = int. Parse (val);
AddData (valInt);
}
বিরতি;
}
কেস "ইউ":
{
// অডিও আপ
keybd_event ((বাইট) Keys. VolumeUp, 0, 0, 0); // ভলিউম হ্রাস
বিরতি;
}
কেস "ডি":
{
// অডিও ডাউন
keybd_event ((বাইট) Keys. VolumeDown, 0, 0, 0); // ভলিউম হ্রাস
বিরতি;
}
কেস "গুলি":
{
//বিজ্ঞাপন এড়িয়ে
MoveCursorSkipAd ();
থ্রেড ঘুম (10);
DoMouseClick ();
বিরতি;
}
কেস "ভি":
{
//বিজ্ঞাপন এড়িয়ে
MoveCursorSkipVideo ();
থ্রেড ঘুম (10);
DoMouseClick ();
বিরতি;
}
}
}
ধরা
{
}
// নতুন NotImplementedException নিক্ষেপ ();
}
ব্যক্তিগত অকার্যকর MoveCursorSkipAd ()
{
কার্সার পজিশন = নতুন পয়েন্ট (1140, 725);
Cursor. Position = নতুন পয়েন্ট (adX, adY);
}
ব্যক্তিগত অকার্যকর MoveCursorSkipVideo ()
{
কার্সার পজিশন = নতুন পয়েন্ট (1140, 725);
কার্সার পজিশন = নতুন পয়েন্ট (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);
}
অকার্যকর AddData (int স্তর)
{
যদি (enableAudioChange)
{
যদি (লেভেল> = ম্যাক্স লেভেল)
{
keybd_event ((বাইট) Keys. VolumeDown, 0, 0, 0); // ভলিউম হ্রাস
keybd_event ((বাইট) Keys. VolumeDown, 0, 0, 0); // ভলিউম হ্রাস
keybd_event ((বাইট) Keys. VolumeDown, 0, 0, 0); // ভলিউম হ্রাস
}
অন্য
{
যদি (স্তর <MaxLevel - 0)
{
keybd_event ((বাইট) Keys. VolumeUp, 0, 0, 0); // ভলিউম হ্রাস
}
}
}
সেটচার্ট (স্তর);
currentPoint ++;
}
প্রতিনিধি অকার্যকর SetTextCallback (int val);
ব্যক্তিগত অকার্যকর SetChart (int val)
{
// InvokeRequired প্রয়োজনের থ্রেড আইডি তুলনা করে
// তৈরির থ্রেডের থ্রেড আইডিতে থ্রেড কল করা।
// যদি এই থ্রেডগুলি ভিন্ন হয়, তবে এটি সত্য।
যদি (this.chart1. InvokeRequired)
{
SetTextCallback d = নতুন SetTextCallback (SetChart);
এই আহ্বান (d, নতুন বস্তু {val});
}
অন্য
{
চার্ট 1. সিরিজ [0]। পয়েন্ট.এডক্সওয়াই (0, ভ্যাল)
যদি (currentPoint> = 10)
{
চার্ট 1. সিরিজ [0]।
}
}
}
ব্যক্তিগত অকার্যকর টেক্সটবক্স লেভেল_টেক্সটেঞ্জড (অবজেক্ট প্রেরক, ইভেন্টআর্গস ই)
{
চেষ্টা করুন
{
MaxLevel = int. Parse (textBoxLevel. Text);
}
ধরা
{
textBoxLevel. Text = MaxLevel + "";
}
}
ব্যক্তিগত অকার্যকর বোতাম TestSkip_Click (বস্তু প্রেরক, EventArgs ই)
{
MoveCursorSkipAd ();
থ্রেড ঘুম (10);
DoMouseClick ();
}
ব্যক্তিগত অকার্যকর টেক্সটবক্সএক্সপস_টেক্সটেঞ্জড
{
চেষ্টা করুন
{
adX = int. Parse (textBoxXpos. Text);
}
ধরা
{
textBoxXpos. Text = adX + "";
}
}
ব্যক্তিগত অকার্যকর পাঠ্যবক্স Ypos_TextChanged (বস্তু প্রেরক, EventArgs ই)
{
চেষ্টা করুন
{
adY = int. Parse (textBoxYpos. Text);
}
ধরা
{
textBoxYpos. Text = adY + "";
}
}
ব্যক্তিগত অকার্যকর বোতামস্কিপভিডিও_ক্লিক (বস্তু প্রেরক, ইভেন্টআর্গস ই)
{
MoveCursorSkipVideo ();
থ্রেড ঘুম (10);
DoMouseClick ();
}
ব্যক্তিগত অকার্যকর টেক্সটবক্সএক্সপোসভিড_টেক্সটেঞ্জড
{
চেষ্টা করুন
{
vidX = int. Parse (textBoxXposVid. Text);
}
ধরা
{
textBoxXposVid. Text = vidX + "";
}
}
ব্যক্তিগত অকার্যকর পাঠ্যবক্স YposVid_TextChanged (বস্তু প্রেরক, EventArgs ই)
{
চেষ্টা করুন
{
vidY = int. Parse (textBoxYposVid. Text);
}
ধরা
{
textBoxYposVid. Text = vidY + "";
}
}
ব্যক্তিগত অকার্যকর checkBoxEnable_CheckedChanged (বস্তু প্রেরক, EventArgs ই)
{
enableAudioChange = checkBoxEnable. Checked;
}
}
[StructLayout (LayoutKind. Sequential)]
পাবলিক স্ট্রাকচার পয়েন্ট
{
পাবলিক int x;
পাবলিক int y;
}
}
প্রস্তাবিত:
আইআরডুইনো: আরডুইনো রিমোট কন্ট্রোল - একটি হারিয়ে যাওয়া রিমোট অনুকরণ করুন: 6 টি ধাপ
আইআরডুইনো: আরডুইনো রিমোট কন্ট্রোল - একটি হারানো রিমোট অনুকরণ করুন: আপনি যদি কখনও আপনার টিভি বা ডিভিডি প্লেয়ারের রিমোট কন্ট্রোল হারিয়ে ফেলে থাকেন, তাহলে আপনি জানেন যে ডিভাইসে বোতামগুলি হাঁটতে, খুঁজে পেতে এবং ব্যবহার করতে কতটা হতাশাজনক। কখনও কখনও, এই বোতামগুলি রিমোটের মতো একই কার্যকারিতা সরবরাহ করে না। প্রাপ্তি
ESP8266 RGB LED স্ট্রিপ ওয়াইফাই কন্ট্রোল - NODEMCU একটি আইআর রিমোট হিসাবে LED স্ট্রিপের জন্য নিয়ন্ত্রিত ওয়াইফাই - RGB LED STRIP স্মার্টফোন কন্ট্রোল: 4 টি ধাপ
ESP8266 RGB LED স্ট্রিপ ওয়াইফাই কন্ট্রোল | NODEMCU একটি আইআর রিমোট হিসেবে LED স্ট্রিপের জন্য নিয়ন্ত্রিত ওয়াইফাই | আরজিবি এলইডি স্ট্রিপ স্মার্টফোন কন্ট্রোল: হাই বন্ধুরা এই টিউটোরিয়ালে আমরা শিখব কিভাবে একটি আরজিবি এলইডি স্ট্রিপ নিয়ন্ত্রণের জন্য আইআর রিমোট হিসেবে নোডেমকু বা এসপি 8266 ব্যবহার করতে হয় এবং নডেমকু স্মার্টফোনের মাধ্যমে ওয়াইফাই দ্বারা নিয়ন্ত্রিত হবে। তাই মূলত আপনি আপনার স্মার্টফোন দিয়ে RGB LED STRIP নিয়ন্ত্রণ করতে পারেন
ভয়েস কন্ট্রোল লাইট ইলেকট্রনিক্স আরজিবি লেড স্ট্রিপস এবং আরও অনেক কিছু কর্টানা এবং আরডুইনো হোম অটোমেশনের সাথে: 3 টি ধাপ
ভয়েস কন্ট্রোল লাইট ইলেকট্রনিক্স আরজিবি লেড স্ট্রিপস এবং আরও অনেক কিছু কর্টানা এবং আরডুইনো হোম অটোমেশনের সাথে: আপনার ভয়েস দিয়ে জিনিসগুলি নিয়ন্ত্রণ করার আইডিয়ার মত? অথবা লাইট বন্ধ করতে বিছানা থেকে উঠতে পছন্দ করেন না? কিন্তু গুগল হোমের মতো সব বিদ্যমান সমাধান খুব ব্যয়বহুল? এখন আপনি 10 ডলারের নিচে এটি নিজেই তৈরি করতে পারেন। এবং আরও ভাল এটা খুব সহজ
সাধারণ রিমোট কন্ট্রোল কিট চার-চ্যানেল আরসি টয় রিমোট কন্ট্রোলে রূপান্তরিত: 4 টি ধাপ
সাধারণ রিমোট কন্ট্রোল কিট চার-চ্যানেল আরসি টয় রিমোট কন্ট্রোলে রূপান্তরিত হয়েছে: 将 通用 遥控 器 套件 转换 模型 6 6方法 非常 简单 简单
রিমোট রিমোট কন্ট্রোল: 11 টি ধাপ (ছবি সহ)
রিমোট রিমোট কন্ট্রোল: আমার একটি নবজাতক বাচ্চা আছে এবং সে মনে করে না যে আমার স্ত্রী যতক্ষণ তাকে ঘুমাতে হবে এবং আমিও তাকে কামনা করতে পারি। একটি জিনিস যা তাকে তার খাঁচায় খুশি রাখে তা হল মোবাইল যা তার উপর ঝুলছে। সুতরাং যখন তিনি জেগে উঠেন যদি আমাদের আরও 25 মিনিট বা তারও বেশি প্রয়োজন হয়