Anda di halaman 1dari 18

Membuat Penyiram Tanaman Otomatis

Untuk seseorang yang suka berkebun tentunya menyiram tanaman adalah kegiatan yang wajib dan rutin harus
dilakukan agar tanaman yang dipelihara dapat tumbuh dengan baik.
Kalau saya sendiri biasanya setiap pagi dan sore saya menyiram tanaman dirumah seperti anggrek, pohon pohon
hias, dan pohon pakis yang menempel di tembok rumah saya.
Anggrek angrek yang saya gantung dengan pot tentunya harus mendapat perhatian lebih karena tanah pada pot
terbut cepat sekali kering karena tidak menyatu dengan tanah di halaman (bumi)
Kadang juga kalau di perkubunan saya lihat penjaga kebun harus selalu rutin mengairi kebun nya agar tanaman
yang dipelihara tidak mati.
Nah sekarang saya mau ngasi tau gimana caranya membuat alat yang mampu bertugas untuk menyiram tanaman,
saat kondisi tanah pada tanaman tersebut sudah hampir kering. Ya, ga secara langsung sih nyiram tanaman nya.
tapi alat ini akan menghidupkan pompa dulu, yang nantinya pompa air ini mengalirkan air ke tanaman yang
ditentukan. Kalau kondisi tanah sudah cukup basah maka dengan otomatis juga pompa nya nanti akan mati
dengan sendirinya.
Alat dan Bahan
Untuk membuat project ini beberapa komponen yang diperlukan adalah :
1. Board Arduino (klik)
2. Sensor Soil Moisture
3. Module Relay
4. Kabel Jumper

Gambar Rangkaian
Untuk menghubungkan sensor kelembaban tanah atau soil moisture sensor kalian bisa mengikuti gambar berikut
sebagai referensi.

Sedangkan untuk pin yang dihubungkan ke module relay bisa mengikuti pada pin yang dituliskan pada coding
arduino.
Untuk sensor kelembaban tanah, disarankan pemasangan sesuai dengan batas tanam sensor untuk mencegah
terjadinya pembacaan nilai sensor yang tidak sesuai.
Coding Arduino
Untuk kalian yang mengikuti tutorial pada youtube, kalian bisa menggunakan coding yang ada pada jendela
berikut.
int pompa=2;
void setup(){
Serial.begin(9600);
pinMode(pompa,OUTPUT);
}

void loop(){
int sensorValue = analogRead(A0);
Serial.println(sensorValue);
if(sensorValue>350) digitalWrite(pompa,HIGH);
else if(sensorValue<300) digitalWrite(pompa,LOW);
delay(100);
}

Tutorial Video https://www.youtube.com/watch?v=gBzMF7A-kL8


Project Smart Home Android Arduino
Kalau membahas tentang Project Smart Home Android Arduino, sebenarnya alat yang akan saya bahas disini
sudah dibuat beberapa bulan lalu.
Dan kalau berbicara tentang project smart home sebenarnya juga dulu pernah bikin hal serupa, hanya saja masih
menggunakan perintah sms untuk dapat mengaktifkan dan memantau rumah dalam sistem tersebut.
Barulah beberapa hari belakangan ini saya sempat lagi membuat sebuah aplikasi android yang saya tujukan untuk
hardware smart home tersebut.
Aplikasi smart home android ini saya buat menggunakan software android studio, yang memungkinkan kita
membuat interface android dengan sangat mudah karena sudah tersedia bebagai macam widget pendukung seperti
tombol, kolom text, label, image place bahkan kolom ilkan bisa kita inputkan disana.
Kalau project yang terdahulu kita bisa menyalakan dan mematikan perangkat listrik melalui sms, mengetahui
suhu ruangan melalui sms, sekarang sudah dilakukan pengembangan.
Project smart home yang kita buat sekarang ini sudah ditambah fungsi sistem keamanan atau yang keren nya kita
sebut dengan security system.
Terdapat dua buah sensor pintu, atau magnetic switch yang mampu mendeteksi tidak hanya pintu, jendela yang
terbuka atau tertutup bisa dideteksi oleh kedua sensor ini. Ditambah juga dengan sebuah sensor gerak yang akan
mendeteksi jika ada pergerakan dalam suatu ruangan yang ingin di pantau, bahkan pergerakan kucing sekalipun.
Sensor suhu yang dipasang sudah diganti dengan sensor suhu digital yaitu DS18B20 yang memiliki ketelitian
lebih tinggi daripada sensor suhu analog sebelum nya.
Sebelum aplikasi smart home ini, saya juga pernah membuat beberapa project atau aplikasi sederhana
menggunakan android studio. Diantaranya seperti dibawah ini :
[appbox googleplay com.arduino.led]
[appbox googleplay com.duwiarsana.smarthome]
Na kalau untuk smart home nya, tampilan aplikasi android nya seperti dibawah ini nih. Sangat sederhana sekali
tapi kamu bisa gunakan aplikasi ini untuk project arduino kamu.

Nah kalau gambar alat nya sama saja dengan alat yang saya pakai dalam project saklar sms 4ch. hanya
ditambahkan bluetooth saja dan coding nya diganti dengan coding smart home. seperti gambar berikut ini.

Alamat beli : https://duwiarsana.com/produk/saklar-


sms-4ch/

Jika kalian tertarik dengan project saklar sms 4ch kalian bisa klik gambar produk diatas ini.
Nah untuk skematik project ini juga sudah saya share pada artikel sebelum nya, sedangkan untuk coding smart
home sekarang juga akan saya bagikan secara gratis.
Coding nya sangat lah sederhana. hanya diperlukan komunikasi serial saja antara mikrokontroller, menuju
bluetooth yang akan diteruskan ke android.
Format pengiriman data suhu, sensor pintu dan sensor pir sebagai berikut :
Kalian harus mengirimkan data #suhu+sensor pintu 1+sensor pintu2+sensor pir+
Nah untuk data suhu data yang dikirimkan bisa berupa bilangan bulat ataupun desimal, sedangkan untuk sensor
lainnya data hanyalah angka 1 dan 0, dimana angka 1 artinya menyala atau terdeteksi, sedangkan angka 0 adalah
sebaliknya.
Contoh pengiriman data : #27.4+1+0+1+
Data diatas artinya suhu yang terdeteksi adalah 27.4 C dan sensor pintu 1 mendeteksi atau terbuka, sedangkan
sensor pintu 2 tertutup dan terakhir adalah sensor pergerakan atau pir mendeteksi adanya pergerakan.
Sedangkan untuk format penerimaan data dari aplikasi yang dibuat hanyalah berupa abjad saja, misal :
karakter a untuk menyalakan relay 1, dan b untuk mematikan relay 1. begitu juga karakter c dan d untuk
menyalakan dan mematikan relay selanjutnya.
Jadi kalau kalian ingin membuat sendiri rangkaian nya kalian bisa tetap memakai aplikasi ini dengan menerapkan
Silahkan download coding arduino untuk project smart home ini pada link yang sudah saya sediakan dibawah
ini.
#include <PString.h>
#include <OneWire.h>

char buffer[30];
OneWire ds(18);
int relay1=2;
int relay2=3;
int relay3=4;
int relay4=5;
int sr1=14;
int sr2=15;
int pir=16;
boolean s1,s2,s3,ls3=false;

void setup() {
delay(3000);
pinMode(sr1,INPUT_PULLUP);
pinMode(sr2,INPUT_PULLUP);
pinMode(pir,INPUT);
pinMode(relay1,OUTPUT);
pinMode(relay2,OUTPUT);
pinMode(relay3,OUTPUT);
pinMode(relay4,OUTPUT);
Serial.begin(9600);
digitalWrite(relay1,HIGH);
digitalWrite(relay2,HIGH);
digitalWrite(relay3,HIGH);
digitalWrite(relay4,HIGH);
}

void loop() {
PString str(buffer, sizeof(buffer));
str.begin();
float temperature = getTemp();
str.print("#");
str.print(temperature,1);
str.print("+");

baca();

str.print(s1);
str.print("+");
str.print(s2);
str.print("+");
str.print(s3);
str.print("+");
Serial.println(str);

if(Serial.available()>0){
char in=Serial.read();
if(in=='a'){
digitalWrite(relay1,LOW);
}
if(in=='b'){
digitalWrite(relay1,HIGH);
}
if(in=='c'){
digitalWrite(relay2,LOW);
}
if(in=='d'){
digitalWrite(relay2,HIGH);
}
if(in=='e'){
digitalWrite(relay3,LOW);
}
if(in=='f'){
digitalWrite(relay3,HIGH);
}
if(in=='g'){
digitalWrite(relay4,LOW);
}
if(in=='h'){
digitalWrite(relay4,HIGH);
}
}
delay(100);
}

void baca(){
s1=digitalRead(sr1);
s2=digitalRead(sr2);
s3=digitalRead(pir);
}

float getTemp(){

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {

ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {


return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {


return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1);
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);

for (int i = 0; i < 9; i++) {


data[i] = ds.read();
}

ds.reset_search();
byte MSB = data[1];
byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB);


float TemperatureSum = tempRead / 16;

return TemperatureSum;

Untuk aplikasi android nya silahkan di download pada link berikut ini yang akan mengarahkan kalian ke
playstore.
[appbox googleplay com.duwiarsana.smarthome]

Video tutorial : https://www.youtube.com/watch?v=nlJP5hkQHeo


Rangkaian Jam Digital Led Matrix
Buat kalian yang seneng banget mainan atau ngoprek ngoprek rangkaian arduino, alat yang akan saya bahas di
artikel ini mungkin cocok banget buat kamu coba.

Saya akan membagikan project jam digital LED Matrix thermometer kepada kalian para pembaca
duwiarsana.com, tapi sebelum itu saya akan terangkan dulu seperti apa jam digital yang akan saya bahas disini.

Jam digital LED matrix ini nantinya akan menggunakan display LED matrix dengan tipe P10. Dimana display
dengan tipe ini sudah sangat lumrah dijual di toko sparepart online. Data yang akan ditampilkan akan menjadi
beberapa model, yaitu ; Jam digital besar, Jam digital beserta kalender, Thermometer, dan juga jam digital yang
dilengkapi dengan hari.

Rangkaian ini sudah dilengkapi dengan IC RTC sehingga data jam tidak akan hilang saat terjadinya pemadaman
listrik, atau saat rangkaian itu tidak mendapatkan sumber tegangan.

Untuk mikrokontroler nya saya menggunakan atmega328 yang dimana ini sama dengan ic yang dipakai pada
arduino, sehingga kalian juga bisa membuat jam digital ini dengan menggunakan arduino biasa seperti yang
pernah say lakukan di video tersebut.

Skematik
Layout PCB

Layout PCB Atas

Layout PCB Bawah

Komponen yang Dipakai


Untuk komponen apa saja yang digunakan dalam project ini memang terlihat banyak sekali, tapi sebenarnya
komponen yang dipakai pada PCB yang di design dalam ukuran kecil ini memiliki komponen bahkan lebih sedikit
dari board arduino itu sendiri. ditambah dengan sudah adanya modul RTC pada design ini.

Komponen tersebut terdiri dari resistor yang kesemua nya bernilai 1k, kapasitor 100nF kecuali pada kristal 16Mhz
menggunakan kristal 22pF. Untuk RTC nya menggunakan IC DS1307 dan kristal 32.768KHz. Lalu konektor
battery, tactile switch, elco 10uF, sensor suhu DS18B20, header dan terminal screw.

Untuk IC mikrokontroler atmega328 nya sendiri harus kita program dulu dengan menggunakan USBASP
sebelum kita menyolder nya ke papan PCB.
Coding Arduino
Sebelum kalian menerapkan coding arduino ini, kalian harus melengkapi dulu library yang diperlukan. Seperti
DMD, font nya, wire dan RTClib. Semua itu bisa kalian download pada artikel ini.

#include
#include
#include
#include
#include "SystemFont5x7.h"
#include "Jam9.h"
#include "Arial14.h"
#include "Arial_black_16.h"
#include "RTClib.h"
#include #include
#include

#define DISPLAYS_ACROSS 1
#define DISPLAYS_DOWN 1
DMD dmd(DISPLAYS_ACROSS, DISPLAYS_DOWN);
OneWire ds(14);
RTC_DS1307 RTC;
char buffer[10];
char buffer2[8];
int key=3;
int hours;
int thn,bln,hr;
int dayOfWeek, dayOfMonth;
int hh;
int mm,z;
int sementara;
int ss;
int hitung=0;
int seconds;
int minutes;

int day;
int date;
int xx;
int month;
int year;
int tb1=0;
int tb2=1;
int tb3=2;
PString str(buffer, sizeof(buffer));
PString str2(buffer2, sizeof(buffer2));
void ScanDMD()
{
dmd.scanDisplayBySPI();
}
boolean a,b,c;
void setup()
{
delay(1000);
//Serial.begin(9600);
pinMode(key,INPUT_PULLUP);
pinMode(tb1,INPUT_PULLUP);
pinMode(tb2,INPUT_PULLUP);
pinMode(tb3,INPUT_PULLUP);
Timer1.initialize( 1500 );
Timer1.pwm(PIN_DMD_nOE, 150);
Timer1.attachInterrupt( ScanDMD );
dmd.clearScreen( true );
Wire.begin();
RTC.begin();
if (! RTC.isrunning()) {

RTC.adjust(DateTime(__DATE__, __TIME__));
}

Wire.beginTransmission(0X68);
Wire.write(0x07);
Wire.write(0x10);
Wire.endTransmission();
float temperature = getTemp();
}
void baca(){

a=digitalRead(tb1);
b=digitalRead(tb2);
c=digitalRead(tb3);
}
void loop(){
float temperature = getTemp();
//dmd.clearScreen( true );
awal:
DateTime now = RTC.now();
//dayOfWeek=now.dayOfTheWeek();
str.begin();
ambiltanggal();
hours = now.hour();
mm = now.minute();
ss = now.second();
baca();
// sementara=mm;
if(sementara!=mm){
dmd.clearScreen( true );
dmd.selectFont(Arial_Black_16);
int u=0;

while(u<15){
//dayOfWeek=now.dayOfTheWeek();
//str.begin();
ambiltanggal();
hours = now.hour();
mm = now.minute();
ss = now.second();
str.begin();
if(hours<10){str.print("0");}
str.print (hours);
dmd.drawString(0,0,str,str.length(),GRAPHICS_NORMAL );
str.begin();
str.print(":");
dmd.drawString(14,0,str,str.length(),GRAPHICS_OR );
str.begin();
if(mm<10){str.print("0");}
str.print (mm);
dmd.drawString(19,0,str,str.length(),GRAPHICS_NORMAL );
delay(500);
str.begin();
if(hours<10){str.print("0");}
str.print (hours);
dmd.drawString(0,0,str,str.length(),GRAPHICS_NORMAL );
str.begin();
str.print(":");
dmd.drawString(14,0,str,str.length(),GRAPHICS_NOR );
str.begin();
if(mm<10){str.print("0");}
str.print (mm);
dmd.drawString(19,0,str,str.length(),GRAPHICS_NORMAL );
delay(500);
u++;
}
u=0;
str.begin();
dmd.clearScreen( true );
while(u<4){
ambiltanggal();
hours = now.hour();
mm = now.minute();
ss = now.second();
str.begin();
if(hours<10){str.print("0");}
str.print(hours);
dmd.selectFont(Jam_9);
dmd.drawString(3,-7,str,str.length(),GRAPHICS_NORMAL );
str.begin();
if(mm<10){str.print("0");}
str.print(mm);
dmd.drawString(18,-7,str,str.length(),GRAPHICS_NORMAL );
dmd.drawString(15,-7,":",1,GRAPHICS_OR );
delay(500);
str.begin();
if(hours<10){str.print("0");}
str.print(hours);
dmd.drawString(3,-7,str,str.length(),GRAPHICS_NORMAL );
dmd.drawString(15,-7,":",1,GRAPHICS_NOR );
str.begin();
if(mm<10){str.print("0");}
str.print(mm);
dmd.drawString(18,-7,str,str.length(),GRAPHICS_NORMAL );
delay(500);
dmd.selectFont(Arial_14);
str.begin();
//str.print(day);
ambiltanggal();
if(date<10){str.print("0");}
str.print(date);
str.print("-");
if(month<10){str.print("0");}
str.print(month);
str.print("-");
str.print(year);
dmd.drawString(1,10,str,str.length(),GRAPHICS_NORMAL );
u++;

u=0;
str.begin();
dmd.clearScreen( true );

while(u<4){
str.begin();
str.print(temperature,1);
dmd.selectFont(Jam_9);
dmd.drawString(6,-7,str,str.length(),GRAPHICS_NORMAL );
dmd.selectFont(Arial_14);
str.begin();
str.print("CELSIUS");
dmd.drawString(0,10,str,str.length(),GRAPHICS_NORMAL );
delay(1000);
u++;
}
// dmd.clearScreen( true );
// dmd.selectFont(Arial_Black_16);
// dmd.drawMarquee("Om Swastyastu..",15,(32*DISPLAYS_ACROSS)-1,0);
// long start=millis();
// long timer=start;
// boolean ret=false;
// while(!ret){
// if ((timer+30) < millis()) {
// ret=dmd.stepMarquee(-1,0);
// timer=millis();
// }
// }

str.begin();
dmd.clearScreen( true );
sementara=mm;
}
if(!a){
dmd.clearScreen( true );
delay(1000);
baca();
while(a){
dmd.selectFont(Jam_9);
baca();
str2.begin();
if(hours<10){str2.print("0");} str2.print(hours); dmd.drawString(11,-
7,str2,str2.length(),GRAPHICS_NORMAL ); str2.begin(); dmd.selectFont(Arial_14);
str2.print("JAM"); dmd.drawString(8,10,str2,str2.length(),GRAPHICS_NORMAL ); //elay(00);
if(!b){ dmd.clearScreen( true ); hours+=1; if(hours>23){hours=0;}
delay(200);
}
if(!c){
dmd.clearScreen( true );
hours-=1;
if(hours<0){hours=23;}
delay(200);
}
if(!a){
dmd.clearScreen( true );
delay(1000);
baca();
while(a){
dmd.selectFont(Jam_9);
baca();
str2.begin();
if(mm<10){str2.print("0");} str2.print(mm); dmd.drawString(11,-
7,str2,str2.length(),GRAPHICS_NORMAL ); str2.begin(); dmd.selectFont(Arial_14);
str2.print("MENIT"); dmd.drawString(4,10,str2,str2.length(),GRAPHICS_NORMAL ); if(!b){
dmd.clearScreen( true ); mm+=1; if(mm>59){mm=0;}
delay(200);
}
if(!c){
dmd.clearScreen( true );
mm-=1;
if(mm<0){mm=59;} delay(200); } if(!a){ dmd.clearScreen( true ); delay(1000); baca();
ambiltanggal(); while(a){ dmd.selectFont(Jam_9); baca(); str2.begin(); str2.print("20");
str2.print(year); dmd.drawString(5,-7,str2,str2.length(),GRAPHICS_NORMAL ); str2.begin();
dmd.selectFont(Arial_14); str2.print("TAHUN");
dmd.drawString(3,10,str2,str2.length(),GRAPHICS_NORMAL ); if(!b){ dmd.clearScreen( true
); year+=1; if(year>99){year=16;}
delay(200);

}
if(!c){
dmd.clearScreen( true );
year-=1;
if(year<2016){year=2099;}
delay(200);

if(!a){
dmd.clearScreen( true );
delay(1000);
baca();
while(a){
dmd.selectFont(Jam_9);
baca();
str2.begin();
if(month<10){str2.print("0");} str2.print(month); dmd.drawString(11,-
7,str2,str2.length(),GRAPHICS_NORMAL ); str2.begin(); dmd.selectFont(Arial_14);
str2.print("BULAN"); dmd.drawString(3,10,str2,str2.length(),GRAPHICS_NORMAL ); if(!b){
dmd.clearScreen( true ); month+=1; if(month>12){month=1;}
delay(200);
}
if(!c){
dmd.clearScreen( true );
month-=1;
if(month<1){month=12;}
delay(200);
}
if(!a){
dmd.clearScreen( true );
delay(1000);
baca();
ambiltanggal();

suit();
while(a){
//ambiltanggal();
dmd.selectFont(Jam_9);
baca();
str2.begin();
if(date<10){str2.print("0");} str2.print(date); dmd.drawString(11,-
7,str2,str2.length(),GRAPHICS_NORMAL ); str2.begin(); dmd.selectFont(Arial_14);
str2.print("TGL"); dmd.drawString(9,10,str2,str2.length(),GRAPHICS_NORMAL ); if(!b){
dmd.clearScreen( true ); date+=1; if(date>xx){date=1;}
delay(200);
}
if(!c){
dmd.clearScreen( true );
date-=1;
if(date<1){date=xx;} delay(200); } if(!a){ dmd.clearScreen( true ); delay(1000); baca();
while(a){ baca(); str.begin(); dmd.selectFont(Arial_14); if(z==7){ str.print("MINGGU");
dmd.drawString(1,10,str,str.length(),GRAPHICS_NORMAL ); } if(z==1){ str.print("SENIN");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL ); } if(z==2){ str.print("SELASA");
dmd.drawString(1,10,str,str.length(),GRAPHICS_NORMAL ); } if(z==3){ str.print("RABU");
dmd.drawString(6,10,str,str.length(),GRAPHICS_NORMAL ); } if(z==4){ str.print("KAMIS");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL ); } if(z==5){ str.print("JUMAT");
dmd.drawString(3,10,str,str.length(),GRAPHICS_NORMAL ); } if(z==6){ str.print("SABTU");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL ); } if(!b){ dmd.clearScreen( true
); z+=1; if(z>7){z=1;}
delay(200);
day=z;
}
if(!c){
dmd.clearScreen( true );
z-=1;
if(z<1){z=7;}
delay(200);
day=z;
}

if(!a){
dmd.clearScreen( true );
delay(1000);
goto awal;

// aturtanggal();

//updateRTC();
//day=z;
aturtanggal();

//updateRTC();
}

updateRTC();
}

updateRTC();
}

updateRTC();
}

updateRTC();
}
}

updateRTC();
}
}
if(hours<10){str.print("0");}
str.print(hours);
dmd.selectFont(Jam_9);
dmd.drawString(3,-7,str,str.length(),GRAPHICS_NORMAL );
str.begin();
if(mm<10){str.print("0");}
str.print(mm);
dmd.drawString(18,-7,str,str.length(),GRAPHICS_NORMAL );
dmd.drawString(15,-7,":",1,GRAPHICS_OR );
delay(500);

str.begin();
if(hours<10){str.print("0");}
str.print(hours);
dmd.drawString(3,-7,str,str.length(),GRAPHICS_NORMAL );
dmd.drawString(15,-7,":",1,GRAPHICS_NOR );
str.begin();
if(mm<10){str.print("0");}
str.print(mm);
dmd.drawString(18,-7,str,str.length(),GRAPHICS_NORMAL );
dmd.selectFont(Arial_14);
str.begin();
//str.print(day);
ambiltanggal();
//dayOfWeek=now.dayOfTheWeek();
z=day;
if(day==7){
str.print("MINGGU");
dmd.drawString(1,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==1){
str.print("SENIN");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==2){
str.print("SELASA");
dmd.drawString(1,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==3){
str.print("RABU");
dmd.drawString(6,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==4){
str.print("KAMIS");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==5){
str.print("JUMAT");
dmd.drawString(3,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==6){
str.print("SABTU");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL );
}
delay(500);
dmd.selectFont(Arial_14);
str.begin();
//str.print(day);
ambiltanggal();

z=day;
if(day==7){
str.print("MINGGU");
dmd.drawString(1,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==1){
str.print("SENIN");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==2){
str.print("SELASA");
dmd.drawString(1,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==3){
str.print("RABU");
dmd.drawString(6,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==4){
str.print("KAMIS");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==5){
str.print("JUMAT");
dmd.drawString(3,10,str,str.length(),GRAPHICS_NORMAL );
}
if(day==6){
str.print("SABTU");
dmd.drawString(4,10,str,str.length(),GRAPHICS_NORMAL );
}

}
void ambiltanggal()
{
delay(100);
Wire.beginTransmission(104);
Wire.write(3);
Wire.endTransmission();
Wire.requestFrom(104,4);
day = bcdToDec(Wire.read());
date = bcdToDec(Wire.read());
month = bcdToDec(Wire.read());
year = bcdToDec(Wire.read());
//Serial.println(year);
Wire.endTransmission();
}

byte decToBcd(byte val)


{
return ( (val/10*16) + (val%10) );
}

byte bcdToDec(byte val)


{
return ( (val/16*10) + (val%16) );
}

void updateRTC() {
delay(100);
Wire.beginTransmission(104);
Wire.write(0);
Wire.write(decToBcd(ss));
Wire.write(decToBcd(mm));
Wire.write(decToBcd(hours));
Wire.write(decToBcd(z));
Wire.write(decToBcd(date));
Wire.write(decToBcd(month));
// year=year-1000;
Wire.write(decToBcd(year));
Wire.endTransmission();

void suit()
{
switch (month)
{
case 1:
xx=31;
break;
case 2:
if (year%4==0)
{
if(year%100==0)
{
if(year%400==0)
{
xx=29;
}
else
xx=28;
}
else
xx=29;
}
else
xx=28;
break;
case 3:
xx=31;
break;
case 4:
xx=30;
break;
case 5:
xx=31;
break;
case 6:
xx=30;
break;
case 7:
xx=31;
break;
case 8:
xx=31;
break;
case 9:
xx=30;
break;
case 10:
xx=31;
break;
case 11:
xx=30;
break;
case 12:
xx=31;
break;

}
}

void aturtanggal()
{
delay(100);
//year=year-1000;
Wire.beginTransmission(104);
Wire.write(3);
Wire.write(decToBcd(day));
Wire.write(decToBcd(date));
Wire.write(decToBcd(month));
Wire.write(decToBcd(year));
Wire.endTransmission();

float getTemp(){

byte data[12];
byte addr[8];

if ( !ds.search(addr)) {

ds.reset_search();
return -1000;
}

if ( OneWire::crc8( addr, 7) != addr[7]) {


return -1000;
}

if ( addr[0] != 0x10 && addr[0] != 0x28) {


return -1000;
}

ds.reset();
ds.select(addr);
ds.write(0x44,1);
byte present = ds.reset();
ds.select(addr);
ds.write(0xBE);

for (int i = 0; i < 9; i++) {


data[i] = ds.read();
}

ds.reset_search();

byte MSB = data[1];


byte LSB = data[0];

float tempRead = ((MSB << 8) | LSB);


float TemperatureSum = tempRead / 16;

return TemperatureSum;
}
Download Project Kontroler Jadwal Sholat
Sesuai dengan janji saya pada video youtube yang sudah saya posting duluan, sekarang saya akan membagikan
file firmware dari kontroler jadwal sholat digital dengan menggunakan display 2 buah led matrix tipe P10.
Sebelum kalian klik tombol download, lanjutin baca tulisan ini dulu yuk.
Awalnya saya membuat sebuah kontroller untuk display jam digital kalender dan thermometer menjadi satu. lalu
saya inget sama project jam sholat + suara adzan otomatis yang lalu (2tahun lalu). karena untuk membuat sebuah
jam sholat atau jadwal sholat digital hanya memerlukan sebuah ic waktu yaitu RTC dan mikrokontroller saja jadi
modul jam thermometer yang sudah saya buat duluan itu saya buatkan lagi program baru yang berisikan rumus
perhitungan mencari waktu sholat semua tempat secara otomatis berdasarkan lokasi koordinat dari suatu tempat.
Tentu saja saya memang tidak mahir di bidang ini, karena saya sendiri ber agama hindu. Tapi untuk rumus dan
penjelasan penjelasan tentang hubungan sudut derajat matahari, bulan dan sebagainya berikut parameter lainnya
sudah saya cek pada beberapa sumber sehingga didapatlah hasil yang kalau saya lihat mendekati dari jadwal yang
dibuat pada website jadwalsholat.org
untuk sementara ini tulisan pesan berjalan yang ada pada display jadwal sholat ini masih fix atau hanya bisa
diganti jika kita membuat dan mengupload ulang program nya ke ic mikrokontroler nya.
Mungkin fitur update tulisan lewat hp akan ditambahkan nanti.
Design pcb dari kontroler ini saya buat menggunakan softwar eagle pcb. dari mulai skematik nya sampai dengan
layout nya.
Menggunakan sebuah mikrokontroler atmega328 smd yang membuat kontroller multifungsi ini terlihat ringkas
dan mungil.
berikut ini adalah gambar dari design pcb yang saya buat di eagle pcb.
Nah kalau uda dicetak nanti ukuran nya jadi kecil banget kayak beberapa foto ini nih.

Untuk kalian yang mau beli modul ini dengan program jam digital atau pun jadwal sholat juga bisa cek di menu
toko di web saya ini. pilih kategori modul duwiarsana.
Kalau mau bikin sendiri silahkan download file nya pada tempat download yang sudah saya siapkan.
Nah cek dulu video demo nya ya :)
Kalau kamu mau download silahkan pilih tombol sosial media yang akan kamu gunakan untuk membuka kunci
download dibawah ini. abis itu download deh file skematik dalam bentuk eagle pcb dan juga firmware dari jadwal
sholat digital ini.
Jangan lupa settingan fusebit untuk atmega328 dengan crystal 16MHz adalah Low fuse FF, high fuse DA

Alamat Demo https://www.youtube.com/watch?v=J29YTUzMs08

Anda mungkin juga menyukai