Catatan berikut ini adalah catatan yang menjelaskan cara membuat program mirroring serial pada Arduino. Tujuannya adalah membantu tutorial sebelumnya yaitu Tutorial cara komunikasi serial com port antara python dan arduino.
secara garis besar, fungsi dari program ini adalah menunggu ada inputan data dari komunikasi serial, lalu mengirim balik data tersebut melalui komunikasi serial yang sama (mirroring).
Kode Arduino nya adalah:
void setup() {
// initialize both serial ports:
Serial.begin(9600);
}
void loop() {
// read from port 0, send to port 0:
if (Serial.available()) {
int inByte = Serial.read();
Serial.write(inByte);
}
}
Cukup sederhana kan?!
Selamat mencatat!!
all that i have learned are written here....
Showing posts with label script. Show all posts
Showing posts with label script. Show all posts
Saturday, November 21, 2015
Wednesday, November 11, 2015
Cara parsing data menggunakan pyparsing library pada python
Catatan berikut
merupakan kelanjutan dari posting saya sebelumnya yaitu “cara mudah parsing data menggunakan python”. Catatan ini menjelaskan metode
lain parsing data dengan bahasa python yaitu dengan menggunakan
library pyparsing.
Sebelum mencoba
catatan ini, library pyparsing harus terlebih dulu terinstall di
pycharm (IDE) python. Jika belum, makan library tersebut harus
diinstal terlebih dahulu. Tutorial cara menginstall library python
pada pycharm akan saya bahas pada postingan selanjutnya.
Berikut adalah
contoh kode parsing menggunakan pyparsing library:
from pyparsing import *
data = '$LA52.125133215643,LN21.031048525561,T101115,W120013'
number = Word(nums+'.').setParseAction(lambda t: float(t[0]))
separator = Suppress(',')
latitude = Suppress('LA') + number
longitude = Suppress('LN') + number
tanggal = Suppress('T') + number
waktu = Suppress('W') + number
line = (Suppress('$')
+ latitude
+ separator
+ longitude
+separator
+tanggal
+separator
+waktu)
print line.parseString(data)
hasil yang akan
diperoleh dari eksekusi kode diatas adalah:
[52.125133215643,
21.031048525561, 101115.0, 120013.0]
catatan:
menurut saya, cara parsing menggunakan pyparsing lebih rumit
dibandingkan dengan cara mudah parsing yang pertama. Namun, semua
kembali ke fungsi dari program secara keseluruhan. Masing-masing
metode memiliki kelebihan dan kelemahan masing-masing dan bergantung
kepada seberapa kompleks program yang ingin kita buat.
Selamat mencatat!!
Tuesday, November 10, 2015
Cara mudah parsing data menggunakan python
catatan
kali ini akan menjelaskan bagaimana cara mudah untuk parsing data menggunakan
python. Parsing data adalah salah satu aktifitas pemrograman yang
paling sering digunakan untuk memilah-milah data informasi yang
dibutuhkan oleh pengguna.
Code
yang digunakan untuk parsing adalah sebagai berikut:
data
= '$,LA52.125133215643,LN21.031048525561,T101115,W120013'
head,
lat, lon, t, w = data.split(",")
print
(lat)
print
(lon)
print
(t)
print
(w)
copy
dan paste code diatas pada software python dan coba jalankan. Hasil
yang diperoleh adalah sebagai berikut:
LA52.125133215643
LN21.031048525561
T101115
W120013
Penjelasan
Data
yang digunakan pada contoh kali ini cukup sederhana yaitu:
'$,LA52.125133215643,LN21.031048525561,T101115,W120013'
data
ini berisikan data posisi yaitu latitude (LA), longitude (LN),
tanggal (T), dan waktu (W).
pada
program python yang akan dibuat, data-data tersebut akan dipisah
kedalam variabel yang berbeda sehingga dapat dengan mudah diakses /
diolah lebih lanjut. Variable-variable tersebut adalah lat, lon, t,
dan w.
Selamat
Mencatat!!!
Sunday, November 8, 2015
Tutorial dan cara menambahkan widget pelacak IP address pada blogspot
Catatan kali ini berisi tentang tutorial bagaimana cara menambahkan
widget pelacak IP address pengunjung pada widget blogspot yang kita miliki.
Fungsi ini sangat membantu dalam mengetahui IP pengunjung yang datang ke blog.
Fungsi ini tergolong fungsi minor, tapi dapat mempercantik tampilan blog anda.
langkah-langkah menambahkan widget pelacak IP tersebut
adalah sebagai berikut:
1. Masuk ke menu layout pada blogspot, lalu klik “add a gadget”
2. akan muncul jendela baru seperti dibawah ini. pilih gadget HTML/JavaScript
2. akan muncul jendela baru seperti dibawah ini. pilih gadget HTML/JavaScript
| Jendela penambahan widget pada blogspot |
3. Masukkan title, lalu pada content masukkan kode
berikut:
<a
href="http://www.wieistmeineip.de/cometo/?en"><img
src="http://www.wieistmeineip.de/ip-address/"
border="0" width="125"
height="125" alt="IP" /></a>
4. simpan, lalu refresh blog anda. Widget yang anda
set akan menampilkan IP address pengunjung seperti dibawah ini
| Widget tampilan IP address |
Selamat Mencatat!!!
Wednesday, November 4, 2015
Deteksi objek lingkaran berwarna merah dengan menggunakan OpenCV dan Python 2.7
Catatan berikut ini
menberikan contoh program untuk mendeteksi objek lingkaran dengan
menggunakan python 2.7 dan library OpenCV.
Proses kerja dari
software adalah dengan mengambil gambar video dari webcam, mengubah
menjadi bentuk HSV, lalu mengatur parameter maksimal dan minimal dari
masing-masing komponen tersebut. Dari pengaturan tersebut akan
dideteksi satu buah atau beberapa warna tertentu (tergantung
pengaturan komponen H, S, danV). Pada contoh kali ini pengaturan
adalah pada warna merah.
Software akan
menampilkan 3 jendela yaitu jendela video asli, jendela video hasil
HSV, dan jendela video hasil akhir dari pengolahan. Untuk mendeteksi
bentuk lingkaran, digunakan fungsi HoughCircle dalam library OpenCV
yang telah diinstall sebelumnya.
Saat terdeteksi
bentuk lingkaran berwarna merah, video akan menggambarkan lingkaran
hijau pada object lingkaran. Tanda lingkaran hijau akan berubah
menjadi berwarna merah jika object lingkaran merah dekat dengan
kamera.
Video demo dapat
dilihat dibawah ini:
Berikut adalah kode
python yang saya gunakan:
__author__ =
'uits2015'
import cv2
import cv2.cv as cv
import numpy as np
kernel =
np.ones((5,5),np.uint8)
# Take input from
webcam
cap =
cv2.VideoCapture(-1)
# Reduce the size of
video to 320x240 so rpi can process faster
cap.set(3,320)
cap.set(4,240)
def nothing(x):
pass
# Creating a windows
for later use
cv2.namedWindow('HSVsetup')
#cv2.namedWindow('HueComp')
#cv2.namedWindow('SatComp')
#cv2.namedWindow('ValComp')
cv2.namedWindow('closing')
cv2.namedWindow('tracking')
# Creating track bar
for min and max for hue, saturation and value
# You can adjust the
defaults as you like
cv2.createTrackbar('hmin',
'HSVsetup',0,500,nothing)
cv2.createTrackbar('hmax',
'HSVsetup',6,500,nothing)
cv2.createTrackbar('smin',
'HSVsetup',88,500,nothing)
cv2.createTrackbar('smax',
'HSVsetup',254,500,nothing)
cv2.createTrackbar('vmin',
'HSVsetup',117,500,nothing)
cv2.createTrackbar('vmax',
'HSVsetup',200,500,nothing)
# My experimental
values
# hmn = 12 / 106
# hmx = 37 / 179
# smn = 145 / 87
# smx = 255 / 163
# vmn = 186 /102
# vmx = 255 /185
while(1):
buzz = 0
_, frame =
cap.read()
#converting to
HSV
hsv =
cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
hue,sat,val =
cv2.split(hsv)
# get info from
track bar and appy to result
hmn =
cv2.getTrackbarPos('hmin','HSVsetup')
hmx =
cv2.getTrackbarPos('hmax','HSVsetup')
smn =
cv2.getTrackbarPos('smin','HSVsetup')
smx =
cv2.getTrackbarPos('smax','HSVsetup')
vmn =
cv2.getTrackbarPos('vmin','HSVsetup')
vmx =
cv2.getTrackbarPos('vmax','HSVsetup')
# Apply
thresholding
hthresh =
cv2.inRange(np.array(hue),np.array(hmn),np.array(hmx))
sthresh =
cv2.inRange(np.array(sat),np.array(smn),np.array(smx))
vthresh =
cv2.inRange(np.array(val),np.array(vmn),np.array(vmx))
# AND h s and v
tracking =
cv2.bitwise_and(hthresh,cv2.bitwise_and(sthresh,vthresh))
# Some
morpholigical filtering
dilation =
cv2.dilate(tracking,kernel,iterations = 1)
closing =
cv2.morphologyEx(dilation, cv2.MORPH_CLOSE, kernel)
closing =
cv2.GaussianBlur(closing,(5,5),0)
# Detect circles
using HoughCircles
circles =
cv2.HoughCircles(closing,cv.CV_HOUGH_GRADIENT,2,120,param1=120,param2=50,minRadius=10,maxRadius=0)
# circles =
np.uint16(np.around(circles))
#Draw Circles
if circles is
not None:
for i in
circles[0,:]:
# If
the ball is far, draw it in green
if
int(round(i[2])) < 30:
cv2.circle(frame,(int(round(i[0])),int(round(i[1]))),int(round(i[2])),(0,255,0),5)
cv2.circle(frame,(int(round(i[0])),int(round(i[1]))),2,(0,255,0),10)
# else draw it
in red
elif
int(round(i[2])) > 35:
cv2.circle(frame,(int(round(i[0])),int(round(i[1]))),int(round(i[2])),(0,0,255),5)
cv2.circle(frame,(int(round(i[0])),int(round(i[1]))),2,(0,0,255),10)
buzz = 1
#
print 'round object detected!!!'
#you can use the
'buzz' variable as a trigger to switch some GPIO lines on Rpi :)
# print buzz
# if buzz:
# put your
GPIO line here
#Show the result
in frames
#
cv2.imshow('HueComp',hthresh)
#
cv2.imshow('SatComp',sthresh)
#
cv2.imshow('ValComp',vthresh)
cv2.imshow('closing',closing)
cv2.imshow('tracking',frame)
cv2.imshow('HSVsetup',hsv)
k =
cv2.waitKey(5) & 0xFF
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
Catatan:
pendeteksian warna dapat dirubah dengan cara mengubah parameter Hmax, Hmin, Smax, Smin, Vmax, dan Vmin.
sebelum memprogram, pastikan library opencv sudah terintegrasi dengan software python yang dimiliki
dalam pengembangan program, saya menggunakan IDE Pycharm
Selamat Mencatat!!!
Labels:
image processing,
kode,
opencv,
programming,
pycharm,
python,
script,
software,
tutorial
Script agar Blog tidak dapat di copy dan paste
Catatan kali ini berisi tentang script yang dapat digunakan untuk menonaktifkan fungsi blocking pada teks di blog kita. saya baru mencoba di blog ini (berbasis blogspot). Mungkin bisa digunakan juga pada blog yang lain.
![]() |
| No Piracy |
Efek dari penambahan kode ini adalah, text pada blog kita tidak dapat di block dan fungsi klik kanan menjadi non aktif. Manfaatnya akan menyulitkan pelaku piracy untuk men copy paste posting yang kita buat.
caranya gampang sekali, cukup copy dan paste kode di bawah ini ke kode html blog. copy di bawah kode </body>
script nya adalah :
<script language='JavaScript1.2'>
//Disable select-text script (IE4+, NS6+)- By Andy Scott
//Exclusive permission granted to Dynamic Drive to feature script
//Visit http://www.dynamicdrive.com for this script
function disableselect(e){
return false
}
function reEnable(){
return true
}
//if IE4+
document.onselectstart=new Function ("return false")
//if NS6
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}
</script>
<script language='JavaScript'>curPage=1;
document.oncontextmenu = function(){return false}
if(document.layers) {
window.captureEvents(Event.MOUSEDOWN);
window.onmousedown = function(e){
if(e.target==document)return false;
}
}
else {
document.onmousedown = function(){return false}
}</script>
Catatan:
pada saat mengganti template, otomatis script/kode diatas akan ikut hilang beserta fungsi copy paste blocking. copy kembali kode diatas untuk mengaktifkan fungsinya.
Selamat mencatat!!!
//Disable select-text script (IE4+, NS6+)- By Andy Scott
//Exclusive permission granted to Dynamic Drive to feature script
//Visit http://www.dynamicdrive.com for this script
function disableselect(e){
return false
}
function reEnable(){
return true
}
//if IE4+
document.onselectstart=new Function ("return false")
//if NS6
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}
</script>
<script language='JavaScript'>curPage=1;
document.oncontextmenu = function(){return false}
if(document.layers) {
window.captureEvents(Event.MOUSEDOWN);
window.onmousedown = function(e){
if(e.target==document)return false;
}
}
else {
document.onmousedown = function(){return false}
}</script>
Catatan:
pada saat mengganti template, otomatis script/kode diatas akan ikut hilang beserta fungsi copy paste blocking. copy kembali kode diatas untuk mengaktifkan fungsinya.
Selamat mencatat!!!
Tuesday, November 3, 2015
Mendeteksi garis akhir (edge) dari object dengan menggunakan python dan opencv
Catatan kali ini
berisi tentang program untuk mendeteksi garis akhir alias edge (entah
apa namanya kalo di translate bahasa Indonesia) dari sebuah object.
Software ini menggunakan python dan opencv package untuk image
processingnya.
Kodenya adalah
sebagai berikut:
import cv2
import sys
if __name__ ==
'__main__':
print __doc__
try: fn =
sys.argv[1]
except: fn = 0
def
nothing(*arg):
pass
#buat window
cv2.namedWindow('edge')
#buat trackbar
cv2.createTrackbar('thrs1', 'edge', 2000, 5000, nothing)
cv2.createTrackbar('thrs2', 'edge', 4000, 5000, nothing)
#face_cascade =
cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
#eye_cascade =
cv2.CascadeClassifier('haarcascade_eye.xml')
#ambil data
video
cap =
cv2.VideoCapture(-1)
while True:
flag, img =
cap.read()
gray =
cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thrs1 =
cv2.getTrackbarPos('thrs1', 'edge')
thrs2 =
cv2.getTrackbarPos('thrs2', 'edge')
edge =
cv2.Canny(gray, thrs1, thrs2, apertureSize=5)
vis =
img.copy()
vis /= 2
vis[edge !=
0] =(0, 255, 255)
#tampilkan
jendela gray dan edge
cv2.imshow('gray',gray)
cv2.imshow('edge', vis)
ch =
cv2.waitKey(5)
if ch == 27:
break
cv2.destroyAllWindows()
Compile dan jalankan, maka akan muncul jendela tampilan seperti
dibawah ini:
catatan:
Tentunya ada beberapa hal yang harus dipersiapkan, diantaranya adalah
webcam, dan software python itu sendiri. Karena saya menggunakan
ubuntu 14.04, software python sudah disediakan oleh OS ubuntu. Saya
hanya perlu webcam yang linux friendly dan menginstal package opencv
ke python yang saya miliki.
Satu hal lagi, saya menggunakan pycharm sebagai IDE programing
python.
Selamat mencatat!!
Subscribe to:
Posts (Atom)
