DHT-11 dan Push Button dengan Micropython

, , Leave a comment

Halo selamat datang kembali di andidinata.com. Ini adalah bagian ketiga dari sharing tentang little gadget II. Jika kamu belum membaca dua tulisan sebelumnya, silahkan melihat tulisan pertama dengan judul Little Gadget 2 – Build dan kedua yang berjudul Nokia 5110 Micropython . Bagian ketiga ini adalah bagian yang paling seru dan panjang karena disini kita membenamkan berbagai input ke dalam NodeMCU. Berikut adalah ketiga input yang dihubungkan ke dua Pin tersisa dari NodeMCU yaitu D1 (Pin 5) dan D2 (Pin 4) karena LCD Nokia telah menghabiskan sebagian besar dari Pin.

Pin sharing sangat dimungkinkan selama penggunaannya tidak dilakukan pada saat yang sama. Disini, pada saat aplikasi pembaca temperatur dijalankan, maka sensor accelerometer tidak digunakan. Begitu juga halnya apabila sensor accelerometer diaktifkan, maka sensor temperatur dan push button tidak digunakan.

DHT-11

Integrasi sensor ini terbilang sangat mudah karena sudah terintegrasi micropython. Tidak perlu instalasi atau copy library karena micropython telah menyediakan wrapper untuk kita mengakses sensor ini. Yang kita lakukan sangatlah mudah, cukup dengan menuliskan Pin yang yang digunakan pada script. Berikut ini adalah lima baris script untuk membaca sensor temperatur dan kelembaban.

from machine import Pin
from dht import DHT11
d=DHT11(Pin(5))
d.measure()
temp=d.temperature()
rh=d.humitdity()

Dengan begitu mudahnya mengintegrasi DHT-11, maka sebenarnya kalau kita punya proyek untuk membaca temperatur dan kelemababan, kecanggihan Raspberry Pi berasa menjadi over-spec untuk solusi ini. Pada kesempatan berikutnya, saya akan tuliskan bagiamana memposting hasil pembacaan temperatur DHT-11 ke ThingSpeak sebagai sarana untuk data logging dan trend monitoring.

Push Button

Input berikutnya adalah Push Button agar yang terhubung dengan Pin 4. Untuk mengaktifkannya sangat sederhana.

from machine import Pin
import time
button=Pin(4, Pin.IN, Pin.PULL_UP)
button.value()

output dari button.value() bisa berupa nilai 0 (bila sedang tidak ditekan) dan 1 (bila sedang ditekan). Agar nilai tombol bisa diulang-ulang terus, maka perlu diletakkan dalan while loop.

while True:
    button.value()
    time.sleep(0.01)

Meskipun sederhana, namun push button bisa dikembangkan ke aplikasi dengan logika yang lebih kompleks. Sebagai contoh, dalam sebuah aplikasi menu, kita menginginkan jika pilihan bergeser jika tombol ditekan sekali saja, dan pilihan bergeser apabila tombol kembali ditekan sekali lagi. Berikut ini trik saya dapatkan dari Adafruit:

while True:
    first=button.value()
    time.sleep(0.01)
    second=button.value()
    if first and not second:
        print("sudah ditekan")
    elif not first and second:
        print("tidak ditekan")

Dengan trik itu maka saya bisa membuat pembedaan antara short press dan long press dari button. Short press digunakan untuk melakukan navigasi menu dan long press digunakan untuk memilih/eksekusi menu. Dengan begitu, maka kita tidak memerlukan dua push button, satu saja cukup. Berikut ini prinsip trik long dan short press button yang saya gunakan dengan menggabungkan unsur waktu.

while True:
    first=button.value()
    time.sleep(0.01)
    second=button.value()
    if first and not second:
        start=time.time()
        print("short press")
    elif not first and second:
        end=time.time()
        diff=end-start
        if diff >= 2:
            print("long press")

Short dan long press button ini banyak ditemui dalam keseharian misalnya saat kita menyimpan stasiun radio di head unit mobil, long press akan menyimpan frekuensi gelombang radio yang sedang dimainkan, dan short press untuk memilih frekuensi radio yang telah disimpan sebelumnya.

Sekian dulu pembahasan bagian ketiga. Terima kasih telah membaca, semoga bermanfaat dan memberikan wawasan. Mohon dukung blog ini dengan memberikan like, subscribe dan share tulisan ini. Sampai bertemu kembali di bagian keempat yang membahas integrasi sensor yang paling menarik, yaitu 3-axis accelerometer ADXL345.

 

Source:

“http://docs.micropython.org/en/latest/esp8266/”

“https://learn.adafruit.com/micropython-hardware-digital-i-slash-o/digital-inputs”

Facebook Comments
 

Leave a Reply