پروژه ضبط و پخش صدا با میکروکنترلر و ISD4004 همراه با اکولایزر یک پروژه کاربردی و ترکیبی از دیجیتال و آنالوگ می باشد.این پروژه کاربرد هایی مانند گفتن یک پیام متنی در آسانسورها عروسک ها دستگاه های سخنگو و… دارد.
قسمت اصلی این پروژه آیسی ضبط و پخش صدا ISD4004 می باشد.از میکروکنترلر به عنوان قسمت کنترل کننده آیسی و استفاده شده روی پروژه 3 عدد پوش باتن یا شستی که یکی برای ضبط صدا ، یکی برای پخش و یکی هم برای قطع عملیات ضبط یا پخش پیش بینی شده است. با فشردن کلیک ضبط میکروکنترلر کدهای لازم برای ضبط صدا را با پروتکل SPI به آیسی ISD4004 ارسال می کند و تا زمانی که شستی STOP فشار داده نشده است ضبط صدا ادامه پیدا می کند (البته محدودیت حافظه یادتون نره) و با فشردن شستی STOP ضبط صدا خاتمه پیدا می کنه و با فشردن شستی پخش یا PLAY صدای ذخیره شده پخش می شود.
برای ورودی صدا از یک عدد میکروفون خازنی می توانیم استفاده کنیم و یا با فیش هدفون می توانید صدا را به ورودی آیسی ISD4004 اعمال کنید.در این مدار یک اکولایزر با آیسی PT2389 پیش بینی شده است که افکت های مختلف را می توانید روی صدا اعمال کنید و همچنین از یک آیسی تقویت کننده LM386N برای تقویت صدا استفاده کردیم و البته این سه بخش (بلوک ضبط و پخش صدا -بلوک اکولایز – بلوک تقویت کننده ) جدا از هم هستند و هر قسمت را دوست نداشتید می توانید استفاده نکنید.مثلا خروجی آیسی ضبط و پخش را مستقیم به تقویت کننده وصل کنید نحوه وصل در شکل زیر مشخص است.
فیلم عملکرد پروژه ضبط و پخش صدا از خروجی گوشی
فقط دقت کنید برای اینکه صدا با کیفیت بالا ضبط شود بهتره از خروجی کامپیوتر و دامنه صدا پایین باشه.
فیلم تست با میکروفون خازنی (برای کیفیت بالاتر میکروفون بهتر)
لیست قطعات پروژه ضبط و پخش صدا
(شماتیک و عکس مدار را چک کنید تا اگر قطعه ای را فراموش کردم یادآور کنید.)
- آی سی ضبط و پخش ISD4004 (دقت کنید اصل باشه 🙂 )
- آی سی اکولایزر PT2389
- آی سی تقویت کننده LM386N-1 هشت پایه
- میکروکنترلر ATMEGA8-A DIP
- رگولاتور 3.3 ولت LF33
- رگولاتور 5 ولت 7805
- پوش باتن تک سوئیچ 2 پایه 10 عدد
- پتانسیومتر ولوم 10 کیلو اهم
- ال ای دی سبز 5 عدد
- ال ای دی قرمز 4 عدد
- مقاومت صفر اهم 5 عدد
- سوکت 28 پین آی سی مگا8
- سوکت 8 پین سوکت
- 28 پین برای ISD4004
- سوکت 24 پین برای PT2389
- مقاومت 100 اهم
- 3 عدد خازن 100 میکروفاراد 2 عدد برای رگولاتور ها
- خازن 1 میکرو فارارد برای ISD و PT هفت عدد
- مقاومت 4.7 کیلو اهم 12 عدد
- خازن 470 پیکو فاراد 1 عدد برای تقویت کننده
- خازن 220 میکرو فاراد برای تقویت کننده دو عدد
- خازن 10 میکروفاراد برای نقویت کننده 2 عدد
- خازن 100نانو یا 104 ده عدد
- خازن 102 5عدد
- خازن 22 نانو 223 دو عدد
- مقاومت 10کیلو اهم 1 عدد
- مقاومت 5.6 2 عدد یا مقاومت 4.7 کیلو دو عدد
- پین هدر نری 40*1 یک شاخه
- میکرو فون خازنی
- فیش هدفونی برای ورودی ضبط صدا در صورت نیاز
- اسپیکر 16 اهم 1وات
- سیم بردبردی مادگی برای وصل کردن ورودی ها و خروجی ها طبقات مختلف (خروجی آیسی به تقویت کننده و یا خروجی صدا به ورودی اکولایزر)
اتصالات برنامه نوشته شده :
شماتیک زیر فقط قسمتی از شماتیک اصلی است ولی برای برنامه زیر کافی می باشد.شماتیک کامل را بصورت پی_دی_اف و با کیفیت بالا از زیر همین نوشته دانلود کنید.
شستی های PLAY -STOP-Record
#define play_key PIND.7 #define rec_key PIND.6 #define stop_key PIND.5
ال ای دی های وضعیت :
#define rec_led PORTD.0 #define play_led PORTD.1
نمونه کد نوشته شده برای میکروکنترلر ATMEGA8
#include <mega8.h> #include <stdio.h> #include <delay.h> #define SCK 5 #define MOSI 3 #define CS 0 #define SS 2 #define POWERUP 0x20 #define SETPLAY 0xE0 #define PLAY 0XF0 #define SETREC 0XA0 #define REC 0XB0 #define STOPPWRDN 0X10 #define STOP 0X30 #define play_key PIND.7 #define rec_key PIND.6 #define stop_key PIND.5 #define rec_led PORTD.0 #define play_led PORTD.1 unsigned char spi(unsigned char data); void playback(void); void record(void); void stop(void); //Melec.ir void main() { DDRB|=((1<<CS)|(1<<SCK)|(1<<MOSI)|(1<<SS)); SPCR=((1<<SPE)|(1<<MSTR)|(1<<SPR1)|(1<<SPR0)|(1<<DORD)); MCUCR=0x00; GICR=0xc0; PORTB|=1<<CS; DDRD=0X03; PORTD=0XE0; DDRC=0XFF; //#asm("sei") while(1) { play_led=0; rec_led=0; if(!play_key) { delay_ms(300); playback(); play_led=1; rec_led=0; while(1) { if(!stop_key) { delay_ms(300); stop(); goto st; } } } if(!rec_key) { delay_ms(300); record(); play_led=0; rec_led=1; while(1) { if(!stop_key) { delay_ms(300); stop(); goto st; } } } st: } } unsigned char spi(unsigned char data) { SPDR=data; while(!(SPSR & 0X80)); } interrupt [EXT_INT0] void external_int0_INT(void) { #asm("cli") #asm("sei") } interrupt [EXT_INT1] void external_int1_RAC(void) { #asm("cli") #asm("sei") } void playback(void) { PORTD.0=1; PORTD.1=0; PORTB&=~(1<<CS); spi(POWERUP); PORTB|=1<<CS; delay_ms(30); PORTB&=~(1<<CS); spi(0x00); spi(0x00); spi(SETPLAY); PORTB|=1<<CS; PORTB&=~(1<<CS); spi(PLAY); PORTB|=1<<CS; } void record(void) { PORTD.0=0; PORTD.1=1; PORTB&=~(1<<CS); spi(POWERUP); PORTB|=1<<CS; delay_ms(25); PORTB&=~(1<<CS); spi(POWERUP); PORTB|=1<<CS; delay_ms(100); PORTB&=~(1<<CS); spi(0x00); spi(0x00); spi(SETREC); PORTB|=1<<CS; PORTB&=~(1<<CS); spi(REC); PORTB|=1<<CS; } void stop(void) { PORTB&=~(1<<CS); PORTC=spi(STOP)>>3; PORTB|=1<<CS; delay_ms(5); //Melec.ir }
خب امیداوارم تا اینجا یادگرفته باشید که چگونه با این آیسی کار کنید و نمونه شماتیک و برنامه را دیدید.
نکته مهم : آیسی ISD4004 خیلی کم یاب شده و مدل های تقلبی آن در بازار زیاد هستن در هنگام خرید خیلی دقت کنید از فروشگاه معتبر خرید کنید.
این پروژه شامل : فایل PCB طراحی شده در نرم افزار آلتیوم دیزاینر – شماتیک کامل با کیفیت بالا – فایل کدنویسی کدویژن پروژه
شما می توانید بعد از خرید و دانلود فایل ها فایل PCB را خودتان چاپ کنید و یا به یکی از شرکت های مدارچاپی بفرستید تا چاپ و از روی لیست قطعات ، قطعات را تهیه و با نقشه مدار و فایل PCB برد را منتاژ کنید. مثلا روی فایل PCB نوشته U2 که روی شماتیک نیز اسم قطعه بهمراه شماره قطعه (U2) مشخص هستند.بعد از منتاژ از روی برنامه میکروکنترلر را پروگرام و تست کنید.این پروژه چندین بار منتاژ شده و هیچ مشکل سخت افزاری و نرم افزاری ندارد.و همچنین در خرید آیسی ISD4004 دقت کنید که اصل باشد. دقت داشته باشید که آیسی ISD4004 خیلی کم یاب شده.
اگر این نوشته برایتان مفید بود لطفا کامنت بنویسید.
سلام ، ممنون از سايت مفيدتون
اين پروژه قابليت ضبط و ذخيره سازي چند صدا و پخش جداگانه ي اونا رو هم داره؟
سلام
نه متاسفانه
من ميخواستم فايل كامل اين پروژه رو بخرم،
ميتونيد يه برنامه واسش بنويسيد كه قابليت ضبط و ذخيره سازي چند صدا و پخش اونا رو داشته باشه؟
يعني آدرس بهش بديم، بتونه يه صداي خاص رو كه ذخيره كرده بوده، پخش كنه
خودتان با مطالعه برنامه می توانید تغییرات لازم را انجام دهید . ولی متاسفانه چون فعلا دسترسی به سخت افزار ندارم تا بتونم کد را روی آن تست کنم . کد را هم بدون تست نمیشه تضمین کرد.
برنامه نويسي isd هاي مختلف با هم فرق داره؟
همين برنامه و سخت افزارش رو ميشه با isd ديگه اي انجام داد؟
برای ISD4004 ها با حافظه های مختلف که فرقی نداره مثلا ISD4004-8M یا ISD4004-16M
ولی روی ISD دیگر تست نکردم لطفا شماره ISD مورد نظر را بگین تا چک کنم بگم. ولی اگر اونم SPI باشه به احتمال زیاد نباید زیاد فرق داشته باشن .
isd هاي سري 2500 ميتونه جايگزين 4004 بشه تو اين پروژه؟
آیسی های ضبط و پخش ISD2500 کلا پروتکل ندارن وخیلی راحتر هستن و با کلید و یا براحتی با میکروکنترلر قابل کنترل می باشند. ولی ISD4004 پروتکل SPI داشت . پس جایگیزین نمیشه کرد ولی راحتر هستن .
با ISD هاي سري 2500 هم ميشه چند صدا ضبط و جداگانه آدرس دهي و پخش بشه؟
شماتیکش را نگاه کردم 10 بیت آدرس داره . ببینید :
http://www.experimentalistsanonymous.com/diy/Datasheets/ISD25xx%20Product%20Brief.pdf
خيلي ممنون،
فقط چطوري بايد با اين پين ها آدرس دهي كرد؟
واسه ميكروكنترلر ديگه برنامه ي آدرس نبايد بنويسيم؟
با صفر و یک کردن پایه های A0 – A9 می توانید از حافظه دلخواه شروع به ضبط و یا پخش کنید .
خب با میکرو هم می توانید این پایه ها را صفر یک کنید و البته با میکرو بهتر هست مثلا دیگه تو میکرو میزنید قسمت اول خودش آدرس دهی می کنه و پخش …
ببخشید میشه یه نمونه کد آدرس دهی با میکرو بنویسید.
با تشکر
ببینید دوست عزیز آدرس دهی کمی شاید بزرگ بیاد بنظر این میشه آدرس دهی :
فک کن آیسی دلخواه 8 تا پایه آدرس دهی و میکرو هم هشت بیتی مانند avr است و به پورت A وصل شده و می خواهید از خانه صفر شروع به ضبط کنید :
PORTA=0X00
سلام وقت بخیر،
در این پروژه خط 105 کار آدرس دهی رو انجام میده و خط 107 کار play؟
و چرا 105 دوباره در خط 106 تکرار شده؟
با تشکر
سلام
کل چند خط باهم کار پلی را انجام میدن . خط 105 و 106 باهم آدرس دهی هستند چون 16 بیتی است .
خیلی ممنون بابت راهنمایی هاتون،
میشه توضیح بدید که چرا تو خط های 4 تا 7 این مقادیر رو به پین ها دادید؟
این ها پایه های SPI را مشخص میکنن مثلا CS به کدوم پایه وصل میشه و …
خیلی ممنون از راهنماییتون،
بنده فایل کامل پروژه رو دانلود کردم؛
ولی متوجه نشدم که P1,P2,… دقیقا چه قطعاتی هستند؟
ورودی و خروجی هر قسمت را جدا گذاشتیم . مثلا ورودی میکروفون خروجی آیسی صوتی . ورودی اکولایزر و خروجی آن و همچنین ورودی تقویت کننده و خروجی نقویت کننده
خیلی ممنون از راهنماییتون،
بنده فایل کامل پروژه رو دانلود کردم؛
فقط متوجه نشدم که P1,P2,.. دقیقا چه قطعاتی هستند؟
ورودی و خروجی هر قسمت مدار هستن.
سلام مجدد،
Vcc استفاده شده در این پروژه چند ولت است؟
سلام
اگر شماتیک را منظرتان هست که 3.3 ولت به vcc اختصاص داده شده ولی ورودی اصلی مدار همانطور که در شماتیک هم هست 9 ولت است و بعد یک رگولاتور 5 ولت برای قسمت هایی که نیاز به 5 ولت دارند. و یک رگولاتور 3.3 برای قسمت هایی که نیاز به 3.3 ولت دارند .
بله، شماتیک رو دیدم
ولی مشکلی که هست وقتی ولتاژ ورودی که در شماتیک 9 ولت اومده را از 6.8 ولت بالاتر می برم، اسپیکر وزوز میکنه!
به نظر شما مشکل چیه؟
خب رگولاتور های مدار تا وقتی زیر 7 ولت هستن کار نمیکنن یا درستکار نمیکنن وقتی ولتاژ را بالا میبرین تازه شروع به کار میکنن.
مدار را چطوری بستین ؟ pcb را زدین یا روی بردبرد ؟
آیسی isd4004 را از کجا تهیه کردین ؟ قیمتیش چقدر بود ؟ خراب نباشه
ببینید وقتی رکمه ضبط را میزنید باید ال ای دی روشن و صدای اسپیکر تغییر میکند یا تغییرات را میبینید ؟
سلام،
روی بردبرد در حال تست هستم تا بعد pcb چاپ کنم
از پاساژ امجد جمهوری تهیه کردم 30000 تومان بود، از کجا باید مطمئن بشم که خراب نباشه؟
وقتی دکمه ی play رو می زنم، LED روشن میشه اما اسپیکر بوق میزنه!
و وقتی دکمه ی record رو میزنم، LED سبز روشن میشه
طبق صحبت هایی که در ایمیل ازتون دریافت کردم مشکل از قسمت تقویت کننده بوده که صدا ….
سلام وادب
اگه من بخوام برای خروجی از led استفاده کنم که مثلا هنگام پخش ی اهنگ رقص نور داشته باشه از این مدار میشه استفاده کرد؟
سلام . نه مداری های مناسب کار شما هستن که با تغییر صدا وضعیت ال ای دی ها عوض می شود . در سایت ما هم پروژه مشابه است :
پروژه پردازش صوت و کنترل فواره های آب [رقص نور اکولایزری]
http://goo.gl/1HHlp9
با عرض سلام
با ای سی isd2560 میشه بدون میکرو کنترلر صدا رو ضبط و پخش نمود؟
سلام . با اینکه باهاش کار نکردم ولی الان عکس شماتیکش را دیدم لازم نداره فقط سه تا کلید بهش وصل کنید کافیه
سلام
پروژه کارشناسی من دقیقا شبیه اینه با این تفاوت که باید روی حافظه sd ذخیره بشه. باید چه تغییراتی انجام بدم تو این مدار. ممنون میشم کمک کنین
سلام شما باید بجای آیسی ISD4004 از یک آیسی مثلا VS1003 و حافظه SD استفاده کنید.
نمیدونم با آی سی کار کردین
اگه ممکنه پروژه ای بزارید که صدا رو بگیره پردازشش کنه و با توجه به فرکانسهای صدا و واحد تایمر همون صدارو خود میکرو تولید کنه نه آی سی.
سلام بنده هزینه پروژه ضبط و پخش دیجیتال صدا را پرداخت کردم ولی هنوز به ایمیلم فرستاده نشده
با سلام ایملتون را چک کنید براتون دوباره فرستادم . اگر مشکلی داشت بازم اطلاع بدید.
نکته خیلی مهم
سلام ، وقت بخير
ميخواستم از پروژه ي خوبتون و راهنمايي هاي مفيدتون تشكر كنم
تنها سايتي كه به من كمك كرد تا بتونم پروژه م رو انجام بدم، سايت شما بود
فقط چند تا توصيه براي دوستاني كه ميخوان اين پروژه رو انجام بدن، دارم:
آيسي ISD4004 خيلي حساسه حتما چك كنيد كه پايه ٢٤ هنگام ضبط و پخش بايد پالس توليد كنه، كه با يه LED ميتونيد چك كنيد(آيسي من سوخته بود، فقط ضبط ميكرد ،از اين روش فهميدم )
براي اسپيكر و ميكروفن بهتره از سيم كوتاه استفاده كنيد و بهتره سيم شيلد شده باشه كه نويز كمتري داشته باشه(مدار من خيلي نويز داشت)
با تشكر فراوان??????
سلام خسته نباشید آقا من فایلهای پروژرو خریداری کردم ولی متاسفانه فایل هگزش نیست ممنون میشم واسم بفرستید چون من ساختمش مونده پروگرام کردنش فقط
با سلام ، تشکر از خردتان. داخل پوشه برنامه نویسی یک پوشه به اسم EXE هست داخل اون فایل هگز هست.
سلام.خسته نباشی مهندس
عرض کنم خدمت شما من ایران نیستم و مدت یکساله که ترکیه هستم.مهندسی برق از دانشگاه نجف اباد دارم و قصد دارم که یه رکوردر بسازم.اگر امکانش هست منو راهنمایی کنید.*******توضیحات شخصی*****.از قبل ازتون تشکر میکنم.
با سلام ، اگر وقت کافی دارید توصیه بنده استفاده از آیسی های دکدر و رکردر جدید مثل vs1003 و حتی خیلی جدیدتر هست که میتونی روی sd کارت دخیره کنید ولی اگر دقیق همین فایل را لازم دارید از ایمیل دانشگاهی ، یک ایمیل برامون بفرستید براتون بفرستیم.
سلام داداش خیلی ممنون …
ba tashakor az shoma
khayli khoob ast edameh dahid thank you
بسيار ، بسيار شرمنده كه دوباره مزاحم ميشم من پروژه ظبط و پخش صدا با ميكرو و ISD4004 رو برأى رَآه اندازى يك پروژه ديگه لازم دارم و وقت نمى كنمً خودم مونتاژ يا اينكه pcb رو بدم بسازند ايا كامل أين پروژه را برأى فروش داريد ؟ اگه جوابتون مثبت است چطورى بايد خريدارى كنم كجا بايد تهيه كنم ممنون ميشم بنده رو راهنمايي بفرماييد ببخشيد ميتونم إز شما خواهش كنم شماره تلفون من رو داشته باشيد ×××× قبلا إز همكارى شما كمال تشكر رو دارمI
سلام، متاسفانه خودمان پروژه انجام نمیدهیم. البته اگر علاقمند بودید پروژه خود را در لینک زیر ثبت کنید تا دوستان پروژه کار براتون پیشنهاد بفرستن. موفق باشید.
https://melec.ir/post-a-job