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
/*-----------------------------------------------------
'
' 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 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
/*-----------------------------------------------------
'
' 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);
}
/*-----------------------------------------------------
' 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
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);
}
/*-----------------------------------------------------
' 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);
}
}
}
}
#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();
}
#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();
}
#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;
}
}
}
}
#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;
}
}
}
}
#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);
}
#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;
}
}
}
}
#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\