آموزش آردوینو UNO ( کنترل LED با فرمان صوتی )

به آموزش آردوینو ( قسمت نوزدهم – کنترل LED با فرمان صوتی ) خوش اومدید.

بازبینی اول : در تاریخ ۱۴۰۰/۰۵/۲۵ انجام شد!

ماژول بلوتوث HC-05

ماژول بلوتوث HC05 یک ماژول مخابراتی بیسیم با فرکانس ۲.۴ گیگا هرتز هست که برای ارتباط بیسیم تا شعاع ۱۰ متر مورد استفاده میگیرد. از این ماژول برای ارتباط بیسیم بین دو دستگاه تلفن همراه و یا دستگاههای جانبی مثل لوازم صوتی،هندزفری و…. استفاده میکنند.

با ماژول بلوتوث HC05 از  طریق رابط UART یا رابط USB میتوانیم ارتباط برقرار کنیم و بسته به اینکه از کدام رابط میخواهیم استفاده کنیم،نوع پایه های استفاده شده فرق می‌کند.

STATE : این پایه به یه LED متصل است که اگه ماژول با یه دستگاه دیگه جفت بشود باعث روشن شدن LED و اگه هنوز ماژول بلوتوث HC05 با دستگاه دیگری همگام نشده باشه LED خاموش باقی می ماند.

EN : این پایه بعنوان فعالساز یا ENABLE ماژول بلوتوث HC05 استفاده میشود.اگه این پایه رو به جایی وصل نکنیم یا به سطح ولتاژ ۳.۳ ولت متصل کنیم باعث فعال شدن ماژول بلوتوث HC05 میشه و اگه پایه EN رو به زمین یا همون GND متصل کنیم باعث غیرفعال شدن ماژول میشود.

VCC : این پایه بعنوان تغذیه ماژول برای اتصال به ولتاژ ۳.۳ ولت تا ۶ ولت در نظر گرفته شده و میتوانیم به پایه ۵+ برد آردوی تو متصل کنیم.

GND : این پایه زمین ماژول هست و به پایه GND برد آردوینو متصل میشود.

TX : این پایه رو به عنوان فرستنده در ارتباط UART استفاده میکنیم.

RX : این پایه رو بعنوان گیرنده در ارتباط UART استفاده میکنیم.

پیاده سازی عملی پروژه

موقع اتصال ماژول بلوتوث HC05 به برد آردوینو یونو پایه TX ماژول بلوتوث به پین RX برد آردوینو متصل میشه و پایه RX ماژول بلوتوث به پین TX برد آردوینو متصل میکنیم.

سپس LED های قرمز،آبی و سفید را به پایه های ۹و ۱۰و ۱۱ برد آردوینو متصل میکنیم.

نکته : برای کنترل صوتی میتوانیم از  اپلیکیشن کنترل LED با دستیار صوتی گوگل Google Assistant کمک بگیریم .

کد های دستوری

ابتدا یک متغیر از نوع رشته برای صدا تولید میکنیم.

در تابع setup برای نمایش داده های خروجی بر روی سریال مانیتور Serial.begin را بر روی ۹۶۰۰ قرار میدیم.

در ادامه با دستور pinMode وضعیت پایه های متصل به LED ها را به بصورت خروجی تنظیم میکنیم.

void setup() 
{ 
Serial.begin(9600); 
pinMode(11,OUTPUT); 
pinMode(10,OUTPUT); 
pinMode(9,OUTPUT); 
}

در تابع loop ابتدا با دستور Serial.read داده های دریافتی از اپلیکیشن موبایل رو دریافت میکنیم و توی یه متغیر بنام char c ذخیره میکنیم.

سپس چک میکنیم که مقدار متغیر برابر کدام یکی از عبارت های از پیش تعیین شده هست تا عمل خاص متناسب با اون دستور انجام بشود.

void loop()
{
  
  while(Serial.available())
  {
    delay(3);
    char c=Serial.read();
    voice+=c;
  }
 
  if(voice.length()>0)
  {
    Serial.println(voice);
    if(voice=="turn on blue"){digitalWrite(11,HIGH);voice= "";}
    else if(voice=="turn of blue"){digitalWrite(11,LOW);voice= "";}
    else if(voice=="turn on red"){digitalWrite(10,HIGH);voice= "";}
    else if(voice=="turn of red"){digitalWrite(10,LOW);voice= "";}
    else if(voice=="turn on white"){digitalWrite(9,HIGH);voice= "";}
    else if(voice=="turn of white"){digitalWrite(9,LOW);voice= "";}
  }
  voice= "";
}

کد کامل پروژه

String voice;

void setup()
{
  Serial.begin(9600);
  pinMode(11,OUTPUT);
  pinMode(10,OUTPUT);
  pinMode(9,OUTPUT);
}

void loop()
{
  
  while(Serial.available())
  {
    delay(3);
    char c=Serial.read();
    voice+=c;
  }
 
  if(voice.length()>0)
  {
    Serial.println(voice);
    if(voice=="turn on blue"){digitalWrite(11,HIGH);voice= "";}
    else if(voice=="turn of blue"){digitalWrite(11,LOW);voice= "";}
    else if(voice=="turn on red"){digitalWrite(10,HIGH);voice= "";}
    else if(voice=="turn of red"){digitalWrite(10,LOW);voice= "";}
    else if(voice=="turn on white"){digitalWrite(9,HIGH);voice= "";}
    else if(voice=="turn of white"){digitalWrite(9,LOW);voice= "";}
  }
  
  voice= "";
}

پایان آموزش آردوینو  ( قسمت نوزدهم – کنترل LED با فرمان صوتی )

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

قبلا حساب کاربری ایجاد کرده اید؟
گذرواژه خود را فراموش کرده اید؟
Loading...