Sunday, October 25, 2015

face detection opencv dan visual studio


programnya............

#include "visualcontrol.h"
#include "webcamwidget.h"
#include <boost/bind.hpp>
#include <boost/filesystem.hpp>

#include <QDebug>
#include <QCloseEvent>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QListWidget>
#include <QPushButton>
#include <QMessageBox>
#include <QInputDialog>
#include <logger.h>

#include "cognition/detector/facedetector.h"
#include "cognition/trainerimage.h"

namespace gui
{

const cv::Size VisualControl::testImageSize(150,200);

VisualControl::VisualControl(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
setupFramework();
setupGUI();

setMinimumSize(QSize(640,480));

frameCaptureThread = boost::thread(
boost::bind(&cognition::FrameCapture::startCapturing, frameCapture));

faceDetectorThread = boost::thread(
boost::bind(&cognition::Detector::threadStart, faceDetector));

Logger::getInstance().log("Ready...");
}

VisualControl::~VisualControl()
{
}

void VisualControl::setupFramework()
{
using boost::shared_ptr;
using cognition::DetailedFaceDetector;
using cognition::EigenfaceRecognizer;

//videoCapture = shared_ptr<VideoCapture>( new VideoCapture(0) );
frameCapture = shared_ptr<cognition::FrameCapture>( new cognition::FrameCapture(32) );

//update the path of the classifier to the local path of your openCV installation!
faceDetector = shared_ptr<DetailedFaceDetector>(
new DetailedFaceDetector(DetailedFaceDetector::ALL,
"haarcascades/haarcascade_frontalface_alt.xml",
frameCapture.get(), false, 1.16));

faceDetector->loadCascade(DetailedFaceDetector::EYES, "haarcascades/haarcascade_eye.xml");
faceDetector->loadCascade(DetailedFaceDetector::NOSE, "haarcascades/haarcascade_mcs_nose.xml");
faceDetector->loadCascade(DetailedFaceDetector::MOUTH, "haarcascades/haarcascade_mcs_mouth.xml");

frameCapture->addFrameReceiver(faceDetector.get());

recognizer = shared_ptr<EigenfaceRecognizer>( new cognition::EigenfaceRecognizer );
}

void VisualControl::closeEvent(QCloseEvent *event)
{
//webcamController->unregister();
faceDetector->removeController(webcamWidget);

//qDebug() << "controller count = " << faceDetector->getControllerCount();

frameCapture->stopCapturing();

faceDetector->requestTreadStop();

frameCaptureThread.interrupt();

faceDetectorThread.interrupt();

// qDebug() << "Close event called, joining";
frameCaptureThread.join();

faceDetectorThread.join();

//event->accept();

//QMainWindow::closeEvent(event);
}

void VisualControl::setupGUI()
{
webcamWidget = new WebcamWidget(this, frameCapture.get());

faceDetector->addController(webcamWidget);

logWidget = new QListWidget;

captureTrainingImageButton = new QPushButton(tr("Capture face and store it as training image"));
connect(captureTrainingImageButton, SIGNAL(clicked()), this, SLOT(captureTrainingImage()));

trainRecognizerButton = new QPushButton(tr("Train recognizer"));
connect(trainRecognizerButton, SIGNAL(clicked()), this, SLOT(trainRecognizer()));

recognizeFaceButton = new QPushButton(tr("Recognize Visible Faces"));
connect(recognizeFaceButton, SIGNAL(clicked()), this, SLOT(recognizeFaces()));

QWidget *centralWidget = new QWidget;
QVBoxLayout *mainLayout = new QVBoxLayout;
QHBoxLayout *buttonsLayout = new QHBoxLayout;

buttonsLayout->addWidget(captureTrainingImageButton);
buttonsLayout->addWidget(trainRecognizerButton);
buttonsLayout->addWidget(recognizeFaceButton);

mainLayout->addWidget(webcamWidget);
mainLayout->addLayout(buttonsLayout);
mainLayout->addWidget(logWidget);

centralWidget->setLayout(mainLayout);

Logger::getInstance().setLogWidget(logWidget);

setCentralWidget(centralWidget);
}

void VisualControl::captureTrainingImage()
{
cv::Mat frame;
cognition::Detector::RectVector faces;

captureFrameAndFaces(faces, frame);

if(faces.size() == 0)
{
QMessageBox::information(this, "No faces found", "The detector did not find any faces!");
}
else
{
frame = frame.clone();
cognition::TrainerImage convertor(testImageSize, true, "images/");
cv::Mat faceRegion;
for(std::vector<cv::Rect>::iterator face = faces.begin(); face != faces.end(); ++face)
{
faceRegion = frame(*face);
QString filename = QInputDialog::getText(this,
tr("Image name"),
tr("enter image name (enter extension too, it determines the image format!)"));

if(filename.size() < 1) continue;

if(!convertor.processAndSaveImage(faceRegion, filename.toStdString()))
QMessageBox::information(this, "Failed", "Could not process and save the image!");
}
}
}

void VisualControl::trainRecognizer()
{
using namespace boost::filesystem;

path dir("images");
directory_iterator end;

for(directory_iterator file(dir); file != end; ++file)
{
if(is_regular_file(*file))
recognizer->addTrainingImage(file->path().string(), file->filename());
}

if(recognizer->train())
QMessageBox::information(this, "Success", "The recognizer has succesfully finished training!");
else
QMessageBox::information(this, "Error", "The recognizer has indicated that it did not train correctly!");
}

void VisualControl::recognizeFaces()
{
if(recognizer->trained())
{
cv::Mat frame;
cognition::Detector::RectVector faces;

captureFrameAndFaces(faces, frame);

if(faces.size() == 0)
QMessageBox::information(this, "No faces found", "The detector did not find any faces!");
else
{
frame = frame.clone();
cognition::TrainerImage convertor(testImageSize, true);
cv::Mat faceRegion;
cv::Mat processedFace;

for(std::vector<cv::Rect>::iterator face = faces.begin(); face != faces.end(); ++face)
{
faceRegion = frame(*face);
processedFace = convertor.processImage(faceRegion);
std::string name = recognizer->recognize(processedFace);
Logger::getInstance().log(std::string("Recognized: ") + name);
}
}
}
else
{
QMessageBox::information(this, "Recognizer is not trained", "Recognizer is not trained or failed to train, add enough training images and train the recognizer!");
}
}

void VisualControl::captureFrameAndFaces(cognition::Detector::RectVector &rects, cv::Mat &frame)
{
rects = webcamWidget->getCurrentFaces();
frame = webcamWidget->getCurrentFrame();
//cognition::FaceDetector detector("C:/OpenCV2.1/data/haarcascades/haarcascade_frontalface_alt.xml");
//*frameCapture->getCaptureDevice() >> frame;

//detector.receiveFrame(frame);
//detector.processFrame();
//rects = detector.getAreas();
}
}



Friday, October 23, 2015

volume control tangki air arduino

flowchart

programnya.....

/*-----------------------------------------------------
'  
'     VOLUME CONTROL TANGKI AIR
'     TRIG --> Pin 9
'     ECHO --> Pin 8
'     RELAY --> Pin 10
'     Hasilnya tampilkan ke LCD
'
'------------------------*/

#define ECHOPIN 9                          
#define TRIGPIN 8                          
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5,6,7);
unsigned int jarak,timer,T_air,La;
unsigned long Vol;
void setup(){
  lcd.begin(16, 2);
  lcd.print("   WATER LEVEL");
  lcd.setCursor(0, 1);
  lcd.print("     CONTROL  ");
  delay(2000);
  lcd.clear();
  lcd.print("Volume=");
  lcd.setCursor(0,1);
  lcd.print("Status=");

  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
  pinMode(10,OUTPUT);
  // tinggi tangki 1 m (100 cm)
  // diameter alas 60 cm
  // Luas alas = 3.14x30x30 = 2826 cm2
  La=2826;

}

void loop(){
  digitalWrite(TRIGPIN, LOW);                
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                
  timer = pulseIn(ECHOPIN, HIGH);      
  jarak= timer/58;                      
  if (jarak>100)jarak=100;
  T_air=100-jarak;
  Vol=(unsigned long)La*T_air/1000;

  lcd.setCursor(7,0);
  lcd.print(Vol);
  lcd.print(" L ");
  if(Vol<100){
      lcd.setCursor(7,1);
      lcd.print("Pompa ON ");
      digitalWrite(10,1);    
  }
  else if(Vol>250){
      lcd.setCursor(7,1);
      lcd.print("Pompa OFF");
      digitalWrite(10,0);    
  }

  delay(500);
}


Thursday, October 22, 2015

tongkat tunatentra ultrasonik arduino

flowchart
programnya...............
/*-----------------------------------------------------
'     
'     TONGKAT TUNA NETRA
'     TRIG --> Pin 8
'     ECHO --> Pin 9
'     BUZZER --> Pin 11
'     Hasilnya tampilkan ke LCD
'    
'------------------------*/

#define ECHOPIN 9                            
#define TRIGPIN 8                            

int jarak,timer;
void setup(){
    pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
  pinMode(11,OUTPUT);
}

void loop(){
  digitalWrite(TRIGPIN, LOW);                   
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                  
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                   
  timer = pulseIn(ECHOPIN, HIGH);        
  jarak= timer/58;                        
  if (jarak>200){
      digitalWrite(11,0);
  }
  else if(jarak>100){
      digitalWrite(11,1);
      delay(1000);
      digitalWrite(11,0);
      delay(1000);
  }
  else {      
      digitalWrite(11,1);
      delay(200);
      digitalWrite(11,0);
      delay(200);
  }
                      
  

}


kran otomatis arduino dan ultrasonik


flowchart

programnya.........
/*-----------------------------------------------------
'  
'     KRAN OTOMATIS
'     TRIG --> Pin 8
'     ECHO --> Pin 9
'     Relay --> Pin 10
'     Hasilnya tampilkan ke LCD
'  
'------------------------*/

#define ECHOPIN 9                        
#define TRIGPIN 8                          
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5,6,7);
unsigned int jarak, timer;

void setup(){
  lcd.begin(16, 2);
  lcd.print("KRAN OTOMATIS ");
  lcd.setCursor(0, 1);
  lcd.print("Kondisi=");
  delay(2000);
 
  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
  pinMode(10, OUTPUT);

}

void loop(){
  digitalWrite(TRIGPIN, LOW);                
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                
  timer = pulseIn(ECHOPIN, HIGH);      
  jarak= timer/58;                      
  if(jarak<10) {
      lcd.setCursor(8, 1);
      lcd.print("Open  ");
      digitalWrite(10,1);
  }
   else{
       lcd.setCursor(8, 1);
       lcd.print("Closed");
       digitalWrite(10,0);
   }
   delay(100);
}

penghitung jumlah orang otomatis pake arduino

flowchart

/*-----------------------------------------------------
'  
'     PENGHITUNG JUMLAH ORANG
'     TRIG --> Pin 8
'     ECHO --> Pin 9
'     Hasilnya tampilkan ke LCD
'  
'------------------------*/

#define ECHOPIN 9                          
#define TRIGPIN 8                          
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5,6,7);
unsigned int jarak,timer,Jml;
void setup(){
  lcd.begin(16, 2);
  lcd.print("   PENGHITUNG  ");
  lcd.setCursor(0, 1);
  lcd.print("  JUMLAH ORANG");
  delay(2000);
  lcd.clear();
  lcd.print("Jumlah=");

  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);

}

void loop(){
  digitalWrite(TRIGPIN, LOW);                
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                
  timer = pulseIn(ECHOPIN, HIGH);      
  jarak= timer/58;                      
  if (jarak<20){
      Jml++;
      lcd.setCursor(7,0);
      lcd.print(Jml);
  }
  delay(500);

}

penghitung tinggi badan arduino


flowchart

/*-----------------------------------------------------
'     
'     PENGHITUNG TINGGI BADAN
'     TRIG --> Pin 8
'     ECHO --> Pin 9
'     Hasilnya tampilkan ke LCD
'
'------------------------*/

#define ECHOPIN 9                           
#define TRIGPIN 8                            
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 4, 6, 7,8,9);
unsigned int jarak,timer,Tinggi;
void setup(){
  lcd.begin(16, 2);
  lcd.print("   PENGHITUNG  " );
  lcd.setCursor(0, 1);
  lcd.print("  TINGGI BADAN");
  delay(2000);
  lcd.clear();
  lcd.print("Tinggi=");
  
  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
  
}

void loop(){
  digitalWrite(TRIGPIN, LOW);                   
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                  
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                   
  timer = pulseIn(ECHOPIN, HIGH);        
  jarak= timer/58;                        
  
  if (jarak>200) jarak=200;
  Tinggi=200-jarak;
  lcd.setCursor(7,0);
  lcd.print(Tinggi);
  lcd.print(" cm ");
  delay(600);
  
}






Early warning system Banjir via sms

flowchart
/*-----------------------------------------------------

'     SMS ERALY WARNING
'     TRIG --> Pin 8
'     ECHO --> Pin 9
'     Baud Rate 9600 bps
'     Hasilnya tampilkan ke LCD

'------------------------*/

#include <SoftwareSerial.h>
#include <LiquidCrystal.h>

#define ECHOPIN 9                          
#define TRIGPIN 8

LiquidCrystal lcd(2, 3, 4, 5,6,7);
unsigned int jarak, timer;
byte f1,f2,f3;

String inString="";
char str,f;
int distance,l,b,s;
const int rxpin = 10; // pin used to receive
const int txpin = 11; // pin used to transmit
SoftwareSerial gsm(rxpin, txpin);
String noHP;

String statusbanjir="",isisms;

//************************************
void setup() {
  Serial.begin(9600);
  gsm.begin(9600);
  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
  //----- NOMOR HP HARUS DIISI DENGAN NOMOR TUJUAN
  noHP="085xxxxxxxxx";
 
  statusbanjir=="Standby";
  lcd.begin(16, 2);
  lcd.print(" Early Warning");
  lcd.setCursor(0, 1);
  lcd.print(" Banjir");
  delay(2000);
  lcd.clear();
  lcd.print("L=");
  lcd.setCursor(0, 1);
  lcd.print("Status");
  delay(1000);

}

void loop() {

  getdistance();
  lcd.setCursor(2,0);
  lcd.print(jarak);
   if(jarak>100)
    {  
      statusbanjir="Standby";
      lcd.setCursor(7,1);
      lcd.print("Aman  ");
    }
  else if ((jarak>75)&&(f1==0))
    {
      lcd.setCursor(7,1);
      lcd.print("Waspada");              
      sendsms(noHP,"WASPADA ! ");delay(1000);
      f1=1;  
    }
 
  else if ((jarak>50)&&(f2==0))
    {  
      lcd.setCursor(7,1);
      lcd.print("Awas !");              
      sendsms(noHP,"AWAS ! ");delay(1000);
      f2=1;
    }
  else if ((jarak>25)&&(f3==0))
    {  
      lcd.setCursor(7,1);
      lcd.print("Bahaya !");              
      sendsms(noHP,"BAHAYA ! ");delay(1000);
      f3=1;
    }

}

void getdistance(){
  digitalWrite(TRIGPIN, LOW);                
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                
  timer = pulseIn(ECHOPIN, HIGH);      
  jarak= timer/58;
  delay(50);                                  
}
//----------------------
void sendsms(String nomorHP,String pesan)
{
   gsm.print("AT+CMGS=");
   gsm.write((byte)34);
   gsm.print(nomorHP);
   gsm.write((byte)34);
   gsm.println();  
   delay(1000);
   Serial.println();
   gsm.print(pesan);
   gsm.write((byte)26);
   gsm.println();
   delay(1000);
   delay(2000);
}

alarm parkir mobil dengan arduino


flowchart





alarm parkir mobil dengan arduino
/*-----------------------------------------------------
'     APLIKASI 2
'     ALARM PARKIR MOBIL
'     TRIG --> Pin 8
'     ECHO --> Pin 9
'     BUZZER --> Pin 11
'     Hasilnya tampilkan ke LCD
'  dadan ahmad dani
'------------------------*/

#define ECHOPIN 9                          
#define TRIGPIN 8                          
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 4, 5,6,7);
int jarak,timer;
void setup(){
  lcd.begin(16, 2);
  lcd.print("   ALARM PARKIR");
  lcd.setCursor(0, 1);
  lcd.print("      MOBIL    ");
  delay(2000);
  lcd.clear();
  lcd.print("Status=");

  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);
  pinMode(11,OUTPUT);
}

void loop(){
  digitalWrite(TRIGPIN, LOW);                
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                
  timer = pulseIn(ECHOPIN, HIGH);      
  jarak= timer/58;                      
  if (jarak>25){
      lcd.setCursor(7,0);
      lcd.print("Aman    ");
  }
  else if(jarak>20){
      lcd.setCursor(7,0);
      lcd.print("Awas   ");
      digitalWrite(11,1);
      delay(500);
      digitalWrite(11,0);
      delay(500);
  }
  else if(jarak>10){
      lcd.setCursor(7,0);
      lcd.print("Waspada");
      digitalWrite(11,1);
      delay(300);
      digitalWrite(11,0);
      delay(300);
  }
  else {
      lcd.setCursor(7,0);
      lcd.print("Bahaya ");
      digitalWrite(11,1);
      delay(100);
      digitalWrite(11,0);
      delay(100);
  }
                   


}
















ULTRASONIC RANGE METER

flowchart ULTRASONIC RANGE METER


/*-----------------------------------------------------
'     APLIKASI 1
'     ULTRASONIC RANGE METER
'     TRIG --> Pin 8
'     ECHO --> Pin 9
'     Hasilnya tampilkan ke LCD
'  
'------------------------*/

#define ECHOPIN 9                          
#define TRIGPIN 8                          
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
unsigned int jarak, timer;

void setup(){
  lcd.begin(16, 2);
  lcd.print("   ULTRASONIC");
  lcd.setCursor(0, 1);
  lcd.print("  RANGE METER");
  delay(2000);
  lcd.clear();
  lcd.print("Range=");

  pinMode(ECHOPIN, INPUT);
  pinMode(TRIGPIN, OUTPUT);

}

void loop(){
  digitalWrite(TRIGPIN, LOW);                
  delayMicroseconds(2);
  digitalWrite(TRIGPIN, HIGH);                
  delayMicroseconds(10);
  digitalWrite(TRIGPIN, LOW);                
  timer = pulseIn(ECHOPIN, HIGH);      
  jarak= timer/58;                      
                   
  lcd.setCursor(6, 0);
  lcd.print(jarak);
  lcd.print(" cm ");
  delay(1000);  
}

program telemetri by request

//program telemetri by request
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(2,3, 4, 5, 6, 7);
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial gsm(rxpin, txpin);

String inString="";
String inString2="";
String Stemp="";
String inbox="";
String noPengirim="";
char str,f;
int adc0,temp,t;
int i,j,k;

void getmodem()
{
 f=1;
 while(f)
 {
   if(gsm.available())  
     {
       str=gsm.read();
       Serial.print(str);      
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString+=(char)str;
         }      
     }
 }
}
//=========================
void getmodem2()
{
 f=1;
 inString2="";
 while(f)
 {
   if(gsm.available()>0)
     {
       str=gsm.read();        
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString2+=(char)str;
         }
     }
 }
}



void setup()
{
  gsm.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Tes Koneksi ..");
  delay(1000);
  gsm.println("AT");
  getmodem();
  getmodem();
  if(inString=="OK") {
    lcd.clear();
    lcd.print(" Koneksi OK ");
    }
   else{
    lcd.clear();
    lcd.print(" Gagal ... ");
    lcd.setCursor(0,1);
    lcd.print("Coba lagi !");
    while(1);
    }
  delay(2000);
  lcd.clear();
  lcd.print("  Telemetri 2  ");
  lcd.setCursor(0, 1);
  lcd.print("   By Request  ");
  delay(2000);
  lcd.clear();
  lcd.print("  Telemetri 2  ");
  lcd.setCursor(0, 1);
  lcd.print("Tunggu Perintah");      
}
void loop()
{
  getmodem();
  getmodem2();  
  i=inString2.indexOf(':');
  if(i>0)
    {
     Stemp=inString2.substring(0,i);  
     if(Stemp=="+CMTI")
       {      
         i=inString2.indexOf(',');
         j=inString2.length ();
         i=i+1;
         inbox=inString2.substring(i,j);      
         gsm.print("AT+CMGR=");
         gsm.println(inbox);      
         getmodem();
         getmodem();
         getmodem2();
         i=inString.indexOf(',');
         i=i+2;
         j=inString.indexOf(',',i);
         j=j-1;        
         noPengirim=inString.substring(i,j);
         lcd.clear();
         lcd.print("SMS:");      
         lcd.print(inString2);
         if(inString2=="get temp"){
           adc0 = analogRead(0);
           temp=(adc0*5)/10;
           gsm.print("AT+CMGS=");
           gsm.println(noPengirim);
           delay(1000);
           gsm.print("Temperatur=");
           gsm.print(temp);
           gsm.print(" Celcius");
           gsm.write((byte)26);
           gsm.println();
           delay(1000);  
           gsm.print("AT+CMGD=");
           gsm.println(inbox);
          delay(5000);
         }
       }
    }
}

Telemetri : kirim suhu secara continue

//program telemetri continue
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(2,3, 4, 5, 6, 7);
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial gsm(rxpin, txpin);
String inString="";
char str,f;
int adc0,temp,t;

void getmodem()
{
 f=1;
 while(f)
 {
   if(gsm.available())  
     {
       str=gsm.read();
       Serial.print(str);      
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString+=(char)str;
         }      
     }
 }
}

void setup()
{
  gsm.begin(9600);
  lcd.begin(16, 2);
  lcd.print("  Telemetri 1  ");
  lcd.setCursor(0, 1);
  lcd.print("   Continue  ");
  delay(2000);
  lcd.clear();
  lcd.print("Temp=");      
}
void loop()
{
  for(t=0;t<300;t++);{
  adc0 = analogRead(0);
  temp=(adc0*5)/10;
  lcd.setCursor(5,0);
  lcd.print(temp);  
  lcd.print(" Celcius");
  delay(1000);
  }
 //gantilah nomor HP dibaris bawah ini sesuai
 //dg nomor HP yg akan di SMS    
 gsm.println("AT+CMGS=08126752xxxx");
 delay(1000);
 gsm.print("Temperatur=");
 gsm.print(temp);
 gsm.print(" Celcius");
 gsm.write((byte)26);
 gsm.println();  

}

Mengirim SMS dengan trigger switch

//program scan switch
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(2,3, 4, 5, 6, 7);
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial gsm(rxpin, txpin);

String inString="";
char str,f,scan;

void getmodem()
{
 f=1;
 while(f)
 {
   if(gsm.available())  
     {
       str=gsm.read();
       Serial.print(str);      
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString+=(char)str;
         }      
     }
 }
}

void setup() {
  gsm.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Tes Koneksi ..");
  delay(1000);
  gsm.println("AT");
  getmodem();
  getmodem();
  lcd.setCursor(0, 1);
  lcd.print(inString);
  if(inString=="OK") {
    lcd.clear();
    lcd.print(" Koneksi OK ");
    }
   else{
    lcd.clear();
    lcd.print(" Gagal ... ");
    lcd.setCursor(0,1);
    lcd.print("Coba lagi !");
    while(1);
    }
  pinMode(A2,LOW);
  pinMode(A3,LOW);
  pinMode(A4,LOW);
  pinMode(A5,LOW);
  digitalWrite(A2,HIGH);
  digitalWrite(A3,HIGH);
  digitalWrite(A4,HIGH);
  digitalWrite(A5,HIGH);
  delay(2000);
}

void loop() {
  lcd.clear();
  lcd.print("Scan Switch");
  scan=1;
  while(scan){
      if(digitalRead(A2)==0){
          lcd.setCursor(0,1);
          lcd.print("Switch 1 Aktif");      
          //gantilah nomor HP dibaris bawah ini sesuai
          //dg nomor HP yg akan di SMS    
          gsm.println("AT+CMGS=087821329501");
          delay(1000);
          gsm.print("Switch 1 aktif !");
          gsm.write((byte)26);
          gsm.println();  
          scan=0;
      }
      else if(digitalRead(A3)==0){
          lcd.setCursor(0,1);
          lcd.print("Switch 2 Aktif");      
          //gantilah nomor HP dibaris bawah ini sesuai
          //dg nomor HP yg akan di SMS    
          gsm.println("AT+CMGS=087821329501");
          delay(1000);
          gsm.print("Switch 2 aktif !");
          gsm.write((byte)26);
          gsm.println();  
          scan=0;
      }
      else if(digitalRead(A4)==0){
          lcd.setCursor(0,1);
          lcd.print("Switch 3 Aktif");      
          //gantilah nomor HP dibaris bawah ini sesuai
          //dg nomor HP yg akan di SMS    
          gsm.println("AT+CMGS=087821329501");
          delay(1000);
          gsm.print("Switch 3 aktif !");
          gsm.write((byte)26);
          gsm.println();  
          scan=0;
      }
      else if(digitalRead(A5)==0){
          lcd.setCursor(0,1);
          lcd.print("Switch 4 Aktif");      
          //gantilah nomor HP dibaris bawah ini sesuai
          //dg nomor HP yg akan di SMS    
          gsm.println("AT+CMGS=087821329501");
          delay(1000);
          gsm.print("Switch 4 aktif !");
          gsm.write((byte)26);
          gsm.println();  
          scan=0;
      }
  }
  delay(2000);
  lcd.clear();
  lcd.print("SMS Terkirim..");
  delay(2000);
  lcd.clear();
   
}



program kontrol LEDvia sms

//program kontrol LED
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(2,3, 4, 5, 6, 7);
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial gsm(rxpin, txpin);
String inString="";
String inString2="";
String Stemp="";
String inbox="";
char str,f;
int i,j;

void setup() {  
  gsm.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Tes Koneksi ..");
  delay(1000);
  gsm.println("AT");
  getmodem();
  getmodem();
  lcd.setCursor(0, 1);
  lcd.print(inString);
  if(inString=="OK") {
    lcd.clear();
    lcd.print(" Koneksi OK ");
    }
   else{
    lcd.clear();
    lcd.print(" Gagal ... ");
    lcd.setCursor(0,1);
    lcd.print("Coba lagi !");
    while(1);
    }
  pinMode(10,HIGH);
  pinMode(11,HIGH);
  pinMode(12,HIGH);
  pinMode(13,HIGH);
  delay(2000);
  lcd.clear();
  lcd.print("  Kontrol LED  ");
  lcd.setCursor(0,1);
  lcd.print("Tunggu Perintah");
}

void loop() {

  getmodem();
  getmodem2();  
  i=inString2.indexOf(':');
  if(i>0)
    {
     Stemp=inString2.substring(0,i);  
     if(Stemp=="+CMTI")
       {      
         i=inString2.indexOf(',');
         j=inString2.length ();
         i=i+1;
         inbox=inString2.substring(i,j);      
         gsm.print("AT+CMGR=");
         gsm.println(inbox);      
         getmodem();
         getmodem();
         getmodem2();
         lcd.clear();
         lcd.print("SMS:");      
         lcd.print(inString2);
         if(inString2=="1 on"){
           digitalWrite(10,HIGH);
           lcd.setCursor(0,1);
           lcd.print("LED 1 ON ");
         }
         else if(inString2=="2 on"){
           digitalWrite(11,HIGH);
           lcd.setCursor(0,1);
           lcd.print("LED 2 ON ");
         }
         else if(inString2=="3 on"){
           digitalWrite(12,HIGH);
           lcd.setCursor(0,1);
           lcd.print("LED 3 ON ");
         }
         else if(inString2=="4 on"){
           digitalWrite(13,HIGH);
           lcd.setCursor(0,1);
           lcd.print("LED 4 ON ");
         }
         //----- perintah off
         else if(inString2=="1 off"){
           digitalWrite(10,LOW);
           lcd.setCursor(0,1);
           lcd.print("LED 1 OFF");
         }
         else if(inString2=="2 off"){
           digitalWrite(11,LOW);
           lcd.setCursor(0,1);
           lcd.print("LED 2 OFF");
         }
         else if(inString2=="3 off"){
           digitalWrite(12,LOW);
           lcd.setCursor(0,1);
           lcd.print("LED 3 OFF");
         }
         else if(inString2=="4 off"){
           digitalWrite(13,LOW);
           lcd.setCursor(0,1);
           lcd.print("LED 4 OFF");
         }
         gsm.print("AT+CMGD=");
         gsm.println(inbox);
         delay(5000);
         lcd.clear();
         lcd.print("  Kontrol LED  ");
         lcd.setCursor(0,1);
         lcd.print("Tunggu Perintah");
       }
    }
}
//=====================
void getmodem()
{
 f=1;
 inString="";
 while(f)
 {
   if(gsm.available())  
     {
       str=gsm.read();            
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString+=(char)str;
         }      
     }
 }
}
//=========================
void getmodem2()
{
 f=1;
 inString2="";
 while(f)
 {
   if(gsm.available()>0)
     {
       str=gsm.read();          
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString2+=(char)str;
         }
     }
 }
}



program terima SMS

//program terima SMS
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(2,3, 4, 5, 6, 7);
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial gsm(rxpin, txpin);

String inString="";

String inString2="";
String Stemp="";
String inbox="";
char str,f;
int i,j;


void setup() {
  Serial.begin(9600);
  gsm.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Tes Koneksi ..");
  delay(1000);
  gsm.println("AT");
  getmodem();
  getmodem();
  lcd.setCursor(0, 1);
  lcd.print(inString);
  if(inString=="OK") {
    lcd.clear();
    lcd.print(" Koneksi OK ");
    }
   else{
    lcd.clear();
    lcd.print(" Gagal ... ");
    lcd.setCursor(0,1);
    lcd.print("Coba lagi !");
    while(1);
    }
  delay(2000);
  lcd.clear();
  lcd.print("Tes Terima SMS ..");
  lcd.setCursor(0,1);
  lcd.print("Tunggu SMS");
}

void loop() {
  getmodem();
  getmodem2();  
  i=inString2.indexOf(':');
  if(i>0)
    {
     Stemp=inString2.substring(0,i);  
     if(Stemp=="+CMTI")
       {      
         i=inString2.indexOf(',');
         j=inString2.length ();
         i=i+1;
         inbox=inString2.substring(i,j);      
         gsm.print("AT+CMGR=");
         gsm.println(inbox);      
         getmodem();
         getmodem();
         getmodem2();
         lcd.clear();
         lcd.print("   Isi SMS :   ");
         lcd.setCursor(0,1);
         lcd.print(inString2);      
         gsm.print("AT+CMGD=");
         gsm.println(inbox);
         delay(5000);
         lcd.clear();
         lcd.print("Tes Terima SMS ..");
         lcd.setCursor(0,1);
         lcd.print("Tunggu SMS");
       }
    }
}
//=====================
void getmodem()
{
 f=1;
 inString="";
 while(f)
 {
   if(gsm.available())  
     {
       str=gsm.read();            
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString+=(char)str;
         }      
     }
 }
}
//=========================
void getmodem2()
{
 f=1;
 inString2="";
 while(f)
 {
   if(gsm.available()>0)
     {
       str=gsm.read();          
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString2+=(char)str;
         }
     }
 }
}



program kirim SMS

//program kirim SMS
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(2,3, 4, 5, 6, 7);
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial gsm(rxpin, txpin);

String inString="";
char str,f;

void getmodem()
{
 f=1;
 while(f)
 {
   if(gsm.available())  
     {
       str=gsm.read();
       Serial.print(str);      
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString+=(char)str;
         }      
     }
 }
}

void setup() {
  gsm.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Tes Koneksi ..");
  delay(1000);
  gsm.println("AT");
  getmodem();
  getmodem();
  lcd.setCursor(0, 1);
  lcd.print(inString);
  if(inString=="OK") {
    lcd.clear();
    lcd.print(" Koneksi OK ");
    }
   else{
    lcd.clear();
    lcd.print(" Gagal ... ");
    lcd.setCursor(0,1);
    lcd.print("Coba lagi !");
    while(1);
    }
  delay(2000);
}

void loop() {
  lcd.clear();
  lcd.print("Tes Kirim SMS ..");
  //-- silahkan baris dibawah ini diganti nomor HP
  //  yang akan dikirimi SMS
//  gsm.println("AT+CMGS=08126752xxxx"); //no HP yang akan di SMS
  gsm.println("AT+CMGS=085729774493"); //no HP yang akan di SMS
  delay(1000);
  gsm.print("Terima kasih ... SMSduino");
  gsm.write((byte)26);
  gsm.println();  
  delay(2000);
  lcd.clear();
  lcd.print("SMS Terkirim..");
  while(1);
}



program kontrol Relay

//program kontrol Relay
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(2,3, 4, 5, 6, 7);
const int rxpin = 8;
const int txpin = 9;
SoftwareSerial gsm(rxpin, txpin);
String inString="";
String inString2="";
String Stemp="";
String inbox="";
char str,f;
int i,j;


void setup() {  
  gsm.begin(9600);
  lcd.begin(16, 2);
  lcd.print("Tes Koneksi ..");
  delay(1000);
  gsm.println("AT");
  getmodem();
  getmodem();
  lcd.setCursor(0, 1);
  lcd.print(inString);
  if(inString=="OK") {
    lcd.clear();
    lcd.print(" Koneksi OK ");
    }
   else{
    lcd.clear();
    lcd.print(" Gagal ... ");
    lcd.setCursor(0,1);
    lcd.print("Coba lagi !");
    while(1);
    }
  pinMode(A1,HIGH);
  digitalWrite(A1,HIGH);
  delay(2000);
  digitalWrite(A1,LOW);
  lcd.clear();
  lcd.print(" Kontrol Relay  ");
  lcd.setCursor(0,1);
  lcd.print("Tunggu Perintah");
}

void loop() {

  getmodem();
  getmodem2();  
  i=inString2.indexOf(':');
  if(i>0)
    {
     Stemp=inString2.substring(0,i);  
     if(Stemp=="+CMTI")
       {      
         i=inString2.indexOf(',');
         j=inString2.length ();
         i=i+1;
         inbox=inString2.substring(i,j);      
         gsm.print("AT+CMGR=");
         gsm.println(inbox);      
         getmodem();
         getmodem();
         getmodem2();
         lcd.clear();
         lcd.print("SMS:");      
         lcd.print(inString2);
         if(inString2=="on"){
           digitalWrite(A1,HIGH);
           lcd.setCursor(0,1);
           lcd.print("RELAY ON ");
         }
         else if(inString2=="off"){
           digitalWrite(A1,LOW);
           lcd.setCursor(0,1);
           lcd.print("RELAY OFF");
         }
       
         gsm.print("AT+CMGD=");
         gsm.println(inbox);
         delay(5000);
         lcd.clear();
         lcd.print(" Kontrol Relay  ");
         lcd.setCursor(0,1);
         lcd.print("Tunggu Perintah");
       }
    }
}
//=====================
void getmodem()
{
 f=1;
 inString="";
 while(f)
 {
   if(gsm.available())  
     {
       str=gsm.read();            
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString+=(char)str;
         }      
     }
 }
}
//=========================
void getmodem2()
{
 f=1;
 inString2="";
 while(f)
 {
   if(gsm.available()>0)
     {
       str=gsm.read();          
       switch (str)
         {
           case '\r': break;
           case '\n':f=0; break;
           default:inString2+=(char)str;
         }
     }
 }
}



Wednesday, October 21, 2015

source code door lock


#
include<LiquidCrystal.h>
#include <SoftwareSerial.h>
LiquidCrystal lcd(7,6,5,4,3,2);
int row[]={A0,A1,A3,A4};// Defining row pins of keypad connected to Arduino pins
int col[]={10,11,12,13};//Defining column pins of keypad connected to Arduino
int i,j,lcd_count,count=1,key_id=0,flag,entry=0;// See About the Program
int col_scan;// Variable to identify a key press
char temp_press; // Variable to hold value of key press
char check[6],pass[6]; // See About the Program
char str;
const int rxpin = 8; // pin used to receive
const int txpin = 9; // pin used to transmit
SoftwareSerial gsm(rxpin, txpin);
String noHP;


void setup()
{


//----- NOMOR HP HARUS DIISI DENGAN NOMOR TUJUAN
  noHP="087821329501";
for(i=0;i<=3;i++)
{
pinMode(row[i],OUTPUT);
pinMode(col[i],INPUT);
pinMode(A2,OUTPUT);
digitalWrite(col[i],HIGH);
Serial.begin(9600);
  gsm.begin(9600);
}
lcd.begin(16,2);
lcd.print("masukkan 5 kode");
}

/* Main Program Begins */

void loop()
{
 while(entry<=4)// Password Setting Loop begins
{
SetPassword();
}
// Password Setting Loop Ends

key_id=0;
keyscan(); // Scan for a Key Press

/* Actions on Key Press begins */

if(key_id==1) // Condition to Check Key is Pressed
{
 check[count]=temp_press;
count++;

/* Condition to Unlock Begins*/

if(temp_press=='A')
{
  checkPassword();
if(flag==0)
{
lcd.setCursor(0,0);
lcd.print("Tidak Terkunci");
digitalWrite(A2,1);
sendsms(noHP,"pintu terbuka bos! ");delay(1000);
}else{
lcd.setCursor(0,0);
lcd.print("Salah PASSWORD");
delay(200);
lcd.clear();
lcd.print("Terkunci");
digitalWrite(A2,0);
}
count=1; // Resetting the counter variable
}

/* Condition to Unlock Ends*/

/* Condition to Change Password Begins */

else if(temp_press=='C')
{
checkPassword();
if(flag==0)
{
lcd.setCursor(0,0);
lcd.print("masukkan password");
key_id=0;
entry=0;
}else{
lcd.setCursor(0,0);
lcd.print("salah PASSWORD");
}
count=1; // Resetting the counter variable
}

/* Condition to Change Password Ends */

/* Condition to LOCK Begins*/

else if(temp_press=='B')
{
lcd.setCursor(0,0);
lcd.print("terkunci");
count=1; // Resetting the counter variable
}
/* Condition to LOCK Ends*/
}

/* Actions on Key Press Ends*/
}

/* Main Program Ends */

void sendsms(String nomorHP,String pesan)
{
   gsm.print("AT+CMGS=");
   gsm.write((byte)34);
   gsm.print(nomorHP);
   gsm.write((byte)34);
   gsm.println();  
   delay(1000);
   Serial.println();
   gsm.print(pesan);
   gsm.write((byte)26);
   gsm.println();
   delay(1000);
   delay(2000);
}
void SetPassword() // Subroutine to SET User Defined Password
{
keyscan();
if(key_id==1)
{
if(temp_press=='A'||temp_press=='C'||temp_press=='B') // Condition to Check for an Invalid Keypress
{
lcd.setCursor(0,0);
lcd.print("salah kode");
entry=0;
}
else

{
  pass[entry]=temp_press;

}
}
key_id=0;
if(entry==5)
{
lcd.clear();
lcd.setCursor(0,0);
lcd.print("verifikasi kode ");
}} // Subroutine to SET Password ENDS

char keyscan()// Subroutine to Scan Keypad for a Keypress
{
for(i=0; i<=3; i++)
{
digitalWrite(row[0],HIGH);
digitalWrite(row[1],HIGH);
digitalWrite(row[2],HIGH);
digitalWrite(row[3],HIGH);
digitalWrite(row[i],LOW);
for(j=0; j<=3; j++)
{
col_scan=digitalRead(col[j]);
if(col_scan==LOW)
{
  key_id=1;
  entry++;
temp_press=keypress(i,j);
lcd.setCursor(lcd_count++,1);
lcd.print(temp_press);
if(temp_press=='A'||temp_press=='C'||temp_press=='B')
{
lcd_count=0;
lcd.clear();
}
delay(300);
break;
}}
}}// Subroutine to Scan Keypress Ends

char keypress(int i, int j) // Subroutine to Identify the value of Key pressed
{
if(i==0&&j==0)
{
return('1');
}
if(i==0&&j==1)
{
return('2');
}
if(i==0&&j==2)
{
return('3');
}
if(i==0&&j==3)
{
return('A');
}
if(i==1&&j==0)
{
return('4');
}
if(i==1&&j==1)
{
return('5');
}
if(i==1&&j==2)
{
return('6');
}
if(i==1&&j==3)
{
return('B');
}
if(i==2&&j==0)
{
return('7');
}
if(i==2&&j==1)
{
return('8');
}
if(i==2&&j==2)
{
return('9');
}
if(i==2&&j==3)
{
return('C');
}
if(i==3&&j==0)
{
return('*');
}
if(i==3&&j==1)
{
return('0');
}
if(i==3&&j==2)
{
return('#');
}
if(i==3&&j==3)
{
return('D');
}
} // Subroutine to identify Keypress Ends

void checkPassword() // Subroutine to Check User Input Data with SET Password
{
flag=0;
for(i=1;i<=5&&flag==0;i++)
{
if(check[i]==pass[i])
{
flag=0;
}
else
{flag=1;
}}} // Subroutine to check password ends\