شِفر (کود) و ویدئو: ضبطکننده صدای ISD1820 برای آردوینو
ماجیول ضبط و پخش صدای ساده ISD1820 به شما امکان میدهد با استفاده از آردوینو صدا را ضبط و پخش کنید. در این آموزش یاد میگیرید چگونه ISD1820 را با آردوینو راهاندازی کنید تا 20 ثانیه صدا ضبط کرده و آن را به فرمان شما پخش کند. این پروژه برای مبتدیانی که میخواهند پردازش صوتی با آردوینو را تجربه کنند عالی است.

در طول این آموزش، شناسههای کلیدی که در شِفر (کود) استفاده میشوند را خواهید یافت، مانندREC,PLAY_E، وPLAY_L. این شناسهها مربوط به پایههایی هستند که برای عملکردهای ضبط و پخش استفاده میشوند. علاوه بر این، نمونههای شِفر (کود) ارائهشده به روشنتر شدن منطق برنامهنویسی پشت این پروژه کمک میکنند. برای توضیح دقیقتر، حتماً ویدئو را در (در ویدئو در 00:00) تماشا کنید.
توضیح سختافزار
جزء اصلی این پروژه ماجیول ضبط صدای ISD1820 است که میتواند تا 20 ثانیه صدا را ضبط کند. این ماجیول دارای چندین پایه برای کنترل عملیات ضبط، پخش و عبور صدا (feed-through) است. ماجیول با ولتاژ تغذیهٔ 3V تا 4.5V کار میکند و با اکثر بردهای آردوینو سازگار است.
علاوه بر ماجیول ISD1820، به یک برد آردوینو، یک بلندگو و یک میکروفون نیاز خواهید داشت. آردوینو از طریق پایههای دیجیتال عملکرد ضبط و پخش را کنترل میکند. عملکرد ماجیول ساده است: وقتی پایه ضبط در حالت HIGH قرار گیرد، صوت را ضبط میکند و وقتی پایههای پخش فعال شوند، آن را پخش میکند.
جزئیات برگه اطلاعات
| تولیدکننده | ISD1820 |
|---|---|
| شماره قطعه | ISD1820 |
| ولتاژ منطق/ورودی-خروجی | 3.3 ولت معمولی |
| ولتاژ تغذیه | 3.0 ولت تا 4.5 ولت |
| جریان در حالت بیکار | 0.5 µA معمولی. |
| جریان کاری | حداکثر 30 میلیآمپر. |
| زمان ضبط | حداکثر 20 ثانیه. |
| زمان پخش | حداکثر 20 ثانیه. |
| بسته | پکیج DIP-8 |
- مطمئن شوید ولتاژ تغذیه بین 3.0 V و 4.5 V باشد تا از آسیب دیدن ماجیول جلوگیری شود.
- برای اتصال ایمن، از مقاومتها برای تبدیل سیگنال 5V آردوینو به سطح منطقی 3.3V استفاده کنید.
- مصرف جریان را پایش کنید؛ ماجیول در حین عملکرد میتواند تا 30 mA جریان بکشد.
- برای پخش، یک بلندگوی با توان پایین (۰.۵ وات) را به خروجی صوتی متصل کنید.
- این ماجیول از طولهای ضبط مختلف پشتیبانی میکند؛ زمانبندی را بر اساس نیازهای خود تنظیم کنید.
دستورالعملهای سیمکشی

برای سیمکشی ISD1820 به آردوینو خود، با اتصالِ ماجیولِVCCپایه را به خروجی 3.3V روی آردوینو وصل کنید. سپس آن را وصل کنیدGNDپایه ماجیول را به یکی از پایههای زمین آردوینو متصل کنید. برای پایههای کنترلی، پایههای ماجیول را متصل کنید.RECپایه به پایه 2 آردوینو،PLAY_Eبه پایه 3،PLAY_Lبه پایه 4، وFTبه پایه 5.
از آنجا که آردوینو با 5V کار میکند، باید از یک تقسیمکننده ولتاژ برای اتصال ایمن پایههای کنترل استفاده کنید. برای مثال، یک مقاومت 5 kΩ را از پایه آردوینو به پایه کنترل ماجیول متصل کرده و سپس یک مقاومت 3.3 kΩ را از پایه کنترل ماجیول به زمین وصل کنید. این کار را برای هر پایه کنترل اضافی تکرار کنید تا مطمئن شوید که آنها سطوح ولتاژ صحیح را دریافت میکنند.
نمونههای شِفر (کود) و راهنمای گامبهگام
قطعه شِفر (کود) زیر پایههای مورد استفاده برای ضبط و پخش را تعریف میکند. این به شما اجازه میدهد تا بهراحتی در شِفر (کود) خود به این پایهها ارجاع دهید، بهجای اینکه از مقادیر ثابت استفاده کنید.
#define REC 2 // pin 2 is used for recording
#define PLAY_E 3 // pin 3 is used for playback-edge trigger
#define PLAY_L 4 // pin 4 is used for playbackدر تابع setup، پایهها را بهعنوان خروجی مقداردهی اولیه میکنیم. این تضمین میکند که آردوینو میتواند ماجیول ISD1820 را بهطور مؤثر کنترل کند.
void setup()
{
pinMode(REC, OUTPUT); // set the REC pin as output
pinMode(PLAY_L, OUTPUT); // set the PLAY_L pin as output
pinMode(PLAY_E, OUTPUT); // set the PLAY_E pin as output
}حلقهٔ اصلی ورودی کاربر از نمایشگر مسلسل را بررسی میکند. بسته به خصیصه دریافتشده، عملیات مناسب مانند ضبط یا پخش صدا را انجام میدهد.
void loop() {
while (Serial.available() > 0) {
char inChar = (char)Serial.read();
if (inChar == 'p' || inChar == 'P') {
digitalWrite(PLAY_E, HIGH); // Start playback
delay(50);
digitalWrite(PLAY_E, LOW); // Stop playback
}
}این ساختار شرطی امکان کنترل منعطف ISD1820 را بر اساس ورودی کاربر فراهم میکند و ضبط و پخش صدا را در صورت نیاز آسان میسازد. برای جزئیات بیشتر، شِفر (کود) کامل در پایینِ مقاله قرار دارد.
تظاهرات / چه انتظاری باید داشته باشید
پس از اینکه همه چیز راهاندازی شد و شِفر (کود) آپلود شد، باید بتوانید با ارسالِrدستور از طریق نمایشگر مسلسل و پخش با استفاده ازpفرمان. رفتار مورد انتظار شامل یک پاسخ در نمایشگر مسلسل است که نشان میدهد ضبط چه زمانی شروع و چه زمانی متوقف میشود، و همچنین پخش چه زمانی آغاز و چه زمانی پایان مییابد. زمانبندی تعیینشده در شِفر (کود) را در نظر داشته باشید؛ برای مثال، ضبط برای 3 ثانیه تنظیم شده و پخش برای 5 ثانیه (در ویدئو در 05:00).
/*
* ISD1820 Arduino Voice Recorder
* to record and playback sound using Arduino and ISD1820 Sound Recorder
* Watch the video https://youtu.be/IfK8z_o5vbk
* get this code from https://robojax.com
* Get this code and other Arduino codes from Robojax.com/RJT58
Learn Arduino step by step in a structured course with all material, wiring diagrams, and libraries
all in one place.
/*
* ISD1820 Arduino Voice Recorder
* Code Written by Ahmad Shamshiri for Robojax.com
* on Jan 04, 2018 at 08:57, in Ajax, Ontario, Canada
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: This code is "AS IS" and for educational purposes only.
*/
#define REC 2 // pin 2 is used for recording
#define PLAY_E 3 // pin 3 , P-E is used for playback-edge trigger
// when PLAY_E goes HIGH, playback STARTS and continues
// ISD1820 Arduino Voice Recorder for Robojax.com
#define PLAY_L 4 // pin 4 , P-Lis used for playback
// when PLAY_L is HIGH, it will playback. As soon as it goes LOW, playback STOPS
// So you have to keep it HIGH to keep playing
#define FT 5 // pin 5 is used for feed through
// if the SPI (speaker) pin is used to send audio to another device,
// set FT to high and any audio from the microphone will pass through the SPI connector
// and will NOT record
#define playTime 5000 // playback time 5 seconds
#define recordTime 3000 // recording time 3 seconds
#define playLTime 900 // press and release playback time 0.9 seconds
void setup()
{
// ISD1820 Arduino Voice Recorder for Robojax.com
pinMode(REC,OUTPUT);// set the REC pin as output
pinMode(PLAY_L,OUTPUT);// set the PLAY_L pin as output
pinMode(PLAY_E,OUTPUT);// set the PLAY_e pin as output
pinMode(FT,OUTPUT);// set the FT pin as output
Serial.begin(9600);// set up Serial monitor
}
void loop() {
// ISD1820 Arduino Voice Recorder for Robojax.com
while (Serial.available() > 0) {
char inChar = (char)Serial.read();
if(inChar =='p' || inChar =='P'){
digitalWrite(PLAY_E, HIGH);
delay(50);
digitalWrite(PLAY_E, LOW);
Serial.println("Playback Started");
delay(playTime);
Serial.println("Playback Ended");
break;
}// if
else if(inChar =='r' || inChar =='R'){
digitalWrite(REC, HIGH);
Serial.println("Recording started");
delay(recordTime);
digitalWrite(REC, LOW);
Serial.println("Recording Stopped ");
}
else if(inChar =='l' || inChar =='L'){
digitalWrite(PLAY_L, HIGH);
Serial.println("Playback L Started");
delay(playLTime);
digitalWrite(PLAY_L, LOW);
Serial.println("Playback L Ended");
}
// ISD1820 Arduino Voice Recorder for Robojax.com
Serial.println("**** Serial Monitor Exited");
}// wihile
Serial.println("**** Enter r to record, p to play");
delay(500);
}
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
-
ایبیضبطصوت ISD1820 از eBayebay.us
-
علیاکسپرسضبط کننده صدا ISD1820 از علیاکسپرسs.click.aliexpress.com
منابع و مراجع
هنوز هیچ منبعی موجود نیست.
فایلها📁
فایل فریزینگ
-
ماجیول ضبط صوت ISD1820
ISD1820-module.fzpz0.01 MB