راه اندازی ماژول صوت در ادامه آموزش های بلوک دینو (Blocklyduino) این بار قصد داریم با یکی از ماژول صوت آشنا شویم ماژول صدا که میتواند در پروژه های مختلف اینترنت اشیا و سیستم امنیتی کاربرد متفاوتی داشته باشد،حتما با ماژول های همچون ky-037 کار کردید اما در اینجا ما از یک ماژول کمتر شناخته شده استفاده می کنیم که نحوه پیاده سازی آسان و عملکرد خوبی دارد و نحوه برنامه نویسی و پیاده سازی این ماژول در بلوک دینو را بررسی کنیم
مقدمه
در ابتدا کمی بیشتر راجب این ماژول صحبت می کنیم ماژول مورد استفاده ما در بلوک دینو با آی سی LM393 طراحی شده است که برای پیاده سازی و برنامه نویسی به راحتی میتوان از آن استفاده کرد بررای توضیحات بیشتر به این لینک مراجعه کنید در ادامه بیشتر با نحوه عملکرد این ماژول آشنا می شویم اما جالب است بدانید با استفاده از ماژول های صدا که در بازار انواع متلفی دارد شما می توانید به راحتی این ماژول ها به sbc(کامپیوتر های تک بردی) از جمله آردینو و رزبری متصل کنید و حتی از قابلیت میکروفون برای خروجی نویزها محیط استفاده کنید به طور مثال از ماژول های موجود در بازار ماژول Ky-038 اشاره کرد که از LM393 برای طراحی آن استفاده شده است ،برای آشنای بیشتر با نحوه عملکرد ماژول های صدا تصویر زیر مشاهده کنید.در تصویر بالا نحوه پردازش صدا در ماژول را مشاهده می کنیم هر بار که صدای نزدیک ماژول شنیده می شود سیگنال ها دچار تغییر میشوند قطعا این عملکرد با توجه به آی سی متفاوت می باشد .
پروژه خروجی ماژول صدا روی پورت سریال
در پروژه اول قصد داریم این ماژول را با استفاده پورت سریال نمایش دهیم در واقع الگوریتم برنامه به این شکل است که اگر صدای در محیط ماژول شنیده شود در پورت سریال نمایش داده شود برای دانلود نرم افزار fritzing به این لینک بروید.شماتیک پروژه که با نرم افزار fritzing طراحی کردیم
برنامه نویسی در بلوک دینو
برای شروع کار با این ماژول در پلتفرم بلوک دینو در تب راست وارد قسمت AnalogGrove میشوید سپس وقتی وارد این قسمت شوید با آیتم های زیادی رو به رو می شوید که مانند تصویر زیر ماژول را انتخاب کنید.
پس از انتخاب ماژول مانند تصویر بالا حالا کافی است ماژول را به محیط پلتفرم بلوک دینو اضافه کنیم وقتی این کار را کردیم نوبت به انتخاب تابع سریال است که شما باید به قسمت in\out بروید و تابع سریال را انتخاب کنید گذاشتن تابع تاخیر در برنامه موجب بهینه تر شدن کد خروجی می شود الگوریتم خروجی بلوک دینو به مانند تصویر زیر است.
سورس آردینو
int sound = A0;
int analogValue = 0;
void setup()
{
Serial.begin(9600);
}
void loop()
{
analogValue = analogRead(sound);
Serial.println(analogValue);
delay(100);
}
تست پروژه
پروژه ماژول صدا با LED
در پروژه بعدی قصد داریم ماژول صدا که در بلوک دینو وجود دارد با استفاده از LED طراحی کنیم هر بار که دست می زنیم یا صدای ماژول می شنود LED روشن می شود کمی پروژه جالب تر شد همین طور هست با این الگوریتم خروجی آنالوگ روی LED مشخص می شود.
برنامه نویسی بلوک دینو
در بلوک دینو برای راه اندازی این پروژه در ابتدا ماژول LED را انتخاب می کنیم سپس ماژول صدا را به تابع سریال متصل می کنیم پس از این کار ما نیاز به یک شرط داریم که اگر ماژول یک شد LED روشن شود و در غیر این صورت LED حالت خاموش پیدا کند دقت کنید برای اضافه else به شرظ خود روی گزینه چرخ بزنید و else را انتخاب کنید، الگوریتم کلی پروژه به مانند تصویر زیبر است
سورس آردینو
int sound = 3;
int LED = 4;
void setup()
{
pinMode(sound, OUTPUT);
Serial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop()
{
Serial.println(analogRead(A0));
if (sound == HIGH) {
digitalWrite(4, HIGH);
delay(1000);
} else {
digitalWrite(4, LOW);
delay(1000);
}
}
تست پروژه
پروژه ماژول صدا با RGB
در پروژه سوم قصد داریم یک Rgb طراحی کنیم شماتیک پروژه در تصویر زیر مشاهده می کنید برای توضیحات بیشتر در رابطه با نحوه پیاده سازی RGB آموزش برنامه نویسی RGB را مطالعه کنید در اینجا هدف این است که اگر صدای در محیط ماژول شنیده شود RGB فعال شود و طبق الگوریتم مورد نظر رنگ ها تغییر کند در ابتدا شماتیک پروژه را بررسی می کنیم.
برنامه نویسی در بلوک دینو
در بلوک دینو برای راه اندازی این پروژه شما نیاز دارید ماژول RGB را اضافه کنید در برنامه ما یک متغیر تعریف کردیم که در بازه چرخش پتانسیومتر RGB فعال می شود شما می توانید با پتانسیومتر ماژول خود مقدار را تغییر دهید و نتایج را مشاهده کنید و اعداد درون شرط نیز با توجه به برنامه خود تغییر دهید،در درون شرط نیز سه رنگ اصلی (قرمز،سبز ، آبی) به طور متناوب نمایش داده می شود
سورس آردینو
//project name: RGB grove with sound grove
// // hardware : RGB Led , Arduino uno , sound sensor
int vloum;
#define uint8 unsigned char
#define uint16 unsigned int
#define uint32 unsigned long int
void ClkProduce_4(void)
{
digitalWrite(4, LOW);
delayMicroseconds(20);
digitalWrite(4, HIGH);
delayMicroseconds(20);
}
void Send32Zero_4(void)
{
uint8 i;
for (i=0; i<32; i++)
{
digitalWrite(5, LOW);
ClkProduce_4();
}
}
uint8 TakeAntiCode(uint8 dat)
{
uint8 tmp = 0;
if ((dat & 0x80) == 0)
{
tmp |= 0x02;
}
if ((dat & 0x40) == 0)
{
tmp |= 0x01;
}
return tmp;
}
// gray data
void DatSend_4(uint32 dx)
{
uint8 i;
for (i=0; i<32; i++)
{
if ((dx & 0x80000000) != 0)
{
digitalWrite(5, HIGH);
}
else
{
digitalWrite(5, LOW);
}
dx <<= 1;
ClkProduce_4();
}
}
// data processing
void DataDealWithAndSend_4(uint8 r, uint8 g, uint8 b)
{
uint32 dx = 0;
dx |= (uint32)0x03 << 30; // highest two bits 1,flag bits
dx |= (uint32)TakeAntiCode(b) << 28;
dx |= (uint32)TakeAntiCode(g) << 26;
dx |= (uint32)TakeAntiCode(r) << 24;
dx |= (uint32)b << 16;
dx |= (uint32)g << 8;
dx |= r;
DatSend_4(dx);
}
void setup()
{
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
Serial.begin(9600);
pinMode(4, OUTPUT);
}
void loop()
{
Send32Zero_4(); // begin
DataDealWithAndSend_4(255, 0, 0); // RED COLOR
DataDealWithAndSend_4(51, 255, 51); // first node data
DataDealWithAndSend_4(0, 204, 204); // first node data
Send32Zero_4(); // send to update data
Serial.println(analogRead(A0));// baud rate
vloum = analogRead(A0);
Serial.println(vloum);
delay(1000);
if (vloum <= 62) { // if vloum <= 62 when enable RGB
DataDealWithAndSend_4(255, 0, 0); //Red color
DataDealWithAndSend_4(51, 255, 51); //Green color
DataDealWithAndSend_4(0, 204, 204 ,); //Blue color
} else if (vloum <= 64) {
DataDealWithAndSend_4(51, 255, 51); // Green color
DataDealWithAndSend_4(255, 0, 0); //Red color
DataDealWithAndSend_4(0, 204, 204 ,); //Blue color
} else if (vloum <= 68) {
DataDealWithAndSend_4(0, 204, 204 ,); // Blue color
DataDealWithAndSend_4(255, 0, 0); // Red color
DataDealWithAndSend_4(51, 255, 51); // Green color
}
}
تست پروژه
شماتیک آلتیوم
شما می توانید شماتیک و فایل pcb ماژول بالا را با استفاده از ابزار تحت وب آلتیوم مشاهده کنید