Kisah Dua Sejoli: Arduino & Python

29
Kisah Dua Sejoli: Arduino + Python Ridwan Fadjar Septian Ilmu Komputer 2009 / 0901939 @Sharing Session #2 POSS UPI Desember 2014

Transcript of Kisah Dua Sejoli: Arduino & Python

Page 1: Kisah Dua Sejoli: Arduino & Python

Kisah Dua Sejoli: Arduino + Python

Ridwan Fadjar SeptianIlmu Komputer 2009 / 0901939@Sharing Session #2 POSS UPIDesember 2014

Page 2: Kisah Dua Sejoli: Arduino & Python

Kisah Dua Sejoli: Apa itu Arduino

Page 3: Kisah Dua Sejoli: Arduino & Python

Apa itu Arduino

● Sebuah mikrokontroler yang memudahkan kita untuk belajar mikrokontroler

● Ditemukan dan didirikan oleh Massimo Banzi dan David Curtialles

● Merupakan Open Source Hardware

● Memiliki IDE sendiri yang dinamakan Arduino IDE

● File yang di-upload kepada Arduino memiliki sintaks mirip C dengan ekstensi file .ino

● Memiliki perangkat tambahan yang dinamakan shield. Ada berbagai shield yang dapat digunakan seperti Ethernet Shield, GSM Shield, Motor Shield, Breadboard Shield, dan lainnya

Page 4: Kisah Dua Sejoli: Arduino & Python

Apa itu Arduino

● Memiliki tombol reset untuk mengosongkan program yang telah di-upload

● Chip yang digunakan umumnya adalah Atmel Mega

● Mempunyai pin untuk membaca input analog dan output analog

● Mempunyai pin untuk membaca input digital dan output digital

● Untuk versi Arduino UNO, dapat mengalirkan listrik sebesar 5V dan 3,5 V

● Terdapat macam versi seperti UNO, Mega, Leonardo, Lily, Mini, Esplora, dan lainnya

Page 5: Kisah Dua Sejoli: Arduino & Python

Kisah Dua Sejoli: Python dan Arduino?

Page 6: Kisah Dua Sejoli: Arduino & Python

Python dan Arduino?

● Berkomunikasi antara Arduino dengan aplikasi Python menggunakan library PySerial

● Dengan menggunakan PySerial, Anda dapat mengendalikan perangkat berbasis Arduino melalui aplikasi desktop atau console yang ditulis dengan Python

● Data yang dikirim dari Arduino melalui mekanisme komunikasi serial

Page 7: Kisah Dua Sejoli: Arduino & Python

Kisah Dua Sejoli: Hello Serial

Page 8: Kisah Dua Sejoli: Arduino & Python

Hello Serial – skema breadboard

Page 9: Kisah Dua Sejoli: Arduino & Python

Hello Serial – hello_serial.py

import serial

arduinoData = serial.Serial('/dev/ttyACM1', 9600)

while True: myData = arduinoData.readline().strip() print myData.decode('utf-8')

Page 10: Kisah Dua Sejoli: Arduino & Python

Hello Serial – hello_serial.ino

int ledPin = 13;

void setup(){ pinMode(ledPin, OUTPUT); Serial.begin(9600);}

void loop(){ Serial.println("LED is on !!!"); digitalWrite(ledPin, HIGH); delay(1000); Serial.println("LED is off !!!"); digitalWrite(ledPin, LOW); delay(100);}

Page 11: Kisah Dua Sejoli: Arduino & Python

Kisah Dua Sejoli: Serial Send

Page 12: Kisah Dua Sejoli: Arduino & Python

Serial Send – skema breadboard

Page 13: Kisah Dua Sejoli: Arduino & Python

Hello Serial – serial_send.py

import serial

arduinoData = serial.Serial('/dev/ttyACM1', 9600)

while True: myData = raw_input('Kirimkan perintah (1/0): ') if myData == "1": arduinoData.write(b'1') elif myData == "0": arduinoData.write(b'0')

Page 14: Kisah Dua Sejoli: Arduino & Python

Hello Serial – serial_send.ino

int ledPin = 13;char myData = 0;

void setup(){ pinMode(ledPin, OUTPUT); Serial.begin(9600);}

void loop(){ myData = int(Serial.read()); if (myData == '1'){ Serial.println("LED is on !!!"); digitalWrite(ledPin, HIGH); } else if (myData == '0'){ Serial.println("LED is off !!!"); digitalWrite(ledPin, LOW); }}

Page 15: Kisah Dua Sejoli: Arduino & Python

Kisah Dua Sejoli: Tombol LED

Page 16: Kisah Dua Sejoli: Arduino & Python

Tombol LED – skema breadboard

Page 17: Kisah Dua Sejoli: Arduino & Python

Tombol LED – tombol_led.py

import Tkinterimport serial

arduinoData = serial.Serial('/dev/ttyACM0', 9600)

def LED_Switch1(): arduinoData.write('H,13')

def LED_Switch2(): arduinoData.write('H,12')

def LED_Switch3(): arduinoData.write('H,11') …....................................................................................

Page 18: Kisah Dua Sejoli: Arduino & Python

Tombol LED – tombol_led.py…........................................................................................

TombolLed = Tkinter.Tk()

# mendefinisikan button :Dtombol1 = Tkinter.Button(TombolLed, text="LED - 1", command=LED_Switch1)tombol2 = Tkinter.Button(TombolLed, text="LED - 2", command=LED_Switch2) tombol3 = Tkinter.Button(TombolLed, text="LED - 3", command=LED_Switch3)

# menentukan memasang button ke widget BelajarButton

tombol1.pack()tombol2.pack()tombol3.pack()…........................................................................................

Page 19: Kisah Dua Sejoli: Arduino & Python

Tombol LED – tombol_led.py…........................................................................................

# mengatur tampilan widget BelajarButtonTombolLed.title("Tombol LED dengan Tkinter")TombolLed.geometry("300x100")

# menjalankan aplikasiTombolLed.mainloop()

Page 20: Kisah Dua Sejoli: Arduino & Python

Tombol LED – tombol_led.ino

long int value = 0;int ledPin1 = 13;int ledPin2 = 12;int ledPin3 = 11;int ledPin1State = -1;int ledPin2State = -1;int ledPin3State = -1;

long int tempValue = 0;

void setup(){ Serial.begin(9600); pinMode(ledPin1, OUTPUT); pinMode(ledPin2, OUTPUT); pinMode(ledPin3, OUTPUT); }

void loop(){ if (Serial.available()) { if (Serial.read() == 'H') { value = Serial.parseInt(); } Serial.println(value); …..................................... }}

Lanjut Kesana

Page 21: Kisah Dua Sejoli: Arduino & Python

Tombol LED – tombol_led.ino

if (value == 13){ ledPin1State *= -1; } else if (value == 12){ ledPin2State *= -1; } else if (value == 11){ ledPin3State *= -1; } }

else { if (ledPin1State == -1){ digitalWrite(ledPin1, LOW); } else if (ledPin1State = 1){ digitalWrite(ledPin1, HIGH); } if (ledPin2State == -1){ digitalWrite(ledPin2, LOW); } else if (ledPin2State = 1){ digitalWrite(ledPin2, HIGH); } if (ledPin3State == -1){ digitalWrite(ledPin3, LOW); } else if (ledPin3State = 1){ digitalWrite(ledPin3, HIGH); } }}

Lanjut Kesana

Page 22: Kisah Dua Sejoli: Arduino & Python

Kisah Dua Sejoli: Circle Blue

Page 23: Kisah Dua Sejoli: Arduino & Python

Circle Blue – circle_blue.py

Page 24: Kisah Dua Sejoli: Arduino & Python

Circle Blue – circle_blue.py

from Tkinter import *from time import *import serial

arduinoData = serial.Serial('/dev/ttyACM0', 9600)master = Tk()

canvas = Canvas(master, width = 550, height = 550)canvas.pack()

center_x = 275center_y = 275circle_size = 50

canvas.create_oval( center_x-circle_size, center_y-circle_size, center_x+circle_size, center_y+circle_size,fill = "blue", tags = "circle1")

…..........................................................................................

Page 25: Kisah Dua Sejoli: Arduino & Python

Circle Blue – circle_blue.py

….....................................................................................................

def resize_circle_blue(): global circle_size global canvas while True: myData = arduinoData.readline().strip() circle_size = int(myData) print circle_size canvas.delete('circle1') canvas.create_oval( center_x-circle_size, center_y-circle_size, center_x+circle_size, center_y+circle_size,fill = "blue", tags = "circle1") canvas.update() sleep(0.001) master.after(100, resize_circle_blue)master.mainloop()

Page 26: Kisah Dua Sejoli: Arduino & Python

Circle Blue – circle_blue.ino

int AnalogPin = A0;

void setup(){ Serial.begin(9600);}

void loop(){ int value = analogRead(AnalogPin) / 4; Serial.print(value); Serial.print("\n"); delay(100);}

Page 27: Kisah Dua Sejoli: Arduino & Python

Kisah Dua Sejoli: Cerita Akhir

Page 28: Kisah Dua Sejoli: Arduino & Python

Kesimpulan

● Python dapat digunakan untuk membuat graphical user interface dari sebuah aplikasi berbasis Arduino

● PySerial merupakan salah satu library yang dapat digunakan untuk berkomunikasi dengan mikrokontroler

● Dengan menggunakan PySerial, Anda dapat mempelajari mikrokontroler beserta pengembangan aplikasi untuk sisi desktop

Page 29: Kisah Dua Sejoli: Arduino & Python

Referensi

● Arduino Documentation● Tuts Plus – Arduino● AdaFruit Learning System● PySerial● Python Documentation

● Anda juga dapat bergabung di Facebook bersama grup Arduino Indonesia (https://www.facebook.com/groups/arduino.indonesia/)