Cara Membuat jam digital menggunakan modul TM1637 dan RTC dengan arduino uno

7:48 AM Comment
Jam digital menggunakan modul TM1637 dan RTC

Jam digital menggunakan modul TM1637 dan RTC (Real-Time Clock) seperti DS3231 atau DS1307 pada Arduino Uno adalah proyek yang cukup sederhana. Modul TM1637 digunakan untuk menampilkan waktu pada display 7-segment, sedangkan modul RTC berfungsi untuk menyimpan dan menjaga waktu agar tetap akurat meskipun Arduino dimatikan.

Berikut adalah langkah-langkah untuk membuat jam digital menggunakan TM1637 dan RTC:

Komponen yang Diperlukan:

  • Arduino Uno
  • Modul RTC (DS3231 atau DS1307)
  • Modul TM1637 (4-digit 7-segment display)
  • Kabel jumper
  • Breadboard

Rangkaian
Hubungkan Modul TM1637 ke Arduino:
  • CLK (TM1637) → Pin digital 2 (Arduino)
  • DIO (TM1637) → Pin digital 3 (Arduino)
  • VCC → 5V (Arduino)
  • GND → GND (Arduino)
Hubungkan Modul RTC ke Arduino:
  • SCL (RTC) → Pin A5 (Arduino Uno)
  • SDA (RTC) → Pin A4 (Arduino Uno)
  • VCC → 5V (Arduino)
  • GND → GND (Arduino)
Library yang Dibutuhkan
Kedua library ini bisa diunduh dan diinstal melalui Library Manager di Arduino IDE.

Program
#include <Wire.h>
#include <RTClib.h>
#include <TM1637Display.h>

// Pin TM1637
#define CLK 2
#define DIO 3

// Inisialisasi modul RTC dan TM1637
RTC_DS3231 rtc;
TM1637Display display(CLK, DIO);

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

  // Inisialisasi modul TM1637
  display.setBrightness(0x0F);

  // Inisialisasi modul RTC
  if (!rtc.begin()) {
    Serial.println("RTC tidak terdeteksi!");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC kehilangan daya, set waktu sekarang!");
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Set waktu sesuai dengan waktu saat kompilasi
  }
}

void loop() {
  DateTime now = rtc.now(); // Ambil waktu dari RTC

  // Format waktu ke 24 jam
  int displayTime = now.hour() * 100 + now.minute();

  // Tampilkan waktu pada TM1637
  display.showNumberDecEx(displayTime, 0b01000000, true); // Tampilkan dengan titik di tengah (:)

  delay(1000); // Update setiap detik
}

Membuat jam digital sendiri menggunakan modul 7 segment

7:00 AM Comment
Membuat jam digital sendiri menggunakan modul 7 segment

 Untuk membuat jam digital menggunakan modul 7-segment dengan Arduino, kita bisa menggunakan modul 7-segment display 4 digit yang biasanya memiliki IC driver TM1637. Modul ini mempermudah pengendalian karena hanya membutuhkan 2 pin Arduino.

Komponen yang Dibutuhkan

  • Arduino Uno (atau jenis lainnya).
  • Modul 7-Segment 4-Digit TM1637.
  • Kabel jumper.
  • Breadboard.
  • RTC Module DS3231 (opsional, untuk waktu yang lebih akurat).
Koneksi Modul TM1637 ke Arduino

TM1637 Arduino
VCC 5V
GND GND
CLK Pin 3
DIO  Pin 4

Langkah Pembuatan
  • Install Library TM1637
  • Buka Arduino IDE.
  • Pergi ke Sketch → Include Library → Manage Libraries.
  • Cari dan install TM1637Display.
Program Jam Digital

#include 

// Pin untuk TM1637
#define CLK 3    // Pin CLK dihubungkan ke Pin 3 Arduino
#define DIO 4    // Pin DIO dihubungkan ke Pin 4 Arduino

// Inisialisasi display TM1637
TM1637Display display(CLK, DIO);

// Variabel waktu (jam dan menit)
int jam = 0;    // Atur jam awal (0-23)
int menit = 0;  // Atur menit awal (0-59)

void setup() {
  display.setBrightness(7); // Atur kecerahan display (0-7)
}

void loop() {
  // Menampilkan waktu (format jam:menit)
  int waktu = (jam * 100) + menit; // Menggabungkan jam dan menit
  display.showNumberDecEx(waktu, 0b01000000, true); // Tampilkan dengan titik tengah ":"

  delay(60000); // Delay 1 menit (60000 ms)

  // Logika increment waktu
  menit++;
  if (menit >= 60) { // Jika menit mencapai 60, reset ke 0 dan tambah jam
    menit = 0;
    jam++;
  }
  if (jam >= 24) { // Jika jam mencapai 24, reset ke 0
    jam = 0;
  }
}


Penjelasan Kode
  • Library TM1637Display digunakan untuk mempermudah komunikasi dengan modul TM1637.
  • showNumberDecEx() menampilkan angka dengan format jam:menit.
  • 0b01000000 menyalakan titik tengah ":" sebagai pemisah jam dan menit.
  • Waktu dihitung dengan increment menit setiap 60 detik.
  • Jika menit = 60, maka reset ke 0 dan jam bertambah 1.
  • Jika jam = 24, maka reset ke 0.

Program counter menggunakan 7-segment 1 Digit

7:00 AM Comment
Program counter menggunakan 7-segment 1 Digit


Berikut adalah program counter menggunakan 7-segment display dengan Arduino. Program ini akan menampilkan angka dari 0 hingga 9 secara berurutan dan ditampilkan pada 7-segment display common cathode.

Komponen yang Dibutuhkan

  • Arduino Uno (atau jenis lainnya).
  • 7-segment display (common cathode).
  • Resistor 220 Ohm (7 buah, untuk melindungi LED pada 7-segment).
  • Kabel jumper.
  • Breadboard.

Sebelum memulai, pahami 7-segment display. Setiap segmen dihubungkan ke pin Arduino untuk menyalakan LED:
seven segment pinout

Biasanya, pin segmen dihubungkan ke Arduino seperti ini:

  • a → Pin 2
  • b → Pin 3
  • c → Pin 4
  • d → Pin 5
  • e → Pin 6
  • f → Pin 7
  • g → Pin 8
  • Common Cathode (CC) → GND

  1. Sambungkan segmen a-g ke pin digital Arduino (2-8).
  2. Hubungkan resistor 220 Ohm ke setiap pin segmen.
  3. Hubungkan pin common cathode (CC) ke GND Arduino.
Program Arduino 

  // Definisi pin untuk setiap segmen (a-g) pada 7-segment
int segA = 2;
int segB = 3;
int segC = 4;
int segD = 5;
int segE = 6;
int segF = 7;
int segG = 8;

// Array untuk menyimpan pola angka 0-9 (LOW berarti segmen menyala)
byte angka[10][7] = {
  {LOW, LOW, LOW, LOW, LOW, LOW, HIGH}, // 0
  {HIGH, LOW, LOW, HIGH, HIGH, HIGH, HIGH}, // 1
  {LOW, LOW, HIGH, LOW, LOW, HIGH, LOW}, // 2
  {LOW, LOW, LOW, LOW, HIGH, HIGH, LOW}, // 3
  {HIGH, LOW, LOW, HIGH, HIGH, LOW, LOW}, // 4
  {LOW, HIGH, LOW, LOW, HIGH, LOW, LOW}, // 5
  {LOW, HIGH, LOW, LOW, LOW, LOW, LOW}, // 6
  {LOW, LOW, LOW, HIGH, HIGH, HIGH, HIGH}, // 7
  {LOW, LOW, LOW, LOW, LOW, LOW, LOW}, // 8
  {LOW, LOW, LOW, LOW, HIGH, LOW, LOW}  // 9
};

// Fungsi untuk menampilkan angka di 7-segment
void tampilkanAngka(int num) {
  digitalWrite(segA, angka[num][0]);
  digitalWrite(segB, angka[num][1]);
  digitalWrite(segC, angka[num][2]);
  digitalWrite(segD, angka[num][3]);
  digitalWrite(segE, angka[num][4]);
  digitalWrite(segF, angka[num][5]);
  digitalWrite(segG, angka[num][6]);
}

void setup() {
  // Atur pin segmen sebagai output
  pinMode(segA, OUTPUT);
  pinMode(segB, OUTPUT);
  pinMode(segC, OUTPUT);
  pinMode(segD, OUTPUT);
  pinMode(segE, OUTPUT);
  pinMode(segF, OUTPUT);
  pinMode(segG, OUTPUT);
}

void loop() {
  // Loop angka 0-9
  for (int i = 0; i <= 9; i++) {
    tampilkanAngka(i); // Tampilkan angka pada 7-segment
    delay(1000);       // Tunda 1 detik sebelum ke angka berikutnya
  }
}

  

Penjelasan Kode
  • Array angka menyimpan pola segmen untuk angka 0–9.
  • Setiap angka diwakili oleh 7 nilai (LOW/HIGH) untuk segmen a-g.
  • LOW berarti segmen menyala pada 7-segment common cathode.
  • Fungsi tampilkanAngka() menyalakan segmen sesuai pola angka.
  • Loop for digunakan untuk menghitung dari 0 sampai 9, dengan jeda 1 detik antar angka.
Cara Kerja Alat
  • Upload kode program ke Arduino menggunakan Arduino IDE.
  • LED pada 7-segment akan menampilkan angka dari 0 hingga 9 secara berurutan.
  • Angka akan berubah setiap 1 detik.


Cara mudah mengetahui kutub positif dan negatif led

11:00 AM Comment
membedakan anoda katoda led


Melihat Panjang Kaki LED

  • Kaki panjang → Anoda (positif)
  • Kaki pendek → Katoda (negatif)

Ini adalah cara paling umum jika LED masih baru dan belum dipotong kakinya. Namun, jika kaki LED sudah dipotong, gunakan metode lain.

Melihat Bagian Dalam LED (Bentuk Anvil)

  • Perhatikan bagian dalam LED (dari sisi transparan):
  • Bagian besar/tebal (seperti sendok) → Katoda (negatif)
  • Bagian kecil/tipis → Anoda (positif)

Ciri ini bisa dilihat dengan mudah pada LED bening atau LED dengan badan transparan.

Alat deteksi ketinggian air menggunakan Arduino

11:16 AM Comment

 Untuk membuat alat deteksi ketinggian air menggunakan Arduino, kita bisa memanfaatkan sensor ultrasonik (HC-SR04) atau sensor level air seperti water level sensor atau rangkaian pelampung.

Berikut adalah panduan membuat alat deteksi ketinggian air menggunakan sensor ultrasonik HC-SR04 karena mudah digunakan dan tidak memerlukan kontak langsung dengan air.

Komponen yang Dibutuhkan

  • Arduino Uno (atau jenis lainnya).
  • Sensor Ultrasonik HC-SR04 – untuk mengukur jarak permukaan air.
  • Buzzer – untuk alarm jika ketinggian air melewati batas tertentu.
  • LED (opsional) – sebagai indikator tambahan.
  • Resistor 220 Ohm – untuk LED.
  • Kabel jumper – untuk koneksi antar komponen.
  • Breadboard – sebagai papan koneksi sementara.
  • Adaptor atau kabel USB – sebagai catu daya Arduino.

Prinsip Kerja
  • Sensor ultrasonik HC-SR04 mengukur jarak antara sensor dan permukaan air.
  • Jika jarak air mendekati sensor (ketinggian air naik), Arduino akan memicu buzzer atau LED sebagai alarm.
  • Logika sederhana: Semakin tinggi air, semakin kecil jarak yang terbaca oleh sensor.
Alat deteksi ketinggian air menggunakan Arduino


Skema Rangkaian
Koneksi Sensor HC-SR04 ke Arduino:
  • VCC → 5V Arduino
  • GND → GND Arduino
  • TRIG → Pin 7 Arduino
  • ECHO → Pin 6 Arduino
Koneksi Buzzer dan LED:
  • Buzzer positif → Pin 10 Arduino
  • LED positif → Pin 13 Arduino (melalui resistor 220 Ohm).
  • Buzzer negatif dan LED negatif → GND Arduino.
Program Arduino

#define trigPin 7    // Pin Trig sensor ultrasonik
#define echoPin 6   // Pin Echo sensor ultrasonik
#define buzzer 10     // Pin buzzer
#define led 13        // Pin LED

float jarak;         // Variabel untuk menyimpan jarak
float tinggi_air;    // Variabel untuk menyimpan ketinggian air
float tinggi_tangki = 30.0; // Tinggi tangki air dalam cm (sesuaikan)

void setup() {
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(led, OUTPUT);
  Serial.begin(9600); // Inisialisasi komunikasi serial
}

void loop() {
  // Mengirimkan pulsa ultrasonik
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  
  // Membaca waktu pantulan (dalam mikrodetik)
  long durasi = pulseIn(echoPin, HIGH);
  
  // Menghitung jarak (dalam cm)
  jarak = durasi * 0.034 / 2; 
  
  // Menghitung ketinggian air
  tinggi_air = tinggi_tangki - jarak;

  // Menampilkan data di Serial Monitor
  Serial.print("Jarak permukaan air: ");
  Serial.print(jarak);
  Serial.print(" cm | Ketinggian air: ");
  Serial.print(tinggi_air);
  Serial.println(" cm");

  // Logika alarm jika ketinggian air melebihi batas
  if (tinggi_air > 25) { // Sesuaikan batas tinggi air
    digitalWrite(buzzer, HIGH); // Buzzer menyala
    digitalWrite(led, HIGH);    // LED menyala
    Serial.println("Peringatan: Air mendekati batas maksimum!");
  } else {
    digitalWrite(buzzer, LOW); // Buzzer mati
    digitalWrite(led, LOW);    // LED mati
  }
  
  delay(1000); // Delay 1 detik sebelum pengukuran berikutnya
}

  
 
Cara Kerja Alat
  • Pasang sensor ultrasonik di bagian atas tangki atau wadah air.
  • Jalankan program dan buka Serial Monitor untuk melihat data jarak dan ketinggian air.
  • Jika air mendekati batas atas, buzzer dan LED akan aktif sebagai peringatan.
Pengembangan Lanjutan
  • Tambahkan layar LCD untuk menampilkan ketinggian air secara langsung.
  • Gunakan modul relay untuk mengontrol pompa air otomatis saat ketinggian air mencapai batas tertentu.
  • Integrasikan dengan modul Wi-Fi (ESP8266/ESP32) untuk mengirim notifikasi ke smartphone.
  • Tambahkan fitur logging data menggunakan SD card untuk mencatat perubahan ketinggian air.

Alat Kontrol Suhu Ruangan dengan Esp32

10:42 AM Comment

 Untuk mendeteksi suhu menggunakan ESP32 dengan sensor DHT (DHT11/DHT22) dan mengontrol kipas angin berdasarkan suhu, Anda dapat mengikuti langkah berikut:


deteksi suhu ruangan dengan esp32
Alat yang di butuhkan :

  • ESP32.
  • Sensor DHT (DHT11/DHT22).
  • Kipas angin (DC fan) 12v.
  • Modul relay
  • Kabel Jumper
  • Power Suplay 12v

Diagram Rangkaian :
DHT Sensor:
  • Pin VCC → 3.3V atau 5V di ESP32.
  • Pin GND → GND di ESP32.
  • Pin DATA → D8 ESP32.
  • Resistor pull-up 10kΩ antara pin DATA dan VCC.
Modul Relay (untuk kipas angin):
  • VCC → 5V dari Modul StepDown.
  • GND → GND dari ESP32.
  • IN → D6 ESP32.
Sambungkan kipas ke relay seperti berikut:
Salah satu kabel kipas ke NO (Normally Open).
Kabel kipas lainnya ke C (Common).
bisa dilihat pada gambar diaatas

Program :


#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>

// Konfigurasi sensor DHT
#define DHTPIN 8       // Pin data DHT
#define DHTTYPE DHT22  // Ubah ke DHT11 jika menggunakan DHT11
DHT dht(DHTPIN, DHTTYPE);

// Pin relay untuk kipas
#define RELAYPIN 6

// Ambang suhu untuk kipas
#define TEMPERATURE_THRESHOLD 30.0 // Suhu dalam °C

void setup() {
  Serial.begin(115200);
  Serial.println(F("DHT with Fan Control"));

  // Memulai DHT
  dht.begin();

  // Mengatur pin relay sebagai output
  pinMode(RELAYPIN, OUTPUT);
  digitalWrite(RELAYPIN, LOW); // Kipas mati saat awal
}

void loop() {
  // Tunggu 2 detik antar pembacaan
  delay(2000);

  // Membaca suhu dan kelembapan
  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  // Periksa apakah pembacaan berhasil
  if (isnan(temperature) || isnan(humidity)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

  // Menampilkan hasil ke Serial Monitor
  Serial.print(F("Temperature: "));
  Serial.print(temperature);
  Serial.print(F("°C  Humidity: "));
  Serial.print(humidity);
  Serial.println(F("%"));

  // Mengontrol kipas berdasarkan suhu
  if (temperature > TEMPERATURE_THRESHOLD) {
    digitalWrite(RELAYPIN, HIGH); // Nyalakan kipas
    Serial.println(F("Fan ON"));
  } else {
    digitalWrite(RELAYPIN, LOW); // Matikan kipas
    Serial.println(F("Fan OFF"));
  }
}