Sunday 10 May 2020

IVRS Based Home Automation with Immediate Voice & SMS Feedback Using Arduino TTS - GSM SIM800L DTMF


Watch Video Demonstration Carefully Till End -- IVRS Based Home Automation with Immediate Voice & SMS Feedback Using Arduino TTS - GSM SIM800L DTMF

PLEASE SUBSCRIBE FOR MORE PROJECT VIDEOS --► HTTP://BIT.LY/29VPRS9

Project Abstract and Block Diagram   Link► http://svsembedded.com/IVRS_Based_Home_Automation_With_Immediate_Voice_SMS_Feedback.php

SCHEMATIC DIAGRAM:

FINAL SOFTWARE CODE:

#include<LiquidCrystal.h>
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);/////LCD CONNECTIONS
#include <SoftwareSerial.h>
#include "Talkie.h"
#include "Vocab_US_Large.h"
#include "Vocab_Special.h"
Talkie voice;
// defining communicationion pins for Software Serial
# define GSM_RX 7 // Connect TX of GSM module
# define GSM_TX 6 // Connect RX of GSM module
// Defining interfacing pins for Relay board
# define LIGHT1 A0
# define LIGHT2 A1
# define LIGHT3 A2
# define LIGHT4 A3
SoftwareSerial gsm_board(GSM_RX,GSM_TX);
boolean call_flag=0, relay_flag=0;
int i=0,j=0,x=-1;
char n[3];
void gsm_initilaize();// used to inilitize the gsm and chk all its parameters
void relay(); // used to control relay outputs.
/////////////////////////////////////////////////////////////
void setup()
{
// put your setup code here, to run once:
lcd.begin(16, 2);/////16X2 LCD DISPLAY INTILIZATION
gsm_board.begin(9600);
Serial.begin(9600);
pinMode(LIGHT1,OUTPUT);
pinMode(LIGHT2,OUTPUT);
pinMode(LIGHT3,OUTPUT);
pinMode(LIGHT4,OUTPUT);
digitalWrite(LIGHT1,HIGH);delay(1000);//////DELAY 1SEC
digitalWrite(LIGHT2,HIGH);delay(1000);//////DELAY 1SEC
digitalWrite(LIGHT3,HIGH);delay(1000);//////DELAY 1SEC
digitalWrite(LIGHT4,HIGH);delay(1000);//////DELAY 1SEC
/////////////////////////////////////////////////////////////////
lcd.clear();///LCD CLEAR SCREEN
lcd.setCursor(0,0);////FIRST LINE LO FIRST LETTER WITH ADDRESS
lcd.print("IVRS Based Home");////DISPLAY DATA ON TO THE LCD SCREEN
lcd.setCursor(0,1);////SECOND LINE LO FIRST LETTER WITH ADDRESS
lcd.print("Automation With");
delay (2000);//////DELAY 2SEC
/////////////////////////////////////////////////////////////////
lcd.clear();///LCD CLEAR SCREEN
lcd.setCursor(0,0);////FIRST LINE LO FIRST LETTER WITH ADDRESS
lcd.print("Immediate Voice ");////DISPLAY DATA ON TO THE LCD SCREEN
lcd.setCursor(0,1);////SECOND LINE LO FIRST LETTER WITH ADDRESS
lcd.print("& SMS Feedback");
delay (2000);//////DELAY 2SEC
/////////////////////////////////////////////////////////////////
lcd.clear();///LCD CLEAR SCREEN
lcd.setCursor(0,0);////FIRST LINE LO FIRST LETTER WITH ADDRESS
lcd.print("Using Arduino ");////DISPLAY DATA ON TO THE LCD SCREEN
lcd.setCursor(0,1);////SECOND LINE LO FIRST LETTER WITH ADDRESS
lcd.print("SIM800L DTMF");
delay (2000);//////DELAY 2SEC
lcd.clear();///LCD CLEAR SCREEN
/////////////////////////////////////////////////////////////////
gsm_initilaize();
lcd.clear();///LCD CLEAR SCREEN
lcd.setCursor(0,0);////FIRST LINE LO FIRST LETTER WITH ADDRESS
lcd.print("GSM TEST OK");////DISPLAY DATA ON TO THE LCD SCREEN
delay (2000);//////DELAY 2SEC
lcd.clear();///LCD CLEAR SCREEN
lcd.setCursor(0,0);////FIRST LINE LO FIRST LETTER WITH ADDRESS
lcd.print("CALL TO SIM");////DISPLAY DATA ON TO THE LCD SCREEN
}
//////////////////////////////setup ends/////////////////////////////

/////////////////////loop begins///////////////////////////
void loop()
{
String gsm_data; // to hold incomming communication from GSM module
while(gsm_board.available())
{
char c=gsm_board.read();
gsm_data+=c;
delay(10);
}  //read serial data and store it to gsm_data STRING instance;
if(!call_flag) // if call is not in connected, checking for ring
{
x=gsm_data.indexOf("1234567890");
if(x>-1)
{
delay(5000);
gsm_board.println("ATA");
Serial.println("ATA");
delay(1000);voice.say(sp2_ONE);voice.say(sp4_LIGHT);voice.say(sp2_ONE);voice.say(sp2_ON);
delay(1000);voice.say(sp2_TWO);voice.say(sp4_LIGHT);voice.say(sp2_ONE);voice.say(sp2_OFF);
call_flag=1;
}
}  
// ring test over, call flag high if sim rings
if(call_flag) // if call is connected
{
x=gsm_data.indexOf("DTMF"); //checkinh dtmf and storing approprietly
if(x>-1)
{
n[j]=gsm_data[x+6];
Serial.println(n[j]);
relay_flag=1;
}
x=gsm_data.indexOf("NO CARRIER"); // Checking whether call is still connected or not
if(x>-1)
{
gsm_board.println("ATH");
relay_flag=1;
call_flag=0;
j=0;
}
}
if(relay_flag) // If a call was resently disconnected, changing relay states accordingly
{
relay();
}
}
//////////////////////////////loop ends/////////////////////////////

/////////////////////gsm inilitize begins///////////////////////////
void gsm_initilaize()
{
boolean gsm_Ready=1;
Serial.println("initializing GSM module");
while(gsm_Ready>0)
{
gsm_board.println("AT");
Serial.println("AT"); 
while(gsm_board.available())
{
if(gsm_board.find("OK")>0)
gsm_Ready=0;
}
delay(2000);
}
Serial.println("AT READY");
// GSM MODULE REPLIED 'OK' TO 'AT' INPUT, INDICAING THE MODULE IS OK AND FUNCTIONING
boolean ntw_Ready=1;
Serial.println("finding network");
while(ntw_Ready>0)
{
gsm_board.println("AT+CPIN?");
Serial.println("AT+CPIN?"); 
while(gsm_board.available())
{
if(gsm_board.find("+CPIN: READY")>0)
ntw_Ready=0;
}
delay(2000);
}
 Serial.println("NTW READY");
// GSM MODULE REPLIED '+CPIN:READY' TO 'AT+CPIN?' INPUT, INDICAING THE NETWORK IS OK AND FUNCTIONING
boolean DTMF_Ready=1;
Serial.println("turning DTMF ON");
while(DTMF_Ready>0)
{
gsm_board.println("AT+DDET=1");
Serial.println("AT+DDET=1"); 
while(gsm_board.available())
{
if(gsm_board.find("OK")>0)
DTMF_Ready=0;
}
delay(2000);
}
Serial.println("DTMF READY");// GSM MODULE REPLIED '+OK' TO 'AT+DDET=1?' INPUT, INDICAING THE DTMF IS ON;
}
//////////////////////////////gsm inilitization ends/////////////////////////////
/////////////////////relay begins///////////////////////////
void relay()
{
//////////////////////////////////////////////////////////////////////////////////////////////////
if(n[0]=='1')
{
digitalWrite(LIGHT1,LOW);
delay(1000);voice.say(sp2_ONE);voice.say(sp4_LIGHT);voice.say(sp2_ONE);voice.say(sp2_ON);delay(1000);
Serial.println("LIGHT1 ON");lcd.clear();lcd.setCursor(0,0);lcd.print("LIGHT1 ON");lcd.clear();
lcd.setCursor(0,0);lcd.print("Sending SMS ");delay(1000);SMS1();delay(1000);lcd.clear();
lcd.setCursor(0,0);lcd.print("PRESS BUTTON");
}
//////////////////////////////////////////////////////////////////////////////////////////////////
else if(n[0]=='2')
{
digitalWrite(LIGHT1,HIGH);
delay(1000);voice.say(sp2_TWO);voice.say(sp4_LIGHT);voice.say(sp2_ONE);voice.say(sp2_OFF);delay(1000);
Serial.println("LIGHT1 OFF");lcd.clear();lcd.setCursor(0,0);lcd.print("LIGHT1 OFF");lcd.clear();
lcd.setCursor(0,0);lcd.print("Sending SMS ");delay(1000);SMS2();delay(1000);lcd.clear();
lcd.setCursor(0,0);lcd.print("PRESS BUTTON");
}

relay_flag=0;
}
/////////////////////relay ends///////////////////////////
void init_sms1()
{
gsm_board.println("AT+CMGF=1");delay(400);
gsm_board.println("AT+CMGS=\"1234567890\"");   // use your 10 digit cell no. here
delay(400);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void lcd_status()
{lcd.clear();lcd.print("Message Sent");  delay(500);return;}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SMS1()
{init_sms1();gsm_board.println("LIGHT1 ON SUCESS");delay(500);delay(1000); lcd_status();}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void SMS2()
{init_sms1();gsm_board.println("LIGHT1 OFF SUCESS");delay(500);delay(1000); lcd_status();}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
================================================================
PROJECT KIT HELP AND EXECUTION PROCESS
SVSEMBEDDED - 9491535690 / 7842358459
Project help & learning - Online Support
·         You can build this project at home. With step by step process Explain on video call and remote desktop command line console
·         Team Viewer: The Remote Desktop Software
·         Any Desk: The Fast Remote Desktop Application Software.
·         We will charge the Money depends on the project worth.
·         We will write the code on your Computer with Remote Desktop connection and Compile the code in your computer only Dumping the code to u r computer
·         Online embedded project kit support.
·         Indian timings 10:00am to 6:00pm. (WhatsApp / Google Duo video and voice calls)
·         You can build this project support in case of any doubts- online YouTube tutorials.
·         We can develop the Project with your own ideas also.
·         We will sell full project kit also(Send me mail to svsembedded@gmail.com)
·         Please Subscribe For More Project Videos --► http://bit.ly/29vPrS9
·         Slice--►http://www.svskits.in/
·         blog --►http://www.svskit.com/
·         site --►http://www.svsembedded.com/

No comments:

Post a Comment