كود البحث

كود أردوينو وفيديو: مسجل صوت أردوينو ISD1820

كود أردوينو وفيديو: مسجل صوت أردوينو ISD1820

وحدة ISD1820 هي وحدة مسجل صوت بسيطة تتيح لك تسجيل وتشغيل الصوت باستخدام أردوينو. في هذا الدرس ستتعلم كيفية إعداد ISD1820 مع أردوينو لتسجيل ما يصل إلى 20 ثانية من الصوت وتشغيله عند الطلب. هذا المشروع مثالي للمبتدئين الذين يرغبون في استكشاف معالجة الصوت باستخدام أردوينو.

isd1820 voice recording module

طوال هذا الدرس، ستجد المعرفات الأساسية المستخدمة في الكود، مثلREC,PLAY_E، وPLAY_L. تتوافق هذه المعرفات مع الدبابيس المستخدمة لوظائف التسجيل والتشغيل. بالإضافة إلى ذلك، ستساعد مقتطفات الشيفرة المقدمة في توضيح منطق البرمجة وراء هذا المشروع. لمزيد من الشرح التفصيلي، تأكد من مشاهدة الفيديو (في الفيديو عند 00:00).

شرح الأجهزة

المكون الرئيسي في هذا المشروع هو وحدة مسجل الصوت ISD1820، التي يمكنها تسجيل الصوت لمدة تصل إلى 20 ثانية. تحتوي الوحدة على عدة دبابيس للتحكم في التسجيل والتشغيل وتمرير الإشارة. تعمل الوحدة بجهد تغذية بين 3V و4.5V، مما يجعلها متوافقة مع معظم لوحات أردوينو.

بالإضافة إلى وحدة ISD1820، ستحتاج إلى لوحة أردوينو ومكبر صوت وميكروفون. ستتحكم لوحة الأردوينو في وظائف التسجيل والتشغيل عبر دبابيس رقمية. عمل الوحدة بسيط: تسجل الصوت عندما يُوضَع دبوس التسجيل في مستوى عالٍ وتُشغِّل الصوت عندما تُفَعَّل دبابيس التشغيل.

تفاصيل ورقة البيانات

المصنّعISD1820
رقم القطعةISD1820
جهد المنطق/الإدخال والإخراج3.3 فولت نموذجي.
جهد التغذية3.0 فولت إلى 4.5 فولت
تيار الخمول0.5 µA نموذجي.
تيار التشغيل30 mA كحد أقصى.
مدة التسجيل20 ثانية كحد أقصى.
مدة التشغيل20 ثانية كحد أقصى.
حزمةحزمة DIP ذات 8 دبابيس

  • تأكد من أن جهد التغذية بين 3.0 فولت و4.5 فولت لتجنب إتلاف الوحدة.
  • استخدم مقاومات لتحويل إشارة أردوينو 5V إلى مستوى منطق 3.3V للتوصيل الآمن
  • راقب استهلاك التيار؛ يمكن أن يسحب الوحدة ما يصل إلى 30 mA أثناء التشغيل.
  • وصل مكبر صوت منخفض القدرة (0.5 W) إلى مخرج الصوت للتشغيل.
  • تدعم الوحدة أطوال تسجيل مختلفة؛ اضبط التوقيت حسب احتياجاتك.

تعليمات التوصيل الكهربائي

Arduino wiring for ISD1820 voice_recorder
Arduino wiring for ISD1820 voice_recorder

لتوصيل 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).

الصور

Arduino wiring for ISD1820 voice_recorder
Arduino wiring for ISD1820 voice_recorder
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
isd1820 voice recording module
72-This is the Arduino code and video: ISD1820 Arduino Voice Recorder
اللغة: C++
/*
 * 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);
}

الأشياء التي قد تحتاجها

الموارد والمراجع

لا توجد موارد حتى الآن.

ملفات📁

Fritzing File