সুচিপত্র:

স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান: 6 টি ধাপ (ছবি সহ)
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান: 6 টি ধাপ (ছবি সহ)

ভিডিও: স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান: 6 টি ধাপ (ছবি সহ)

ভিডিও: স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান: 6 টি ধাপ (ছবি সহ)
ভিডিও: ট্রান্সফরমারের ভোল্টেজ দ্বিগুণ করুন | How To Make Double Voltage by Transformer | Mechanical 2024, নভেম্বর
Anonim
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান
স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমারে PWM ব্যবহার করে Arduino দিয়ে গান (MP3) চালান

হ্যালো বন্ধুরা, এটি আমার প্রথম নির্দেশযোগ্য, আমি আশা করি আপনি এটি পছন্দ করবেন !!

মূলত, এই প্রকল্পে আমি আমার Arduino এবং আমার ল্যাপটপের মধ্যে সিরিয়াল যোগাযোগ ব্যবহার করেছি, আমার ল্যাপটপ থেকে Arduino তে সংগীত ডেটা প্রেরণ করতে। এবং PWM সংকেত হিসাবে ডেটা চালানোর জন্য Arduino TIMERS ব্যবহার করে।

আমি উল্লেখ করতে চেয়েছিলাম যে, এই প্রকল্পটি নতুনদের জন্য নয় !!!।

প্রকৃতপক্ষে, এই প্রকল্পটি দীর্ঘতম প্রকল্পগুলির মধ্যে একটি ছিল, কারণ এটি কাজ করতে আমাদের অনেক কিছু করতে হবে।

মনোযোগ

আমি এই নির্দেশের দ্বিতীয় অংশটি তৈরি করেছি, যা আরও সহজ এবং কাজ করার জন্য ন্যূনতম সমস্যা প্রয়োজন

দ্বিতীয় অংশের লিঙ্ক (সবচেয়ে সহজ)।

ধাপ 1: এই প্রকল্পের জন্য আমাদের যা প্রয়োজন (প্রয়োজনীয়তা)

1. আরডুইনো বোর্ড (আমরা যে কোন বোর্ড (328, 2560) অর্থাৎ মেগা, ইউনো, মিনি ইত্যাদি ব্যবহার করতে পারি কিন্তু নির্দিষ্ট ভিন্ন পিনের সাথে)

2. লিনাক্স সহ পিসি বা ল্যাপটপ (আমি ফেডোরা 29 ব্যবহার করেছি) অথবা লিনাক্সের সাথে লাইভ ইউএসবি

3. ব্রেডবোর্ড বা পারফবোর্ড

4. তারের সংযোগ

5. TC4420 (মোসফেট ড্রাইভার বা এরকম কিছু)

6. পাওয়ার মোসফেট (এন বা পি চ্যানেল, অনুগ্রহ করে ওয়্যার তারপর তারপর) (আমি এন-চ্যানেল ব্যবহার করেছি)

7. স্পিকার বা ফ্লাইব্যাক ট্রান্সফরমার (হ্যাঁ আপনি ঠিক পড়েছেন !!)

8. উপযুক্ত পাওয়ার সাপ্লাই (0-12V) (আমি আমার নিজের ATX পাওয়ার সাপ্লাই ব্যবহার করেছি)

9. হিট সিঙ্ক (আমি আমার পুরানো পিসি থেকে উদ্ধার করেছি)

10. উইন্ডোজ এবং পেন ড্রাইভ সহ পিসি।

প্রতিটি উপাদান এবং এই প্রকল্পের বিস্তারিত কাজ জানতে পরবর্তী ধাপ পড়ুন।

আমি এই নির্দেশের দ্বিতীয় অংশটি তৈরি করেছি, যা আরও সহজ এবং কাজ করার জন্য ন্যূনতম ঝামেলার প্রয়োজন। দ্বিতীয় অংশ (সবচেয়ে সহজ এক) লিঙ্ক

পদক্ষেপ 2: কাজের নীতি বোঝা

আহহহ !! একটি নির্দেশের দীর্ঘতম অংশ, এই বিভাগটি পড়া এবং লেখা উভয়ই বিরক্তিকর।

প্রথমত, আমাদের একটি ওভারভিউ পেতে হবে, এই জিনিসটি আসলে কিভাবে কাজ করে।

আমরা এখানে যা করছি তা হল, প্রথমে আমরা আমাদের MP3 গানটিকে WAV ফাইলে এবং এই ফাইলটিকে C হেডার ফাইলে রূপান্তর করছি সফটওয়্যারটি ব্যবহার করে, যা লিঙ্কটিতে রয়েছে। এই সি কোডটিতে আসলে 8-বিট (কেন 8-বিট ?? আরও পড়ুন) ডেটা নমুনা রয়েছে যা আমাদের Arduino ব্যবহার করে একটি নির্দিষ্ট হার বা গতিতে খেলতে হবে, যা আমাদের নমুনা হার অনুযায়ী নির্দিষ্ট করা আছে।

একটি অডিও সিগন্যালের তত্ত্ব।

যারা নমুনা হার বা বিট হার জানেন না তাদের জন্য:-

নমুনা হার নমুনা সংখ্যা হিসাবে সংজ্ঞায়িত করা হয়, আমরা একটি সেকেন্ডে খেলছি (সাধারণত Hz বা KHz পরিমাপ করা হয়)।

বিস্তারিত জানতে:-এখানে ক্লিক করুন

স্ট্যান্ডার্ড স্যাম্পলিং রেট হল 44100 Hz (সেরা মানের), 32000 Hz, 22050 Hz, ইত্যাদি

যার মানে হল যে 44100 নমুনা সেকেন্ডে ব্যবহার করা হয় সে অনুযায়ী তরঙ্গ উৎপন্ন করতে।

অর্থাৎ প্রতিটি নমুনা 1/44100 = 22.67 ইউএস এর নির্দিষ্ট ব্যবধানে খেলতে হবে।

এরপর আসে একটি অডিও সিগন্যালের বিট ডেপথ, যা সাধারণত ডিজিটাল অডিওতে একটি শব্দ কতটা সঠিকভাবে উপস্থাপন করা হয় তার একটি পরিমাপ। বিট গভীরতা যত বেশি, ডিজিটাল শব্দ তত নির্ভুল।

কিন্তু 16Mhz ঘড়ি সহ Arduino বা অন্য কোন মাইক্রো-কন্ট্রোলার দিয়ে আমাদের শুধুমাত্র 8-বিট পর্যন্ত ব্যবহার করতে দেয়। আমি এটা ব্যাখ্যা করব কেন।

328p এর ডেটশীটে পৃষ্ঠা নং 102 এ একটি সূত্র রয়েছে:- ডেটশীট

আমি বিস্তারিতভাবে যাব না, কেন আমি এই সূত্রটি ব্যবহার করছি।

সিগন্যালের ফ্রিকোয়েন্সি = ক্লক সিগন্যাল / N x (1+TOP)

ঘড়ি সংকেত = 16Mhz (Arduino বোর্ড)

N = prescaler (1 আমাদের প্রকল্পের জন্য মান)

TOP = মান 0 থেকে 2^16 (16-বিট টাইমার কাউন্টারের জন্য) (আমাদের প্রকল্পের জন্য 255 = 2^8 (8-বিট))

আমরা সিগন্যালের ফ্রিকোয়েন্সি = 62.5 kHz এর মান পাই

এর অর্থ ক্যারিয়ার ওয়েভ ফ্রিকোয়েন্সি বিট ডেপথের উপর নির্ভরশীল।

ধরুন, যদি আমরা TOP মান ব্যবহার করি = 2^16 = 65536 (যেমন 16-বিটের গভীরতা)

তারপর আমরা সিগন্যাল = 244 Hz এর ফ্রিকোয়েন্সি এর মান পাই (যা আমরা ব্যবহার করতে পারি না)

ঠিক আছে … সুতরাং অডিও সিগন্যালগুলি কীভাবে কাজ করে তার এই তত্ত্বটি যথেষ্ট, তাই প্রকল্পে ফিরে আসুন।

একটি গানের জন্য তৈরি সি কোডটি আরডুইনোতে অনুলিপি করা যেতে পারে এবং বাজানো যেতে পারে, তবে আমরা 8000 Hz এর নমুনা হারের সাথে 3-সেকেন্ডের অডিও প্লেব্যাক পর্যন্ত সীমাবদ্ধ। কারণ এই সি কোডটি একটি পাঠ্য ফাইল এবং তাই সংকুচিত নয় বরং সংকুচিত। এবং এটি খুব বেশি জায়গা নেয়। (যেমন 44, 1 KHz নমুনার সাথে 43-সেকেন্ডের অডিও সহ C কোড ফাইল 23 MB পর্যন্ত স্থান নেয়) এবং আমাদের Arduino মেগা আমাদের প্রায় 256 Kb এর একটি স্থান দেয়।

সুতরাং কিভাবে আমরা Arduino ব্যবহার করে গান বাজাব। এটা সম্ভব না. এই নির্দেশনা জাল। পাঠকরা চিন্তা করবেন না, আরডিনোতে অডিও ডেটা পাঠানোর জন্য আমাদের খুব বেশি গতিতে (1 এমবি/সেকেন্ড পর্যন্ত) Arduino এর মধ্যে কিছু ধরণের যোগাযোগ ব্যবহার করতে হবে।

কিন্তু এটা করার জন্য আমাদের ঠিক কত গতি দরকার?

উত্তর হল প্রতি সেকেন্ডে 44000 বাইট যার মানে 44000*8 = 325, 000 বিট/সেকেন্ডের বেশি গতি।

আমাদের আরডুইনোতে এই ডেটা পাঠানোর জন্য আমাদের বড় স্টোরেজ সহ আরেকটি পেরিফেরাল দরকার। এবং এটি হবে লিনাক্সের সাথে আমাদের পিসি (কেন লিনাক্সের সাথে পিসি ??? অনুগ্রহ করে এটি সম্পর্কে আরও জানতে আরও পড়ুন।)

আহা… তার মানে আমরা সিরিয়াল কমিউনিকেশন ব্যবহার করতে পারি… কিন্তু অপেক্ষা করুন… সিরিয়ালটি 115200 বিট/সেকেন্ডের গতিতে সম্ভব যার মানে (325000/115200 = 3) অর্থাৎ, এটি প্রয়োজনের চেয়ে তিনগুণ ধীর।

না, আমার বন্ধুরা, তা নয়। আমরা সর্বাধিক 20-30 সেন্টিমিটার পর্যন্ত তারের সাহায্যে 500, 000 বিট/সেকেন্ডের গতি বা বাউড রেট ব্যবহার করব, যা প্রয়োজনের তুলনায় 1.5 গুণ বেশি।

কেন লিনাক্স, উইন্ডোজ নয় ???

সুতরাং, আমাদের পিসির সাথে 1/44100 = 22.67 ইউএস এর ব্যবধানে (উপরে উল্লেখিত) নমুনা পাঠাতে হবে।

তাহলে আমরা কিভাবে এটা করতে প্রোগ্রাম করতে পারি ??

আমরা C ++ ব্যবহার করতে পারি কোন ধরনের ঘুমের ফাংশন ব্যবহার করে একটি ব্যবধানে সিরিয়ালের মাধ্যমে একটি ডাটা বাইট পাঠাতে

যেমন ন্যানোস্লিপ, ক্রোনো, ইত্যাদি, ইত্যাদি।

জন্য (int x = 0; x

sendData (x);

nanosleep (22000); // 22uS

}

কিন্তু উইন্ডোজ এ কাজ করে না এটাও লিনাক্সে এইভাবে কাজ করে নি (কিন্তু আমি অন্য একটি উপায় খুঁজে পেয়েছি যা আপনি আমার সংযুক্ত কোডে দেখতে পারেন।)

কারণ আমরা উইন্ডোজ ব্যবহার করে এই ধরনের দানাদারতা অর্জন করতে পারি না। এই ধরনের গ্রানুলারিটি অর্জন করতে আপনার লিনাক্স প্রয়োজন।

লিনাক্সেও আমি যে সমস্যাগুলি পেয়েছি …

আমরা লিনাক্স ব্যবহার করে এই ধরনের গ্রানুলারিটি অর্জন করতে পারি, কিন্তু 22uS এর জন্য আমার প্রোগ্রাম ঘুমানোর জন্য আমি এমন কোন ফাংশন পাইনি।

ন্যানোস্লিপ, ক্রোনো ন্যানোস্লিপ, ইত্যাদি ইত্যাদি ফাংশনগুলিও কাজ করে না, কারণ তারা শুধুমাত্র 100 ইউএসের বেশি ঘুম দেয়। কিন্তু আমার ঠিক 22 ইউএস দরকার ছিল। আমি গুগলে প্রতিটি পৃষ্ঠায় গবেষণা করেছি এবং C/C ++ এ উপলব্ধ সমস্ত সম্ভাব্য ফাংশন নিয়ে পরীক্ষা -নিরীক্ষা করেছি কিন্তু আমার জন্য কিছুই কাজ করেনি। তারপরে আমি আমার নিজের ফাংশন নিয়ে এসেছিলাম, যা আমার জন্য সত্যিকারের আকর্ষণ হিসাবে কাজ করেছিল।

এবং আমার কোড এখন 1uS বা তার উপরে একটি সঠিক, সুনির্দিষ্ট ঘুম প্রদান করে !!!

সুতরাং আমরা কঠিন অংশটি coveredেকে রেখেছি এবং বাকিগুলি সহজ …

এবং আমরা একটি নির্দিষ্ট ফ্রিকোয়েন্সি এবং ক্যারিয়ার ওয়েভ ফ্রিকোয়েন্সি সহ Arduino ব্যবহার করে একটি PWM সংকেত তৈরি করতে চাই।

সুতরাং, PWM তৈরি করতে আমাদের Arduino এর তথাকথিত TIMERS ব্যবহার করতে হবে। যাইহোক, আমি সে বিষয়ে খুব বেশি বিশদে যাব না, কারণ আপনি TIMERS বিষয়ে অনেক টিউটোরিয়াল পাবেন, কিন্তু যদি আপনি কিছু খুঁজে না পান, তাহলে নিচে মন্তব্য করুন আমি একটি তৈরি করব।

আমি আমাদের আরডুইনো পিনগুলি সংরক্ষণ করতে একটি টিসি 4420 মোসফেট ড্রাইভার ব্যবহার করেছি, কারণ তারা কখনও কখনও মোসফেট চালাতে এত বেশি কারেন্ট সরবরাহ করতে পারে না।

সুতরাং, এই প্রকল্পের প্রায় তত্ত্ব ছিল, আমরা এখন সার্কিট ডায়াগ্রাম দেখতে পারি।

মনোযোগ মনোযোগ মনোযোগ

প্রকৃতপক্ষে, এই প্রকল্পটি ইচ্ছাকৃতভাবে অনেক কঠিন করা হয়েছিল (আমি কেন বলব), অন্য একটি পদ্ধতি আছে যার জন্য noPC প্রয়োজন শুধু Arduino এবং স্পিকার আমার পরবর্তী নির্মাণযোগ্য। লিঙ্ক এখানে।

*এই প্রকল্পের মূল উদ্দেশ্য হল সিরিয়াল কমিউনিকেশন ব্যবহার করা এবং এর শক্তি জানা এবং এইভাবে সূক্ষ্ম বিরতিতে আমরা আমাদের পিসিকে কীভাবে কাজ করতে পারি তা শিখতে পারি।

ধাপ 3: পরিকল্পিত

পরিকল্পিত
পরিকল্পিত

পরিকল্পিত হিসাবে দেখানো সমস্ত উপাদান সংযুক্ত করুন। সুতরাং আপনার এখানে দুটি বিকল্প আছে:-

1. একটি স্পিকার সংযুক্ত করুন (5V এর সাথে সংযুক্ত)

2. একটি ফ্লাইব্যাক ট্রান্সফরমার সংযুক্ত করুন (12V এর সাথে সংযুক্ত)

আমি উভয় চেষ্টা করেছি। এবং উভয়ই বেশ ভাল কাজ করে।

অস্বীকৃতি:-

*আমি সতর্কতার সাথে ফ্লাইব্যাক ট্রান্সফরমার ব্যবহার করার পরামর্শ দিচ্ছি কারণ এটি বিপজ্জনক হতে পারে কারণ এটি উচ্চ ভোল্টেজ তৈরি করে। এবং আমি কোন ক্ষতির জন্য দায়ী নই।*

ধাপ 4: অডাসিটি ব্যবহার করে MP3 কে WAV ফাইলে রূপান্তর করুন

অডাসিটি ব্যবহার করে MP3 কে WAV ফাইলে রূপান্তর করুন
অডাসিটি ব্যবহার করে MP3 কে WAV ফাইলে রূপান্তর করুন
অডাসিটি ব্যবহার করে MP3 কে WAV ফাইলে রূপান্তর করুন
অডাসিটি ব্যবহার করে MP3 কে WAV ফাইলে রূপান্তর করুন
অডাসিটি ব্যবহার করে MP3 কে WAV ফাইলে রূপান্তর করুন
অডাসিটি ব্যবহার করে MP3 কে WAV ফাইলে রূপান্তর করুন

তাই প্রথমে সফটওয়্যারটি ডাউনলোড করুন

1. অডেসিটি, সার্চ এবং গুগল থেকে ডাউনলোড করুন

2. WAV ফাইলকে C-Code এ রূপান্তর করতে, WAVToCode নামে একটি উইন্ডো অ্যাপ্লিকেশন ডাউনলোড করুন

আপনি এই লিঙ্ক থেকে WAVToCode সফটওয়্যার ব্যবহার করতে শিখতে পারেন এবং এই লিঙ্ক থেকে ডাউনলোড করতে পারেন।

আমি উভয় সফটওয়্যার কিভাবে ব্যবহার করতে হয় তার বিস্তারিত পদক্ষেপ দেব।

অনুগ্রহ করে এই নির্দেশাবলীর সাথে সংযুক্ত ফটোগুলি দেখুন।

এই ধাপে, আমরা MP3 কে Wav এ রূপান্তর করব। (ছবিগুলি অনুসরণ করুন, প্রকল্পের হার 44100Hz হতে হবে)

পরবর্তী ধাপে, আমরা একটি wav ফাইলকে C কোডে রূপান্তর করব।

ধাপ 5: WAV থেকে C-Code

WAV থেকে C-Code
WAV থেকে C-Code
WAV থেকে C-Code
WAV থেকে C-Code
WAV থেকে C-Code
WAV থেকে C-Code

ছবিগুলি অনুসরণ করুন।

শেষ দুটি ছবি দেখুন, পরিবর্তনগুলি অবশ্যই একই রকম হতে হবে, ক্যাপিটাল অক্ষর বড় হওয়া উচিত এবং ছোট হাতের ছোট হওয়া উচিত, অথবা কম্পাইল করার সময় আপনি সিনট্যাক্স ত্রুটি পাবেন।

(আপনি দেখতে পারেন যে 1min 41s গান 23mb স্থান নেয়।)

আপনার গানের নাম এবং সময়কালের সাথে যথাক্রমে গানের নাম এবং দৈর্ঘ্য পরিবর্তন করুন।

এবং সি কোড ফাইলটি সংরক্ষণ করুন।

Arduino এর সাথে আপনি যে সমস্ত গানগুলি খেলতে চান তার জন্য এটি করুন।

ধাপ 6: একটি চূড়ান্ত ফাইল তৈরি করুন এবং আপনার লিনাক্সকে ফায়ার করুন

একটি চূড়ান্ত ফাইল তৈরি করুন এবং আপনার লিনাক্সকে ফায়ার করুন
একটি চূড়ান্ত ফাইল তৈরি করুন এবং আপনার লিনাক্সকে ফায়ার করুন
একটি চূড়ান্ত ফাইল তৈরি করুন এবং আপনার লিনাক্সকে ফায়ার করুন
একটি চূড়ান্ত ফাইল তৈরি করুন এবং আপনার লিনাক্সকে ফায়ার করুন
একটি চূড়ান্ত ফাইল তৈরি করুন এবং আপনার লিনাক্সকে ফায়ার করুন
একটি চূড়ান্ত ফাইল তৈরি করুন এবং আপনার লিনাক্সকে ফায়ার করুন

এই লিঙ্কে প্রদত্ত ফাইলে আপনার সমস্ত রূপান্তরিত গান যুক্ত করুন।

এবং ছবিগুলি অনুসরণ করুন।

Arduino এ কোডটি আপলোড করুন, যা আমি সংযুক্ত করেছি।

সি কোড ফাইলের নামগুলি মনে রাখবেন।

শেষে আপনার ফেডোরা লাইভ ইউএসবি বা অন্যটি চালু করুন এবং জিসিসি কম্পাইলার ইনস্টল করুন এবং তারপরে ফোল্ডার থেকে কম্পাইলিং নির্দেশাবলী ব্যবহার করে প্রোগ্রামটি কম্পাইল করুন এবং এটি চালান।

শেষ পর্যন্ত, আপনি স্পিকার বা ফ্লাইব্যাকের গান শুনতে পারবেন।

এই নির্দেশযোগ্য পড়ার জন্য আপনাকে ধন্যবাদ এবং যদি আপনি এটি পছন্দ করেন তবে দয়া করে মন্তব্য করুন।

আমি এই নির্দেশের দ্বিতীয় অংশটি তৈরি করেছি, যা আরও সহজ এবং কাজ করার জন্য ন্যূনতম ঝামেলার প্রয়োজন। দ্বিতীয় অংশের লিঙ্ক (সবচেয়ে সহজ)

প্রস্তাবিত: