วันอังคารที่ 23 กันยายน พ.ศ. 2557

python port.write

ในการเขียน python ให้ส่งออกข้อมูลผ่าน serial port มีอยู่ 2-3 แบบ ที่ผู้เขียนเจอมา

โดยมีตัวอย่าง code ดังต่อไปนี้

import serial
import time

port = serial.Serial("/dev/ttyUSB0", baudrate=19200, timeout=1.0)

while 1:
  port.write(chr(0x01))
  time.sleep(1)

โดยที่เห็นใน code ด้านบน จะส่งออกมาเป็น 0x01 ฐาน16 จริงๆ



แต่ถ้าเราเปลี่ยน code เป็น port.write("1") เราจะเห็นข้อมูลต่างออกไป คือ 0x31



แต่ถ้าเราเปลี่ยน code เป็น port.write("0x01")
สิ่งที่ RPi ส่งออกมาจะเป็น 0x30 0x78 0x30 0x31 ซึ่งถ้าเปลี่ยนเป็น ascii เราจะเห็นเป็น 0x01




สรุป
การส่งข้อมูล serial

port.write(chr(0x01))
port.write("1")
port.write("0x01")

ให้ผลที่ต่างกัน เราสามารถเลือกใช้ให้เหมาะสมกับงานของเราได้ครัช

python serial

สวัสดีครับพี่น้อง

วันนี้ได้ทำโปรเจคเกี่ยวกับ serial port ก็เลยต้องขอบันทึกไว้ก่อน กันลืม

เริ่มด้วย ที่บอร์ด RPi ให้พิมพ์
sudo apt-get install python-serial


ผู้เขียนได้ซื้อ USB to Serial มา และได้เสียบเข้ากับ RPi
ในตอนแรก RPi มองไม่เห็น USB to Serial ก็ได้ถอดแล้วเสียบใหม่ และถอดสาย power ออก แล้วเสียบสาย power ใหม่, RPi เลยมองเห็นเป็น ttyUSB0 โดยเราสามารถดูได้โดยใช้คำสั่ง ls /dev/

ต่อไปเราจะเริ่มเขียน code กัน
ให้สร้าง file ขึ้มาใหม่ด้วยคำสั่ง nano SerialExample.py
เขียน code ดังต่อไปนี้

import serial

port = serial.Serial("/dev/ttyUSB0", baudrate=115200, timeout=3.0)

while True:
    port.write("\r\nSay something:")
    rcv = port.read(10)
    port.write("\r\nYou sent:" + repr(rcv))

กด control+x กด Y กด Enter เพื่อ save และออกจากโปรแกรม

จากนั้นให้เราต่อสาย USB to Serial เข้ากับ computer ของเรา ดังรูป


ที่ computer ของเรา ให้เปิดโปรแกรมที่สามารถรับข้อมูลจาก comport รอไว้ โดยตั้งค่าให้ baudrate ตรงกันกับที่เราเขียนโปรแกรม python ไว้ คือ 115200

จากนั้นที่บอร์ด RPi ให้พิมพ์ sudo python SerialExample.py เพื่อ run program
เราจะเห็นได้ว่าที่ computer ของเรา โปรแกรมที่เปิดรอไว้ จะมีอักษรขึ้นมา ดังรูป


แล้วเราก็ลองกดส่งข้อมูลดู ให้ครบ 10 ตัว โปรแกรม python ที่เราเขียนไว้ ก็จะส่งข้อมูลเดิมกลับออกมาให้เราเห็น


เป็นอันว่าเราสำเร็จในการรับ-ส่งข้อมูลผ่าน USB to Serial แล้ว
จบ... :)

bitvise ssh client โปรแกรมสำหรับ ssh และ sftp

สวัสดีครับพี่น้อง

วันนี้ได้มีโอกาสลง putty ใหม่ ก็กำลังจะโหลด putty แต่พอดีเห็นว่ามีโปรแกรมอื่นให้โหลดด้วย เห็นว่าเป็น gui และก็น่าจะลองของใหม่ดู เลยลองโหลดมาใช้งานดู

เริ่มต้นด้วยไปที่ www.putty.org

ให้คลิกที่ download tunelier here จะเจอหน้าถัดไป


ให้คลิกที่ bitvise ssh client installer เพื่อ download

เมื่อโหลดมาเสร็จแล้วก็ทำการ install ต่อไป
พอลงเสร็จแล้ว เปิดโปรแกรมขึ้นมาจะเห็นหน้าตาแบบนี้


ให้เราใส่ ip ของ rpi ลงไป รวมถึง username และ password แล้วกด login
จะมีหน้าจอเด้งขึ้นมา 2 หน้าจอ โดยหน้าจอนึงเป็น ssh และอีกหน้าจอนึงเป็น sftp


ซึ่งดูแล้วก็น่าใช้ดี สะดวกดีด้วย link ทีเดียวได้ทั้ง ssh และ sftp
เราก็จะได้ประหยัดเวลาขึ้นอีกหน่อย :)

วันอังคารที่ 2 กันยายน พ.ศ. 2557

install RFID card reader R502-CL

ต่อไปนี้จะเป็นการติดตั้ง RF-ID smart card reader รุ่น R502-CL ของ Feitian

1. sudo apt-get update

2. Open a root terminal window; you need to have administrator rights.
Get and install the libusb library with the apt-get command: apt-get install libusb-dev libusb++-0.1-4c2 Check the installation: You shall find the library libusb.so under the directory /usr/lib/

3. Download and install the libccid package: apt-get install libccid
4. Download and install the pcsc-lite package: apt-get install pcscd
5. Check that the pcscd service is running:
In the terminal console, run the command ps –A.
You should find a "pcscd" process running in the list displayed
Run pcscd in terminal 

6.Download and install libpcsclite1: apt-get install libpcsclite1

7. Download and install libpcsclite-dev: apt-get install libpcsclite-dev
8. Check whether the R502 reader is detected: your_system_name:/tmp# lsusb
Bus 001 Device 002: ID 096e:0608

9. Use root to run “install script”: $ wget http://download.ftsafe.com/files/reader/product/R502/install.sh $ sh install.sh or $ bash install.sh
10. After run “install script”, then insert reader and start “pcscd” service.
Run “pcsctest” command to do test
Like below: pcscd –adf //run pcscd service, for parameter, you can using “man pcscd” to get more helps pcsctest





จากนั้นให้เสียบ RFIDReader R502-CL เข้ากับ RPi แล้วพิมพ์ pcscd -adf เพื่อทดสอบดูว่าอุปกรณ์เราใช้ได้หรือไม่

จากนั้นให้นำบัตร RFID มาใกล้ๆกับตัวอ่าน จะเห็นภาพดังรูป


 
 
 



วันศุกร์ที่ 29 สิงหาคม พ.ศ. 2557

extract file.tar.bz2

เมื่อเราต้องการ extract file ให้ทำดังนี้
เปิด Terminal แล้วพิมพ์
tar xvjf filename.tar.bz2

 Which will untar it to the current directory. Normally (99% of the time) it will create it's own subdirectory so you don't need to worry about that.
Just so you know:
tar - Tape ARchiver
And the options:
x - extract
v - verbose output (lists all files as they are extracted)
j - deal with bzipped file
f - read from a file, rather than a tape device

"tar --help" will give you more options and info

การมองหารายละเอียดของอุปกรณ์ที่เสียบเขามาใหม่

หลายๆครั้ง ที่เราต้องการทราบรายละเอียดว่าอุปกรณ์ที่เราเพิ่งเสียบเข้ามาทาง usb port เราจะงงว่าทำอย่างไรจึงจะเห็นรายละเอียดเหล่านั้นได้ ซึ่งมีวิธีง่ายๆก็คือ ให้พิมพ์
sudo tail -f /var/log/messages
ใน terminal

จบ....

วันศุกร์ที่ 15 สิงหาคม พ.ศ. 2557

mount flash drive

โดยปกติแล้วที่บอร์ด Raspberry Pi จะมี USB port สำหรับต่อกับ Device ต่างๆ อยู่ 2 port ด้วยกัน หากทั้งสอง Port นี้ว่างอยู่ เราสามารถหาอุปกรณ์อย่างอื่นมาต่อได้ ในตอนนี้ เราจะมาเพิ่มพื้นที่หน่วยความจำให้กับเจ้า Raspberry Pi ด้วยการเพิ่ม USB Flash Drive

ขั้นตอนไม่ยากครับ ง่ายๆ
เพื่อให้มั่นใจว่าระบบมองเห็น USB Flash Drive ที่เสียบเข้ามาจริง เราจะทำการเช็คที่ /var/log/message โดยที่โฟลเดอร์นี้ จะทำการเก็บข้อความ (log message) ระบบที่เกิดขึ้น ซึ่งประกอบไปด้วยข้อความแจ้งว่ามีการส่งเมล์ออกไป, ข้อความแสดงการทำงานของ Cron service , ข้อความของ Kern , ข้อความแสดงการล๊อกอินจาก user อื่นๆ และข้อความแจ้งเตือนว่ามีอุปกรณ์อย่างอื่นพ่วงต่อเข้ามา ซึ่งนั่นเป็นสิ่งที่เรากำลังมองหาอยู่
โดยทั่วไป Linux จะมองเห็น USB Flash Drive เป็น sda1  ที่นี้ เราก็จะมองหา sda1 ที่ /var/log/message โดยใช้คำสั่ง tail เพื่อของดูเนื้อหาตอนท้ายๆ ของไฟล์ message (เนื่องจากไฟล์นี้จะถูกเขียนลงไปเรื่อยๆ ที่บรรทัดสุดท้าย หากมี message จากจุดต่างๆ ของระบบส่งเข้ามา)
ใช้คำสั่ง เพื่อดู message ที่เข้ามาล่าสุดใน /var/log/message ด้วยคำสั่ง
sudo tail -f /var/log/messages



ทำการเสียบเจ้า USB Flash Drive ของเราเข้ากับช่อง USB ของบอร์ด Raspberry Pi สังเกตที่หน้าจอ terminal นี้ จะพบว่า message มีการเปลี่ยนแปลง และถ้า USB Flash Drive เราไม่เสีย จะพบว่า Raspberry Pi มองเห็นเจ้า USB Flash Drive ของเราแล้ว ให้กด Ctrl+C เพื่อหยุดการดู message ได้ครับ
ต่อไปเราจะต้องทำการสร้าง directory เปล่าๆ ขึ้นมา เพื่อทำการ mount ให้เจ้า USB Flash Drive ของเราเข้ากับ Directory นั้น พูดง่ายๆ ก็คือ ทำให้ Directory นั้นกลายเป็น USB Flash Drive นั่นเอง
ใช้คำสั่ง สร้าง directory ที่ชื่อ usbdisk (หรือจะชื่ออื่นๆ ก็ได้นะครับ) ขึ้นมา ในที่นี้ผมจะเก็บไว้ภายใต้โฟลเดอร์ /media นะครับ
sudo mkdir /media/usbdisk
เสร็จแล้ว เราจะทำการ mount hardware คือ เจ้า USB Flash Drive เข้ากับโฟวเดอร์นี้ ด้วยคำสั่ง
sudo mount -t vfat -o uid=pi,gid=pi /dev/sda1 /media/usbdisk/
ตอนนี้ เราจะได้โฟวเดอร์ usbdisk เป็นที่เก็บทุกอย่างเท่าที่ USB Flash Drive มี ลองเข้าไปดูครับ จะเจอไฟล์ที่เราเก็บไว้ที่ USB Flash Drive



เราก็จะได้พื้นที่เพิ่มเติม นอกเหนือจาก SD-Card ที่เรามี แต่เป็นพื้นที่ที่สามารถเคลื่อนย้ายได้ มีอย่างหนึ่งที่ต้องบอกไว้ก็คือ ทุกครั้งที่เราจะทำการ ถอด USB Flash Drive ออกจากบอร์ด Raspberry Pi เราจะต้องทำตรงกันข้ามกับคำสั่ง mount นั่นคือคำสั่ง umount
ก่อนถอด USB Flash Drive เราจะใช้คำสั่ง umount ไปที่ Directory ที่เรา mount ไว้
sudo umount /media/usbdisk



จากนั้น เราจะทำการลบ usbdisk ด้วยก็ได้ หรือจะปล่อยไว้แบบนี้ก็ได้ ครับ ไม่มีปัญหา เพราะเราได้ umount ออกไปแล้ว
เพื่อนๆ อาจจะนำไปประยุกต์ใช้ในการเก็บข้อมูลอีกรูปแบบหนึ่งก็ได้ นอกเหนือจากการเก็บข้อมูลไว้ที่ Database

วันจันทร์ที่ 21 กรกฎาคม พ.ศ. 2557

raspberry pi model B+

สวัสดีครัช ผู้ชื่นชอบ Raspberry Pi

หายไปนาน(อีกแล้ว) งานยุ่งๆบวกกับบ้าออกกำลังกาย ก็เลยไม่ค่อยได้มาเขียนเท่าไหร่

หลังจากปล่อย Raspberry Pi model B ออกมาได้ 2 ปี
ตอนนี้เค้าก็มี Version ใหม่ออกมา ให้เราได้ชื่นชมกันอีก นั่นก็คือ medel b+
ซึ่งก็มี feature ที่เพิ่มขึ้นมากกว่าเก่า เพื่อให้รองรับตามคำเรียกร้องของผู้ใช้งาน
ที่น่ายินดีอีกเรื่องก็คือ "ยังราคาเท่าเดิม" 35$ คูณ 35 ก็ตกราวๆ 1,225 บาท

ใน Model B+ นี้ยังคงใช้ BCM2835 อยู่เหมือนเดิม RAM ก็ยัง 512MB เหมือนเดิม แต่เพิ่มอย่างอื่นขึ้นมาเพียบเลย
1. GPIO มากกว่าเดิม จากเดิม 26 pins เพิ่มเป็น 40 pins
2. USB มากกว่าเดิม จากเดิม 2 ports เพิ่มเป็น 4 ports
3. Micro SD จากเดิมใส่ตามปกติ เปลี่ยนเป็นช่องแบบ push-push คือ กดเพื่อใส่เข้าไป และกดเพื่อให้ออกมาอีกที
4. มีการใช้พลังงานที่น้อยกว่าเดิม โดยเปลี่ยนจาก linear regulator เป็น switching regulator ทำให้ลดพลังงานไปได้ 0.5W - 1W
5. audio ที่ดีกว่าเดิม เพิ่มวงจร low-noise power supply


จากรูปด้านบน จะมีขาที่ชื่อว่า ID_SD และ ID_SC
2 ขานี้ใช้ต่อกับ EEPROM เพื่อ setup gpio ถ้าเราไม่ใช้ EEPROM ก็ห้ามต่อใช้อย่างอื่นนะครัช

ถึงแม้ว่าเขาจะผลิต Model B+ ขึ้นมา เราก็ไม่ต้องกลัวว่าผลงานที่เราทำไปแล้ว จะไม่มีให้ซื้อใช้ เพราะว่าเขายังผลิต Model B อยู่เหมือนเดิมครัช(ถ้ายังมีคนสั่งอยู่)


ที่มา
http://www.raspberrypi.org/introducing-raspberry-pi-model-b-plus/

http://pi.gadgetoid.com/pinout