29 Oct 2015

Kendali Lampu Menggunakan Raspberry Pi

Mainan Baru di kosan, coba nge-build control lampu tanpa saklar, atau saklar jadi opsi kedua kalo system yang gue buat gak jalan. Jadi dengan Raspberry Pi ditambah dengan relay dan sedikit pemograman web, gue coba buat alat control lampu pake HP android gue. Cara kerjanya sih simple, tampilan web hanya menunjukan button on/off aja. Jadi, kalau button diklik akan memberikan informasi ke Raspberry Untuk menghidupkan atau mematikan gpio yang tersambung ke relay agar relay bekerja seperti saklar mematikan atau menghidupkan lampu.

Arsitektur rangkaian, gue menyambung kabel dari saklar untuk dimasukan kedalam relay. Kemudan low voltage untuk memicu relay gue hubungkan ke PIN Raspberry Pi pada GPIO 24. Pin Vcc pada Relay di hubungkan ke 5v Raspberry dan pin GND pada Relay Di Hubungkan ke GND Raspberry Pi. Langkah Selanjutnya adalah pemograman pada Raspberry Pi nya.

Relay lampu

Pemograman Di Raspberry Pi-nya gue menggunakan Python, Pemograman Webnya pun gue pake python juga. Untuk Instalasi Web Menggunakan Python bisa melihat artikel saya yang sebelumnya tentang NGINX+UWSGI+PYTHON+RASPBERRYPI. Bisa di lihat di link ini :

http://hanangpriambodo.com/2015/10/21/nginx-uwsgi-python-raspberry-pi/

Kemudian untuk pemograman GPIONYA, pertama saya buat file bernama usegpio.py dengan isi sebagai berikut :

#!/usr/sbin/python
import RPi.GPIO as GPIO

GPIO.setmode(GPIO.BCM)

RELAY1 = 24

def relay1(pemicu):

GPIO.setwarnings(False)

GPIO.setup(RELAY1, GPIO.OUT)

if pemicu == “1” :

GPIO.output(RELAY1, GPIO.HIGH)

elif pemicu == “0” :

GPIO.output(RELAY1, GPIO.LOW)

else :

print “Angka yang di masukan harus 1 atau 0”

Selanjutnya Setelah Program di buat, saya membuat program bernama action_lamp.py, dengan isi sebagai berikut :

#!/usr/bin/env python

#print “Content-type: text/html\n\n”

import usegpio

import cgi, cgitb

import os

 

cgitb.enable()

 

form = cgi.FieldStorage()

input1 = form.getvalue(‘inputVal’)

try :

usegpio.relay1(input1)

files = open(“lampu.txt”,”w”)

files.write(input1)

files.close()

except KeyboardInterrupt :

print “Program Di Berhentikan”

 

hosts = os.environ[‘HTTP_HOST’]

url = “http://%s/home.py”%hosts

print “Location: %s” % url

print

Kemudian untuk pemograman webnya saya buat dengan nama home.py, dengan isi sebagai berikut:

#!/usr/bin/env python

print “Content-type: text/html\n\n”

 

def cekLampu():

files = open(“lampu.txt”,”r”)

data = files.read()

files.close()

#data = int(data)

if data == “1”:

nilai = “””<button type=”submit” class=”btn btn-lg btn-success” value=”0″ name=”inputVal”><font size=”12″> Hidup</font></button>”””

elif data == “0” :

nilai = “””<button type=”submit” class=”btn btn-lg btn-danger” value=”1″ name=”inputVal”><font size=”12″> Mati</font></button>”””

else :

nilai = “””<button type=”submit” class=”btn btn-lg btn-default” value=”1″ name=”inputVal”>Nggak TAU</button>”””

return nilai

 

def home() :

status = cekLampu()

return “””

<!DOCTYPE html>

<html lang=”en”>

<head>

<link href=”percantik/css/bootstrap.min.css” rel=”stylesheet”>

</head>

<body>

<div align=”center”>

<p><font size=”12″> Raspi Control Lampu Rumah </font></p>

<br>

<br>

<br>

<form action=”action_lamp.py”>

<font size=”12″> Silakan Tekan Button</font><br>

{}

<script src=”percantik/js/jquery.min.js”></script>

<script src=”percantik/js/bootstrap.min.js”></script>

</form>

</div>

</body>

</html>”””.format(status)

 

print home()

Ketiga File ini saya taruh di folder /usr/share/nginx/www, Karna seperti penjelasan pada instalasi python sebagai web diatas, folder. diarahkan ke folder tersebut diatas. Untuk penamaan button saya menggunakan bootstrap. Isi dari folder /usr/share/nginx/www kira kira seperti ini :

root@raspberrypi:/usr/share/nginx/www# ls

50x.html

action_lamp.py

home.py

icon.png

index.html

lampu.txt

percantik

usegpio.py

Untuk cara kerjanya programnya, ketika web di load pertama kali, dia akan membaca file bernama lampu.txt. Ketika file lampu.txt tidak berisi apa-apa, button akan bernama “gak tau”. Kemudian ketika di klik itu akan bernila 1, nilai berarti GPIO Raspberry menjadi HIGH. Nilai ini akan tertulis di lampu.txt dan nilai ini memicu action_lamp.py dengan mengambil library pada usegpio.py untuk merubah status GPIO mendi HIGH. Ketika GPIO menjadi HIGH akan memicu relay men-switch lampu menjadi hidup. Setelah Proses berjalan web akan reload kembali dengan membaca isi dari lampu.txt. Karna lampu.txt bernilai 1,  tombol berubah menjadi hijau. Ketika tombol di klik maka lampu.txt akan bernilai 0 dan Raspberry Pi memicu relay me-switch lampu menjadi mati dan web akan reload kembali dengan membaca isi lampu.txt.

Selain control lampu dengan web atau HP, Lampu juga saya atur agar hidup mati nya tergantung pada jam. Jadi di system ini ketika jam 3 pagi lampu hidup, kemudian jam 6 pagi lampu mati, selanjutnya jam 5 sore lampu hidup dan jam 10  malam lampu mati. Untuk membuat schedule ini saya membuat 2 file program bernama on_lamp.py dan off_lamp.py. Masing masing program dijalankan dengan menggunakan bantuan cron. Cron sendiri adalah aplikasi dilinux untuk menjalankan program sesuai waktu yang di inputkan atau di konfigurasi. masing – masing file berada di dalam folder /home/pi dengan seperti di bawah ini

On_lamp.py

#!/usr/bin/env python

#print “Content-type: text/html\n\n”

import usegpio

import os

 

 

try :

usegpio.relay1(“0”)

files = open(“/usr/share/nginx/www /lampu.txt”,”w”)

files.write(“0”)

files.close()

except KeyboardInterrupt :

print “Program Di Berhentikan”

Off_lamp.py

#!/usr/bin/env python

#print “Content-type: text/html\n\n”

import usegpio

import os

 

 

try :

usegpio.relay1(“1”)

files = open(“/usr/share/nginx/www /lampu.txt”,”w”)

files.write(“1”)

files.close()

except KeyboardInterrupt :

print “Program Di Berhentikan”

Untuk menjalankan scheduler, bisa menggunakan cara ini:

  1. Buka terminal
  2. Ketik sudo crontab –e

root@raspberrypi:/usr/share/nginx/www# crontab -e

  1. Isi script berikut di panling bawah line

0 3 * * * sudo python /home/pi/on_lamp.py

0 6 * * * sudo python /home/pi/off_lamp.py

0 17 * * * sudo python /home/pi/on_lamp.py

0 22 * * * sudo python /home/pi/off_lamp.py

  1. Simpan dan keluar dengan cara tekan ctrl+x, kemudian tombol y, selanjunnya tekan enter
  2. Restart Cron

root@raspberrypi:/usr/share/nginx/www# /etc/init.d/cron restart

Note, Check date pada Raspberry Pi, apakah waktu sudah sesuai. Jika belum sesuai maka waktu perlu di sesuaikan dahulu.

root@raspberrypi:/usr/share/nginx/www# date

Wed Oct 28 21:01:26 WIB 2015

Kemudian karna ini berbasis web, gue mencari aplikasi di google play untuk merubah web ke apk, nama aplikasi web2apk. Kemudian saya convert link web menjadi apk. Komunikasi untuk mengakses web yang ada pada raspberry pi dengan cara wireless. Jadi Raspberry Pi-nya gue jadiin hotspot, kemudian HP konek ke ssid Raspberrynya, kemudian web yang di akses adalah alamat IP pada wireless Raspberry Pi. Untuk membuat Raspberry Pi menjadi Access Point, bisa dilihat dihalaman web saya di sini :

http://hanangpriambodo.com/2015/10/09/membuat-wifi-access-point-menggunakan-raspberry-pi/

Silakan mencoba jika penasaran, jika ada yang bingung bisa kontak saya, ke email atau FB saya.

Comment List

  • wahyu zevi August 22, 2016

    Gan itu ada lampu.txt nya itu dari mana yah ?

    terimakasih.

    Reply
    • hanangpriambodo August 24, 2016

      Itu file gan.. Buat data 1 atau 0.. Dibuat aja dengan “touch lampu.txt”

      Reply
      • wahyu zevi August 26, 2016

        Maksudnya gan ?buat data bagaimana? saya kurang paham

        ada medsos buat diskusi mas ?

        terimakasih

        Reply
        • hanangpriambodo August 28, 2016

          Telegram ada gan?

          Reply
          • Ivan January 8, 2019

            Boleh join dong bang , aku juga masih newbie nih , pengen belajar dan sharing” tentang Raspberry Pi

  • Afrian October 25, 2016

    Maaf gan mau nanya

    stau sya PIN GPIO Raspi sangat sensitif apa tidak apa dberi tegangan melebihi 3,3 V??
    di rangkaiannya kok tdk ad hambatan rangkaian ( cth resistor) ?

    Reply
    • hanangpriambodo October 28, 2016

      Setahu saya gpp gan.. karna dirangkaian ini GPIO sebagai Output yang menuju ke relay. Mungkin beda kalau GPIO sebagai input atau outputnya ke sensor yang sensitif arus dan tegangan.

      Reply
  • fiqiana November 2, 2016

    gan, mau tanya cara pasang lampu ke relay. ada tutorialnya?

    Reply
    • hanangpriambodo November 3, 2016

      wah belum buat saya gan… tapi gampang kok gan… seperti memasang saklar(Stop contact), biasanya di 1 relay ada 3 intput untuk voltage 220v. tipe relaynya seperti kang?

      Reply
  • Agung November 3, 2016

    gan ada konta ny ga buat tanya tanya, newbie ni soal ny hehe

    Reply
    • hanangpriambodo November 3, 2016

      ada telegram atau line gan ?

      Reply
  • ferdi January 7, 2019

    lampu.txt share please bro

    Reply
  • Ivan January 8, 2019

    ada kang , aku join dong masih pengen belajar , sharing” tentang Raspberry pi

    Reply
  • CAca April 16, 2019

    kaaa mau tanyaa, untuk rangkaiannya seperti apa yaaa?terimakasihhhh

    Reply
    • hanangpriambodo August 15, 2019

      seperti yang di gambar caca…

      Reply
  • Fian October 16, 2019

    Bang bisa nanya-nanya nggak?ane newbie nih,masih ngeraba2,pengen belajar,ada kontak yang bisa di hubungi ngak

    Reply
  • erereRere Rezki Aprianggi Mulyana November 18, 2019

    assalamu’alaikum kak boleh minta kontaknya? saya mau nanya tentang project ini? plis respond kak

    Reply

Leave a Reply