Kisah Dua Sejoli: 
Arduino + Python 
Ridwan Fadjar Septian 
Ilmu Komputer 2009 / 0901939 
@Sharing Session #2 POSS UPI 
Desember 2014
Kisah Dua Sejoli: 
Apa itu Arduino
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
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
Kisah Dua Sejoli: 
Python dan Arduino?
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
Kisah Dua Sejoli: 
Hello Serial
Hello Serial – skema breadboard
Hello Serial – hello_serial.py 
import serial 
arduinoData = serial.Serial('/dev/ttyACM1', 9600) 
while True: 
myData = arduinoData.readline().strip() 
print myData.decode('utf-8')
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); 
}
Kisah Dua Sejoli: 
Serial Send
Serial Send – skema breadboard
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')
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); 
} 
}
Kisah Dua Sejoli: 
Tombol LED
Tombol LED – skema breadboard
Tombol LED – tombol_led.py 
import Tkinter 
import 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') 
…....................................................................................
Tombol LED – tombol_led.py 
…........................................................................................ 
TombolLed = Tkinter.Tk() 
# mendefinisikan button :D 
tombol1 = 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() 
…........................................................................................
Tombol LED – tombol_led.py 
…........................................................................................ 
# mengatur tampilan widget BelajarButton 
TombolLed.title("Tombol LED dengan Tkinter") 
TombolLed.geometry("300x100") 
# menjalankan aplikasi 
TombolLed.mainloop()
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
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
Kisah Dua Sejoli: 
Circle Blue
Circle Blue – circle_blue.py
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 = 275 
center_y = 275 
circle_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") 
…..........................................................................................
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()
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); 
}
Kisah Dua Sejoli: 
Cerita Akhir
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
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/)

Kisah Dua Sejoli: Arduino & Python

  • 1.
    Kisah Dua Sejoli: Arduino + Python Ridwan Fadjar Septian Ilmu Komputer 2009 / 0901939 @Sharing Session #2 POSS UPI Desember 2014
  • 2.
    Kisah Dua Sejoli: Apa itu Arduino
  • 3.
    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
  • 4.
    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
  • 5.
    Kisah Dua Sejoli: Python dan Arduino?
  • 6.
    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
  • 7.
    Kisah Dua Sejoli: Hello Serial
  • 8.
    Hello Serial –skema breadboard
  • 9.
    Hello Serial –hello_serial.py import serial arduinoData = serial.Serial('/dev/ttyACM1', 9600) while True: myData = arduinoData.readline().strip() print myData.decode('utf-8')
  • 10.
    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); }
  • 11.
    Kisah Dua Sejoli: Serial Send
  • 12.
    Serial Send –skema breadboard
  • 13.
    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')
  • 14.
    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); } }
  • 15.
    Kisah Dua Sejoli: Tombol LED
  • 16.
    Tombol LED –skema breadboard
  • 17.
    Tombol LED –tombol_led.py import Tkinter import 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') …....................................................................................
  • 18.
    Tombol LED –tombol_led.py …........................................................................................ TombolLed = Tkinter.Tk() # mendefinisikan button :D tombol1 = 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() …........................................................................................
  • 19.
    Tombol LED –tombol_led.py …........................................................................................ # mengatur tampilan widget BelajarButton TombolLed.title("Tombol LED dengan Tkinter") TombolLed.geometry("300x100") # menjalankan aplikasi TombolLed.mainloop()
  • 20.
    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
  • 21.
    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
  • 22.
    Kisah Dua Sejoli: Circle Blue
  • 23.
    Circle Blue –circle_blue.py
  • 24.
    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 = 275 center_y = 275 circle_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") …..........................................................................................
  • 25.
    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()
  • 26.
    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); }
  • 27.
    Kisah Dua Sejoli: Cerita Akhir
  • 28.
    Kesimpulan â—Ź Pythondapat 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
  • 29.
    Referensi ● ArduinoDocumentation ● 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/)