Translate

Jual Alat Kendali Peralatan Rumah Otomatis Menggunakan Relay Omron dan Arduino

Jual Alat Kendali Peralatan Rumah Otomatis Menggunakan Relay Omron dan Arduino



Kami menjual alat kendali peralatan rumah tangga dengan spesifikasi sbb:

1. Jumlah relay output 20 buah ( 20 I/O )
2. Bisa mengendalikan 20 peralatan menggunakan tegangan AC
3. Relay yang digunakan adalah relay Omron 
4. Menggunakan mikrokontroller Arduino Mega
5. Terdapat rangkaian penurun tegangan dari 12v ke 5v 
6. Input bisa tegangan DC atau AC tergantung kebutuhan beban
7. Maksimal Arus 5 Amper
8. Terdapat Buku Panduan Penggunaan Alat
9. Bisa dipakai 24 Jam non-stop
10. Bisa kendali ON dan OFF menggunakan timer atau waktu tertentu
11. Harga terjangkau dan ramah lingkungan
12. Input tegangan bisa variasi tergantung kebutuhan



Harga Alat = Rp. 1.500.000 (Nego)
Stok Tersedia 1 pcs

Jika berminat segera hubungi kami di kontak berikut:
SMS / WA = 085726496643
BBM = 5509ADC4
Email = yanuarm@hotmail.com



1. Gambar Alat






2. VIDEO DEMO ALAT

    














 

Membuat Alat Pengaman Berbasis Camera Linksprite dan Foto / Gambar disimpan di SD card Arduino

Membuat Alat Pengaman Berbasis Camera Linksprite dan Foto / Gambar disimpan di SD card Arduino


       Pada kesempatan siang hari ini saya akan menjelaskan mengnai bagaimana cara membuat sebuah alat yang dapat digunakan untuk pengaman ruangan / rumah menggunakan camera, jadi prinsip kerja alat ini yaitu akan meng-capture atau ambil gambar / foto saat ada orang masuk, lalu gambar atau foto yang dihasilkan disimpan ke SD Card, sensor yang digunakan untuk mendeteksi orang adalah sensor proximity yang mana jaraknya bisa diatur menggunakan potensio dibelakang sensor. camera yang digunakan pada percobaan ini adalah camera linksrite serial inteface, untuk lebih jelsnya berikut adalah skema dan programnya.



a. Arduino Uno + Skema






b. Camera Linksprite JPEG Color TTL Interface






c. SD Card Module





d. Sensor Proximity





e. Skema Pemasangan

Link Sumber:
http://learn.linksprite.com/jpeg-camera/tutorial-of-using-linksprite-2mp-uart-jpeg-camera-with-arduino/






f. Program Arduino IDE

//*******************************************************
//              www.linksprite.com
// Note:
// 1. SD must be formated to FAT16
// 2. As the buffer of softserial has 64 bytes,
//    so the code read 32 bytes each time
// 3. Please add the libaray to the lib path
//
// * SD card attached to SPI bus as follows:
// * MOSI - pin 11
// * MISO - pin 12
// * CLK - pin 13
// * CS - pin 4
//*******************************************************
#include <SoftwareSerial.h>
#include <SPI.h>
#include <SD.h>

SoftwareSerial mySerial(5,6);          // Set Arduino pin 4 and 5 as softserial

int dataadc;
byte ZERO = 0x00;
byte incomingbyte;
long int j=0,k=0,count=0,i=0x0000;
uint8_t MH,ML;
boolean EndFlag=0;
File  myFile;

void SendResetCmd()
{
  mySerial.write(0x56);
  mySerial.write(ZERO);
  mySerial.write(0x26);
  mySerial.write(ZERO);
}

/*************************************/
/* Set ImageSize :
/* <1> 0x22 : 160*120
/* <2> 0x11 : 320*240
/* <3> 0x00 : 640*480
/* <4> 0x1D : 800*600
/* <5> 0x1C : 1024*768
/* <6> 0x1B : 1280*960
/* <7> 0x21 : 1600*1200
/************************************/
void SetImageSizeCmd(byte Size)
{
  mySerial.write(0x56);
  mySerial.write(ZERO);
  mySerial.write(0x54);
  mySerial.write(0x01);
  mySerial.write(Size);
}

/*************************************/
/* Set BaudRate :
/* <1> 0xAE  :   9600
/* <2> 0x2A  :   38400
/* <3> 0x1C  :   57600
/* <4> 0x0D  :   115200
/* <5> 0xAE  :   128000
/* <6> 0x56  :   256000
/*************************************/
void SetBaudRateCmd(byte baudrate)
{
  mySerial.write(0x56);
  mySerial.write(ZERO);
  mySerial.write(0x24);
  mySerial.write(0x03);
  mySerial.write(0x01);
  mySerial.write(baudrate);
}

void SendTakePhotoCmd()
{
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x36);
mySerial.write(0x01);
mySerial.write(ZERO);
}

void SendReadDataCmd()
{
MH=i/0x100;
ML=i%0x100;
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x32);
mySerial.write(0x0c);
mySerial.write(ZERO);
mySerial.write(0x0a);
mySerial.write(ZERO);
mySerial.write(ZERO);
mySerial.write(MH);
mySerial.write(ML);
mySerial.write(ZERO);
mySerial.write(ZERO);
mySerial.write(ZERO);
mySerial.write(0x20);
mySerial.write(ZERO);
mySerial.write(0x0a);
i+=0x20;
}

void StopTakePhotoCmd()
{
mySerial.write(0x56);
mySerial.write(ZERO);
mySerial.write(0x36);
mySerial.write(0x01);
mySerial.write(0x03);
}

void setup()
{

Serial.begin(115200);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}

Serial.print("Initializing SD card...");
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
if (!SD.begin(4)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
Serial.println("please waiting ...."); 
}

void loop()
{
 
  dataadc = analogRead(A0);
  if(dataadc < 500){
  Serial.println("Jepret");
  SD.remove("pic.jpg");
  jepret();
  }
  if(dataadc > 500){
  Serial.println("tidak Jepret");

  }
  delay(200);
}



void jepret(){

  byte a[32];
  int ii;      
  mySerial.begin(115200);
  delay(200);
  SendResetCmd();//Wait 2-3 second to send take picture command
  delay(2000);
  SetBaudRateCmd(0x2A);
  delay(100);
  mySerial.begin(38400);
  delay(100);
  SetImageSizeCmd(0x21);
  delay(100);
  SendTakePhotoCmd();
  delay(3000);
  while(mySerial.available()>0)
  {
     incomingbyte=mySerial.read();
  }
  myFile = SD.open("pic.jpg", FILE_WRITE); //<strong><span style="color: #ff0000;">The file name should not be too long</span></strong>
  while(!EndFlag)
  {
    j=0;
    k=0;
    count=0;
    SendReadDataCmd();
    delay(5);
    while(mySerial.available()>0)
    {
      incomingbyte=mySerial.read();
      k++;
      delayMicroseconds(100);
      if((k>5)&&(j<32)&&(!EndFlag))
      {
        a[j]=incomingbyte;
        if((a[j-1]==0xFF)&&(a[j]==0xD9))     //tell if the picture is finished
        EndFlag=1;
        j++;
       count++;
      }
     }

    for(j=0;j<count;j++)
    {
      if(a[j]<0x10)  Serial.print("0");
      Serial.print(a[j],HEX);           // observe the image through serial port
      Serial.print(" ");
    }
    for(ii=0; ii<count; ii++)
      myFile.write(a[ii]);
    Serial.println();
  }
  myFile.close();
  Serial.print("Finished writing data to file");
return;
  while(1);

}





g. Gambar Hasilnya







i. VIDEO HASILNYA














 

Membuat Alat Pengaman Rumah / Ruangan Berbasis Password dan SMS Gateway Arduino

Membuat Alat Pengaman Rumah / Ruangan Berbasis Password dan SMS Gateway Arduino


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat untuk pengaman rumah atau ruangan berbasis password dan SMS Gateway, alat ini memiliki fitur yang pertama yaitu dapat menghidupkan alarm ketika ada orang masuk pintu tanpa menggunakan password, dan juga jika terjadi getaran atau pecah kaca maka alarm juga berbunyi, alat ini harus menggunakan kode atau password agar alarm tidak berbunyi saat pintu dibuka dan juga terdapat sebuah tombol yang digunakan untuk membuka pintu bagi orang dari dalam ruangan yang mau keluar. selain itu alat ini juga akan SMS ke nomer tujuan saat alarm berbunyi. untuk lebih jelasnya berikut adalah skema dan programnya. 



a. Arduino Mega + Skema






b. LCD 16x2





c. Push Button dan Limit Switch






d. SIM800L (GSM Module)






e. Piezo Sensor Module (Sensor Getar)





f. Buck Converter Module






g. Program Arduino IDE

// VCC SIM800L = 4.0 volt
// Hubungkan Pin RX - TX SIM800L ke pin 50 dan 51 Arduino Mega

#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;

#include "Wire.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(A2, A3, A4, A5, A6, A7);

int ledhijau = 6;
int ledmerah = 7;
int getar;
int lim = 9;
int proxy = 0;
int x;
int buzzer = 10;
int z = 0;

int tb1 = 2;
int tb2 = 3;
int tb3 = 4;
int tb4 = 5;

int tbdalam = 11;

int tbx1 = 0;
int tbx2 = 0;
int tbx3 = 0;
int tbx4 = 0;

int tbdalamx = 0;

int a = 0;

int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];



void setup() {
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
    
  lcd.setCursor(0, 0);
  lcd.print("Loading......");
 
  digitalWrite(ledhijau, LOW);
  digitalWrite(ledmerah, HIGH);
 
  pinMode(buzzer, OUTPUT);
  pinMode(ledhijau, OUTPUT);
  pinMode(ledmerah, OUTPUT);
  pinMode(lim, INPUT);
 
  pinMode(tb1, INPUT);
  pinMode(tb2, INPUT);
  pinMode(tb3, INPUT);
  pinMode(tb4, INPUT); 
  pinMode(tbdalam, INPUT);
 
  digitalWrite(tbdalam, HIGH); 
  digitalWrite(tb1, HIGH);
  digitalWrite(tb2, HIGH);
  digitalWrite(tb3, HIGH);
  digitalWrite(tb4, HIGH);
  digitalWrite(lim, HIGH);
  digitalWrite(buzzer, HIGH);  
 
      //Serial connection.
     Serial.begin(9600);
     Serial.println("GSM Shield testing.");
     //Start configuration of shield with baudrate.
     //For http uses is raccomanded to use 4800 or slower.
     if (gsm.begin(2400)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

     if(started) {
          //Enable this two lines if you want to send an SMS.
          if (sms.SendSMS("085387096788", "Alat Siap"))
          Serial.println("\nSMS sent OK");

          if (sms.SendSMS("082150777300", "Alat Siap"))
          Serial.println("\nSMS sent OK");

         
     }
    
lcd.clear();
 
}

void loop() {

  getar = analogRead(A0);
  proxy = analogRead(A1);
  x = digitalRead(lim);
  tbx1 = digitalRead(tb1);
  tbx4 = digitalRead(tb4);
  tbdalamx = digitalRead(tbdalam);


  
  if (getar >= 200){
    digitalWrite(buzzer, LOW);
          if (sms.SendSMS("085387096788", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

          if (sms.SendSMS("082150777300", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

  }
 
  if(tbx1 == 0){
  delay(200);
  lcd.clear();
  setting();
  }
 
  if((x == 0)&&(a == 0)){
  delay(200);
  digitalWrite(buzzer, LOW);
          if (sms.SendSMS("085387096788", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

          if (sms.SendSMS("082150777300", "ada maling masuk"))
          Serial.println("\nSMS sent OK");


  }
 
  if((x == 0)&&(a == 4)&&(z == 0)){
  delay(200);
  digitalWrite(buzzer, HIGH);
  z = 1;
  }
 
  if(tbdalamx == 0){
   delay(200);
   digitalWrite(ledhijau, HIGH);
   digitalWrite(ledmerah, LOW);  
   a = 4;
   z = 0;
  }
 
  if((x == 1)&&(z == 1)){
  delay(200);
   digitalWrite(ledhijau, LOW);
   digitalWrite(ledmerah, HIGH);  
  a = 0;
  z = 0;
  }
 
   
  lcd.setCursor(0, 0);
  lcd.print("Password");
  lcd.setCursor(0, 1);
  lcd.print(getar);
  lcd.setCursor(5, 1);
  lcd.print(x);
delay(200);

}



void setting(){
 
 x = digitalRead(lim);

  if((x == 0)&&(a == 1)){
  delay(200);
  digitalWrite(buzzer, LOW);
          if (sms.SendSMS("085387096788", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

          if (sms.SendSMS("082150777300", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

  }
 
  if((x == 0)&&(a == 2)){
  delay(200);
  digitalWrite(buzzer, LOW);
          if (sms.SendSMS("085387096788", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

          if (sms.SendSMS("082150777300", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

  }
 
  if((x == 0)&&(a == 3)){
  delay(200);
  digitalWrite(buzzer, LOW);
          if (sms.SendSMS("085387096788", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

          if (sms.SendSMS("082150777300", "ada maling masuk"))
          Serial.println("\nSMS sent OK");

  }
 
 
  lcd.setCursor(0, 0);
  lcd.print("Input Password");
 
  tbx1 = digitalRead(tb1);
  tbx2 = digitalRead(tb2);
  tbx3 = digitalRead(tb3);
  tbx4 = digitalRead(tb4);
  
   if(tbx3 == 0){
   delay(200);
   lcd.setCursor(0, 1);
   lcd.print("OK1");
   a = 1;
   }
  
   if((tbx1 == 0)&&(a == 1)){
   delay(200);
   lcd.setCursor(0, 1);
   lcd.print("OK2");
   a = 2;
   }
  
   if((tbx4 == 0)&&(a == 2)){
   delay(200);
   lcd.setCursor(0, 1);
   lcd.print("OK3");
   a = 3;
   }
  
   if((tbx2 == 0)&&(a == 3)){
   delay(200);
   lcd.setCursor(0, 1);
   lcd.print("OK4");
   a = 4;
   }
  
   if((tbx1 == 0)&&(a == 4)){
   delay(200);
   digitalWrite(ledhijau, HIGH);
   digitalWrite(ledmerah, LOW);
   lcd.clear();
   a = 4;
   z = 0;
   return;
   }
  
   setting();
  
}




h. Cara Setting Library SIM800L

- Agar library kompatibel dengan Arduino Mega maka lakukan langkah berikut
- Buka library SIM800L lalu cari GSM.cpp
- Rubah jadi seperti berikut lalu SAVE







i. VIDEO HASILNYA












Membuat Robot Line Tracer / Line Follower Menggunakan Arduino

Membuat Robot Line Tracer / Line Follower Menggunakan Arduino


        Pada kesempatan yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah robot line follower atau line tracer tanpa PID dan metode, jadi robot in berjalan hanya menggunakan logika dari input sensor. robot ini menggunakan mikrokontroller Arduino dan sensor berupa photodioda dan led kuning. Fungsi dari robot ini seperti namanya yaitu mengikuti garis yang telah ditentukan arahnya dengan menggunakan 2 buah warna yang berbeda, biasanya warna putih dan hitam atau kuning dengan biru tua. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Arduino UNO

  



b. Driver L298





c. Motor DC + Roda





d. Sensor Photodioda + Led






e. Program Arduino IDE

int dirkaa = 2;
int dirka = 4;
int pwmka = 10;

int dirkii = 8;
int dirki = 12;
int pwmki = 11;

int s1 = 3;
int s2 = 5;
int s3 = 6;
int s4 = 7;
int s5 = 9;

int x1 = 0;
int x2 = 0;
int x3 = 0;
int x4 = 0;
int x5 = 0;

int kec = 150;

void setup(){
Serial.begin(9600);

pinMode(s1,INPUT);
pinMode(s2,INPUT);
pinMode(s3,INPUT);
pinMode(s4,INPUT);
pinMode(s5,INPUT);

pinMode(dirkaa,OUTPUT);
pinMode(dirka,OUTPUT);
pinMode(dirkii,OUTPUT);
pinMode(dirki,OUTPUT);

pinMode(pwmka,OUTPUT);
pinMode(pwmki,OUTPUT);

}


void loop(){

x1 = digitalRead(s1);
x2 = digitalRead(s2);
x3 = digitalRead(s3);
x4 = digitalRead(s4);
x5 = digitalRead(s5);


Serial.print("s1="); 
Serial.println(x1);
Serial.print("s2=");
Serial.println(x2);
Serial.print("s3=");
Serial.println(x3);
Serial.print("s4=");
Serial.println(x4);
Serial.print("s5=");
Serial.println(x5);

//000000
if((x1 == 0)&&(x2 == 0)&&(x3 == 0)&&(x4 == 0)&&(x5 == 0)){
Serial.println("none");

//mundur
digitalWrite(dirkaa,LOW);
digitalWrite(dirka,HIGH);
analogWrite(pwmka, kec);

digitalWrite(dirkii,LOW);
digitalWrite(dirki,HIGH);
analogWrite(pwmki, kec);

//10000 
}else if((x1 == 1)&&(x2 == 0)&&(x3 == 0)&&(x4 == 0)&&(x5 == 0)){
Serial.println("kiri");

//kiri
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, 0);


//11000 
}else if((x1 == 1)&&(x2 == 1)&&(x3 == 0)&&(x4 == 0)&&(x5 == 0)){
Serial.println("kiri");

//kiri
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, 0);


//11100 
}else if((x1 == 1)&&(x2 == 1)&&(x3 == 1)&&(x4 == 0)&&(x5 == 0)){
Serial.println("kiri");

//kiri
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, 0);


//11110
}else if((x1 == 1)&&(x2 == 1)&&(x3 == 1)&&(x4 == 1)&&(x5 == 0)){
Serial.println("tengah");

//11111 
}else if((x1 == 1)&&(x2 == 1)&&(x3 == 1)&&(x4 == 1)&&(x5 == 1)){
Serial.println("lurus");

//lurus
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);

//00100 
}else if((x1 == 0)&&(x2 == 0)&&(x3 == 1)&&(x4 == 0)&&(x5 == 0)){
Serial.println("lurus");

//lurus
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);


//01100 
}else if((x1 == 0)&&(x2 == 1)&&(x3 == 1)&&(x4 == 0)&&(x5 == 0)){
Serial.println("lurus");

//lurus
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);


//00110 
}else if((x1 == 0)&&(x2 == 0)&&(x3 == 1)&&(x4 == 1)&&(x5 == 0)){
Serial.println("lurus");

//lurus
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);


//01110
}else if((x1 == 0)&&(x2 == 1)&&(x3 == 1)&&(x4 == 1)&&(x5 == 0)){
Serial.println("lurus");

//lurus
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);


//00001 
}else if((x1 == 0)&&(x2 == 0)&&(x3 == 0)&&(x4 == 0)&&(x5 == 1)){
Serial.println("kanan");

//kanan
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, 0);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);


//00011 
}else if((x1 == 0)&&(x2 == 0)&&(x3 == 0)&&(x4 == 1)&&(x5 == 1)){
Serial.println("kanan");

//kanan
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, 0);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);


//00111
}else if((x1 == 0)&&(x2 == 0)&&(x3 == 1)&&(x4 == 1)&&(x5 == 1)){
Serial.println("kanan");

//kanan
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, 0);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);


//01111 
}else if((x1 == 0)&&(x2 == 1)&&(x3 == 1)&&(x4 == 1)&&(x5 == 1)){
Serial.println("lurus");

//kanan
digitalWrite(dirkaa,HIGH);
digitalWrite(dirka,LOW);
analogWrite(pwmka, kec);

digitalWrite(dirkii,HIGH);
digitalWrite(dirki,LOW);
analogWrite(pwmki, kec);


}


}





f. Cara Menggunakan Robot

         Cara menggunakan robot ini yaitu yang pertama adalah kalibrasi sensor terlebih dahulu dengan menentukan resistor yang tepat agar saat kondisi sensor terkena garis hitam, dia akan berlogika LOW atau tegangan dibawah 1 volt, kemudian saat terkena garis putih tegangan ada di atas 3 volt sampai 5 volt dc sehingga jika dibaca oleh pin I/O bisa berlogika high dan LOW atau 1 dan 0. setelah kalibrasi selesai robot siap digunakan dan dijalankan. 




g. VIDEO HASILNYA






   



Membuat Alat Penetas Telur atau Alat Penghangat dan Pengatur Suhu Otomatis berbasis SMS GATEWAY Arduino

Membuat Alat Penetas Telur atau Alat Penghangat dan Pengatur Suhu Otomatis berbasis SMS GATEWAY Arduino


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang fungsinya yaitu yang pertama dapat memanaskan secara otomatis menggunakan lampu pijar dan saat mencapai suhu tertentu lampu akan padam dan kipas akan menyala, sebaliknya jika suhu dibawah dari suhu yang ditetapkan maka lampu akan menyala dan kipas akan OFF / berhenti berputar. tidak hanya itu, alat ini saat dikirimkan pesan teks sms "Monitor" maka alat akan membalas pesan terkait informasi suhu dan kelembaban yang sedang dimonitor. Sensor yang digunakan pada alat ini adalah DHT11 yang mana sangat efektif buat mengukur suhu dan kelembaban. untuk lebih jelasnya berikut adalah program dan skemanya.




a. Arduino Mega





b. Modul SMS SIM800L






c. Modul Buck Converter





d. Lampu Pijar





e. Kipas DC12v Brushless





f. Rangkaian Kendali PC FAN 12v 





g. Rangkaian Kendali Lampu AC 220v





h. LCD 16x2 





i. Sensor DHT11 ( Temperature dan Humidity )






j. Program Arduino IDE

// VCC SIM800L = 4.0 volt
//Hubungkan Pin RX - TX SIM800L ke pin 50 dan 51 Arduino Mega
  
#include "SIM900.h"
#include <SoftwareSerial.h>
#include "sms.h"
SMSGSM sms;

#include "Wire.h"
#include <LiquidCrystal.h>
#include "DHT.h"

LiquidCrystal lcd(A0, A1, A2, A3, A4, A5);


#define DHTPIN 2  

#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);


char string[160];
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];

int lampu = 3;
int kipas = 4;

void setup() {

  pinMode(lampu,OUTPUT);
  pinMode(kipas,OUTPUT);
 
      //Serial connection.
     Serial.begin(9600);
     Serial.println("GSM Shield testing.");
     //Start configuration of shield with baudrate.
     //For http uses is raccomanded to use 4800 or slower.
     if (gsm.begin(2400)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

     if(started) {
          //Enable this two lines if you want to send an SMS.
          if (sms.SendSMS("085726496666", "Alat Ready"))
          Serial.println("\nSMS sent OK");
     }
      
  lcd.begin(16, 2);
  lcd.clear();
  lcd.noCursor();
   
  dht.begin();
  
  
}



void loop() {
   
  delay(2000);

  int h = dht.readHumidity();
  int t = dht.readTemperature();

  lcd.setCursor(0, 0);
  lcd.print("T: ");
  lcd.print(t);
  lcd.print(" *C");
 
  lcd.setCursor(0, 1);
  lcd.print("H: ");
  lcd.print(h);
  lcd.print(" %");

if(t > 40){
digitalWrite(lampu,HIGH);
digitalWrite(kipas,HIGH);
}

if(t < 40){
digitalWrite(lampu,LOW);
digitalWrite(kipas,LOW);
}

  sprintf(string,"Temperature: %d     Humidity: %d ", t, h );

 if(gsm.begin(9600)){
  started=true;
 }
 int pos=0;
 if(started){
  pos=sms.IsSMSPresent(SMS_ALL);
  if(pos){
    sms.GetSMS(pos,n,smsbuffer,100);
  
    if(!strcmp(smsbuffer,"monitor")){
      sms.SendSMS(n,string);
    }
    if(!strcmp(smsbuffer,"Monitor")){
      sms.SendSMS(n,string);
    }
 
    delsms();
  }
 }

 delay(100);

 

}



void delsms()
{
  for (int i=0; i<10; i++)
  {
      int pos=sms.IsSMSPresent(SMS_ALL);
      if (pos!=0)
      {
        if (sms.DeleteSMS(pos)==1){}else{}
      }
  }
}




k. Cara Setting Library SIM800L

- Agar library kompatibel dengan Arduino Mega maka lakukan langkah berikut
- Buka library SIM800L lalu cari GSM.cpp
- Rubah jadi seperti berikut lalu SAVE





l. Gambar SMS dan balasannya






m. VIDEO HASILNYA











Membuat Robot Wall AVOIDER SRF04 Kendali WIFI ARDUINO DAN NODEMCU ESP 8266 WIFI 12E dan Penampil LCD NOKIA 5110

Membuat Robot Wall AVOIDER SRF04 Kendali WIFI ARDUINO DAN NODEMCU ESP 8266 WIFI 12E dan Penampil LCD NOKIA 5110 / 3310


           Pada malam yang berbahagia kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah robot wall avoider dengan penampil lcd nokia 5110 / 3310 dan kendali wifi, robot ini menggunakan mikrokontroller Arduino Uno dan juga di barengi dengan Nodemcu ESP8266 sebagai kendali wifi-nya, jadi robot akan berjalan saat ada perintah tombol ON dari wifi dan seketika robot off saat ada perintah OFF dari wifi. robot ini menggunakan 3 buah sensor jarak yang mendeteksi jarak depan, kanan dan kiri dari robot. untuk lebih jelasnya berikut adalah program dan skemanya.

 Link Tutorial Pemasangan LCD NOKIA
 LINK BLOG




a. Arduino UNO





b. Sensor Jarak SRF04





c. Nodemcu ESP 8266 12E Wifi





d. Motor Driver L293





e. LCD Nokia 5110 / 3310





f. Program Arduino IDE

#include <U8glib.h>
#include <stdlib.h>

#define trigPin1 A0
#define echoPin1 A1

#define trigPin2 A2
#define echoPin2 A3

#define trigPin3 A4
#define echoPin3 A5

U8GLIB_PCD8544 u8g(8, 9, 11, 10, 12);  // CLK=8, DIN=9, CE=11, DC=10, RST=12

char tmp_string1[8];
char tmp_string2[8];
char tmp_string3[8];

int x;

int EN2 = 3;
int EN1 = 2;
int IN1 = 4;
int IN2 = 5;
int IN3 = 6;
int IN4 = 7;

int duration1, distance1;
int duration2, distance2;
int duration3, distance3;
 
void draw(void) {
 
 
  itoa(distance1, tmp_string1, 10);
  itoa(distance2, tmp_string2, 10);
  itoa(distance3, tmp_string3, 10);

 //u8g.setFont(u8g_font_fub30);
  //u8g.setFont(u8g_font_profont11);
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  //u8g.setFont(u8g_font_profont11);
 
  u8g.drawStr(0, 10, "Depan= ");
  u8g.drawStr(50, 10, tmp_string1);
 
  u8g.drawStr(0, 25, "Kanan= ");
  u8g.drawStr(50, 25, tmp_string2);

  u8g.drawStr(0, 40, "Kiri= "); 
  u8g.drawStr(50, 40, tmp_string3);
 
}


void setup(void) {
  Serial.begin (9600);
 
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);

  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);

  pinMode(trigPin3, OUTPUT);
  pinMode(echoPin3, INPUT);
 
  pinMode(EN1,OUTPUT);
  pinMode(EN2,OUTPUT);
 
  pinMode(IN1,OUTPUT);
  pinMode(IN2,OUTPUT);
  pinMode(IN3,OUTPUT);
  pinMode(IN4,OUTPUT);
 
  pinMode(13,INPUT);
 
}



void loop(void) {

   x = digitalRead(13);
  
 if(x == LOW){
  analogWrite(EN1, 0);
  analogWrite(EN2, 0);
 
 //KANAN
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);
 //KIRI
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);
 
   }
  
  
 if(x == HIGH){  
  analogWrite(EN1, 250);
  analogWrite(EN2, 250);
  delay(200);
  analogWrite(EN1, 0);
  analogWrite(EN2, 0);
  delay(100);
 }
 

  digitalWrite(trigPin1, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin1, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin1, LOW);
  duration1 = pulseIn(echoPin1, HIGH);
  distance1 = (duration1/2) / 29.1;



  digitalWrite(trigPin2, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin2, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin2, LOW);
  duration2 = pulseIn(echoPin2, HIGH);
  distance2 = (duration2/2) / 29.1;



  digitalWrite(trigPin3, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin3, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin3, LOW);
  duration3 = pulseIn(echoPin3, HIGH);
  distance3 = (duration3/2) / 29.1;


 
  if((distance1 > 10)&&(distance2 > 10)&&(distance3 > 10)&&(x == HIGH)){
 //MAJU
 //KANAN
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
 //KIRI
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW); 
  }
 
 
  if((distance1 < 10)&&(distance2 > 10)&&(distance3 > 10)&&(x == HIGH)){
 //MUNDUR
 //KANAN
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
 //KIRI
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH); 
  }
 
 if((distance1 < 10)&&(distance2 < 10)&&(distance3 < 10)&&(x == HIGH)){
 //MUNDUR
 //KANAN
  digitalWrite(IN1,HIGH);
  digitalWrite(IN2,LOW);
 //KIRI
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,HIGH); 
  }
 
 
  if((distance1 < 10)&&(distance2 < 10)&&(distance3 > 10)&&(x == HIGH)){
 //KIRI
 //KANAN
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,HIGH);
 //KIRI
  digitalWrite(IN3,LOW);
  digitalWrite(IN4,LOW);
  }
 
 if((distance1 < 10)&&(distance2 > 10)&&(distance3 < 10)&&(x == HIGH)){
 //KANAN
 //KANAN
  digitalWrite(IN1,LOW);
  digitalWrite(IN2,LOW);
 //KIRI
  digitalWrite(IN3,HIGH);
  digitalWrite(IN4,LOW);
  }
 
 
  u8g.firstPage(); 
  do {
    draw();
  } while( u8g.nextPage() );
 

  delay(100);


}






g. Program Arduino for Nodemcu esp8266

 #include <ESP8266WiFi.h>

const char* ssid = "EVERCOSS WIFI";
const char* password = "12345";

int ledPin = D0; // GPIO13
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);

  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");

  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");

}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }

  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }

  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();

  // Match the request

  int value = LOW;
  if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
    value = LOW;
  }

// Set ledPin according to the request
//digitalWrite(ledPin, value);

  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");

  client.print("Led pin is now: ");

  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");
  client.println("</html>");

  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");

}





 h. Hasil Tamplan Server Page






i. VIDEO HASILNYA











 

Mengakses 3-channel Sensor Jarak Ultrasonik SRF04 dengan Penampil LCD NOKIA 5110 / 3310 ARDUINO

Mengakses 3-channel Sensor Jarak Ultrasonik SRF04 dengan Penampil LCD NOKIA 5110 / 3310 ARDUINO


        Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara mengakses LCD NOKIA 5110 / 3310 menggunakan Arduino atau sejenisnya yang mana digunakan untuk menampilkan nilai tiga buah jarak atau 3-channel sensor jarak, sebenarnya jika diganti dengan sensor lain bisa juga, misalkan sensor gas atau sensor suhu, yang membahagiakan lagi coding / program ini bisa digunakan untuk OLED juga dengan perintah dan library yang sama, untuk lebih jelasnya berikut adalah skema dan programnya, untuk library bisa didownload disini.

DOWNLOAD LIBRARY




a. Arduino UNO





b. LCD NOKIA 5110 / 3310


Ket :
1. VCC = 3.3 volt
2. Pin BL diberi Resistor 220 ohm lalu ke 5v
3. Pin CLK, CE, DIN, DC, CE diberi Resistor 1 KOhm lalu ke pin Arduino  




c. Sensor Jarak SRF04 





d. Program Arduino IDE

#include <U8glib.h>
#include <stdlib.h>

#define trigPin1 A0
#define echoPin1 A1

#define trigPin2 A2
#define echoPin2 A3

#define trigPin3 A4
#define echoPin3 A5

U8GLIB_PCD8544 u8g(8, 9, 11, 10, 12);  // CLK=8, DIN=9, CE=11, DC=10, RST=12

char tmp_string1[8];
char tmp_string2[8];
char tmp_string3[8];

int duration1, distance1;
int duration2, distance2;
int duration3, distance3;
 
void draw(void) {
 
 
  itoa(distance1, tmp_string1, 10);
  itoa(distance2, tmp_string2, 10);
  itoa(distance3, tmp_string3, 10);

 //u8g.setFont(u8g_font_fub30);
  //u8g.setFont(u8g_font_profont11);
  u8g.setFont(u8g_font_unifont);
  //u8g.setFont(u8g_font_osb21);
  //u8g.setFont(u8g_font_profont11);
 
  u8g.drawStr(0, 10, "Depan= ");
  u8g.drawStr(50, 10, tmp_string1);
 
  u8g.drawStr(0, 25, "Kanan= ");
  u8g.drawStr(50, 25, tmp_string2);

  u8g.drawStr(0, 40, "Kiri= "); 
  u8g.drawStr(50, 40, tmp_string3);
 
}


void setup(void) {
  Serial.begin (9600);
 
  pinMode(trigPin1, OUTPUT);
  pinMode(echoPin1, INPUT);

  pinMode(trigPin2, OUTPUT);
  pinMode(echoPin2, INPUT);

  pinMode(trigPin3, OUTPUT);
  pinMode(echoPin3, INPUT);
 
 
}


void loop(void) {

  digitalWrite(trigPin1, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin1, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin1, LOW);
  duration1 = pulseIn(echoPin1, HIGH);
  distance1 = (duration1/2) / 29.1;

  digitalWrite(trigPin2, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin2, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin2, LOW);
  duration2 = pulseIn(echoPin2, HIGH);
  distance2 = (duration2/2) / 29.1;

  digitalWrite(trigPin3, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin3, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin3, LOW);
  duration3 = pulseIn(echoPin3, HIGH);
  distance3 = (duration3/2) / 29.1;


  u8g.firstPage(); 
  do {
    draw();
  } while( u8g.nextPage() );
 

  delay(100);


}





e. VIDEO HASILNYA