فهرست مطالب:
- مرحله 1: موارد مورد نیاز برای این پروژه (شرایط مورد نیاز)
- مرحله 2: درک اصل کار
- مرحله 3: شماتیک
- مرحله 4: با استفاده از Audacity MP3 را به فایل WAV تبدیل کنید
- مرحله 5: WAV به C-Code
- مرحله 6: یک فایل نهایی بسازید و لینوکس خود را روشن کنید
تصویری: پخش آهنگ ها (MP3) با Arduino با استفاده از PWM در بلندگو یا Flyback Transformer: 6 مرحله (همراه با تصاویر)
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:55
سلام بچه ها،
این اولین آموزش من است ، امیدوارم دوست داشته باشید !!
اساساً ، در این پروژه از ارتباط سریال بین آردوینو و لپ تاپ خود برای انتقال داده های موسیقی از لپ تاپ به آردوینو استفاده کرده ام. و با استفاده از Arduino TIMERS داده ها را به عنوان سیگنال PWM پخش کنید.
می خواستم اشاره کنم که این پروژه برای مبتدیان نیست !!!.
در واقع ، این پروژه یکی از طولانی ترین پروژه ها بود ، زیرا ما باید کارهای زیادی انجام دهیم تا این پروژه به نتیجه برسد.
توجه
من قسمت دوم این را اموزش داده ام ، که بسیار ساده تر است و برای کار به حداقل مشکلات نیاز دارد
پیوند به قسمت دوم (ساده ترین قسمت).
مرحله 1: موارد مورد نیاز برای این پروژه (شرایط مورد نیاز)
1. برد آردوینو (ما می توانیم از هر برد (328 ، 2560) یعنی Mega ، Uno ، Mini و غیره اما با پین های مختلف خاص استفاده کنیم)
2. رایانه یا لپ تاپ با لینوکس (من از Fedora 29 استفاده کرده ام) یا Live USB با لینوکس
3. Breadboard یا Perfboard
4. اتصال سیم
5. TC4420 (راننده Mosfet یا موارد دیگر)
6. پاور Mosfet (کانال N یا P ، لطفاً پس از آن سیم خود را متصل کنید) (من از کانال N استفاده کرده ام)
7. بلندگو یا Flyback Transformer (بله درست خوانده اید !!)
8. منبع تغذیه مناسب (0-12V) (من از منبع تغذیه ATX خودم استفاده کرده ام)
9. هیت سینک (من از رایانه قدیمی خود نجات داده ام)
10. کامپیوتر با ویندوز و قلم درایو.
برای اطلاع از عملکرد دقیق هر جزء و این پروژه لطفا مرحله بعدی را مطالعه کنید.
من قسمت دوم این را آموزش دادم ، که بسیار راحت تر است و برای کار به حداقل مشکلات نیاز دارد. به قسمت دوم (ساده ترین قسمت) پیوند دهید.
مرحله 2: درک اصل کار
آها !! طولانی ترین بخش یک درس آموز ، خواندن و نوشتن این بخش هر دو خسته کننده است.
اول از همه ، ما باید یک نمای کلی از نحوه عملکرد این موضوع در اختیار داشته باشیم.
آنچه ما در اینجا انجام می دهیم این است که ابتدا آهنگ MP3 خود را به فایل WAV و این فایل را به فایل هدر C با استفاده از نرم افزار که در پیوند قرار دارد ، تبدیل می کنیم. این کد C در واقع حاوی نمونه های داده 8 بیتی (چرا 8 بیتی؟ بیشتر بخوانید) است که باید با استفاده از آردوینو با سرعت یا سرعت ثابتی پخش کنیم ، که با توجه به نرخ نمونه گیری مشخص شده است.
نظریه سیگنال صوتی
برای کسانی که نمی دانند میزان نمونه گیری یا نرخ بیت چیست؟-
نرخ نمونه گیری به عنوان تعداد نمونه ها تعریف می شود ، ما در یک ثانیه بازی می کنیم (معمولاً با هرتز یا کیلوهرتز اندازه گیری می شود).
برای کسب اطلاعات بیشتر در جزئیات: اینجا را کلیک کنید
نرخ نمونه گیری استاندارد 44100 هرتز (بهترین کیفیت) ، 32000 هرتز ، 22050 هرتز و غیره
این بدان معناست که 44100 نمونه در یک ثانیه برای ایجاد موج بر این اساس استفاده می شود.
یعنی هر نمونه باید با فاصله ثابت 1/44100 = 22.67 uS پخش شود.
سپس عمق بیت یک سیگنال صوتی می آید ، که معمولاً معیاری از نحوه دقیق نمایش یک صدا در صدای دیجیتال است. هرچه عمق بیت بیشتر باشد ، صدای دیجیتال دقیق تر است.
اما با آردوینو یا هر میکروکنترلر دیگری با ساعت 16 مگاهرتز اجازه می دهد تا از ما فقط تا 8 بیت استفاده کنیم. دلیلش را توضیح خواهم داد.
یک فرمول در صفحه شماره 102 در برگه داده 328p وجود دارد:- برگه داده
من به جزئیات نمی پردازم ، چرا از این فرمول استفاده می کنم.
فرکانس سیگنال = سیگنال ساعت / N x (1+TOP)
سیگنال ساعت = 16 مگاهرتز (برد آردوینو)
N = پیش فروشنده (1 برای پروژه ما ارزش دارد)
TOP = مقدار 0 تا 2^16 (برای شمارنده تایمر 16 بیتی) (255 = 2^8 (8 بیتی) برای پروژه ما)
ما مقدار فرکانس سیگنال = 62.5 کیلوهرتز را دریافت می کنیم
این بدان معناست که فرکانس موج حامل به عمق بیت وابسته است.
فرض کنید ، اگر از مقدار TOP = 2^16 = 65536 (یعنی عمق بیت 16 بیتی) استفاده کنیم
سپس مقدار فرکانس سیگنال = 244 هرتز (که نمی توانیم استفاده کنیم) را دریافت می کنیم
OKK … بنابراین این نظریه زیاد در مورد نحوه عملکرد سیگنال های صوتی کافی است ، بنابراین به پروژه بازگردید.
کد C ایجاد شده برای یک آهنگ را می توان در آردوینو کپی کرد و قابل پخش است ، اما پخش صوتی ما تا 3 ثانیه با نرخ نمونه برداری 8000 هرتز محدود است. زیرا این کد C یک فایل متنی است و در نتیجه فشرده نشده و از حالت فشرده خارج می شود. و فضای زیادی را می گیرد. (به عنوان مثال فایل کد C با صدای 43 ثانیه ای با 44 نمونه 1 کیلوهرتز تا 23 مگابایت فضا را اشغال می کند) و Arduino Mega ما فضایی در حدود 256 کیلوبایت به ما می دهد.
بنابراین چگونه آهنگ ها را با استفاده از آردوینو پخش می کنیم. این امکان وجود ندارد. این دستورالعمل جعلی است خوانندگان نگران نباشید ،
به همین دلیل ما باید از نوعی ارتباط بین آردوینو با سرعت بسیار بالا (حداکثر 1 مگابایت بر ثانیه) برای ارسال داده های صوتی به آردوینو استفاده کنیم.
اما برای انجام این کار دقیقاً چقدر سرعت نیاز داریم ؟؟
پاسخ 44000 بایت در ثانیه است که به معنی سرعت بیش از 44000*8 = 325 ، 000 بیت در ثانیه است.
برای ارسال این داده ها به آردوینو به یک دستگاه جانبی دیگر با فضای ذخیره سازی بزرگ نیاز داریم. و این رایانه شخصی ما با لینوکس خواهد بود (چرا کامپیوتر با لینوکس ؟؟؟ لطفاً برای کسب اطلاعات بیشتر در مورد آن بیشتر بخوانید.)
Ahaa … این بدان معناست که ما می توانیم از Serial Communication استفاده کنیم … اما صبر کنید … سریال فقط با سرعت 115200 بیت بر ثانیه امکان پذیر است که به معنی (325000/115200 = 3) است که سه برابر کندتر از مقدار مورد نیاز است.
نه دوستان من اینطور نیست. ما از سرعت یا Baud Rate 500 ، 000 Bits/s speed با کابل حداکثر 20-30 سانتی متر استفاده می کنیم ، که 1.5 برابر سریعتر از مقدار مورد نیاز است.
چرا لینوکس نه ویندوز ؟؟؟
بنابراین ، ما باید نمونه هایی را با فاصله (که در بالا مشخص شده است) 1/44100 = 22.67 uS با رایانه خود ارسال کنیم.
بنابراین چگونه می توانیم آن را برای این کار برنامه ریزی کنیم ؟؟
ما می توانیم از C ++ برای ارسال یک بایت داده از طریق Serial در فاصله ای با استفاده از نوعی عملکرد خواب استفاده کنیم
مانند nanosleep ، Chrono و غیره و غیره….
برای (int x = 0؛ x
sendData (x) ؛
nanosleep (22000) ؛ // 22uS
}
اما در ویندوز کار نمی کند همچنین در لینوکس به این روش کار نمی کند (اما من راه دیگری را پیدا کردم که می توانید در کد من پیوست مشاهده کنید.)
زیرا نمی توانیم با استفاده از پنجره ها به چنین دانه بندی برسیم. برای دستیابی به چنین جزئیاتی به لینوکس نیاز دارید.
مشکلاتی که حتی در لینوکس پیدا کردم…
ما می توانیم با استفاده از لینوکس به چنین جزئیاتی برسیم ، اما من چنین عملکردی را برای خواباندن برنامه من برای 22uS پیدا نکردم.
عملکردهایی مانند nanosleep ، Chrono nanosleep و غیره و غیره نیز کار نمی کنند ، زیرا فقط بیش از 100 یو اس یک خواب را تأمین می کنند. اما من دقیقاً به 22 uS نیاز داشتم. من تک تک صفحات گوگل را مورد بررسی قرار داده ام و تمام عملکردهای احتمالی موجود در C+ C ++ را آزمایش کرده ام اما هیچ چیزی برای من کار نکرد. سپس به عملکرد خودم رسیدم که به عنوان یک جذابیت واقعی برای من کار می کرد.
و کد من اکنون یک خواب دقیق و دقیق 1uS یا بالاتر را ارائه می دهد !!!
بنابراین ما قسمت سخت را پوشش داده ایم و بقیه آسان است…
و ما می خواهیم یک سیگنال PWM با استفاده از آردوینو با فرکانس خاص و فرکانس موج حامل تولید کنیم. (62.5 کیلوهرتز (همانطور که در بالا محاسبه شد) برای ایمنی خوب سیگنال).
بنابراین ، ما باید از TIMERS of Arduino برای ایجاد PWM استفاده کنیم. به هر حال ، من در این مورد جزئیات زیادی ارائه نمی دهم ، زیرا آموزش های زیادی در مورد موضوع TIMERS خواهید یافت ، اما اگر برخی از آنها را پیدا نکردید ، در زیر نظر دهید که من یکی از آنها را توضیح خواهم داد.
من برای ذخیره پین های آردوینو از درایور Mosfet TC4420 استفاده کرده ام ، زیرا آنها نمی توانند جریان زیادی برای رانندگی MOSFET در بعضی مواقع ایجاد کنند.
بنابراین ، این تقریباً تئوری این پروژه بود ، اکنون می توانیم نمودار مدار را ببینیم.
توجه ATTENTION توجه
در واقع ، این پروژه عمداً بسیار دشوار شده است (دلیلش را می گویم) ، روش دیگری وجود دارد که به noPC فقط Arduino و بلندگو در دستورالعمل بعدی من نیاز دارد. پیوند در اینجا است.
*هدف اصلی این پروژه استفاده از ارتباط سریال و آگاهی از قدرت آن و یادگیری نحوه برنامه ریزی رایانه شخصی ما برای انجام وظایف دقیق در چنین فواصل زمانی مناسب است.*
مرحله 3: شماتیک
همه اجزا را همانطور که در شماتیک نشان داده شده است وصل کنید. بنابراین شما در اینجا دو گزینه دارید:-
1. اتصال بلندگو (متصل به 5V)
2. یک ترانسفورماتور Flyback را وصل کنید (متصل به 12 ولت)
من هر دو را امتحان کرده ام. و هر دو بسیار خوب کار می کنند.
سلب مسئولیت:-
*توصیه می کنم از Flyback Transformer با احتیاط استفاده کنید زیرا ممکن است خطرناک باشد زیرا ولتاژهای بالا تولید می کند. و هیچ گونه خسارتی متوجه من نخواهد بود.*
مرحله 4: با استفاده از Audacity MP3 را به فایل WAV تبدیل کنید
بنابراین ، ابتدا نرم افزار را بارگیری کنید
1. جسارت ، جستجو و بارگیری از Google
2. برای تبدیل فایل WAV به C-Code ، یک برنامه کاربردی با نام WAVToCode بارگیری کنید
می توانید نحوه استفاده از نرم افزار WAVToCode را از این لینک یاد بگیرید و آن را از این لینک بارگیری کنید.
همچنین مراحل دقیق نحوه استفاده از هر دو نرم افزار را ارائه می دهم.
لطفاً عکسهای مرتبط با این دستورالعمل را مشاهده کنید.
در این مرحله ، ما MP3 را به Wav تبدیل می کنیم. (عکسها را دنبال کنید ، نرخ پروژه باید 44100 هرتز باشد)
در مرحله بعد ، یک فایل wav را به C Code تبدیل می کنیم.
مرحله 5: WAV به C-Code
عکسها را دنبال کنید.
دو تصویر آخر را مشاهده کنید ، تغییرات باید دقیقاً یکسان باشد ، حروف بزرگ باید بزرگ و حروف کوچک باشد ، یا در هنگام کامپایل خطای نحو دریافت خواهید کرد.
(می بینید که آهنگ 1 دقیقه 41 ثانیه 23 مگابایت فضا را اشغال کرده است.)
نام و طول آهنگ را به ترتیب با نام و مدت آهنگ خود تغییر دهید.
و فایل C Code را ذخیره کنید.
این کار را با همه آهنگ هایی که می خواهید با آردوینو پخش کنند انجام دهید
مرحله 6: یک فایل نهایی بسازید و لینوکس خود را روشن کنید
همه آهنگهای تبدیل شده خود را به فایل ارائه شده در این پیوند اضافه کنید.
و تصاویر را دنبال کنید.
کد را در آردوینو که پیوست کرده ام آپلود کنید.
نام فایل های C Code را به خاطر بسپارید.
در انتها Fedora Live USB یا سایر دستگاه های خود را روشن کرده و کامپایلر gcc را نصب کرده و سپس با استفاده از دستورالعمل های کامپایل از پوشه برنامه را کامپایل و اجرا کنید.
در پایان ، شما قادر خواهید بود به آهنگ های Speaker یا Flyback گوش دهید.
با تشکر از شما برای خواندن این مطالب آموزنده و لطفا اگر دوست دارید نظر دهید.
ATTENTION من بخش دوم این را آموزش دادم ، که بسیار ساده تر است و برای کار به حداقل مشکلات نیاز دارد. پیوند به قسمت دوم (ساده ترین قسمت)
توصیه شده:
صحبت کردن با آردوینو - پخش MP3 با آردوینو بدون هیچ ماژولی - پخش فایل Mp3 از Arduino با استفاده از PCM: 6 مرحله
صحبت کردن با آردوینو | پخش MP3 با آردوینو بدون هیچ ماژولی | پخش فایل MP3 از آردوینو با استفاده از PCM: در این دستورالعمل نحوه پخش یک فایل mp3 با arduino بدون استفاده از هیچ ماژول صوتی را یاد می گیریم ، در اینجا ما از کتابخانه PCM برای Arduino استفاده می کنیم که PCM 16 بیتی با فرکانس 8kHZ پخش می کند ، بنابراین اجازه دهید این کار را انجام دهیم
پخش آهنگ با آردوینو با استفاده از ADC به PWM در Flyback Transformer یا بلندگو: 4 مرحله
پخش آهنگها با آردوینو با استفاده از ADC to PWM در Flyback Transformer یا بلندگو: سلام بچه ها ، این قسمت دوم از دستورالعمل دیگر من است (که بسیار دشوار بود) ، اساساً ، در این پروژه ، من از ADC و TIMERS در Arduino خود استفاده کرده ام تبدیل سیگنال صوتی به سیگنال PWM. این بسیار ساده تر از دستورالعمل قبلی من است
پخش سی دی بدون پخش کننده سی دی ، با استفاده از هوش مصنوعی و یوتیوب: 10 مرحله (همراه با تصاویر)
پخش سی دی بدون پخش کننده سی دی ، با استفاده از هوش مصنوعی و یوتیوب: آیا می خواهید سی دی های خود را پخش کنید اما دیگر سی دی پلیر ندارید؟ آیا وقت نداشتید سی دی های خود را پاره کنید؟ آنها را پاره کرد اما در صورت نیاز فایل ها در دسترس نیستند؟ مشکلی نیست. بگذارید هوش مصنوعی (هوش مصنوعی) سی دی شما را شناسایی کند و یوتیوب آن را پخش کند! من یک برنامه Android برای شما نوشتم
اتصال دستگاه پخش MP3 به نوار پخش کننده: 6 مرحله (همراه با تصاویر)
اتصال پخش کننده MP3 به نوار پخش کننده: نحوه اتصال پخش کننده mp3 یا منبع استریو دیگر به دستگاه پخش نوار به منظور گوش دادن به موسیقی
بلندگو با قفسه های دی وی دی مخفی و پخش کننده DVD: 11 مرحله (همراه با تصاویر)
بلندگو با قفسه های دی وی دی مخفی و پخش کننده DVD: من بلندگوهای بزرگ را دوست دارم زیرا خوب ، آنها زیبا به نظر می رسند. با این حال ، با ظهور بلندگوهای کوچک ماهواره ای ، دیگر آنقدر بلندگوی برج بزرگ را نمی بینید. اخیراً به یک جفت بلندگوی برج برخورد کردم که سوخته بود ، اما دیگر