پروژه ضبط و پخش صدا با میکروکنترلر و 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 خیلی کم یاب شده.
منبع: میکرودیزاینرالکترونیک