فرمان دادن به اشیا جز با علم الکترونیک امکان پذیر نمیباشد. امروزه با وجود امبدد سیستمها از جمله برد آردوینو Arduino این موضوع به سادگی قابل اجراست. کافیست کدهای کامپیوتری را به برد امبدد اضافه کنیم و تمام. در این آموزش قصد داریم یک چراغ را با استفاده از دست زدن روشن کنیم. در ادامه با مرجع تخصصی آردوینو به زبان فارسی، دیجی اسپارک همراه باشید.
روشن کردن چراغ با دست زدن
برای این کار به ماژول میکروفن خازنی نیاز داریم. ماژول میکروفن خازنی با مولتی ترن Microphone دارای خروجی آنالوگ و دیجیتال میباشد. پایه AO خروجی آنالوگ و همزمان صدای میکروفن میباشد. خروجی DO برای زمانی است که شدت صدا به یک آستانه خاصی برسد. که این هم با استفاده از مولتی ترن روی ماژول قابل تنظیم است. مولتی ترن ماژول را طوری تنظیم میکنیم که با دست زدن خروجی DO فعال شود.
اتصالات مدار Clap Lamp
ماژول میکروفن خازنی دارای ۴ پایه میباشد. در این آموزش از ۳ پایه آن استفاده میکنیم. پایههای G و + برای تغذیه هستند و به زمین و ۳٫۳ ولت آردوینو پرو مینی Pro mini متصل میشوند. مدار پین DO ماژول میکروفن را به پین ۸ و سر مثبت ال ای دی را به ۹ متصل کرده ایم.
وسایل مورد نیاز آموزش ماژول میکروفن
کد آردوینو Clap Lamp
کد آردوینو را در نرم افزار آردوینو اجرا کنید. مطابق با اتصالات گفته شده در کد، سنسورها را به برد آردوینو متصل کنید.
//تعریف پین ها #define sensorPin 8 #define ledPin 9 int led=0; unsigned long currentMillis,sec; void setup () { pinMode (ledPin, OUTPUT); Serial.begin (9600); } void loop () { //شرط فعال شدن ماژول برای دفعه اول if (digitalRead(sensorPin) == 1){ delay(10); Serial.println("first time!"); currentMillis = millis(); sec = millis(); //منتظر برای دو ثانیه while (sec - currentMillis < 2000){ //شرط فعال شدن ماژول برای دفعه دوم if (digitalRead(sensorPin) == 1){ Serial.println("second time!"); digitalWrite(ledPin, led=!led); delay(10); break; } sec = millis(); } } }
حالا با زدن دست با فاصله زمانی کمتر از ۲ ثانیه چراغ روشن یا خاموش میشود! همچنین میتوانید به جای ال ای دی از رله استفاده کنید و هر وسیله ای را کنترل کنید.
تحلیل کد آردوینو
این کد یک برنامه Arduino است که از یک سنسور مخصوص استفاده میکند (که به عنوان sensorPin تعریف شده است) و وقتی که این سنسور فعال شود، یک LED (که به عنوان ledPin تعریف شده است) را روشن و خاموش میکند.ابتدا دو پین (sensorPin و ledPin) به تعداد معینی با استفاده از #define تعریف میشوند. این اعداد به ترتیب ۸ و ۹ به عنوان مقدار پیشفرض برای sensorPin و ledPin انتخاب شدهاند.متغیرهای led، currentMillis و sec تعریف شدهاند. led یک متغیر بولین است که برای تغییر وضعیت LED به کار میرود. currentMillis و sec از نوع unsigned long برای ذخیره زمانها به میلیثانیه هستند.در تابع setup، پین ledPin به عنوان یک خروجی (OUTPUT) تعیین میشود و اتصال به پورت Serial با سرعت ۹۶۰۰ بوده و از آن برای ارسال پیامها به مانیتور سریال استفاده میشود.تابع loop بیپایان است و عملکرد اصلی برنامه را اجرا میکند.در ابتدا، یک شرط برای فعال شدن سنسور (با تغییر وضعیت sensorPin به HIGH) بررسی میشود.اگر سنسور برای اولین بار فعال شود (وضعیت sensorPin برابر ۱ باشد)، پیام “first time!” روی مانیتور سریال چاپ میشود و زمان فعلی به متغیر currentMillis و sec اختصاص داده میشود.سپس یک حلقه while شروع میشود که منتظر بماند تا ۲ ثانیه (۲۰۰۰ میلیثانیه) بگذرد.در داخل این حلقه، دوباره شرطی برای فعال شدن سنسور (تغییر وضعیت sensorPin به HIGH) بررسی میشود.اگر سنسور دوباره فعال شود، پیام “second time!” روی مانیتور سریال چاپ میشود و وضعیت LED به عکس آنچه که بوده (تغییر وضعیت) تغییر میکند (led=!led) و LED روشن یا خاموش میشود. سپس با استفاده از دستور delay(10) تاخیر داده میشود و حلقه while به پایان میرسد.
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.
با سلام
میشه به جای اردوینو پرو مینی از اردوینو uno استفاده کرد؟
از میکروفن های دیگر میشه استفاده کرد؟
سلام
بله میتونید به جای آردوینو استفاده شده از هر نوع آردوینویی استفاده کنید.
بله میتونید از میکروفن های دیگه هم استفاده کنید فقط باید خروجی دیجیتال و قابلیت تنظیم حساسیت داشته باشند تا بتوانید دقیقا از همین برنامه استفاده کنید.
سلام
میشه بجای led واسه مدار هم استفاده کرد؟
با سلام و خسته نباشی
وقتی مدار را بستیم ال ای دی بدون وقفه شروع به چشمک زدن میکند و خروجی DO هیچ حساسیتی نسبت به پتانسیومترش نشان نمیدهد مشکل کجاست؟
از برد uno استفاده میکنیم
سلام
روی خود ماژول میکروفن ال ای دی وجود دارد که درصورتی که صدا از حساسیت تعیین شده بیشتر شود، روشن میشود. با تغییر پتانسیومتر این حساسیت را درست تنظیم کنید تا برنامه بصورت درست کار کند.
سلام دوست عزیز
اگر میشه کمی ریز تر این کد ها رو توضیح بدید .
چون من برنامه نویسی با زبان بیسیک بلدم و میخوام روی این زبان بنویسم . ولی با مشکل مواجه شدم. مدرسی
سلام
در پست های مقدماتی سایت آموزش های مربوط به کد های آردوینو داده شده است.
شما بفرمایید دقیقا کدوم قسمت را مشکل دارید؟
سلام من مدار رو بستم ولی کار نمی کنه
سلام
آیا حساسیت میکروفن را درست تنظیم کرده اید؟
با سلام و خسته نباشی
بعد از بستن مدار ال ای دی بدون وقفه سریع خاموش و روشن می شود از پتانسیومتر هم استفاده کردم ولی حل نشد میشه راهنمایی کنید
سلام
بیشتر مشکل مربوط به میکروفن و حساسیت آن میباشد
ال ای دی روی میکروفن را چک کنید که نسبت به صدا چه واکنشی نشان میدهد
ببخشید مبدل من pl2303hx هست ایا مشکلی نداره؟
فرقی نداره اردوینو ۵ولت باشه یا ۳٫۳؟
اصولا مشکلی پیش نمیاد ولی بهتره از ۵ ولتی استفاده کنید
سلام . کمی در اجرای این آزمایش مشکل دارم اگر کمکم کنید ممنون میشوم.
سلام
تا کجا پیش رفتید؟
کدوم قسمتش را مشکل دارید؟
سلام عزیزم اگر می شود یکم بیشتر توضیح دهید
با تشکر فراوان
سلام
کدوم قسمتش را مشکل دارید تا توضیح بدم
سلام تو اردوینو اون پایین چیکار کنم نتایج ظاهر بشن مال من دو خط نشون میده فقط
سلام
منظورتون از نتایج چی هستش؟
سلام…
میشه به جای وصل کردن به ال ای دی به یه رله ۵ ولت متصلش کنیم؟
سلام
بله مشکلی نداره
شما پایه دیتا را جایگزین پین کنترلی ال ای دی کنید و ولتاژ رله را از طریق تغذیه بورد به آن بدهید
سلام…
من از اردویینو uno اسنفاده میکنم ولی led روی برد اردویینو خودش روشن میمونه و هیچ تغییری نسبت به پیکروفن نمیکنه مشکل کجاست؟؟
سلام
برنامه نوشته شده برای ال ای دی خارجی متصل به پین شماره ۹ میباشد و نه ال ای دی روی بورد.
بنده همه چیز رو طبق دستور العمل بستم و نوشتم
ولی نمیدونم چرا کلاجفت چراغ ماژول روشن بود و پالس ۱ فقط میداد
اگر مشکل از مولتی ترن هست چه جوری باید تنظیمش کنم
چند دور باید بچرخونمش تا درست بشه؟
بنده همه چیز رو طبق دستور العمل بستم ولی کلا چراغ ماژول دائم روشن است و به من پالس ۱ میده درحالیکه هیچ صدایی بهش نرسیده؟!
مشکل یا از سیم کشی مدار هستش یا از حساسیت ماژول
لطفا این دو را چک فرمایید
سلام ببخشید میشه بگید کابل ها رو چطوری وصل کردید
سلام
در قسمت اتصالات مدار در مطلب بصورت کامل همراه با تصویر توضیح داده شده است
سلام برای کد نویسی از چ کابلی استفاده کردید میشه از کابل مبدل سریال چهارسیمه استفاده کرد؟؟
سلام
این مبدل استفاده شده هستش
https://daneshjookit.com/مبدل-و-رگولاتور/۱۸۹۰-usb-to-ttl-pl2303ta.html
سلام من موقع وارد کردن کدها مشکل دارم و موقع اپلود کردن اپلود نمیشه و بورد رو نمیشناسه من براش تعریف کردم که بورد اردوینو پرومینی هس ولی بازم نمیشناسه
سلام
چه اروری میبینید؟
رو اپلودینگ میمونه و avrdude: stk500_getsync(): not in sync: resp=0x00 اینو نشون میده
این ارور دلایل متفاوتی داره
شما چک کنید که اتصالات تا بورد مشکلی نداشته باشند یک دور بورد را ریست کنید و مجددا تست کنید
وگرنه چک کنید که پورت و بورد درست را در board manager انتخاب میکنید
سلام. با این میکروفن میشه صدای محیط را هم ضبط کرد؟ صدای انسان بیشتر مد نظرم هست.
سلام با این ماژول خیر
برای اینکار باید از ماژول هایی که آمپلی فایر دارند مانند MAX9814 استفاده کنید
سلام
طبق این کد نوشته شده، در صورتی که مثلا یک فرد چند ثانیه بلند صحبت کند نیز چراغ روشن می شود. به منظور اینکه بخواهیم فقط با صدای دو دست خاموش و روشن شود و صدای ممتد محیط باعث روشن شدن چراغ نشود به عبارتی در صورتی که بخواهیم تفکیک قائل شود بین صدای دو دست و صدای محیط اطراف مثلا زنگ موبایل یا … چه تغییراتی باید حاصل شود؟
سلام
این کار با اردوینو بشدت سخت میباشد و شما باید یک الگوی صدایی با توجه به صدای تولید شده درست کنید.
سلام خسته نباشید من چطوری باید این مدار رو به برد رله وصل کنم که به ۲۲۰ ولت متصل بشه میشه سیم کشیش رو نشون بدید بخدا لنگم و یه سوال دیگه ال ای دی به چه مقاومتی متصل است ؟ یا حق
سلام و سپاس
برای اتصال رله از این مطلب استفاده کنید: آموزش استفاده از رله Relay در پروژه اینترنت اشیاء IOT
ال ای دی در این پروژه به مقاومت ۲۲۰ اهمی متصل است
با سلام و خسته نباشید
من مدل arduini leonardo رو دارم و کاملا بر اساس تصویر و توضیحات برد رو بستم ولی متاسفانه دو تا چراغ ماژول میکروفون روشن میمونه و led به صورت مداوم چشمک میزنه
میخواستم بدونم مشکل از کجاست ؟؟
آیا چون مدل arduino من متفاوته اینطور میشه؟
سلام
احتمالا ماژول میکروفن شما نیاز به تنظیم حساسیت دارد لطفا بررسی فرمایید
سلام
ببخشید میشه اسم تمام قطعات استفاده شده در این پروژه رو بگید
ممنون
با سلام
کاربر گرامی به بخش وسایل مورد نیاز در متن آموزش دقت کنید، این موارد توضیح داده شده است.
سلام
ببخشید من تازه کار هستم و اطلاعات زیادی ندارم میشه لیست وسایل مورد نیاز برای این پروژه رو به صورت کامل برای من ایمیل کنید
با سلام
کاربر گرامی تمامی وسایل مورد نیاز برای ساخت این پروژه در متن آموزش لینک شدهاند. لطفا بررسی کنید.
سلام برای اپلود ارورavrdude: ser_open(): can’t open device “\\.\COM4”: A device which does not exist was specified.
میده
با سلام
در این ارور پورت توسط سیستم مشخص نشده است. لطفا تنظیمات را بررسی کنید.
سلام
بسیار زیبا ساده و کاربردی
با سلام
کاربر گرامی ضمن تبریک سال نو، از همراهی شما سپاسگزاریم.
باسلام برای شبیه سازی این پروژه در پروتئوس برای اضافه کردن میکروفون به مدار باید چیکار کنم؟
با سلام
برای اطلاع از این موضوع به آموزش شبیه سازی بردهای آردوینو در پروتئوس نرم افزار Proteus مراجعه کنید.
با سلام
بنده متوجه این نشدم که دقیقا sec – currentMillis نشون دهنده ی چی هستش و چرا امکانش هست راهنمایی کنید
با سلام
این دو برای تعریف تاخیر millis در برنامه تعریف شده است. در این کد با شنیدن دو صدا خروجی فعال میشود. برای تعریف زمان دوم نیاز به استفاده از تابع millis و استفاده از متغیر زمانی داریم.
سلام
جسارتا یه سوالی داشتم
در هنگام پروگرم برد مینی باید تغذیه جداگانه به برد داده بشه یا نیازی نیست؟
با سلام
تغذیه تاثیری برای آپلود برد ندارد.
سلام مهندس.ممنون از پروژه عالیتون.یه سوال داشتم، نهایت فاصله ای که میتونه با دقت فرمان هارو اجرا کنه چند متر هست؟
با سلام
این سنسور فاصله سنج نیست و بر اساس شدت صدای دریافتی از محیط واکنش نشان میدهد.
سلام. همین پک برا مدار از کجا تهیه کنم؟
با سلام
از سایت دانشجوکیت برای خرید قطعات اقدام کنید.
سلام دوست عزیز .
من کد رو امتحان کردم و کد برنامه ایرادی وجود دارد .
بی زحمت یه رسیدگی کنید…
با سلام
کد کاملا سالم است و تست شده
سلام خسته نباشید. میخواستم بدونم این مدار چند ولت از ینی ورودی چند ولت وصل کنم؟!؟
با سلام
در توضیحات آموزش این موارد آورده شده است. مجددا بررسی کنید.