Friday 18 September 2015

Menghitung Resistor untuk LED

LED memiliki voltage dan  wattage, berdasarkan salah satu spesifikasi perusahaan LED, untuk LED 5mm Super Bright Red adalah:

Peak Wavelength 660nm,           I = 20mA 
Dominant Wavelength 640nm,   I = 20 mA
Spectral Line Half-width 20nm, I = 20mA
Capacitance 45pF,                      V=0, f = 1 MHz
Foreward Voltage                       1,85V - 2,5V, I = 20 mA
Reverse Current                          max 10 uA, V=5V


Dan Rangkaiannya adalah seperti ini:


Vs adalah power dari pin 3,3v
Vf adalah Voltage dari LED (LED datasheet) 1.8V - 2.5V
i adalah arus listrik (LED datasheet) 20mA


LED ini menggunakan 1,85V - 2,5V, pada I = 20mA.
Sedangkan pin pada RPi menyalurkan 3,3V.

Menggunakan hukum Ohm yaitu V= I.R

V disini adalah voltage pada RPi (3,3v) - voltage pada LED

Untuk Vmin LED adalah 1,85V:
V=3,3 - 1,85
V=1,45V

untuk Vmax 2.5V
V=3.3 - 2.5
V=0.8V

dan I yang akan digunakan adalah 20mA / 0.02A

jadi 
Rvmin = V/I
Rvmin = 1,45/0.2
Rvmin =7.25 ohm

Rvmax = 0.8/0.2
Rvmax = 4 ohm

Dan power yang digunakan pada LED ini adalah:

P=iVmin
P= 0.2 * 1.85
P=0.37 watt

P=iVmax
P=0.2 * 2.5
P=0.5 watt

untuk mengetahui wattage pada resistor:

P=iVresistor
Vs-Vf-Vresistor =0
Vresistor = Vs-Vfmin
Vresistor = 3.3 - 1.8
Vresistor = 1.5v

Vs-Vf-Vresistor =0
Vresistor = Vs-Vfmax
Vresistor = 3.3 - 2.5
Vresistor = 0.8v

Pvmin = i V
P = 0.02 * 1.5
P = 0.03 watt

P = i V
P = 0.02 * 0.8
P = 0.016 watt


Wednesday 16 September 2015

Rpi Input dan Output dengan Python

Keunggulan scripting dengan python dibanding dengan bash atau yang lain, kode-kode lebih mudah ditulis dan dibaca, dan juga Python menyediakan module-module yang beragam, sehingga untuk melakukan sesuatu yang komplek dapat dilakukan dengan mudah. Kekurangannya dengan python adalah tidak bisa realtime, maksudnya, penggunaan RPi tidak hanya untuk python saja, sehingga python tidak menjadi prioritas utama dalam menjalankan program, dan python merupakan script yang harus dibaca dan diterjemahkan kedalam bahasa mesin setiap kita menjalankan program python. Jangan terlalu terintimidasi oleh realtime disini, delay yang terjadi juga tidak lama, untuk melakukan projek yang toleransi waktu satuan detik keterlambatan dan alat-alat yang tingkat kepresisiannya tidak tinggi, kita masih bisa menggunakan python.


Bila kita ingin membuat sesuatu yang tidak perlu realtime, dan melakukan scripting dengan mudah, maka python adalah pilihan yang terbaik. 

Sebelum kita melakukan apa-apa dengan python, kita test dahulu Python GPIO module, apakah telah terinstall apa belum, dengan cara:
  1. Pada command line atau terminal kita tulis:
    'sudo python'
  2. Setelah python muncul, kita import module GPIO dengan:
    import RPi.GPIO as gpio
  3. Bila tidak terjadi error, maka semuanya baik-baik saja.

Bila mendapatkan error karena tidak adanya module GPIO, kita harus install modulnya terlebih dahulu. Kita keluar dahulu dari python dengan menggunakan perintah 'exit()', lalu kita masuk ke command line lagi. Kita update terlebih dahulu software RPi kita dengan :

'sudo apt-get update'

lalu kita install module RPi GPIO nya:

'sudo apt-get install python-rpi.gpio'


dan kemudian coba lagi masuk ke python, lalu import GPIO lagi. Bila tidak ada error maka semuanya baik-baik saja.

Kita menggunakan nomor-nomor pin sesuai dengan apa yang telah disediakan atau didesign oleh pabrik. Kita bisa juga menggunakan standar yang lain dengan menggunakan GPIO.setmode(GPIO.BOARD). Mode ini adalah penamaan pin sesuai dengan urutan pin pada RPi board, jadi pin pertama adalah GPIO1, kedua adalah GPIO2 dan seterusnya.  



sehingga script kita menjadi:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)

Kita akan mengguakan pin dengan standar pabrik saja yaitu, GPIO.BCM, dimana pin-pin akan menggunakan nama pin standar, yaitu GPIO25 ada pada pin nomor 22.

Kita masih menggunakan rangkaian LED seperti yang sebelumnya
GPIO25 tersambung ke anoda LED (boleh menggunakan resistor boleh tidak (sebaiknya menggunakan resistor). LED masih bisa bertahan, tapi sebaiknya menggunakan resistor 10 ohm sampai 10k ohm tidak masalah). Dan Katoda LED tersambung dengan ground.
Script:

  1. Bila kita belum masuk ke python, kita buka dahulu pythonnya dengan perintah
    'sudo python'.
  2. Lalu kita tulis : import RPi.GPIO as GPIO
    kita mengimport module GPIO
  3. GPIO.setmode(GPIO.BCM) 
    kita menset pin-pin pada RPi seperti apa adanya.
  4. GPIO.setup(25,GPIO.OUT)
    kita menset GPIO25 untuk output
  5. GPIO.output(25,1)
    Aktifkan output GPIO25 (LED menyala)
  6. GPIO.output(25,0)
    Nonaktifkan output GPIO25 (LED padam)



Untuk membuat input dengan tombol, dan indikator tombol ditekan dengan LED, jadi bila kita menekan tombol, LED (dalam keadaan mati). Kita gunakan script dengan membuat file python terlebih dahulu.

Komponen yang akan kita gunakan adalah:

  1. RPi
  2. Breadboard
  3. 1x LED
  4. 2x Resistor (10 -100 ohm dan 10k ohm).
  5. 1x Push button
  6. Beberapa kabel jumper ('male to female' dan 'male to male')

Rangkaian pada breadboard:
  1. Hubungkan RPi pin 3,3v ke breadboard (+) atau langsung ke push button, bila jumper masuk ke positif (+) sambungkan lagi dengan jumper dari (+) ke kaki push button, dan ground ke breadboard (-).
  2. Hubungkan RPi GPIO25 ke breadboard, terhubung dengan LED anoda, dan LED katoda terhubung kesalahsatu ujung resistor (10 ohm - 100 ohm) dan ujung yang lain terhubung dengan ground.
  3. Lalu tempelkan push button ditengah breadboard dan salah satu kakinya terhubung dengan resistor (10k ohm), kaki resistor yang lain terhubung dengan ground. 
  4. Hubungkan RPi GPIO24 ke kaki push button yang terhubung dengan resistor.


Pada defaut, pertama kali masuk direktori kita dibawa ke direktori /home/pi, pada direktori tersebut buat sebuah file kosong dengan nama 'tombolOnDanOff.py', dengan perintah pada command line:
'touch tombolOnDanOff.py'
lalu kita gunakan text editor nano untuk membuat script-nya dengan perintah:
'nano tombolOnDanOff.py'
lalu ketikan (Pada python spasi untuk blok-blok (seperti blok if ) merupakan syarat, jadi pastikan menekan tombol Tab jangan kurang atau lebih pada setiap bloknya) :
  1. import RPi.GPIO as GPIO
  2. import time

  3. GPIO.setmode (GPIO.BCM)
  4. GPIO.setup (25,GPIO.OUT)
  5. GPIO.setup (24,GPIO.IN)

  6. GPIO.output(25,GPIO.LOW)
  7. LEDState=False

  8. while True:
  9. inputButton = GPIO.input(24)
  10. if (inputButton == True):
  11. if (LEDState == False):
  12. GPIO.output (25, GPIO.HIGH)
  13. LEDState = True
  14. print ('push button ditekan, LED menyala ')
  15. time.sleep(0.2)
  16. else :
  17. GPIO.output (25, GPIO.LOW)
  18. LEDState = False
  19. print ('push button ditekan, LED mati ')
  20. time.sleep(0.2)
atau bisa didownload disini 

Yang terjadi pada script diatas adalah:
  1. baris 1, kita mengimport module GPIO untuk RPi dengan nama panggilan GPIO.
  2. baris 2, kita mengimport module waktu (time).
  3. baris 4, setting peta pin RPi standar pabrik, bukan berdasarkan nomor pin.
  4. baris 5, mengsetting GPIO25 sebagai output.
  5. baris 6, mengsetting GPIO24 sebagai input.
  6. baris 8, mengsetting GPIO24 dalam keadaan mati.
  7. baris 9, boolean untuk keadaan LED mati.
  8. baris 11, baris ini akan menbuat blok looping terus menerus, karena kondisi akan selalu True (kita tandai ini adalah awal dari blok 1).
  9. baris 12, membuat variable inputButton yang merupakan steatment GPIO.input(24) 
  10. baris 13, jika adanya input dari push button maka inputButton akan bernilai True, dan blok ini akan dijalankan. Awal blok 2 yang merupakan bagian dari blok 1)
  11. baris 14, Bila LEDState merupakan False (LED mati), blok ini yang akan dijalankan. Awal blok 3
  12. baris 15, set GPIO25 dengan nilai HIGH, sehingga LED mendapakan aliran listrik.
  13. baris 16, mengganti variable LEDState menjadi True (karena LED menyala).
  14. baris 17, mencetak string.
  15. baris 18, tidak menlakukan apa-apa selama 0,2 detik. Akhir dari blok 3.
  16. baris 19, bila nilai LEDState bukan nilai dari blok if diatasnya. Awal blok 4.
  17. baris 20, menset GPIO25 menjadi LOW, sehingga LED akan mati.
  18. baris 21, menset variable LEDState menjadi False.
  19. baris 22, mencetak string.
  20. baris 23, tidak melakukan apa-apa selama 0.2 detik. Akhir dari blok 4
blok 1,dan blok 2 berakhir secara otomatis karena tidak ada perintah lagi dibawah baris 23.



Thursday 10 September 2015

Resistor 1/2 atau 1/4 watt?

Resistor ada beragam ukurannya, ada ukuran untuk tahanan, dan watt (wattage), untuk mengetahui watt(age) yang kita butuhkan, kita lihat dahulu penggunaanya, secara basik wattage pada resistor dapat dihitung dengan :

P=I*V

P : Wattage (w) 
I : Ampere (A)
r : Resistance (ohm)

Dan V = IR 

V = voltage
I = arus (ampere)
r = resistance (ohm) 

Jadi P=I2R

atau P=V/R

Sekarang kita lihat contoh rangkaian sebagai berikut:


Disini V =3,3V , dan R=100 ohm

sehingga P =3,32/100 = 0.1089 watt

untuk rangkaian diatas kita hanya memerlukan sebuah resistor yang ukurannya -+ 1/10 watt, dan kita bisa gunakan resistor 1/4 watt (0,25 watt).


Maksud Wattage pada resistor adalah resistor tersebut dapat menahan panas sampai watt tersebut, bila lebih dari itu, maka kemungkinan besar resistor akan terbakar.

Satuan-satuan watt adalah
Unit Symbol Nilai

Milliwatt
mW
1/1000 watt
10-3 W
Watt
W
1 watt

Kilowatt
kW
1.000 watt
103 W
Megawatt
MW
1.000.000 watt
106 W





Tuesday 8 September 2015

Input dan output Raspberry Pi

Salah satu perbedaan antara RPi dan komputer linux adalah RPi memiliki GPIO (General Purpose Input and Output), yang bisa kita akses langsung menggunakan RPi. GPIO ini dapat mengkontrol output ke komponen elektronik seperti LED, motor (jangan memasangkan motor langsung ke GPIO RPi, akan menyebabkan RPi terbakar, gunakan relay), dan lain-lain, dan untuk Input seperti tombol, sensor, motion, proximity dan lain-lain. Untuk menbaca sensor analog seperti temperatur tidak dapat digunakan langsung. Kita harus mengkonversikan dahulu ke digital, menggunakan ADC (Analog to Digital Converter), ada beberapa model ADC seperti ADS1015 12-BIT ADC - 4 CHANNEL WITH PROGRAMMABLE GAIN AMPLIFIER.
Dengan adanya GPIO ini kita bisa menbuat program yang bisa membaca input dan mengkontrol output secara general. Berbeda dengan mikrokontroler yang lain (yang juga dimiliki oleh RPi), RPi memiliki input dan output tambahan ke keyboard, mouse, monitor, dan juga tidak ketinggalan ethernet (kita bisa menggunakan ethernet sebagai input dan output). Semuanya tergabung jadi satu. Dan masih ada lagi keuntungan yang lain dalam pembuatan projek elektronik dengan RPi, seperti membaca data pada sistem file Linux, misalnya kita memiliki sensor analog, data dari sensor analog tersebut dapat disimpan dalam file (biasanya log file), dan data-data tersebut dapat kita tampilkan dengan grafik kapanpun yang kita mau. 

Banyak bahasa program juga bisa kita gunakan (Linux) seperti linux shell, python, C, java, perl, dan lain-lain.

Untuk menggunakan GPIO ini kita memerlukan tambahan alat, seperti:
  1. Solderless breadboard 
  2. LED
  3. Kable male to male jumper

  4. Kable male to female jumper 
  5. Pushbutton (tombol)
  6. Resistor 


RPi GPIO 



+ 5v
+ 5v
-
14
15
18
-
23
24
-
25
8
7
+ 3.3v
2
3
4
-
17
v1:21
v2:27
22
+ 3.3v
10
9
11
-

Ada perbedaan no pin pada RPi v1 dan RPi v2 pada pin 21(RPi v1) menjadi pin 27 (RPi v2). Untuk mengetahuinya kita gunakan terminal RPi atau di command line, dan ketik 'cat /proc/cpuinfo', jika disana tertulis revision 0002 atau 0003, berarti RPi v1, jika diatasnya berarti RPi v2.


(atas) RPi rev 2
(bawah) RPi rev 1


Contoh diatas adalah RPi ver 2 (000e (hex)).  Sedangkan untuk RPi 2 model A+ dan B+.





5v
+  5v

141518

2324

2587



12

162021
+ 3.3v234

172722+ 3.3v10911



56131926

Keterangan warna RPi dan RPi 2:
  • warna merah untuk power + 5v
  • warna orange untuk power + 3.3v
  • warna hitam untuk ground
  • warna putih untuk I/O berserta nomornya.
  • warna biru untuk ID EEPROM, (Jangan menggunakan pin-pin ini, jangan mencoba-coba menggunakannya, bila tidak tahu apa yang dilakukan ya)
Pin I2C digunakan berinteraksi antar chip. Dengan pin ini kita terkoneksi dengan beragam I2C chip dan module.

Untuk terminal terminal yang terkoneksi satu sama lain pada breadboard pada gambar dibawah ini, digambarkan dengan warna abu-abu tranparan.

Kita akan menggunakan command line untuk menyala atau mematikan output RPi GPIO pin dengan indikator LED. 

Yang kita butuhkan adalah:

  1. RPi
  2. Breadboard
  3. 1x Led
  4. Resistor 82 ohm atau 100 ohm, 1/8 watt atau 1/4 watt atau 1/2 watt (apa bedanya soal wattage? klik disini)
  5. Jumper




  1. Dengan mengunakan jumper male-to-female kita hubungkan pin 25 pada RPi ke breadboard.
  2. Gunakan jumper yang lain untuk menghubungkan ground ke breadboad sisi negatif (-).
  3. Pasang LED pada lubang yang lain (yang terhubung), pastikan polarisasi LED. LED katoda (-) dihubungkan dengan ground, dan anoda (+) dihubungkan dengan pin 25. Katoda adalah sisi yang panjang bila kita lihat kedalam LED (bukan kaki LED yang kita lihat), dan yang pendek adalah anoda.
    Dengan Resistor:
    Tanpa resistor:
    Led
  4. Lalu nyalakan RPi nya. Bila kita masuk ke dalam X window (yang tampilanya seperti window) kita klik 'Terminal', bila berada di command line, kita baik-baik saja.
  5. Untuk mengakses input dan output pin dari command line, kita harus sebagai user 'root', (super user). Untuk mengganti menjadi 'root' kita ketikan pada command line 'sudo su'. Super user memiliki akses kesemua fungsi dan file pada sistem. Dengan user ini kita dapat merusakan operation system dengan perintah tertentu. Hanya sedikit keamanan agar super user tidak merusakan sesuatu yang penting pada system. Tapi tidak usah khawatir, kita tetap bisa install ulang operating system RPi kita.
  6. Sebelum kita bisa mengaksek untuk menyalakan LED pada pin 25, kita harus membuat yang namanya userspace, agar pin dapat diakses dari luar Linux kernel. Dengan:

    echo 25 > /sys/class/gpio/export

    Perintah 'echo' membuat nomor pin (25) yang akan kita gunakan melalui file export, yang terletak di folder '/sys/class/gpio'. Dengan perintah diatas, kita dibuatkan folder baru yang bernama 'gpio25 di '/sys/class/gpio/gpio25'.
  7. Lalu kita masuk ke directori-nya dengan menggunakan perintah:

    cd /sys/class/gpio/gpio25

    Kita akan menggunakan direktori ini untuk mengkontrol pin 25.
  8. Lalu kita tulis perintah :

    echo out > direction

    Perintah 'direction' untuk menset pin ini menjadi sebuah input atau output, pada saat ini kita gunakan pin 25 untuk LED (output) sehingga perintah 'direction' out (echo out > direction), yang ditulis seperti diatas.
  9. Semuanya preparasi telah dilaksanakan, sekarang saatnya kita menyalakan LED dengan perintah:

    echo 1 > value

    dan untuk mematikannya:

    echo 0 > value
Untuk lebih jelasnya kita lihat video dibawah ini:




Pada saat kita mengkontrol pin RPi dengan output, pada kenyataanya kita membuat atau menuliskan sebuah file (virtual file) yang tidak ada pada RPi SD card, yang merupakan bagian dari virtual file system dari linux, untuk mempermudah akses. Dan bila kita membuat input, maka kita membaca dari sebuah virtual file tersebut.

Untuk membuat input dari sebuah tombol/pushbutton pada dasarnya sama saja seperti output, hanya saja dengan input kita tidak bisa melihat lansung, bila kita masukan input dari sebuah tombol, apakah RPi mendapatkan signal yang kita kirim. 

Yang kita butuhkan adalah:

  1. RPi
  2. Breadboard
  3. Push button
  4. Resistor 10K ohm
  5. jumper 


push button yang memiliki empat kaki, skemanya seperti ini:


Jadi kaki no.1 terhubung dengan kaki no.2, dan kaki no.3 terhubung dengan kaki no.4, dan ketika push button ditekan kaki no.1 dan no.2 akan terhubung dengan kaki no.3 dan no.4

Tidak harus menggunakan push button seperti diatas, bila tidak ada gunakan yang masih compatible, atau yang menggunakan push button dua kaki. Bila kita menggunakan push button dua kaki, kemungkinan akan ada masalah dengan pembacaan pada pin (bila tidak menggunakan resistor), kecuali kita hubungkan dengan membuat cabang dari push button 3,3v dengan resistor ke ground karena secara teori (dalam hal pembacaan digital input) pin harus terhubung dengan 3,3v atau ground. 

Kita pasangkan push button, resistor ke breadboard dan hubungkan dengan jumper ke pin RPi.

Peringatan: Jangan menghubungkan input push button ke pin 5v!. Menggunakan lebih dari 3,3v ke input pin dapat merusakan RPi. Selalu gunakan pin 3,3v untuk membuat input pin. 





Selanjutnya:
  1. tulis
    echo 25 > /sys/class/gpio/export
  2. masuk ke direktori gpio25 dengan
    cd /sys/class/gpio/gpio25
  3. kemudian, set direction pin nya menjadi input
    echo in > direction
  4. Sudah siap semua, kita tinggal tekan push button. Untuk melihat apakah input dari push button diterima oleh RPi pin, kita tulis
    cat value
  5. bila menghasilkan angka '0' (nol) maka pin tersebut terkoneksi ke ground, dan bila menghasilkan angka '1' (satu), pin menerima signal dari push button. Push button harus ditekan dan tahan, lalu tuliskan 'cat value' (push button masih ditahan) lalu enter (masih ditahan).
Bila RPi menolak permintaan kita, coba membuat perintah dengan user 'root', dengan cara, pada command line (atau Terminal di X window), bila belum sebagai root, ketik 'sudo su'. Indikator  kita telah menjadi root pada command line, akan tertulis 'root@raspberrypi:'.









Tuesday 1 September 2015

Scratch II

Stage yang berada disebelah kanan atas adalah untuk semua spite melakukan action dan berinteraksi. Seperti juga spite, stage dapat menggunakan script yang mengubah penampilan dan kebiasaan. Penggunaan koordinat pada stage berbeda dengan tampilan-tampilan layar yang biasa digunakan pada multimedia. Koordinat scracth menggunakan tampilan model matematika, dimana titik (0,0) adalah ditengah-tengah layar.


Untuk membuat animasi, kita bisa menggunakan scratch Klik icon bintang dengan kuas diatas sprite list (Membuat spite baru / Paint new sprite):

Lalu akan keluar window baru, Paint Editor. Lalu gambarlah sesuatu. Lalu pada tempat script ada tab yang bernama Costumes, Klik untuk memilih tab tersebut.

Pada tab tersebut akan terlihat gambar yang kita buat, kita bisa mengganti nama sprite, edit, delete (x) dan copy. Ganti nama sprite tersebut menjadi 'gbr'

Lalu kita copy sprite yang kita buat tadi, copian sprite ganti namanya menjadi 'gbr2', Lalu klik 'edit' pada sprite gbr2. Modifikasi gambar tersebut dan klik 'ok'.

Klik tab Script dan buat:



Dan ada satu tab lagi, yaitu 'sounds' prinsipnya masi sama dengan costumes. Kita bisa merekam atau mengambil suara dari file. 

Video :