SENSOR GEMPA SEISMOGRAF - SENSOR SUHU DHT11- MICROBIT - OLED - MICROSOFT MAKECODE - Jurnalku by Fajar himawan
Bedah Kode: Membuat Seismograf Digital & Monitor Suhu dengan Micro:bit
(Penjelasan Lengkap)
Apakah Anda pernah penasaran bagaimana cara kerja alat pendeteksi gempa sederhana? Atau Anda sedang mengerjakan proyek STEM menggunakan Micro:bit? Di artikel kali ini, kita akan melakukan "Deep Dive" (pembelajaran mendalam) ke dalam kode Python untuk proyek Seismograf Digital & Sensor Suhu.
Proyek ini menggabungkan dua fungsi utama:
Sistem Peringatan Dini Gempa: Mengukur getaran dan membunyikan alarm jika melebihi batas aman.
Monitor Lingkungan: Menampilkan suhu dan kelembaban saat kondisi aman.
Mari kita bedah kodenya bagian demi bagian!
1. Persiapan Variabel & Layar OLED
Di awal kode, kita melihat deretan variabel. Ini adalah "memori" tempat Micro:bit menyimpan data sementara.
rawGetar = 0srRealtime = 0modeBahaya = False# ... dan lain-lainrawGetar: Nilai mentah dari sensor akselerometer Micro:bit.srRealtime: Nilai getaran yang sudah dikonversi menjadi satuan simulasi Skala Richter (SR).modeBahaya: Ini adalah "saklar" logika (True/False). JikaTrue, berarti gempa sedang terjadi.OLED12864_I2C.init(60): Perintah wajib untuk menghidupkan layar OLED agar siap menampilkan teks.
2. Logika Utama: Aman vs Bahaya
Jantung dari program ini ada di dalam fungsi on_forever(). Logika utamanya menggunakan IF-ELSE (Jika-Maka).
if modeBahaya: # Lakukan aksi peringatan gempaelse: # Lakukan monitoring suhu normalBayangkan ini sebagai satpam. Satpam akan mengecek: "Apakah status sekarang BAHAYA?" Jika ya, bunyikan sirine. Jika tidak, silakan duduk tenang dan catat suhu ruangan.
3. Rumus Matematika: Menghitung Skala Richter (Simulasi)
Bagaimana kita mengubah goyangan Micro:bit menjadi angka Skala Richter? Perhatikan blok kode di bagian else (Mode Normal):
getaranSaatIni = input.acceleration(Dimension.STRENGTH)selisih = abs(getaranSaatIni - 1023)nilaiMentah = selisih / 60srRealtime = Math.round(nilaiMentah * 100) / 100Penjelasannya:
input.acceleration: Sensor bawaan Micro:bit. Dalam keadaan diam, nilainya sekitar 1023 (karena gaya gravitasi bumi).abs(getaranSaatIni - 1023): Kita mengurangi nilai sensor dengan 1023. Jika Micro:bit diam, hasilnya 0. Jika diguncang, angkanya naik. Fungsiabsmemastikan angkanya selalu positif.Pembagian
/ 60: Ini adalah angka kalibrasi (bisa diubah). Tujuannya untuk memperkecil nilai ribuan menjadi satuan kecil (misal 0 - 9) agar menyerupai Skala Richter.
4. Pemicu Alarm (Threshold)
Kapan alarm berbunyi? Kita menetapkan batas ambang (threshold).
if srRealtime > 1.5: richterBahaya = srRealtime modeBahaya = True music.play(...)Jika getaran (
srRealtime) melebihi angka 1.5, sistem langsung mengaktifkanmodeBahaya = True.Micro:bit akan menyimpan nilai guncangan terbesar ke variabel
richterBahayauntuk ditampilkan di layar sebagai bukti.Suara sirine dimainkan menggunakan
music.play.
5. Tampilan Saat Bahaya (Evakuasi)
Jika modeBahaya aktif, kode akan menjalankan blok ini:
OLED12864_I2C.show_string(0, 0, "!! BAHAYA !!", 1)OLED12864_I2C.show_string(0, 3, "AYO EVAKUASI!", 1)Layar OLED akan dipenuhi peringatan. Namun, alarm tidak boleh berbunyi selamanya. Ada fitur Reset Otomatis:
if input.running_time() - waktuMulaiBahaya > 15000: control.reset()Kode ini menghitung waktu. Jika alarm sudah berbunyi lebih dari 15.000 milidetik (15 detik), Micro:bit akan merestart dirinya sendiri (control.reset()) kembali ke mode aman.
6. Mode Aman: Membaca Sensor Suhu dan Kelembaban Udara dengan DHT11
Saat tidak ada gempa, alat ini berfungsi sebagai stasiun cuaca mini.
dht11_dht22.query_data(DHTtype.DHT11, DigitalPin.P1, ...)if dht11_dht22.read_data_successful(): # Tampilkan Suhu dan KelembabanKode ini memerintahkan Micro:bit untuk "bertanya" pada sensor DHT11 yang terpasang di Pin P1.
Jika berhasil membaca, suhu (
TEMPERATURE) dan kelembaban (HUMIDITY) ditampilkan di baris 1 dan 2 OLED.Di bagian bawah layar, kita tetap menampilkan nilai getaran realtime agar pengguna tahu seberapa sensitif alatnya.
7. Grafik Visual & Data Serial (Multitasking)
Anda mungkin melihat ada fungsi kedua bernama on_forever2(). Kenapa dipisah?
def on_forever2(): rawGetar = input.acceleration(Dimension.STRENGTH) led.plot_bar_graph(abs(rawGetar - 1023), 1023) serial.write_value("GETARAN", rawGetar)Ini berjalan secara paralel (bersamaan) dengan fungsi utama.
led.plot_bar_graph: Mengubah lampu LED matrix 5x5 di wajah Micro:bit menjadi grafik batang yang naik turun sesuai getaran. Ini memberikan efek visual yang keren!serial.write_value: Mengirim data getaran ke komputer lewat kabel USB. Anda bisa melihat grafiknya di "Device Console" pada editor MakeCode.
Kesimpulan
Kode ini adalah contoh sempurna penerapan logika pemrograman:
Input: Sensor Getar (Internal) & Sensor Suhu (DHT11).
Proses: Menghitung matematika (konversi SR) dan Logika IF/ELSE (Aman vs Bahaya).
Output: Tampilan OLED, Suara Sirine, dan Grafik LED.
Semoga penjelasan ini membantu Anda memahami proyek Seismograf Micro:bit ini. Selamat mencoba dan jangan lupa bagikan hasilnya! 😊
Link Proyek:








No comments