bahan :
1. Siapkan camera raspberry pi (saya menggunakan camera v2 dan raspberry pi 3)
2. Siapkan Hardware arduino
Langkah yang saya buat hanya akan berjalan jika kita sudah update raspberry dan instal web server (lihat di postingan saya sebelumnya)
pertama kita instal mysqldb, agar python dapat terhubung ke database. Ikuti perintah ini :
sudo apt-get install python-mysqldb
Setelah itu kita hubungkan arduino ke raspberry dengan menggunakan kabel serial, lalu jalankan codingan python nya, copy paste script berikut kemudian simpan dengan format .py(lat1.py) :
import serial
import MySQLdb
from time import gmtime, strftime
from random import randint
from picamera import PiCamera
from time import sleep
camera = PiCamera()
camera.rotation = 180
db = MySQLdb.connect("localhost","root","123456","db_project")
cursor = db.cursor()
def mtrim(s):
if s.endswith(" "): s = s[:-1]
if s.startswith(" "): s = s[1:]
return s
read_serial0=""
ser = serial.Serial('/dev/ttyACM1',9600)
#ser = serial.Serial('COM3',9600)
s = [0,1]
while True:
read_serial=ser.readline()
read_serial=mtrim(read_serial)
c=read_serial.split("#")
print (read_serial)
print (str(len(c)))
sleep(5)
if len(c) >2:
if read_serial!=read_serial0:
read_serial0=read_serial
idx=c[0]
ruang=c[1]
print ("idx=",idx)
print ("ruang=",ruang)
tgl=strftime("%Y-%m-%d", gmtime())
jam=strftime("%H:%M:%S", gmtime())
stgl=strftime("%Y%m%d", gmtime())
sjam=strftime("%H%M%S", gmtime())
img= stgl+sjam+".jpg";
###########################################
try:
camera.start_preview()
sleep(3)
camera.capture('/var/www/html/project/ypathfile/'+img)
sleep(1)
camera.stop_preview()
except:
print("-")
###########################################
sql='INSERT INTO `tb_history` (`tanggal`, `jam`, `ruang`, `ksj`, `image`, `note`) VALUES ("%s", "%s", "%s", "%s", "%s", "%s")' % (tgl, jam, ruang, idx, img,'-')
try:
cursor.execute(sql)
db.commit()
except:
db.rollback()
print("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++")
Setelah selesai di save lalu jalankan pythonnya, disini saya misalkan kita menyimpan lat1.py di /home/pi.
Buka Terminal
masuk direktori /home/pi dengan cara :
cd /home/pi
/home/pi# python lat1.py
jika ada error seperti di bawah ini
File "SJ.py", line 23, in <module>
ser = serial.Serial('/dev/ttyACM1',9600)
File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 261, in __init__
self.open()
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 278, in open
raise SerialException("could not open port %s: %s" % (self._port, msg))
serial.serialutil.SerialException: could not open port /dev/ttyACM1: [Errno 2] No such file or directory: '/dev/ttyACM1'
perhatikan pada baris terakhir, disitu ada '/dev/ttyACM1', berarti kabel serial arduino tidak terbaca oleh python. Untuk mengatasinya kita kembali ke terminal & ketikkan perintah berikut :
ls /dev/tty* (untuk mengetahui serial port yang terbaca oleh python)
/dev/tty /dev/tty19 /dev/tty3 /dev/tty40 /dev/tty51 /dev/tty62
/dev/tty0 /dev/tty2 /dev/tty30 /dev/tty41 /dev/tty52 /dev/tty63
/dev/tty1 /dev/tty20 /dev/tty31 /dev/tty42 /dev/tty53 /dev/tty7
/dev/tty10 /dev/tty21 /dev/tty32 /dev/tty43 /dev/tty54 /dev/tty8
/dev/tty11 /dev/tty22 /dev/tty33 /dev/tty44 /dev/tty55 /dev/tty9
/dev/tty12 /dev/tty23 /dev/tty34 /dev/tty45 /dev/tty56 /dev/ttyACM0
/dev/tty13 /dev/tty24 /dev/tty35 /dev/tty46 /dev/tty57 /dev/ttyAMA0
/dev/tty14 /dev/tty25 /dev/tty36 /dev/tty47 /dev/tty58 /dev/ttyprintk
/dev/tty15 /dev/tty26 /dev/tty37 /dev/tty48 /dev/tty59
/dev/tty16 /dev/tty27 /dev/tty38 /dev/tty49 /dev/tty6
/dev/tty17 /dev/tty28 /dev/tty39 /dev/tty5 /dev/tty60
/dev/tty18 /dev/tty29 /dev/tty4 /dev/tty50 /dev/tty61
yang terbaca oleh python adalah /dev/ttyACM0, jadi pada script python kita harus menggantinya,
ser = serial.Serial('/dev/ttyACM1',9600) ganti menjadi ser = serial.Serial('/dev/ttyACM0',9600)
selesai, lalu jalankan kembali pythonnya, maka python akan mulai mengambil gambar dan hasilnya akan langsung dikirim ke web server.
Hasil/gambarnya juga akan tersimpan secara otomatis di /var/www/html/project/ypathfile (lihat script python).
Hasil/gambarnya juga akan tersimpan secara otomatis di /var/www/html/project/ypathfile (lihat script python).
mau tanya, kenapa raspi dihubungkan dengan arduino?
BalasHapuspada project yang saya buat ada fingerprint, fingerprint tsb disett terlebih dahulu di arduino, lalu dari arduino kirim data serial ke raspberry
Hapus