DIY Digital Clock Arduino Nano Seven Segment With Temperature & Humidity
Pada kesempatan kali ini saya akan berbagi pengalaman bagaimana cara membuat jam dinding digital menggunakan Arduino Nano. dan jam digital ini bekerja secara real time karena menggunakan RTC DS3231, sebagai Back Up ketika sumber tegangan padam. pada project kali ini saya menggunakan IC RTC DS3231 karena dari beberapa jenis IC RTC yang mempunyai nilai keakurasian yang tinggi adalah IC DS3231. Selain sebagai penampil waktu, jam digital ini dilengkapi dengan Sensor DHT11 yang berguna untuk pendeteksi suhu dan kelembapan susatu ruangan, sehingga kita bisa mengetahui suhu suatu ruangan.
Keunggulan dari Project ini adalah sistem 3 in 1 yang terintegrasi dalam satu microcontroller yaitu Arduino Nano. Project ini juga mempunyai keunggulan lainnya yaitu seperti penggunaan Daya, jam digital ini mengkonsumsi daya yang sangat kecil karen menggunakan LED SMD1206, dan untuk mengidupkan LED tiap segmentnya menggunakan IC Shift Register 74HC595, tidak hanya berhenti disitu, jam digital ini juga menggunakan tegangan yang cukup kecil untuk Seven Segment dengan ukuran yang besar, yaitu menggunakan tegangan sebesar 5 Volt.
Mungkin cukup itu saja untuk penjelasan singkat mengenai project jam digital ini. Dan bagi rekan-rekan yang ingin membuat project ini, telah saya siapkan semua file yang dibutuhkan untuk membuatnya. namun selain file-file dalam bentuk softwere rekan-rekan juga harus menyiapkan bahan yang akan digunakan, daftar bahan yang digunakan adalah sebagai berikut:
- PCB Digital Wall Clock 2017 1 Buah
- Arduino Nano CH340G 1 Buah
- DHT 11 1 Buah
- IC RTC DS3231 1 Buah
- IC 74HC595 2 Buah
- LED 1206 SMD 84 Buah
- Resistor 56 Ohm 8 Buah
- Battrey CR2032+Holder 1 Buah
- LED 1 Watt 2 Buah
- Design Acrylic 1 Buah
- Speser 8 Buah
- Jack DC 1 Buah
- Regulator 7805 1 Buah
- Timah Cair Secukupnya
Untuk Skema Utama bisa dilihat Dibawah ini.
Dibawah ini merupakan Design PCB yang digunakan
- Design Utama
- Bottom Layer
- Top Layer
Design untuk Acrylic
Bahan Setelah Dicetak
- PCB Digital Wall Clock 2017
- Case Acrylic
Setelah Semua Siap maka dilanjut tahap pemasangan Komponen.
Tampak Depan.
File Design PCB dan Design Case Acrylic Download Disini
Video Proses Pembuatan
Tampak belakang.
Setelah Semua komponen terpasang maka masukkan Source Code Dibawah ini.
Program Utama
=================================Source Code================================
#include "Time.h" //Time Library
#include "RTClib.h" //Real Time Clock Library DS3231
#include "Wire.h" //Library untuk pembacaan RTC (SDA , SCL)
#include "dht11.h" //Library Suhu dan Kelembapan
dht11 DHT;
#define DHT11_PIN 11 //Sensor DHT terhubung ke pin 11 Arduino
RTC_DS3231 rtc;
int clockPin = 8; // Pin 8 ke kaki IC no 11 74HC595 (Clock)
int latchPin = 9; // Pin 9 ke kaki IC no 12 74HC595 (Latch)
int dataPin = 10; // Pin 10 ke kaki IC no 14 74HC595 (Data)
int Jam, Menit, temp, umid;
int unitJam, unitMenit, perJam, perMenit;
int Hari, Tanggal, Bulan, Tahun;
int unitTemp, perTemp, unitUmid, perUmid;
unsigned long ti;
int chk; //variable untuk membaca sensor DHT11
//Costum Angka Seven Segment - 0 sampai 9
byte num[] = {
B01111110, // 0
B00110000, // 1
B01101101, // 2
B01111001, // 3
B00110011, // 4
B01011011, // 5
B01011111, // 6
B01110000, // 7
B01111111, // 8
B01111011, // 9
};
void setup() {
pinMode(latchPin, OUTPUT);
pinMode(clockPin, OUTPUT);
pinMode(dataPin, OUTPUT);
rtc.begin();
Wire.begin();
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, lets set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
}
void loop() {
DateTime now = rtc.now();
ti = millis();
while ((millis() - ti) < 50000) { //Waktu tampilan JAM
Jam = now.hour(), DEC;
Menit = now.minute(), DEC;
unitJam = Jam % 10;
perJam = Jam / 10;
unitMenit = Menit % 10;
perMenit = Menit / 10;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 8);
shiftOut(dataPin, clockPin, LSBFIRST, ~num[perJam]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 4);
shiftOut(dataPin, clockPin, LSBFIRST, ~num[unitJam]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 2);
shiftOut(dataPin, clockPin, LSBFIRST, ~num[perMenit]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 1);
shiftOut(dataPin, clockPin, LSBFIRST, ~num[unitMenit]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 4);
shiftOut(dataPin, clockPin, LSBFIRST, ~B10000000);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 1);
shiftOut(dataPin, clockPin, LSBFIRST, 255);
digitalWrite(latchPin, HIGH);
}
delay(10);
chk = DHT.read(DHT11_PIN); //membaca data dari sensor DHT11
ti = millis();
temp = DHT.temperature;
while ((millis() - ti) < 3000) { //Waktu tampilan SUHU
unitTemp = temp % 10;
perTemp = temp / 10;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 8);
shiftOut(dataPin, clockPin, LSBFIRST, ~num[perTemp]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 4);
shiftOut(dataPin, clockPin, LSBFIRST, ~num[unitTemp]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 2); //Penampil Simbol Derajat
shiftOut(dataPin, clockPin, LSBFIRST, ~B01100011);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 1); // Pnampil Huruf C
shiftOut(dataPin, clockPin, LSBFIRST, ~B01001110);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 1);
shiftOut(dataPin, clockPin, LSBFIRST, 255);
digitalWrite(latchPin, HIGH);
}
delay(10);
ti = millis();
umid = DHT.humidity; //membaca kelembapan
while ((millis() - ti) < 3000) { //Waktu tampilan kelembapan
unitUmid = umid % 10;
perUmid = umid / 10;
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 1);
shiftOut(dataPin, clockPin, LSBFIRST, ~num[perUmid]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 2);
shiftOut(dataPin, clockPin, LSBFIRST, ~num[unitUmid]);
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 4);
shiftOut(dataPin, clockPin, LSBFIRST, ~B00000001); //Penampil -
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 8);
shiftOut(dataPin, clockPin, LSBFIRST, ~B00110111); //Penampil Huruf H
digitalWrite(latchPin, HIGH);
digitalWrite(latchPin, LOW);
shiftOut(dataPin, clockPin, LSBFIRST, 1);
shiftOut(dataPin, clockPin, LSBFIRST, 255);
digitalWrite(latchPin, HIGH);
}
delay(10);
}
13>
File Design PCB dan Design Case Acrylic Download Disini
Video Proses Pembuatan
No comments
Post a Comment