اجرای پروژه های دانشجویی و پژوهشی به سفارش شما ، واتساپ ۰۹۰۳۶۷۶۱۶۹۴
کد نویسی آردوینو با نقشه شماتیک و شرح کامل
لیست پروژه های مونتاژ شده با آردوینو نانو
پروژه ۱ : کنترل پخش صوت ماژول DFplayer با کلیدهای پوش باتون و آردوینو نانو
شماتیک ماژول DFPlayer برای پخش فایل با کلید پوش باتون
- پایۀ RX ماژول DFplayer را سری با یک مقاومت یک کیلواهم به پایۀ D11 ماژول آردوینو وصل نمایید .
- پایۀ TX ماژول DFplayer را به پایۀ D10 ماژول آردوینو وصل نمایید .
- پایۀ VCC ماژول DFplayer را به پایۀ +۵ ماژول آردوینو وصل نمایید .
- پایۀ GND ماژول DFplayer را به پایۀ GND ماژول آردوینو وصل نمایید .
- یک پایۀ کلید پوش باتون Next را به پایۀ D02 ماژول آردوینواز طریق بردبورد وصل نمایید .
- یک پایۀ کلید پوش باتون Play/Pause را به پایۀ D03 ماژول آردوینو وصل نمایید .
- یک پایۀ کلید پوش باتونPrevious را به پایۀ D04 ماژول آردوینو وصل نمایید .
- پایۀ دیگر کلیدهای پوش باتون را مطابق شکل به پایۀ GND بردبورد وصل نمایید .
هـ ) برنامه و کدنویسی آردوینو :
ابتدا باید توابع کنابخانه SoftwareSerial.h نصب نمایید
/// MP3 DFPLAYER PROJECT01
//////////////////////////////////////////
#include “SoftwareSerial.h”
SoftwareSerial mySerial(10, 11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
# define ACTIVATED LOW
int buttonNext = 2;
int buttonPause = 3;
int buttonPrevious = 4;
boolean isPlaying = false;
void setup () {
pinMode(buttonPause, INPUT_PULLUP);
digitalWrite(buttonPause,HIGH);
pinMode(buttonNext, INPUT_PULLUP);
digitalWrite(buttonNext,HIGH);
pinMode(buttonPrevious, INPUT_PULLUP);
digitalWrite(buttonPrevious,HIGH);
begin (9600);
delay(1000);
playFirst();
isPlaying = true;
}
void loop () {
if (digitalRead(buttonPause) == ACTIVATED)
{
if(isPlaying)
{
pause();
isPlaying = false;
}else
{
isPlaying = true;
play();
}
}
if (digitalRead(buttonNext) == ACTIVATED)
{
if(isPlaying)
{
playNext();
}
}
if (digitalRead(buttonPrevious) == ACTIVATED)
{
if(isPlaying)
{
playPrevious();
}
}
}
void playFirst()
{
execute_CMD(0x3F, 0, 0);
delay(500);
setVolume(20);
delay(500);
execute_CMD(0x11,0,1);
delay(500);
}
void pause()
{
execute_CMD(0x0E,0,0);
delay(500);
}
void play()
{
execute_CMD(0x0D,0,1);
delay(500);
}
void playNext()
{
execute_CMD(0x01,0,1);
delay(500);
}
void playPrevious()
{
execute_CMD(0x02,0,1);
delay(500);
}
void setVolume(int volume)
{
execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30)
delay(2000);
}
void execute_CMD(byte CMD, byte Par1, byte Par2)
// Excecute the command and parameters
{
// Calculate the checksum (2 bytes)
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
// Build the command line
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
//Send the command line to the module
for (byte k=0; k<10; k++)
{
write( Command_line[k]);
}
}
— عملکرد پروژه :
- یک حافظه میکرو SD در شیار ماژول DFplayer قرار دهید البته از قبل فایلهای صوتی را داخل آن ذخیره کنید .(ماژول حافظۀ میکرو SDبه همراه کیت است)
- با اتصال کابل آردوینو مینی usb یه ماژول برنامه را آپلود کنید .
- با شروع برنامه فایل صوتی به ترتیب شماره پخش می شود و اگر کلیدی را نزنید فایلها پشت سر هم تکرار میشوند.
- با دکمه توقف فایل صوتی را متوقف میکنید و با فشردن مجدد آن فایل صوتی پخش میشود .
- بادکمه next فایل صوتی بعدی پخش میشود وپس از اتمام فایل منتظر میماند تا دکمۀ دیگری فشره شود و همچنین برای دکمه prev .
- مقدار ولوم را در سورس برنامه میتوانید افزایش دهید ولی از آنجا که تغذیه ماژول DFplayer از آردوینو تامین شده است ممکن است به ماژول آردوینو آسیب برسد . اگر از یک تغذیه خارجی ۳٫۳ الی ۵ ولت برای ماژول DFplayer استفاده کنید میتوانید مقدار ولوم را تا عدد ۳۰ افزایش دهید در این حالت صدا بلندتر خواهد شد.
شماتیک ماژول DFPlayer برای حالت استفاده از تغذیه خارجی
- پایۀ RX ماژول DFplayer را سری با یک مقاومت یک کیلواهم به پایۀ D11 ماژول آردوینو وصل نمایید .
- پایۀ TX ماژول DFplayer را به پایۀ D10 ماژول آردوینو وصل نمایید .
- پایۀ VCC ماژول DFplayer را به پایۀ +۵ ماژول آردوینو وصل نمایید .
- پایۀ GND ماژول DFplayer را به پایۀ GND ماژول آردوینو وصل نمایید .
- یک پایۀ کلید پوش باتون Next را به پایۀ D02 ماژول آردوینواز طریق بردبورد وصل نمایید .
- یک پایۀ کلید پوش باتون Play/Pause را به پایۀ D03 ماژول آردوینو وصل نمایید .
- یک پایۀ کلید پوش باتونPrevious را به پایۀ D04 ماژول آردوینو وصل نمایید .
- پایۀ دیگر کلیدهای پوش باتون را مطابق شکل به پایۀ GND بردبورد وصل نمایید .
- پایۀ Vin ماژول آردوینو را به سیم مثبت باتری ۹ ولت وصل نمایید .
- سیم منفی باتری را به خط GND بردبورد مطابق شکل متصل نمایید.
- جهت محافظت در مقابل اتصال کوتاه سر راه باتری فیوز قراردارد .
- سیم مثبت جک آداپتوری را مطابق شکل به پایۀ VCC ماژول DFplayer وصل نمایید.
- سیم مثبت جک آداپتوری را به خط GND بردبورد مطابق شکل متصل نمایید.
- جهت محافظت در مقابل اتصال کوتاه سر راه جک آداپتوری فیوز قراردارد .
برنامه آردوینو تغییری نمیکند و همانند پروژه قبلی است .
پروژه ۲ : کنترل پخش صوت ماژول DFplayer با ریموت کنترل مادون قرمز
شماتیک پروژ با ماژول DFPlayer برای پخش فایل با ریموت کنترل
- پایۀ RX ماژول DFplayer را سری با یک مقاومت یک کیلواهم به پایۀ D11 ماژول آردوینو وصل نمایید .
- پایۀ TX ماژول DFplayer را به پایۀ D10 ماژول آردوینو وصل نمایید .
- پایۀ VCC ماژول DFplayer را به پایۀ +۵ ماژول آردوینو وصل نمایید .
- پایۀ GND ماژول DFplayer را به پایۀ GND ماژول آردوینو وصل نمایید .
- پایۀ VCC ماژول گیرندۀ مادون قرمز را به پایۀ +۵ ماژول آردوینو وصل نمایید .
- پایۀ GND ماژول گیرندۀ مادون قرمز را به پایۀ GND ماژول آردوینو وصل نمایید .
- پایۀ IN ماژول گیرندۀ مادون قرمز را به پایۀ A0 ماژول آردوینو وصل نمایید .
برنامه پروژه کنترل پخش صوت ماژول DFplayer با ریموت کنترل مادون قرمز
توجه چون در این پروژه از تغذیه آردوینو برای هردو ماژول گیرندۀ مادون قرمز و ماژول پلیر استفاده شده لذا مقدار ولوم را در نرم افزار بیشتر از ۱۹ قرارندهید تا آردوینو در اثر جریان کشی زیاد ماژولها آسیب نبیند .
//—Developed by mohandesika.com//
#include <SoftwareSerial.h>
#include <IRremote.h>
SoftwareSerial mySerial(10,11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
//——————————————————–//
# define pause_play 0xFFA857
# define next_song 0xFF906F
# define prev_song 0xFFE01F
# define vol_inc 0xFF02FD // #+
# define vol_dec 0xFF9867 // #-
//——————————————————-//
const int receive = A0;
IRrecv irrecv(receive);
decode_results dec;
int volume = 15;
int eqset = 0;
boolean Playing = false;
void setup ()
{
enableIRIn();
begin(9600);Serial.begin(9600);
delay(1000);
playFirst();
Playing = true;
}
void loop ()
{
if(irrecv.decode(&dec))
{ int value = dec.value;
if (dec.value==pause_play)
{ int value = dec.value;
if(Playing)
{ int value = dec.value;
pause();
Playing = false;
}
else
{
Playing = true;
play();
}
}
if (dec.value==next_song)
{
if(Playing)
{
next();
}
}
if (dec.value==prev_song)
{
if(Playing)
{
previous();
}
}
if(dec.value==vol_inc)
{
volumeINC();
}
if(dec.value==vol_dec)
{
volumeDEC();
}
resume();
}
}
void playFirst()
{
exe_cmd(0x3F, 0, 0);
delay(100);
exe_cmd(0x06, 0, volume);
delay(100);
//exe_cmd(0x11,0,1);
delay(100);
}
void pause()
{
exe_cmd(0x0E,0,0);
delay(100);
print(dec.value, HEX);Serial.print(” pause”);Serial.println(” “);
}
void play()
{
exe_cmd(0x0D,0,1);
delay(100);
print(dec.value, HEX);Serial.print(” play”);Serial.println(” “);
}
void next()
{
exe_cmd(0x01,0,1);
delay(100);
print(dec.value, HEX);Serial.print(” next”);Serial.println(” “);
}
void previous()
{
exe_cmd(0x02,0,1);
delay(100);
print(dec.value, HEX);Serial.print(” previous”);Serial.println(” “);
}
void volumeINC()
{
volume = volume+1;
if(volume == 20)
{
volume = 19;
}
exe_cmd(0x06, 0, volume);
delay(100);
print(dec.value, HEX);Serial.print(” volumeINC”);Serial.println(volume);
}
void volumeDEC()
{
volume = volume-1;
if(volume == -1)
{
volume = 0;
}
exe_cmd(0x06, 0, volume);
delay(100);
print(dec.value, HEX);Serial.print(” volumeDEC”);Serial.println(volume);
}
void exe_cmd(byte CMD, byte Par1, byte Par2)
{
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
for (byte x=0; x<10; x++)
{
write(Command_line[x]);
}
}
جهت مشاهده عملکرد
- دکمه Play/Pause ریموت پخش صوت را کنترل خواهید نمود
- دکمه next ریموت پخش صوت بعدی را کنترل خواهید نمود
- دکمه previous ریموت پخش صوت قبلی را کنترل خواهید نمود
- دکمه +/_ ریموت صدای ولوم پخش صوت را کنترل خواهید نمود
شماتیک پروژه برای حالت استفاده با تغذیه خارجی
پروژه ۳ : کنترل لامپ های LED و پخش صوت ماژول DFplayer با آردوینو نانو
شماتیک پروژه :
- مطابق شکل ماژول آردوینو نانو و ماژول DFplayer را در محل نشان داده شده روی بردبورد نصب نمایید .
- پایۀ RX ماژول DFplayer را سری با یک مقاومت یک کیلواهم به پایۀ D11 ماژول آردوینو وصل نمایید .
- پایۀ TX ماژول DFplayer را به پایۀ D10 ماژول آردوینو وصل نمایید .
- پایۀ GND ماژول DFplayer را به پایۀ GND بردبورد که خط پایین است وصل نمایید .
- پایۀ SPK-1 ماژول DFplayer را به یک سیم بلندگو وصل نمایید .
- پایۀ SPK-2 ماژول DFplayer را به سیم دیگر بلندگو وصل نمایید .
- با یک سیم پایه +۵v ماژول آردوینو نانو را به خط تغذیه مثبت در بالای برد بورد وصل نمایید .
- پایۀ GND ماژول آردوینو نانو را مطابق شکل به خط تغذیه منفی یا GND در پایین بردبورد وصل نمایید.
- پایۀ VCC ماژول گیرنده مادون قرمز را مطابق شکل را به خط تغذیه ۵ ولت بالای بردبورد وصل نمایید .
- پایۀ IN یا دیتای ماژول گیرندۀ مادون قرمز را به پایۀ A0 ماژول آردوینو نانو مطابق شکل وصل نمایید.
- پایۀ VCC ماژول DFplayer را به پایۀ مثبت فیش آداپتوری که متصل به آداپتور ۵ ولت است وصل نمایید .
- پایۀ GND یا منفی فیش آداپتور راکه متصل به آداپتور ۵ ولت است به پایۀ GND بردبورد که خط پایین است وصل نمایید .
- پایۀ مثبت سوکت باتری کتابی ۹ ولت را مطابق شکل به پایۀ Vin ماژول آردوینو نانو وصل نمایید .
- پایۀ منفی سوکت باتری کتابی ۹ ولت را مطابق شکل به پایۀ GND بردبورد که خط پایین است وصل نمایید .
- جهت محافظت در مقابل اتصال کوتاه سر راه باتری و جک آداپتوری فیوز قراردارد .
- مطابق شکل چهار عدد لامپ LED بر روی بردبورد وصل نمایید.(پایۀ بلند LED مثبت است)
- پایۀ کوتاهتر LED ها را که منفی است مطابق شکل با یک مقاومت ۴۷۰ یا ۲۲۰ اهم به خط GND در پایین بردبورد وصل نمایید .
- پایۀ مثبت LED قرمز را مطابق شکلبا یک سیم به پایۀ D6 ماژول آردوینو وصل نمایید .
- پایۀ مثبت LED سبز را مطابق شکلبا یک سیم به پایۀ D7 ماژول آردوینو وصل نمایید .
- پایۀ مثبت LED آبی را مطابق شکلبا یک سیم به پایۀ D8 ماژول آردوینو وصل نمایید .
- پایۀ مثبت LED زرد را مطابق شکل با یک سیم به پایۀ D9 ماژول آردوینو وصل نمایید .
جهت مشاهدۀ عملکرد مدار مراحل زیر را طی نمایید :
- حافظۀ میکرو SD را در شیار مربوط به خود برروی ماژول DFplayer قرار دهید .
- باتری کتابی ۹ ولت مناسب تهیه شده را به سوکت باتری متصل کنید .( در این حالت LED ماژول آردوینو باید روشن شود)
- آداپتور ۵ ولت را به فیش آداپتوری متصل نمایید.
- ریموت کنترل مادون قرمز را به سمت گیرندۀ مادون قرمز بگیرید. (مطمئن شوید ریموت کنترل باتری دارد)
- با دکمه Play/Pause ریموت پخش صوت را کنترل خواهید نمود
- با دکمه next ریموت پخش صوت بعدی را کنترل خواهید نمود
- با دکمه previous ریموت پخش صوت قبلی را کنترل خواهید نمود
- با دکمه +/_ ریموت صدای ولوم پخش صوت را کنترل خواهید نمود
- با دکمه عدد ۰ ریموت خاموش و روشن کردن تمام لامپ های LED را باهم کنترل خواهید نمود.
- با دکمه عدد ۱ ریموت خاموش و روشن کردن لامپ LED قرمز را کنترل خواهید نمود.
- با دکمه عدد ۲ ریموت خاموش و روشن کردن لامپ LED سبز را کنترل خواهید نمود.
- با دکمه عدد ۳ ریموت خاموش و روشن کردن لامپ LED آبی را کنترل خواهید نمود.
- با دکمه عدد ۴ ریموت خاموش و روشن کردن لامپ LED زرد را کنترل خواهید نمود.
پروژه ۴: کنترل رله های خروجی و پخش صوت باماژول DFplayer و آردوینو نانو
- مطابق شکل ماژول آردوینو نانو و ماژول DFplayer را در محل نشان داده شده روی بردبورد نصب نمایید .
- پایۀ RX ماژول DFplayer را سری با یک مقاومت یک کیلواهم به پایۀ D11 ماژول آردوینو وصل نمایید .
- پایۀ TX ماژول DFplayer را به پایۀ D10 ماژول آردوینو وصل نمایید .
- پایۀ GND ماژول DFplayer را به پایۀ GND بردبورد که خط پایین است وصل نمایید .
- پایۀ SPK-1 ماژول DFplayer را به یک سیم بلندگو وصل نمایید .
- پایۀ SPK-2 ماژول DFplayer را به سیم دیگر بلندگو وصل نمایید .
- با یک سیم پایه +۵v ماژول آردوینو نانو را به خط تغذیه مثبت در بالای برد بورد وصل نمایید .
- پایۀ GND ماژول آردوینو نانو را مطابق شکل به خط تغذیه منفی یا GND در پایین بردبورد وصل نمایید.
- پایۀ VCC ماژول گیرنده مادون قرمز را مطابق شکل را به خط تغذیه ۵ ولت بالای بردبورد وصل نمایید .
- پایۀ IN یا دیتای ماژول گیرندۀ مادون قرمز را به پایۀ A0 ماژول آردوینو نانو مطابق شکل وصل نمایید.
- پایۀ VCC ماژول DFplayer را به خط مثبت بردبورد درپایین که متصل به آداپتور ۵ ولت است وصل نمایید .
- پایۀ مثبت فیش آداپتوری را به خط مثبت بردبورد درپایین مطابق شکل وصل نمایید . (این خط تغذیه +۵ ولت را برای ماژول DFplayer و ماژولهای رله تامین میکند تا جریان کشی زیاد آسیبی به آردوینو نرساند)
- پایۀ GND یا منفی فیش آداپتور راکه متصل به آداپتور ۵ ولت است به پایۀ GND بردبورد که خط پایین است وصل نمایید .
- پایۀ مثبت سوکت باتری کتابی ۹ ولت را مطابق شکل به پایۀ Vin ماژول آردوینو نانو وصل نمایید .
- پایۀ منفی سوکت باتری کتابی ۹ ولت را مطابق شکل به پایۀ GND بردبورد که خط پایین است وصل نمایید .
- جهت محافظت در مقابل اتصال کوتاه سر راه باتری و جک آداپتوری فیوز قراردارد .
- مطابق شکل از دو عدد رله ۵ ولت تک کاناله استفاده میکنیم .
- پایۀ ورودی GND ماژول رله اول و دوم را مطابق شکل به خط GND در پایین بردبورد وصل نمایید .
- پایۀ ورودی VCC ماژول رله اول و دوم را مطابق شکل به خط تغذیه ۵ ولت آداپتور در پایین بردبورد وصل نمایید .
- پایۀ IN یا دیتای ورودی ماژول رله اول را مطابق شکل به پایۀ A1 ماژول آردوینو نانو وصل نمایید .
- پایۀ IN یا دیتای ورودی ماژول رله دوم را مطابق شکل به پایۀ A2 ماژول آردوینو نانو وصل نمایید .
جهت مشاهدۀ عملکرد مدار مراحل زیر را طی نمایید :
- حافظۀ میکرو SD را در شیار مربوط به خود برروی ماژول DFplayer قرار دهید .
- باتری کتابی ۹ ولت مناسب تهیه شده را به سوکت باتری متصل کنید .( در این حالت LED ماژول آردوینو باید روشن شود)
- آداپتور ۵ ولت را به فیش آداپتوری متصل نمایید.
- ریموت کنترل مادون قرمز را به سمت گیرندۀ مادون قرمز بگیرید. (مطمئن شوید ریموت کنترل باتری دارد)
- با دکمه Play/Pause ریموت پخش صوت را کنترل خواهید نمود
- با دکمه next ریموت پخش صوت بعدی را کنترل خواهید نمود
- با دکمه previous ریموت پخش صوت قبلی را کنترل خواهید نمود
- با دکمه +/_ ریموت صدای ولوم پخش صوت را کنترل خواهید نمود
- با دکمه عدد ۰ ریموت، قطع و وصل کردن هر دو رله را باهم کنترل خواهید نمود.
- با دکمه عدد ۱ ریموت، قطع و وصل کردن رله اول را کنترل خواهید نمود.
- با دکمه عدد ۲ ریموت، قطع و وصل کردن رله دوم را کنترل خواهید نمود.
پروژه ۵ : کنترل پخس صوت ماژول DF Player با سنسور تشخیص حرکت و آردوینو نانو
شرح اتصالات و شماتیک پروژه :
- مطابق شکل ماژول آردوینو نانو و ماژول DFplayer را در محل نشان داده شده روی بردبورد نصب نمایید .
- پایۀ RX ماژول DFplayer را سری با یک مقاومت یک کیلواهم به پایۀ D11 ماژول آردوینو وصل نمایید .
- پایۀ TX ماژول DFplayer را به پایۀ D10 ماژول آردوینو وصل نمایید .
- پایۀ GND ماژول DFplayer را به پایۀ GND بردبورد که خط پایین است وصل نمایید .
- پایۀ SPK-1 ماژول DFplayer را به یک سیم بلندگو وصل نمایید .
- پایۀ SPK-2 ماژول DFplayer را به سیم دیگر بلندگو وصل نمایید .
- با یک سیم پایه +۵v ماژول آردوینو نانو را به خط تغذیه مثبت در بالای برد بورد وصل نمایید .
- پایۀ GND ماژول آردوینو نانو را مطابق شکل به خط تغذیه منفی یا GND در پایین بردبورد وصل نمایید.
- پایۀ VCC ماژول گیرنده مادون قرمز را مطابق شکل را به خط تغذیه ۵ ولت بالای بردبورد وصل نمایید .
- پایۀ IN یا دیتای ماژول گیرندۀ مادون قرمز را به پایۀ A0 ماژول آردوینو نانو مطابق شکل وصل نمایید.
- پایۀ VCC ماژول DFplayer را به خط مثبت بردبورد در بالا وصل نمایید .
- پایۀ BUSY ماژول DFplayer را مطابق شکل به پایۀ A4 ماژول آردوینو وصل نمایید .
- ماژول تشخیص حرکت PIR مطابق شکل سه پایه دارد .
- پایۀ VCC ماژول تشخیص حرکت PIR را مطابق شکل با یک مقاومت ۱۰۰ اهم به پایۀ A3 ماژول آردوینو وصل نمایید .
- پایۀ GND ماژول تشخیص حرکت PIR را مطابق شکل به خط تغذیه منفی یاGND در پایین بردبورد وصل نمایید .
- پایۀ OUT ماژول تشخیص حرکت PIR را مطابق شکل به خط تغذیه ۵ ولت در بالای بردبوردوصل نمایید .
جهت مشاهدۀ عملکرد مدار مراحل زیر را طی نمایید :
- حافظۀ میکرو SD را در شیار مربوط به خود برروی ماژول DFplayer قرار دهید .
- کابل miniUSB را به ماژول آردوینو وصل نمایید.
- برنامه آردوینو را بر روی کامپیوتر اجرا کنید.
- چند دقیقه صبر کنید تا ماژول تشخیص حرکت PIR کالیبره شود. در این حالت حرکتی مقابل سنسور نباشد.
- سپس با حرکت مقابل سنسور تشخیص حرکت صوت پخش می شود .
- صوت تا انتها پخش می شود اگر حرکتی مقابل سنسور نباشد. متوقف شده تا حسگر حرکت را تشخیص دهد .
- همزمان با سنسور PIR میتوانید با ریموت کنترل نیز فرمان پخش صوت را کنترل نمایید.
- ریموت کنترل مادون قرمز را به سمت گیرندۀ مادون قرمز بگیرید. (مطمئن شوید ریموت کنترل باتری دارد)
- با دکمه Play/Pause ریموت پخش صوت را کنترل خواهید نمود
- با دکمه next ریموت پخش صوت بعدی را کنترل خواهید نمود
- با دکمه previous ریموت پخش صوت قبلی را کنترل خواهید نمود
- با دکمه +/_ ریموت صدای ولوم پخش صوت را کنترل خواهید نمود.
- چنانچه بخواهید فرمان فقط از طریق ریموت پخش شود و سنسور PIR را با دکمه غیرفعال کنید. با زدن مجدد دکمه سنسور فعال می شود .
درحالت شروع قابلیت کنترل پخش صوت با هردو حالت سنسور حرکت و گیرنده ریموت کنترل وجود دارد با زدن دکمه حالت کنترل سنسور حرکت قطع میشود و با زدن مجدد دکمه، سنسور وصل میشود.
صوت پخش شده با فرمان سنسور آخرین صوتی است که دکمه ریموت کنترل فرمان توقف آن را داده است و برای حالت شروع همان صوت اول است که پخش میشود .
پروژه ۶ : کیت آماده کنترل پخش صوت و نور با ماژول آردوینو نانو در تابلوهای سه بعدی
شرح پروژه کنترل پخش صوت و نور با ریموت ۲۱Key
- دکمه ۰ : خاموش و روشن کردن تمام رله ها
- دکمه ۱ : خاموش و روشن کردن رله ۱
- دکمه ۲ : خاموش و روشن کردن رله ۲
- دکمه ۳ : خاموش و روشن کردن رله ۳
- دکمه ۴ : خاموش و روشن کردن رله ۴
- دکمه ۵ : خاموش و روشن کردن رله ۵
- دکمه ۶ : خاموش و روشن کردن رله ۶
- دکمه ۷ : خاموش و روشن کردن رله ۷
- دکمه ۸ : خاموش و روشن کردن رله ۸
- دکمه ۹ : خاموش و روشن کردن لامپ فول کالر
- دکمه پخش و توقف صدا و موزیک
- دکمه جلو بردن پخش صدای بعدی
- دکمه عقب بردن پخش صدای قبلی
- دکمه افزایش و کاهش صدا (+/-)
- صداهای ضبط شده ۹ فایل به ترتیب : ( ۱٫خروس –باد – ۳٫رعد وبرق –۴٫ بلبل – ۵٫ترانه آخ شنیدم از کلیم الله … – ۶٫ترانه و آهنگ ترکمنی – ۷٫بلبل پرصدا – ۸٫خروس موزیکال – ۹٫نوای نی )
توجه ۱ : تا این مرحله (بالا) نرم افزار کامل است .
توجه ۲ : برای پخش صوت با دکمه های پنجگانه طول زمان پخش صدا در نرم افزار تنظیم نشده است
توجه ۳ : برای حالت live طول زمان باید اصلاح شود
- دکمه EQ پخش حالت Live
- دکمه CH پخش صدای دوم (باد)
- دکمه CH+ پخش صدای پنجم (ترانه)
- دکمه CH- پخش صدای سوم (صاعقه)
- دکمه ۲۰۰+ پخش صدای هشتم (خروس موزیکال)
- دکمه ۱۰۰+ پخش صدای ششم (آهنگ ترکمنی)
پروژه ۷ : کنترل بارگیری مخازن غله با استپرموتورهای DC وماژول آردوینو نانو
جهت بارگیری غله در مخزن با استفاده از پمپ باد ابتدا توسط موتور ۱ غله وارد لوله شده و سپس با چرخش نیم دور دریچه موتور ۲ دریچه پمپ باد را باز کرده وغله به سمت مخزن میرود و بعد از یک دورکامل دریچه پمپ بسته شده و دریچه ۱ برای ورود غله نیم دور باز میشود این فرآیند بصورت خودکار انجام میشود البته توسط میکروسوئیچ ها نیز بصورت دستی موتورها قابل کنترل هستند.
سورس کد برنامه آردوینو نانو :
#include <Stepper.h>
// Defines the number of steps per rotation
const int stepsPerRevolution2 = 200;
const int stepsPerRevolution1 = 200;
int SW1 = A3; int SW2 = A4;
int micro1 = A1; int micro2 = A2;
int Start=12;
int startON=0;
Stepper myStepper1 = Stepper(stepsPerRevolution2, 4, 5, 6, 7);
Stepper myStepper2 = Stepper(stepsPerRevolution1, 8, 9, 10, 11);
void setup()
{
Serial.begin(9600);
pinMode(Start, INPUT);
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
pinMode(micro1, INPUT);
pinMode(micro2, INPUT);
}
void loop()
{
if((digitalRead(SW1)==LOW) && (digitalRead(SW2)==LOW ))
{
Serial.println(“SW=LOW”);
if((digitalRead(Start)==HIGH) || (startON==1))
{
startON=1;
myStepper1.setSpeed(5);// 5 rpm
myStepper2.setSpeed(5);
myStepper1.step(stepsPerRevolution1);
myStepper2.step(stepsPerRevolution2/2);
}
}
else
{
Serial.println(“SW=HIGH”);
startON=0;
while((digitalRead(SW1)==HIGH) && (digitalRead(SW2)==LOW )&&(digitalRead(micro1)==LOW))
{myStepper1.setSpeed(40);myStepper1.step(stepsPerRevolution1/100);}
while((digitalRead(SW2)==HIGH) && (digitalRead(SW1)==LOW )&&(digitalRead(micro2)==LOW))
{myStepper2.setSpeed(40);myStepper2.step(stepsPerRevolution2/100);}
}
}
نقشه مونتاژ روی فیبر وسوراخدار
www.mohandesika.com
پروژه ۸ : کنترل رله های فرمان موتور در پرکردن مخازن غله با میکروسوئیچ و ماژول آردوینو نانو
کلیدهای SW1 , SW2 جهت جهت کالیبره کردن میکروسوئیچ ها بر روی دریچه کنترل موتورها استفاده میشود . با فرمان میکروسوئیچ ها رله ها قطع و وصل موتورها را انجام میدهند .
کدنویسی برنامه آردوینو :
int SW1 = 4; int SW2 = 5;
int micro1 = 6; int micro2 = 7;
int M1 = 8; int M2 = 9;
int Start=12;
int startON=0;
void setup()
{
Serial.begin(9600);
pinMode(Start, INPUT);
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
pinMode(micro1, INPUT);
pinMode(micro2, INPUT);
pinMode(M1, OUTPUT);
pinMode(M2, OUTPUT);
}
void loop()
{
if((digitalRead(SW1)==LOW) && (digitalRead(SW2)==LOW ))
{
Serial.println(“SW=LOW”);
if((digitalRead(Start)==HIGH) || (startON==1))
{
startON=1;
if(digitalRead(micro1) == HIGH){digitalWrite(M1,LOW);digitalWrite(M2,HIGH);delay(100);}
if(digitalRead(micro2) == HIGH){digitalWrite(M1,HIGH);digitalWrite(M2,LOW);delay(100);}
}
}
else
{
Serial.println(“SW=HIGH”);
startON=0;
while((digitalRead(SW1)==HIGH) && (digitalRead(SW2)==LOW ))digitalWrite(M1,HIGH);
digitalWrite(M1,LOW);
while((digitalRead(SW1)==LOW) && (digitalRead(SW2)==HIGH ))digitalWrite(M2,HIGH);
digitalWrite(M2,LOW);
}
}
پروژه ۹ : کنترل استپر موتورهای ۲۸BYJ-48 با درایور ULN2003 و ماژول آردوینو نانو
کد برنامه نویسی آردوینو :
#include <AccelStepper.h>
// Define step constants
#define FULLSTEP 4
#define HALFSTEP 8
int SW1 = A3; int SW2 = A4;
int micro1 = A1; int micro2 = A2;
//int M1 = 8; int M2 = 9;
int Start=12;
int startON=0;
AccelStepper stepper2(FULLSTEP, 8, 10, 9, 11);
AccelStepper stepper1(FULLSTEP, 4, 6, 5, 7);
void setup()
{
Serial.begin(9600);
pinMode(Start, INPUT);
pinMode(SW1, INPUT);
pinMode(SW2, INPUT);
pinMode(micro1, INPUT);
pinMode(micro2, INPUT);
stepper1.setMaxSpeed(1000.0);
stepper1.setAcceleration(50.0);
stepper1.setSpeed(200);
stepper1.moveTo(-2038);
// set the same for motor 2
stepper2.setMaxSpeed(1000.0);
stepper2.setAcceleration(50.0);
stepper2.setSpeed(200);
stepper2.moveTo(2038);
}
void loop()
{
if((digitalRead(SW1)==LOW) && (digitalRead(SW2)==LOW ))
{
Serial.println(“SW=LOW”);
if((digitalRead(Start)==HIGH) || (startON==1))
{
startON=1;
stepper1.move(-200);stepper1.run();
stepper2.move(200); stepper2.run();
}
}
else
{
Serial.println(“SW=HIGH”);
startON=0;
while((digitalRead(SW1)==HIGH) && (digitalRead(SW2)==LOW )){stepper2.move(200);stepper2.run();}
while((digitalRead(SW1)==LOW) && (digitalRead(SW2)==HIGH )){stepper1.move(-200);stepper1.run();}
}
}
پروژه ۱۰ : کیت سرگرمی الکترونیک گلخانه هوشمند سخنگو با آردوینو نانو
کدنویسی برنامه آردوینو :
//AD00777
//@mohandesika // آدرس تلگرام و اینستاگرام ما
//محصولات کیت سرگرمی الکترونیک مهندسیکا برای تمام علاقه مندان در صفحه اینستاگرام ما ببینید //
int pumpon = 10;
int yellowLED = 5;
int redLED = 6;
int sensPin = A7;
int j;int k=0;
int piezoBuzzerPin2 = A0;
//این مقدار بیانگر سطح رطوبت خاک است که بدلخواه میتوان تغییر داد//
int thresholdValue = 800;
#include <PCM.h>
const unsigned char sample1[] PROGMEM = {
//sara031
123, 120, 123, 122, 124, 124, 125, 126, 127, 128, 128, 129, 129, 129, 129, 129, };
const unsigned char sample2[] PROGMEM = {
//sara032
119, 118, 121, 121, 123, 124, 125, 126, 127, 128, 128, 129, 129, 129, 130, 130, 130,};
const unsigned char sample3[] PROGMEM = {
//sara034
125, 123, 124, 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, 128, 129, 129, 129,};
const unsigned char sample4[] PROGMEM = {
//sara035
126, 125, 123, 122, 124, 124, 125, 126, 126, 127, 128, 128, 128, 128, 129, 129, 129,};
void setup(){
pinMode(sensPin, INPUT);
pinMode(yellowLED, OUTPUT);
pinMode(pumpon, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(piezoBuzzerPin2, OUTPUT);
digitalWrite(yellowLED, LOW);
digitalWrite(redLED, LOW);
digitalWrite(pumpon, HIGH);
Serial.begin(9600);
}
void loop()
{
// مقدار آنالوگ سنسور را برمیگردونه //
int sensorValue = analogRead(sensPin);
Serial.print(sensorValue);
if(sensorValue < thresholdValue){
Serial.println(” آب کافیه”);j=0;
Serial.println(j);
analogWrite(piezoBuzzerPin2, j);
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
digitalWrite(pumpon, HIGH);
// اگر مقدار k یک باشد یعنی تازه آب خورده و گیاه میگوید آخ جون //
// در غیر اینصورت وقتی دستگاه روشن میشود وگیاه نیازی به آب ندارد میگوید کافیه//
if(k==1){
//آخ جون پنج بار //
startPlayback(sample4, sizeof(sample4)); delay(700);
startPlayback(sample4, sizeof(sample4)); delay(1000);
startPlayback(sample4, sizeof(sample4)); delay(700);
startPlayback(sample4, sizeof(sample4)); delay(1000);
startPlayback(sample4, sizeof(sample4)); delay(1000);
k=5;
}
// با این شرط گیاه فقط سه بار میگه آب کافیه و ساکت میشه //
if(k==5 || k==0){
//آب کافیه سه بار)
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample3, sizeof(sample3)); delay(1000);
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample3, sizeof(sample3)); delay(1000);
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample3, sizeof(sample3)); delay(1000);
k=2;
}
}
else {
Serial.println(” گیاه آب میخاد”);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
// k=0;
// آب میخام سه بار //
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample2, sizeof(sample2)); delay(700 );
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample2, sizeof(sample2)); delay(700 );
startPlayback(sample1, sizeof(sample1)); delay(500);
//startPlayback(sample2, sizeof(sample2)); delay(700 );
// آب- آب- آب – آب – آب //
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample1, sizeof(sample1)); delay(600);
// میخام – میخام – میخام //
startPlayback(sample2, sizeof(sample2)); delay(600 );
startPlayback(sample2, sizeof(sample2)); delay(700 );
startPlayback(sample2, sizeof(sample2)); delay(500 );
k=1;
for(j=0;j<150;j++){ analogWrite(piezoBuzzerPin2, j); }
digitalWrite(pumpon, LOW);
}
delay(500);
j=0;
}
پروژه ۱۱ : کیت سرگرمی الکترونیک گل سخنگوی هوشمند با آردوینو نانو
کدنویسی برنامه آردوینو :
// AD0077-STK0077 Talking Flower Electronics Learning Kit Arduino
//@mohandesika // آدرس تلگرام و اینستاگرام ما
//محصولات کیت سرگرمی الکترونیک مهندسیکا برای تمام علاقه مندان در صفحه اینستاگرام ما ببینید //
int yellowLED = 5;
int redLED = 6;
int sensPin = A7;
int j;int k=0;
int piezoBuzzerPin2 = A0;
//این مقدار بیانگر سطح رطوبت خاک است که بدلخواه میتوان تغییر داد//
int thresholdValue = 800;
#include <PCM.h>
const unsigned char sample1[] PROGMEM = {
//sara031
123, 120, 123, 122, 124, 124, 125, 126, 127, 128, 128, 129, 129, 129, 129, 129, 129, };
const unsigned char sample2[] PROGMEM = {
//sara032
119, 118, 121, 121, 123, 124, 125, 126, 127, 128, 128, 129, 129, 129, 130, 130, 130, };
const unsigned char sample3[] PROGMEM = {
//sara034
125, 123, 124, 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, 128, 129, 129, 129,};
const unsigned char sample4[] PROGMEM = {
//sara035
126, 125, 123, 122, 124, 124, 125, 126, 126, 127, 128, 128, 128, 128, 129, 129, 129,};
const unsigned char sample5[] PROGMEM = {
//sara037
//124, 123, 124, 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, 129, 129, 129, 129,};
const unsigned char sample6[] PROGMEM = {
//sara039
//124, 124, 125, 125, 126, 126, 127, 127, 127, 128, 128, 128, 128, 128, 128, 128, 128,};
const unsigned char sample7[] PROGMEM = {
//sara040
//123, 114, 118, 119, 121, 123, 124, 126, 127, 128, 128, 129, 129, 130, 130, 131, 131,};
const unsigned char sample8[] PROGMEM = {
//sara042
//125, 130, 113, 118, 103, 76, 95, 97, 108, 113, 118, 124, 127, 131, 132, 135, 137, 138,};
const unsigned char sample9[] PROGMEM = {
//sara014
//123, 126, 125, 124, 126, 125, 127, 127, 127, 128, 127, 129, 128, 128, 129, 128, 129, };
const unsigned char sample10[] PROGMEM = {
//sara017
//119, 116, 120, 121, 123, 124, 125, 126, 127, 128, 129, 129, 129, 130, 130, 131, 131, };
void setup(){
pinMode(sensPin, INPUT);
pinMode(yellowLED, OUTPUT);
pinMode(redLED, OUTPUT);
pinMode(piezoBuzzerPin2, OUTPUT);
digitalWrite(yellowLED, LOW);
digitalWrite(redLED, LOW);
Serial.begin(9600);
}
void loop()
{
// مقدار آنالوگ سنسور را برمیگردونه //
int sensorValue = analogRead(sensPin);
Serial.print(sensorValue);
if(sensorValue < thresholdValue){
Serial.println(” آب کافیه”);j=0;
Serial.println(j);
analogWrite(piezoBuzzerPin2, j);
digitalWrite(redLED, LOW);
digitalWrite(yellowLED, HIGH);
// اگر مقدار k یک باشد یعنی تازه آب خورده و گیاه میگوید آخ جون //
// در غیر اینصورت وقتی دستگاه روشن میشود وگیاه نیازی به آب ندارد میگوید کافیه//
if(k==1){
//آخ جون پنج بار //
startPlayback(sample4, sizeof(sample4)); delay(700);
startPlayback(sample4, sizeof(sample4)); delay(1000);
startPlayback(sample4, sizeof(sample4)); delay(700);
startPlayback(sample4, sizeof(sample4)); delay(1000);
startPlayback(sample4, sizeof(sample4)); delay(1000);
k=5;
}
// با این شرط گیاه فقط سه بار میگه آب کافیه و ساکت میشه //
if(k==5 || k==0){
//آب کافیه سه بار)
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample3, sizeof(sample3)); delay(1000);
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample3, sizeof(sample3)); delay(1000);
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample3, sizeof(sample3)); delay(1000);
k=2;
}
}
else {
Serial.println(” گیاه آب میخاد”);
digitalWrite(redLED, HIGH);
digitalWrite(yellowLED, LOW);
// k=0;
// آب میخام سه بار //
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample2, sizeof(sample2)); delay(700 );
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample2, sizeof(sample2)); delay(700 );
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample2, sizeof(sample2)); delay(700 );
// آب- آب- آب – آب – آب //
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample1, sizeof(sample1)); delay(600);
startPlayback(sample1, sizeof(sample1)); delay(500);
startPlayback(sample1, sizeof(sample1)); delay(600);
// میخام – میخام – میخام //
startPlayback(sample2, sizeof(sample2)); delay(600 );
startPlayback(sample2, sizeof(sample2)); delay(700 );
startPlayback(sample2, sizeof(sample2)); delay(500 );
k=1;
for(j=0;j<150;j++){ analogWrite(piezoBuzzerPin2, j); }
}
delay(500);
j=0;
}
پروژه ۱۲ : کیت آبیاری خودکار گلخانه با کنترل دمای محیط ورطوبت خاک مدل AD0099+
کدنویسی برنامه آردوینو :
//@mohandesika تلگرام و اینستاگرام مهندسیکا
// www.mohandesika.com سایت مهندسیکا سرگرمی الکترونیک و رباتیک
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3f,16,2); // set the LCD address to 0x27 for green lcd OR to 0x3f for blue lcd
#include <DHT.h>
int DHT11value; int DHT11Sensor = 7;
#define DHTTYPE DHT11
DHT dht(DHT11Sensor, DHTTYPE);
// ما از علامت درجه استفاده کرده ایم. این علامت در حالت عادی در آردوینو وجود ندارد و ما با کد زیر آن را تعریف میکنیم. //
byte degree[8] ={ B00001100,B00010010, B00010010, B00001100,B00000000, B00000000, B00000000, B00000000,};
//int h=12; int m; int s; int flag; int TIME; const int hs=8;
int pumpon = 10;int relay2 = 11;
int sensPin = A7;
int j;int k=0;
//این مقدار بیانگر سطح رطوبت خاک است که بدلخواه میتوان تغییر داد//
int thresholdValue = 800;
int vcc=A0;
int gnd=A2;
void setup()
{
pinMode(vcc, OUTPUT);
pinMode(gnd, OUTPUT);
digitalWrite(vcc, HIGH);
digitalWrite(gnd, LOW);
pinMode(sensPin, INPUT);
pinMode(pumpon, OUTPUT);
digitalWrite(pumpon, LOW);
pinMode(relay2, OUTPUT);
digitalWrite(relay2, LOW);
Serial.begin(9600);
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.clear();
lcd.createChar(0, degree);
lcd.setCursor(2,0);
lcd.print(“mohandesika”);
delay(3000);
lcd.clear();
Wire.begin();
lcd.begin(16,2);
lcd.clear();
lcd.createChar(0, degree);
delay(2000);
}
void loop()
{
// /////// LCD //////////
Serial.println(” LCD1″);
lcd.clear();
lcd.setCursor(0,0);
lcd.print(“Temperat.&Humid.”);
float h = dht.readHumidity(); // خواندن دیتای رطوبت
float t = dht.readTemperature(); // خواندن دیتای دما
delay(10); // هر ۱۰ میلی ثانیه
lcd.backlight();
lcd.setCursor(0,1);
lcd.print(“T:”); // نمایش عبارت Temp در ال سی دی
lcd.print(“”);
lcd.setCursor(2,1);
lcd.print(t,1);
lcd.setCursor(6,1);
lcd.write((byte)0);// // نمایش علامت درجه //
lcd.setCursor(9,1);
lcd.print(“H:”); // نمایش عبارت humid در ال سی دی
lcd.print(“”);
lcd.setCursor(11,1);
lcd.print(h,1);
lcd.setCursor(15,1);
lcd.print(“%”);
Serial.println(t);
if(t>=25.00){digitalWrite(relay2,HIGH);}
else
{ digitalWrite(relay2,LOW);}
delay(4000);
/////////////////////////////relay & sensor////////////
// مقدار آنالوگ سنسور را برمیگردونه //
int sensorValue = analogRead(sensPin);
Serial.println(sensorValue);
if(sensorValue < thresholdValue){
Serial.println(” آب کافیه”);
j=0;
Serial.println(j);
digitalWrite(pumpon, LOW);
}
else {
digitalWrite(pumpon, HIGH);
}
delay(50);
j=0;
}