ضبط صدا با آردوینو (شنود جاسوسی با برد آردوینو)

میخواهید یک ضبط کننده صوت با اندازه کوچک بخرید؟ به راحتی میتوانید آن را با آردوینو بسازید. در این پروژه با استفاده از برد آردوینو یک ضبط صوت کوچک میسازیم که میتواند برای اهداف شنود جاسوسی و استراق سمع نیز استفاده شود. در شنود جاسوسی از میکروفن های کوچک برای ضبط صدا استفاده میکنند. در این پروژه نیز ما با یک میکروفن کوچک صدا را ضبط میکنیم. در این پروژه هر صدای ضبط شده میتواند تا 2 دقیقه (میتواند به مقدار دلخواه تنظیم شود) طول داشته باشد و به صورت سریال شماره گذاری میشود. بعد از روشن شدن، روند ضبط صدا تا زمانی که باتری به طور کامل تخلیه شود یا فضای کارت حافظه SD پر شده باشد، ضبط ادامه میابد. ما همچنین یک ال ای دی را تنظیم میکنیم تا مشخص کند که ضبط در حال انجام است.
مهم: پروژه مورد بحث در اینجا فقط برای استفاده های آموزشی در نظر گرفته شده است. به حریم خصوصی دیگران احترام بگذارید ، هرگونه سو استفاده از این دستگاه ممکن است طبق قانون محل زندگی شما جرم قابل مجازاتی باشد.
مدار پروژه ضبط صدا با آردوینو
شماتیک کامل مدار برای پروژه ضبط صدا مبتنی بر آردوینو در زیر نشان داده شده است. مغز پروژه Arduino Nano است که می توانید در نمودار ببینید.
قسمت اصلی این پروژه MAX9814 است که یک تقویت کننده میکروفون کم هزینه و با کارایی بالا با کنترل خودکار (AGC) است. این دستگاه دارای یک تقویت کننده افزایش متغیر (VGA) ، یک تقویت کننده خروجی ، یک ژنراتور ولتاژ بایاس میکروفن و یک مدار کنترل AGC است. همه اینها در داخل یک تراشه است.
MAX9814 (در تصویر بالا نشان داده شده است) صدا را ضبط کرده و به آردوینو منتقل می کند. سپس ، آردوینو صدا را به فرمت .wav تبدیل کرده و در داخل ماژول کارت MicroSD ذخیره می کند که به آردوینو نیز متصل است. پین های زیادی در ماژول MAX9814 موجود است ، اما به طور عمده از پین های VCC ، GND و out استفاده می شود. همچنین یک پین gain وجود دارد.
برای کارت micro SD ، از SPI (رابط موازی سریال) استفاده می شود. این پایه های SPI با پایه های زیر متصل می شوند.
پین های آردوینو | پین های حافظه SD |
5V | VCC |
GND | GND |
D10 | CS |
D11 | MOSI |
D12 | MISO |
D13 | SCK |
برای MAX9814 از پین های آنالوگ برد آردوینو استفاده شده است که در جدول زیر آورده شده است.
پین های آردوینو | پین های MAX9814 |
3.3V | VDD |
GND | GND |
A0 | OUT |
صدا در فایل های 2 دقیقه ذخیره می شود و سپس در یک پرونده جدید ذخیره می شود. بنابراین طول هر پرونده .wav نهایتا 2 دقیقه است.
قطعات مورد نیاز برای ضبط صدا با آردوینو
- آردوینو نانو
- برد آمپلی فایر MAX9814
- ماژول کارت SD
- کارت SD
- منبع تغذیه 5 ولت
کد پروژه ضبط صدا با آردوینو
#include <TMRpcm.h> #include <SD.h> #include <SPI.h>
در خطوط بالا، کتابخانه های PCM مبتنی بر SPI ، SD و TMR گنجانده شده است. برای کامپایل کد ، لطفاً از این کتابخانه استفاده کنید. می توانید کتابخانه TMRpcm بارگیری کنید.
MRpcm audio; // متغیر برای نمونه int file_number = 0; char filePrefixname[50] = "spy"; char exten[10] = ".wav";
در کدهای بالا ، نام و نوع فایل به همراه شماره پرونده شروع که صدا در آن ذخیره می شود ، تنظیم شده است. نام پرونده spyxxx.wav خواهد بود.
const int recordLed = 2; const int mic_pin = A0; const int sample_rate = 16000;
پایه میکروفن در پایه A0 با نرخ نمونه 16000 بیت و LED مورد نظر پیکربندی شده است.
#define SD_CSPin 10 // تعریف پین CS کارت حافظه // عملکرد تاخیر برای داده های سریال void wait_min(int mins) { int count = 0; int secs = mins * 60; while (1) { Serial.print('.'); delay(1000); count++; if (count == secs) { count = 0; break; } } Serial.println(); return ; }
کد بالا برای کد های سریال استفاده می شود.
void setup() { Serial.begin(9600); pinMode(mic_pin, INPUT); pinMode(recordLed, OUTPUT); Serial.println("loading... SD card"); if (!SD.begin(SD_CSPin)) { Serial.println("An Error has occurred while mounting SD"); } while (!SD.begin(SD_CSPin)) { Serial.print("."); delay(500); } audio.CSPin = SD_CSPin; }
در کد بالا، حالت پین های مورد نظر و کارت حافظه SD را پیکربندی میکنیم. همچنین خطای احتمالی در سریال مانیتور نمایش داده میشود.
void loop() { Serial.println("####################################################################################"); char fileSlNum[20] = ""; itoa(file_number, fileSlNum, 10); char file_name[50] = ""; strcat(file_name, filePrefixname); strcat(file_name, fileSlNum); strcat(file_name, exten); Serial.print("New File Name: "); Serial.println(file_name); digitalWrite(recordLed, HIGH); audio.startRecording(file_name, sample_rate, mic_pin); Serial.println("startRecording "); // ضبط صدا به مدت 2 دقیقه // اگر میخواهید مدت بیشتری ضبط کنید // عدد پایین را تغییر دهید wait_min(2); // این تابع تنظیم طول فایل صوتی است digitalWrite(recordLed, LOW); audio.stopRecording(file_name); Serial.println("stopRecording"); file_number++; Serial.println("####################################################################################"); }
کد فوق یک حلقه بی نهایت است که در آن ضبط کننده صدا ها را ضبط می کند. سپس آنها را در کارت SD ذخیره میکند.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام
من نسخه بروز کتابخانه TMRpcm را نصب کردم ولی موقع کمپایل ارور زیر را میده باید چکار کنم ؟
C:\Users\epco\Desktop\Arduino project\record1\record1.ino: In function ‘void loop()’:
C:\Users\epco\Desktop\Arduino project\record1\record1.ino:65:9: error: ‘class TMRpcm’ has no member named ‘startRecording’
audio.startRecording(file_name, sample_rate, mic_pin);
^~~~~~~~~~~~~~
C:\Users\epco\Desktop\Arduino project\record1\record1.ino:72:9: error: ‘class TMRpcm’ has no member named ‘stopRecording’
audio.stopRecording(file_name);
^~~~~~~~~~~~~
exit status 1
Compilation error: ‘class TMRpcm’ has no member named ‘startRecording’
درود وقت بخیر
در پروژه ضبط صدا با آردینو Pro MiNi از ماژول های زیر استفاده کردم:
۱-ماژول SD Card (ذخیره فایل های صوتی ضبط شده)
۲-ماژول میکروفون دارای پری آمپلی فایر MAX4466
۳-کلید فشاری برای شروع/پایان فرایند ضبط صدا
۴-LED قرمز برای نمایش وضعیت ضبط صدا
نحوه عملکرد پروژه:
با فشردن بار اول کلید فشاری مراحل ضبط شروع میشود (LED روشن میشود) و با فشردن بار دوم کلید فشاری ، فرایند ضبط پایان میابد (LED خاموش میشود) و فایل صوتی ضبط شده در حافظه مموری کارت از طریق ماژول SD Card با نام 1.wav ذخیره میشود و این الگو با هر بار فشردن کلید فشاری تا پایان ضبط و ذخیره فایل صوتی دهم با نام 10.wav ادامه میابد.
کد برنامه نویسی آردینو :
/*
Steps:
1. Edit pcmConfig.h
a: On Uno or non-mega boards, #define buffSize 128. May need to increase.
b: Uncomment #define ENABLE_RECORDING and #define BLOCK_COUNT 10000UL
2. Usage is as below. See /TMRh20/TMRpcm/wiki/Advanced-Features#wiki-recording-audio for
additional informaiton.
*/
#include
#include
#include
#define SD_ChipSelectPin 10
TMRpcm audio;
int audiofile = 0;
unsigned long i = 0;
bool recmode = 0;
void setup() {
pinMode(A0, INPUT);
pinMode(6, OUTPUT);
pinMode(2, INPUT_PULLUP);
attachInterrupt(0, button, LOW);
SD.begin(SD_ChipSelectPin);
audio.CSPin = SD_ChipSelectPin;
}
void loop() {
}
void button() {
while (i < 300000) {
i++;
}
i = 0;
if (recmode == 0) {
recmode = 1;
audiofile++;
digitalWrite(6, HIGH);
switch (audiofile) {
case 1: audio.startRecording("1.wav", 16000, A0); break;
case 2: audio.startRecording("2.wav", 16000, A0); break;
case 3: audio.startRecording("3.wav", 16000, A0); break;
case 4: audio.startRecording("4.wav", 16000, A0); break;
case 5: audio.startRecording("5.wav", 16000, A0); break;
case 6: audio.startRecording("6.wav", 16000, A0); break;
case 7: audio.startRecording("7.wav", 16000, A0); break;
case 8: audio.startRecording("8.wav", 16000, A0); break;
case 9: audio.startRecording("9.wav", 16000, A0); break;
case 10: audio.startRecording("10.wav", 16000, A0); break;
}
}
else {
recmode = 0;
digitalWrite(6, LOW);
switch (audiofile) {
case 1: audio.stopRecording("1.wav"); break;
case 2: audio.stopRecording("2.wav"); break;
case 3: audio.stopRecording("3.wav"); break;
case 4: audio.stopRecording("4.wav"); break;
case 5: audio.stopRecording("5.wav"); break;
case 6: audio.stopRecording("6.wav"); break;
case 7: audio.stopRecording("7.wav"); break;
case 8: audio.stopRecording("8.wav"); break;
case 9: audio.stopRecording("9.wav"); break;
case 10: audio.stopRecording("10.wav"); break;
}
}
}
توضیحات :
در کد پروژه بالا ، پایه خروجی (OUT) ماژول میکروفن به پایه A0 برد آردینو Pro MiNi متصل میشود و همچنین پایه های ماژول SD Card (CS به پایه ۱۰ ، CSK به پایه ۱۳ ، Miso به پایه ۱۱ ، Mosi به پایه ۱۲) متصل میشود.
پایه مثبت LED قرمز به پایه ۶ و پایه کلید فشاری به پایه ۲ برد آردینو متصل میشود و پایه دیگر به منفی (GND) متصل میشود.
نکته:
در کد بالا از کتابخانه TMRpcm استفاده شده که نیاز به تغییر متغیر ها در فایل های متنی کتابخانه هست. (ابتدا کد آردینو به تغییرات مورد نیاز اشاره شده)
سوال من :
از اتصال صحیح پایه های ماژول های داخل پروژه به پایه های برد آردینو Pro MiNi 5v مطمئن هستم و همچین از سالم بودن عملکر هر ماژول اطمینان دارم و از برد های دیگر آردینو Pro MiNi 3.3v , Nano 5v , Uno استفاده کردم ولی همچنان با مشکل نویز شدید در صدا های ضبط شده مواجه هستم.
لازم به ذکر است ، از دیگر کد های برنامه نویسی پروژه ضبط صوت با آردینو همراه با کتاب خانه های مختلف استفاده کردم ، ولی همچنان نویز شدیدی ایجاد میشود.
از کسانی که این متن را خوانده اید ، خواهش میکنم در حل مشکل این پروژه کمک کنید 🙏
مهندس مرتضی حیدری
۵ دی ماه ۱۴۰۲
سلام مهندس
بنظرتون چی کار کنم
غیر از آن ارور
میگه که ;audio.startRecording(file_name,sample_rate,mic pin)
سلام عزیز
چیزی که ارسال کردید یک خط از کد هست باید متن کامل ارور را ارسال کنید
سلام مهندس خسته نباشید
دو تا کتابخانه بود پاک کردم بعد یکی نصب کردم ولی باز هم همون ارور را میده ممنون میشم راهنماییم کنید
سلام
چگونه با ید پاک کنم ممنون میشم کمک کنید
در داکیومنت وارد پوشه آردوینو سپس Libraries شوید و پاک کنید
سلام متن کامل ارور
Multiple libraries were found for “TMRpcm.h”
Used: C:\Users\pro\Documents\Arduino\libraries\TMRpcm
سلام عزیز
در اروری گفته شده است چند کتابخانه برای TMRpcm وجود دارد. یکبار تمام کتابخانه ها را پاک کنید و دوباره فقط یکبار آن را نصب کنید
سلام مهندس خسته نباشید من کتابخانه را نصب کردم ولی
این ارور را میده
audio.startRecording(file_name, sample_rate, mic-
pin);
سلام عزیز
متن ارور را کامل ارسال کنید
سلام خسته نباشید . حل مشکلتون :
Edit pcmConfig.h
#define buffSize 128
#define ENABLE_RECORDING
#define BLOCK_COUNT 10000UL
سلام خسته نباشید
من این درست کردم فقط خیلی نویز داره
دوستان مشکل اینجوری داشتن ؟
سلام ببخشید ظبط فرکانس فراصوتم میشه انجام داد؟
C:\Users\Computer Shahr\AppData\Local\Temp\.arduinoIDE-unsaved2023214-10072-14s3yqs.d587\sketch_mar14a\sketch_mar14a.ino:1:10: fatal error: TMRpcm.h: No such file or directory
#include
^~~~~~~~~~
compilation terminated.
exit status 1
Compilation error: TMRpcm.h: No such file or directory سلام این ارور میده
سلام عزیز
باید کتابخانه TMRpcm را نصب کنید
سلام من نصب کرم بازم ارور داد
سلام نیاز دارم بعد از ضبط صدا با بلندگو پخش بشه چیکار کنم میخوام تبدیل شده به مدار ضبط و پخش صدا
سلام عزیز
این مقاله برای شما مفید است: ساخت اسپیکر بلوتوثی با آردوینو (بلندگو بی سیم)
سلام ایا بااین برد میشه صدای مراسم راازطریق کابل به دستگاه نوازنده وصل کرد یاهمون کار رکورد حرفه ای رو انجام بده
سلام میشه جوری تنظیم کرد ک فقط یه سری کلمات خاص رو ذخیره کنه
سلام عزیز
برای این مورد بهتر هست از رزبری پای استفاده کنید
با سلام از زحمات شما ببخشید من این برنامه نویسی را انجام دادم ولی ماژول میکروفن نداشتم شما در مطالب قبلی با ایسی l358 ماژول میکروفن ساخته بودید منم ساختم ولی ضبط صدا رو انجام نمیده چیکار کنم
سلام عزیز
از عملکرد ماژول میکروفن اطمینان دارید؟
بله برای ارسال صدا از طریق بلوتوث میخواهم
میشه این کار رو کرد اما تغییر زیادی در کد نیاز هست
سلام ببخشید میشه بجای ماژول sd از ماژول بلوتوث گذاشت
سلام عزیز
ماژول sd برای ذخیره سازی هست بلوتوث برای ارتباطات، میخواهید با بلوتوث صدا رو ارسال کنید؟
سلام چطوری کتابخانه رو دانلود کنیم
سلام عزیز
روی لینک کتابخانه کلیک کنید و دکمه Code و سپس Download ZIP رو بزنید
سلام وقت بخیر.
من یه پروژه ی ضبط و پخش صدا voice recorder با اردویینو باید انجام بدم میشه بی زحمت یه یک مدل برد اردویینو نانو که مناسب این پروژه باشه رو معرفی و رانمایی کنید؟
سلام عزیز
هر مدل از اردوینو نانو میتونید استفاده کنید
چطوری میشه این فایلی که ذخیره میکنه رو پخش کنه مثل یک دستگاه سخن گو ما چیزی که میخوایم بهش بگیم بعد براش ایف بزاریم اگر شنيدی سلام فلان وویس رو پلی کن اگر میشه رهنمایی کنید
سلام عزیز
این مطلب رو مشاهده کنید: کنترل وسایل با تشخیص صدا آردوینو
سلام با عرض خسته نباشید
آقا من همه قطعاتش رو آماده کردم فقط مونده برنامه نویسیش اون رو بلد نیستم و این فایلی رو که گذاشتین میشه کپی پیستش کرد و اگه میشه چطوری با تشکر لطفاً جواب بدید خیلی نیاز دارم
سلام عزیز
بله میشه کپی پیست کرد
اگر با برنامه نویسی و آپلود کد آردوینو آشنا نیستید دوره آموزش آردوینو رو مشاهده کنید
سلام روزتون بخیر
ایا با برنامه نویسی که در برد اردینو جهت ضبط صدا انجام میدهیم میتوانیم فقط یک طیف خاصی از صدا را مدنظر بگیریم و همان طیف رو فقط ضبط کنه؟
توی فایل کتابخونه باید pcmconfigدو تغییراتی روش اعمال کنیم که دو کار زیر باید صورت بگیرد
a: On Uno or non-mega boards, #define buffSize 128. May need to increase.
b: Uncomment #define ENABLE_RECORDING and #define BLOCK_COUNT 10000UL
بسیار ممنون از همکاری شما
ببخشید میتونید بیشتر راهنمایی کنید؟
آموزش نصب کتابخانه در آردوینو را مشاهده کنید.
سلام
مشکل این فایل رو حل کردم اگر میخواید بدونید از واتساپ پیام دهید
سلام عزیز، اگر میخواهید همینجا بفرمایید تا دوستان هم استفاده کنند
مهندس جان این کتابخونه ای که گزاشتی کار نمیکنه ارورhas no member named میده
سلام عزیز. با توجه به نظرات دوستان احتمال پروژه ضبط صدا منسوخ شده.
سلام این مشکلو منم دارم تو انجمن ها هم گشتم چیزی نبود ارور میده اخرین ورژنش مگه1.1 نیستمنم همینو زدم از همین manager lib
سلام وقتتون بخیر
این ارور رو میده
‘class TMRpcm’ has no member named ‘startRecording’
سلام عزیز. کتابخانه ها رو نصب کنید و یا آپدیت کنید.
با نود ام سی یو هم میشه این پروژه رو انجام داد؟
سلام عزیز. با برد NodeMCU تست نشده
سلام خسته نباشی
یه مشکل دارم توی این پروژه
این ارور رو میده
^~~~~~~~~~~~~~~
C:\Users\ali\Desktop\ArduinoforSecretAgents_Code\Chapter02\sd_test\sd_test.ino: In function ‘void loop()’:
sd_test:58:9: error: ‘class TMRpcm’ has no member named ‘startRecording’
audio.startRecording(filePrefixname, sample_rate, mic_pin);
^~~~~~~~~~~~~~
sd_test:65:9: error: ‘class TMRpcm’ has no member named ‘stopRecording’
audio.stopRecording(file_name);
^~~~~~~~~~~~~
exit status 1
‘class TMRpcm’ has no member named ‘startRecording’
مشکل چیه؟
سلام جناب، کتابخانه های مورد نیاز رو نصب کردین؟
سلام چگونه میشه بفهمیم این دستگاه کجاس