Reading Requirement:

Pada tutorial ini akan menjelaskan cara menghubungkan raspi ke Geeknesia, 


Siapkan alat dan bahan yang diperlukan:

  • Raspberry Pi.
  • SD Card.
  • Keyboard.
  • Mouse.
  • Monitor.
  • Kabel Jumper.
  • Resistor 220 ohm.
  • Led.

Gambar Raspberry Pi 2 Pinout.


Raspberry Pi yang digunakan pada tutorial ini adalah Raspberry Pi 2 , jika anda menggunakan Raspberry tipe lain pun bisa.

Untuk pengerjaan ikuti tahap-tahap berikut:


Tahap 1

Pastikan Raspberry anda sudah terinstall OS, pada tutorial ini menggunakan OS Raspbian Jessie bisa juga menggunakan OS lain yang anda pakai, untuk cara menginstall OS Raspberry bisa klik disini.


Tahap 2

Pastikan anda sudah membuat ProjectGateway dan Device pada akun Geeknesia anda.


Tahap 3

Rangkailah Led sebagai output ke pin 7 (GPIO4) Raspberry Pi, dengan resistor 220ohm dihubungkan seri antara pin Gnd Led dan pin Gnd Raspberry Pi.


Tahap 4

Install GPIO library ikuti link ini http://www.raspberrypi-spy.co.uk/2012/05/install-rpi-gpio-python-library/, setelah GPIO Library terinstall kemudian install MQTT Library sebagai protokol penghubung antara Raspberry dan  Geeknesia.

 

Untuk install MQTT Library masuk ke Terminal dan ketik command seperti di bawah ini:

$ pip install paho-mqtt

 

Untuk melakukan install library harus melalui Terminal.


Tahap 5

Buka pemrograman menggunakan Python 2.7 


ini adalah tampilan awal screen python , kemudian klik New File untuk membuat code baru.


Tahap 6

Buatlah code baru pada blank screen seperti gambar di bawah ini:


Code    

import paho.mqtt.client as paho, os, urlparse, time
import RPi.GPIO as GPIO
import time

# Define event callbacks
def on_connect(mosq, obj, rc):
	print("rc: " + str(rc))
def on_message(mosq, obj, msg):
	print(msg.topic + " " + str(msg.qos) + " " + str(msg.payload))
def on_publish(mosq, obj, mid):
	print("mid: " + str(mid))
def on_subscribe(mosq, obj, mid, granted_qos):
	print("Subscribed: " + str(mid) + " " + str(granted_qos))
def on_log(mosq, obj, level, string):
	print(string)

mqttc = paho.Client()

mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish

# Parse CLOUDMQTT_URL (or callback to localhost)
url_str = os.environ.get('geeknesia.com', 'mqtt://USERNAME:PASSWORD@geeknesia.com:1883') #Insert your USERNAME and your PASSWORD 
url = urlparse.urlparse(url_str)

# Connect
mqttc.username_pw_set(url.username, url.password)
mqttc.connect(url.hostname, url.port)

def blink(pin):
	mqttc.publish("iot/live","DEVICE_ID")
	GPIO.output(pin,GPIO.HIGH)
	mqttc.publish("iot/data",'{"code":"USERNAME:PASSWORD","attributes":{"Tes":"1"}}') #Insert your USERNAME and your PASSWORD 
	time.sleep(1)
	GPIO.output(pin,GPIO.LOW)
	mqttc.publish("iot/data",'{"code":"USERNAME:PASSWORD","attributes":{"Tes":"2"}}') #Insert your USERNAME and your PASSWORD 
	time.sleep(1)
	GPIO.output(pin,GPIO.HIGH)
	mqttc.publish("iot/data",'{"code":"USERNAME:PASSWORD","attributes":{"Tes":"3"}}') #Insert your USERNAME and your PASSWORD 
	time.sleep(1)
	GPIO.output(pin,GPIO.LOW)
	mqttc.publish("iot/data",'{"code":"USERNAME:PASSWORD","attributes":{"Tes":"4"}}') #Insert your USERNAME and your PASSWORD 
	time.sleep(1)
	return

GPIO.setmode(GPIO.BOARD)

GPIO.setup(7,GPIO.OUTPUT)

for i in range(0,10000):
	blink(7)
GPIO.cleanup()

     

Di atas adalah contoh code sederhana, menggunakan 1 buah led yang dikontrol pada pin 7 (GPIO4) Raspberry Pi dengan cara kerja blinking dengan ketentuan pada bagian code di bawah ini:

 for i in range(0,10000):
 blink(7)

Led akan blinking sebanyak 10000 kali, dan akan mengirimkan data ke Geeknesia sesuai code yang telah dibuat.


Tahap 7 

Setelah pembuatan code selesai , untuk mencobanya buka halaman Geeknesia dan masuk ke project yang telah anda buat sebelumnya.

kemudian klik run pada toolbar software python.


Jika data berhasil terkirim maka tampilan pada project Geeknesia anda akan seperti di bawah ini:

Nilai dari Current Output akan berubah ketika Led blink High dan Led blink Low, sesuai code yang telah dibuat.


Ini adalah gambar Led pada saat blinking. 


Catatan: Pastikan attributes di detail Devices sudah anda sesuaikan dengan yang dibuat pada code.