Minggu, 15 Januari 2017

Pemrograman Python

 

Python adalah salah satu bahasa pemrograman komputer yang simpel dan mudah dibaca, penulis akan mengulas  dasar script Python, walaupun penulis jarang gunakan dalam kit, penulis coba mempelajarinya mengingat program python adalah bahasa resmi yang dipakai raspberry pi. Artikel ini diulas dengan langkah yang cukup sederhana.



Python merupakan bahasa pemrograman yang mudah digunakan (mudah untuk dibaca dan ditulis) dan dengan perangkat Raspberry yang telah diprogram python memungkinkan Sobat melakukan koneksi ke perangkat luar via GPIO
 
 

sintaks python sangat bersih, dengan penekanan pada pembacaan dan menggunakan kata kunci bahasa Inggris standar.

Sobat bisa menggunakan raspberry pi yang umumnya sudah disediakan bahasa python atau menggunakan komputer windows dengan melakukan instalasi download disini.

IDLE
Jika proses instalasi berhasil, kita buka program python melalui IDLE, yaitu lingkungan pengembangan Python. Disini penulis menggunaka windows. Buka IDLE dari Desktop atau aplikasi menu python dari lokasi instalasi sebelumnya

 

Dari IDLE kita akan melakukan REPL (Baca, Evaluasi, Print dan loop) yang merupakan prompt, Sobat dapat memasukkan perintah Python disini. Bisa mendapatkan output dari perintah yang langsung dicetak ke layar tanpa menggunakan print .
 

Berikut contoh sederhana pemrograman python, Sobat dapat menggunakan variabel (penyimpanan sementara) atau bahkan dapat menggunakannya perintah langsung seperti kalkulator. contoh: 

>>> 1 + 2 3 >>> name = "Sarah" 
>>> "Hello " + name 'Hello Sarah'
 

IDLE juga memiliki syntax highlighting untuk mendukung pelengkapan otomatis. Sobat dapat melihat kembali sejarah perintah yang Sobat sudah masukkan di REPL dengan Alt + P (sebelumnya) dan Alt + N (berikutnya). 

Penggunaan dasar Python 


Hello dunia dengan Python: 


 print("Hello world")
 

Indentation
Beberapa bahasa pemrograman menggunakan kurung kurawal { dan } untuk batas baris kode dalam satu tugas. Namun, Python tidak menggunakan kurung kurawal melainkan membutuhkan indentation pengganti kurawal. Misalnya for loop dalam Python:
 

 for i in range(10): print("Hello")
 

indentation yang diperlukan di sini. Sebuah baris kedua menjorok akan menjadi bagian dari loop, dan baris kedua tidak menjorok akan luar loop. Sebagai contoh:
 

for i in range(2):
    print("A")
    print("B")
 

Output:
 

A
B
A
B

 
Perbandingannya:
 

for i in range(2):
    print("A")
print("B")
 

Outputnya:
 

A
A
B

 

Variabel
Untuk menyimpan nilai ke variabel, seperti berikut: 


 name = "Bob" age = 15 

 
Catatan di sini penulis tidak menetapkan jenis untuk masing masing variabel-variabel ini, tapi variabel bersifat dinamis.
 

age = 15 age += 1 # increment age by 1 print(age)
 

Tanda hash adalah perintah komentar tambahan, tidak masuk dalam eksekusi program.
 

Komentar
Komentar diabaikan dalam program untuk Sobat yang ingin memberi catatan, dan dilambangkan dengan hash simbol #. Untuk komentar Multi-line sobat bisa menggunakan kutip tiga sepert berikut: 


 """ This is a very simple Python program that prints "Hello". That's all it does. """ print("Hello")
 

List
Python juga memiliki daftar (disebut array dalam beberapa bahasa) yang merupakan kumpulan dari data sejenis:
 

 numbers = [1, 2, 3]
 

Daftar ditandai dengan penggunaan tanda kurung siku [] dan setiap item dipisahkan dengan koma.
 

Iteration
Beberapa jenis data iterable, yang berarti Sobat dapat membuat daftar loop atas isi nilai. Misalnya:
 

 numbers = [1, 2, 3] for number in numbers: print(number)
 

Ini akan mengambil setiap item dalam daftar numbers dan outputnya menjadi:
 

 1 2 3 
 
Untuk memberi nama variabel sebaiknya sobat pilih nama yang mudah dimengerti sehingga kelak jika script sudah sangat banyak sobat bisa lebih membaca variabel. Contoh lain seperti berikut:
tipe data lain yang iterable, misalnya string:
 

dog_name = "BINGO" for char in dog_name: print(char)
 

loop ini berisi masing-masing karakter dan akan memiliki outpus sbb:
 

 B I N G O
 

RANGE
Tipe data integer tidak iterable dan mencoba untuk iterate akan menghasilkan kesalahan. Sebagai contoh:
 

for i in 3: print(i)
 

akan menghasilkan:
 

 TypeError: 'int' object is not iterable
 

Namun Sobat dapat membuat sebuah objek iterable menggunakan fungsi range sbb:
 

 for i in range(3): print(i)
 

range(5) berisi angka 0 , 1 , 2 , 3 dan 4 (total lima nomor termasuk 0). Untuk mendapatkan nomor 1 ke 5 menggunakan range(1, 6) .
 

LEN
Sobat dapat menggunakan fungsi seperti len untuk menemukan panjang string atau isi daftar dari variabel:
  

name="Jamie" print(len(name)) # 5 names = ["Bob", "Jane", "James", "Alice"] print(len(names)) # 4
 
IF, ELSE
Sobat dapat menggunakan pernyataan if untuk mengontrol aliran program:
 

name = "Joe" if len(name) > 3: print("Nice name,") print(name) else: print("That's a short name,") print(name)
 
Membuat File Python di IDLE
Untuk membuat file Python di IDLE, klik File > New File dan Sobat akan diberi window kosong. Window Ini adalah file kosong, bukan prompt Python. Sobat bisa menulis file Python di di window ini lalu simpan file, kemudian jalankan untuk melihat output di window lain.
Misalnya, di window baru, ketik:
 

n = 0 for i in range(1, 101): n += i print("The sum of the numbers 1 to 100 is:") print(n)
 
Kemudian simpan file ini ( File > Save atau Ctrl + S ) dan jalankan ( Run > Run Module atau tekan F5 ) dan Sobat akan melihat output di window Python. 

Mengeksekusi file Python dari Command Line
Sobat dapat menulis file Python dalam standar Editor seperti Vim, Nano atau Leafpad, dan menjalankannya sebagai script Python dari command line. Sobat bisa mengarahkan ke direktori file tersebut disimpan (Gunakan cd dan ls untuk melihat daftar) dan jalankan dengan python , misalnya python hello.py .Salam

Kamis, 29 Desember 2016

Menggunakan SPI raspberry PI

Serial Peripheral Interface ( SPI ) adalah spesifikasi antarmuka komunikasi serial yang bekerja secara sinkron yang digunakan untuk komunikasi jarak pendek, terutama dalam sistem embedded . Antarmuka ini dikembangkan oleh Motorola pada pertengahan 1980-an dan telah menjadi standar umum yang banyak dipakai device device  dikalangan industri elektronika. 

Bus SPI memiliki 4 sinyal utama, masing masing adalah

  • Master - Out / Slave - In (MOSI)
  • Master - In / Slave - Out (MISO)
  • Serial clock (SCLK)
  • Select Chip (CS) atau Slave Select (SS) 
Untuk bekerja dengan port SPI, akan ada master device dan slave device. Master device akan menggunakan jalur MOSI untuk mengirim data ke Slave device.Lalu slave device akan menggunakan jalur MISO untuk mengirim data ke master device. Sedangkan SCLK adalah clock untuk seberapa cepat data dikirim secara sinkron.


Master device umumnya hanya satu tapi slave device bisa berjumlah lebih dari satu.
Jika seandainya ada lebih dari satu slave maka port CS dipakai untuk memilih salah satu slave.



Berikut bentuk bagaimana signal master mencoba mengirim data ke slave begitupun sebaliknya


  Aplikasi  SPI

  • Pemori: Kartu SD, MMC, EEPROM, Flash
  • Sensor: Suhu dan Tekanan
  • Perangkat Kontrol: ADC, DAC, POTS digital, dan Codec Audio.
  • Lainnya: Mount Lensa Kamera, layar sentuh, LCD, RTC, pengontrol gim video, dll.

Untuk memanfaatkan Port SPI di raspberry pi  tidak bisa langsung digunakan, sobat perlu mengaktifkan (enable) terlebih dahulu spi port di header gpio:

  1. Jalankan sudo raspi-config.
  2. Gunakan panah bawah pilih  9 Advanced Options
  3. Panah bawah lagi pilih A6 SPI.
  4. Pilih yes untuk enable SPI
  5. Kemudian yes Pertanyaan Untuk loading kernel.
  6. Pindah ke panah kanan pilih tombol  <Finish>
  7. Pilih  yes untuk reboot
alt text

Dari gambar dibawah kita bisa melihat port port SPI di raspi. Demikian artikel SPI semoga bermanfaat.. :)





Apa itu PWM

PWM adalah teknik untuk mengendalikan lebar sinyal. Sinyal PWM ini dapat di aplikasikan untuk menggerakan motor stepper, sehingga kita mampu mengatur kecepatan putaran motor atau mengatur kecerahan lampu.



 


















Gambar dibawah menunjukkan sinyal segi empat yang lebarnya berbeda beda, saat kita mengatur lebar sinyal (kecil, sedang atau lebar) berarti kita telah melakukan modulasi lebar sinyal atau melakukan teknik PWM (Pulse width modulation)


























Sinyal PWM  selain dipakai untuk mengendalikan kecepatan putaran motor juga memungkinkan sobat untuk merubah rotasi maju atau mundur dengan kecepatan variabel.

Diagram dibawah menunjukkan bentuk sinyal dari PWM yang dikeluarkan oleh RaspberryPi. 

 





Setiap 1/500 detik, output PWM akan menghasilkan pulsa. Panjang pulsa ini mengontrol jumlah daya untuk motor stepper. Jika tidak ada pulsa sama sekali maka motor tidak akan berputar, jika pulsa pendek maka motorpun berputar perlahan. Jika pulsa aktif 10/20, maka motor akan menerima setengah  dan jika 18/20 maka hampir 90% daya diterima motor steper, 

 
Untuk memanfaatkan signal PWM sobat bisa memanfaatkan salah satu pin GPIO dari raspberry pi. Sobat hanya butuh satu kabel yang akan mengeluarkan signal PWM, Jika output PWM (gpio no 6) dipasangi lampu LED maka kita bisa mengatur kecerahan dari nyala lampu LED.




Untuk mempelajari lebih lanjut sobat bisa ke web sumbernya adafruit, disini menjelaskan cara mengontrol kecepatan dan mengendalikan arah putaran motor DC menggunakan raspi, bahasa pemrograman menggunakan Python dan chip L293D. Salam.