Translate

ARDUINO Alat Monitoring Kemiringan dataran dan Getaran (Gempa) Grafik delphi 7 ADXL335 (accelero) wireless hc-12

ARDUINO Alat Monitoring Kemiringan dataran dan Getaran (Gempa) Grafik delphi 7 ADXL335 (accelero) wireless HC-12


              Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat untuk monitoring kemiringan dataran dan getaran atau gempa, memang tujuan dari alat ini yaitu monitoring gempa dan tanah longsor dengan pengiriman data menggunakan wireless modul HC-12 yang dapat bertukar data dengan jarak maksimal 1 km, alat ini menggunakan sensor ADXL335 dan shake sensor grove. untuk receiver menggunakan HC-12 dan PL232 atau konverter serial to USB. untuk lebih jelasnya berikut adalah skema dan programnya. 




a. Arduino Uno




b. Sensor Kemiringan accelerometer ADXL335




c. Sensor Shake atau Getaran




d. Modul Wireless HC-12






e. Program Arduino IDE

#include<Wire.h>

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

}

void loop() {

  int x = analogRead(A0);
//  int x = analogRead(A1);
//  int y = analogRead(A2);
  int getar = analogRead(A4);
    
  Serial.print(x),Serial.println('a'); 
  Serial.print(getar),Serial.println('b');  
  delay(200);
    
}





f. Program Interface Delphi 7

   Visit here:  LINK PROGRAM





g. VIDEO HASILNYA









SMART TRASH BIN ARDUINO (Tempat Sampah Pintar Buka Otomatis) Sensor PIR dan HC-SRF04

SMART TRASH BIN ARDUINO (Tempat Sampah Pintar Buka Otomatis) Sensor PIR dan HC-SRF04


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang bisa digunakan untuk membantu orang untuk membuang sampah, jadi alat ini adalah sebuah tong sampah atau tempat sampah yang bisa membuka secara otomatis ketika ada orang yang lewat, jadi orang yang akan membuang sampah tidak perlu repot untuk membukanya. alat ini menggunakan sensor pir dan HC-SRF04 sebagai kendali atap tong sampahnya, jika penuh sampahnya maka akan membunyikan buzzer. alat ini juga dilengkapi sensor DHT11 yang akan memonitor suhu dan kelembaban tong sampahnya. untuk lebih jelasnya berikut adalah skema dan programnya.  




a. Arduino Uno




b. Sensor PIR




c. Sensor Jarak HC-SRF04




d. LCD + I2C




e. Sensor Suhu dan Kelembaban DHT11







f. Program Arduino IDE

#include <Servo.h>
#include <Wire.h>  // i2C Conection Library
#include "DHT.h"
#include <LiquidCrystal_I2C.h>  //i2C LCD Library
LiquidCrystal_I2C lcd(0x3F, 16, 2); //library i2c lcd

#define DHTPIN 2    // what digital pin we're connected to
#define DHTTYPE DHT11   // DHT 11

DHT dht(DHTPIN, DHTTYPE);

#define trigPin 4
#define echoPin 3

Servo myservo; 
long duration, distance;
int dataadc;
int buzzer = 10;

void setup() {
  dht.begin();
  myservo.attach(9);
  lcd.begin(); //set lcd i2c
  lcd.noCursor(); //biar gak ada cursor di lcd
  lcd.clear(); //clear lcd
  myservo.write(65); //menutup tutup tempat sampah
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzer,OUTPUT);
}


void loop() {

 float h = dht.readHumidity();
 float t = dht.readTemperature();
 float f = dht.readTemperature(true);

 int hum = h;
 int suhu = t;

  if (isnan(h) || isnan(t) || isnan(f)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }

  float hif = dht.computeHeatIndex(f, h);
  float hic = dht.computeHeatIndex(t, h, false);

  digitalWrite(trigPin, LOW);  // Added this line
  delayMicroseconds(2); // Added this line
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10); // Added this line
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distance = (duration/2) / 29.1;
  
  dataadc = analogRead(A0);

lcd.setCursor(0,0); 
lcd.print(distance);
lcd.print(" ");
lcd.print(dataadc);
lcd.print("       ");

lcd.setCursor(0,1); 
lcd.print("H=");
lcd.print(hum);
lcd.print(" / S=");
lcd.print(suhu);


if(dataadc > 100){
myservo.write(150); //buka
delay(5000);  
myservo.write(65); //tutup
}

if(distance < 10)
{

lcd.setCursor(9,0); 
lcd.print(" PENUH       ");
  
digitalWrite(buzzer,HIGH);
}

if(distance > 10)
{

lcd.setCursor(9,0); 
lcd.print(" KOSONG     ");
  
digitalWrite(buzzer,LOW);
}

delay(200);

}






g. VIDEO HASILNYA










Arduino Sensor jarak (Distance Sensor) MB1013 HRLV-MaxSonar-EZ1A

Arduino Sensor jarak (Distance Sensor) MB1013 HRLV-MaxSonar-EZ1A


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat menggunakan sensor jarak MB1013 HRLV-MaxSonar-EZ1A dengan menggunakan Arduino sebagai kontrollernya. alat ini sangat bagus sekali dipakai untuk mengukur jarak dengan tingkat ketelitian tinggi hingga milimeter. yang perlu diketahui dari sensor jarak ini yaitu sensor ini bisa diakses menggunakan 2 cara yaitu analog dan digital. untuk lebih jelasnya berikut adalah skema dan programnya.



a.Arduino Uno




b. Sensor Jarak MB1013 HRLV-MaxSonar-EZ1A




c. LCD 16x2 I2C






d. Program Arduino IDE ( Analog )

#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2);

const int anPin1 = 0;
long distance1;

void setup(){
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
}

void loop(){
  
  distance1 = analogRead(anPin1)*5;
  
  lcd.setCursor(0,0);
  lcd.print("jarak= ");
  lcd.print(distance1);
  lcd.print(" mm       ");
  delay(200);
  
}




e. Program Arduino IDE ( Digital )

/*
Test code for the Arduino controllers
Written by Tom Bonar for testing
Sensors being used for this code are the HR-MaxSonar from MaxBotix
Used to Read the PW input.
*/
const int pwPin1 = 3; //this may be different depending on the Arduino being used, and the other PW pins being used.
long sensor1, cm, inches;

void setup () {
  Serial.begin(9600);
  pinMode(pwPin1, INPUT);
}

void read_sensor(){
  sensor1 = pulseIn(pwPin1, HIGH);
  cm = sensor1/10 // converts the range to cm
  inches = cm/2.54 // converts the range to inches
}

//This section of code is if you want to print the range readings to your computer too remove this from the code put /* before the code section and */ after the code
void printall(){         
  Serial.print("S1");
  Serial.print(" ");
  Serial.print(sensor1); //This can be made to match the measurement type you wish to have.
  Serial.println("mm"); //Typically will be the range reading increments.
}

void loop () {
  read_sensor();
  printall();
  delay(100); //make this match the refresh rate of the sensor
}





f. VIDEO HASILNYA











Membuat Alat Pelacak Posisi dan Kirim Sms dan Monitor Lokasi via sms ARDUINO

Membuat Alat Pelacak Posisi dan Kirim Sms dan Monitor Lokasi via sms ARDUINO


            Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat digunakan untuk melacak atau mendeteksi posisi suatu benda atau monitoring posisi suatu benda via sms, jadi ketika kita kirim sms ke alat berupa text ''Monitor'' maka akan dibalas dengan posisi alat yang berupa koordinat longitude dan latitude. untuk lebih jelasnya berikut adalah skema dan programnya. 



a. Arduino Uno




b. LCD 16x2 + I2C




c. Modul GPS Ublox Neo 6Mv2




d. Modul SMS SIM800L





e. Modul Buck Converter / Step down






f. Program Arduino Uno

//vcc sim800L = 4v
//vcc modul GPS = 3.3v

#include <Wire.h>  
#include <LiquidCrystal_I2C.h>  
#include "SIM900.h"
#include <SoftwareSerial.h>
#include <TinyGPS.h>

#include "sms.h"
SMSGSM sms;

SoftwareSerial mySerial(2, 3);   //modul sms sim800l
TinyGPS gps;

LiquidCrystal_I2C lcd(0x3F, 16, 2);

void gpsdump(TinyGPS &gps);
void printFloat(double f, int digits = 2);

char string[160];
int numdata;
boolean started=false;
char smsbuffer[160];
char n[20];
char strsms[5];
char latstr[20];
char lonstr[20];
char latlonstr[20];

  long lat, lon;
  float flat, flon;
  unsigned long age, date, time, chars;
  int year;
  byte month, day, hour, minute, second, hundredths;
  unsigned short sentences, failed;


void setup()  
{
     Serial.begin(9600);
     
     Serial.println("GSM Shield testing.");

     if (gsm.begin(2400)) {
          Serial.println("\nstatus=READY");
          started=true;
     } else Serial.println("\nstatus=IDLE");

     if(started) {
          if (sms.SendSMS("08523345560", "Alat Ready"))
          Serial.println("\nSMS sent OK");
     }
   
   
   lcd.begin();
   lcd.clear();
   lcd.noCursor();
   
  // Oploen serial communications and wait for port to open:
  Serial.begin(9600);
  // set the data rate for the SoftwareSerial port
  mySerial.begin(2400);
  delay(1000);
  
  Serial.println("uBlox Neo 6M");
  Serial.print("Testing TinyGPS library v. "); Serial.println(TinyGPS::library_version());
  Serial.println("by Mikal Hart");
  Serial.println();
  Serial.print("Sizeof(gpsobject) = "); 
  Serial.println(sizeof(TinyGPS));
  Serial.println(); 

}

void loop() // run over and over
{
  bool newdata = false;
  unsigned long start = millis();
  // Every 5 seconds we print an update
  while (millis() - start < 5000) 
  {
    if (Serial.available()) 
    
    {
      char c = Serial.read();
      //Serial.print(c);  // uncomment to see raw GPS data
      if (gps.encode(c)) 
      {
        newdata = true;
        break;  // uncomment to print new data immediately!
      }
    }
  }
  
  if (newdata) 
  {
    //Serial.println("Acquired Data");
    //Serial.println("-------------");
    gpsdump(gps);
    //Serial.println("-------------");
    //Serial.println();
  }
  
  
  dtostrf(flat,10,6,latstr);
  dtostrf(flon,10,6,lonstr);
  sprintf(string,"LAT= %s, LONG= %s", latstr, lonstr);

 if(gsm.begin(2400)){
  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 gpsdump(TinyGPS &gps)
{

  gps.get_position(&lat, &lon, &age);
  //Serial.print("Lat/Long(10^-5 deg): "); Serial.print(lat); Serial.print(", "); Serial.print(lon); 
  //Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");
  
  gps.f_get_position(&flat, &flon, &age);
  //Serial.print("Lat/Long(float): "); printFloat(flat, 5); Serial.print(", "); printFloat(flon, 5);
  //Serial.print(" Fix age: "); Serial.print(age); Serial.println("ms.");

  lcd.setCursor(0,0);
  lcd.print("LAT:");
  lcd.print(flat, 5);
   
  lcd.setCursor(0,1);
  lcd.print("LONG:");
  lcd.print(flon, 5);
  
}

void printFloat(double number, int digits)
{
  // Handle negative numbers
  if (number < 0.0) 
  {
     //Serial.print('-');
     number = -number;
  }

  // Round correctly so that print(1.999, 2) prints as "2.00"
  double rounding = 0.5;
  for (uint8_t i=0; i<digits; ++i)
    rounding /= 10.0;
  
  number += rounding;

  // Extract the integer part of the number and print it
  unsigned long int_part = (unsigned long)number;
  double remainder = number - (double)int_part;
  //Serial.print(int_part);

  // Print the decimal point, but only if there are digits beyond
  if (digits > 0)
    //Serial.print("."); 

  // Extract digits from the remainder one at a time
  while (digits-- > 0) 
  {
    remainder *= 10.0;
    int toPrint = int(remainder);
    //Serial.print(toPrint);
    remainder -= toPrint;
  }
}



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





g. VIDEO HASILNYA











Membuat Watch Winder automatics ( Pemutar Jam tangan otomatis) Arduino - ATMega32 - Bascom avr (DIY)

Membuat Watch Winder automatics ( Pemutar Jam tangan otomatis) Arduino - ATMega32 - bascom avr (DIY)


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat menggunakan mikrokontroller dan motor stepper sebagai aktuatornya yang difungsikan sebagai pemutar jam tangan agar jam tetap hidup akibat adanya getaran atau gerakan pada jam tersebut, untuk membuat alat ini sangatlah mudah dan bisa dilakukan dimana saja asalkan komponen ada. untuk lebih jelasnya berikut adalah skema dan programnya.




a. Minimum System




b. Motor Stepper + Driver





c. Program Bascom AVR

$regfile = "m32def.dat"
$crystal = 8000000

Ddrb = &B11111111

Do

Portb = &B00000001
Waitms 5
Portb = &B00000010
Waitms 5
Portb = &B00000100
Waitms 5
Portb = &B00001000
Waitms 5

Loop