Tuesday, October 9

RPi.GPIO Python control GPIO of Raspberry Pi

     จากในตอนก่อนหน้านี้ เราสามารถที่จะควบคุม GPIO pin ของ Raspberry Pi ด้วย Shell ของ Linux ด้วยการเข้าไปอ่านและเขียนที่ sysfs ซึ่งสามารถมอง GPIO pin ของ Raspberry Pi เป็นเสมือนไฟล์ๆ หนึ่ง ที่เมื่อเราอ่าน และเขียนลงไปแล้ว ก็สามารถที่จะควบคุม GPIO ได้เช่นกัน ซึ่งวิธีนั้น เราก็แค่ทำการเขียน shell script ก็สามารถที่จะสร้างโปรแกรมควบคุม GPIO ได้แล้ว แต่ยังมีวิธีอื่นๆ อีกมากมายที่จะควบคุม GPIO ของ Raspberry Pi อีกวิธีหนึ่งก็คือ การใช้ Library ที่พัฒนามาจากภาษาต่างๆ  ซึ่งภาษาไพธอน เป็นอีกภาษาหนึ่งที่เป็นมิตรกับ Linux และได้มีการพัฒนา library ให้สามารถควบคุม GPIO ได้ โดยใช้ RPi.GPIO
เดิมที Debian Wheezy ที่ติดตั้งมานั้น จะมี Python 2.7.3 ติดมาด้วยอยู่แล้ว เพราะฉะนั้น เราก็แค่ ลง RPi.GPIO เพิ่มเข้าไป ก็สามารถที่จะเรียกใช้ไลบรารี่ชุดนี้ได้แล้ว
หลังจากที่ login ผ่าน SSH แล้ว ทำการโหลดไลบรารี่ชุดนี้ ซึ่งจะถูกบีบอัดไว้ ใน linux นั้น ไฟล์ที่ถูกบีบอัดจะมีนามสกุล .gz 
ดาวน์โหลดไฟล์ จากเว็บ http://pypi.python.org/pypi/RPi.GPIO โดยเราจะเข้าไปเอาลิ้งค์จากหน้าเว็บดังกล่าว
PRi.GPIO link
ใช้คำสั่งดาวน์โหลดไฟล์จากลิ้งค์ดังกล่าว
wget http://pypi.python.org/packages/source/R/RPi.GPIO/RPi.GPIO-0.4.1a.tar.gz#md5=9acdb66290350aaa74b99de859ded153
wget RPi
จะได้ไฟล์ RPi.GPIO-0.4.1a.tar.gz  (ณ ตอนนี้ เวอร์ชั่น 0.4.1a)
ทำการแตกไฟล์ ด้วยคำสั่ง
tar zxvf RPi.GPIO-0.4.1a.tar.gz
เราจะได้โฟวเดอร์ RPi.GPIO-0.4.1a ทำการเข้าไปที่โฟวเดอร์นี้
cd RPi.GPIO-0.4.1a
แล้วทำการติดตั้ง ด้วยคำสั่ง
sudo python setup.py install
คำสั่ง setup.py จะทำการนำไฟล์ไปไว้ตาม path ของ package python ถ้าไม่มีอะไรผิดพลาด เราจะสามารถ import package ที่เราติดตั้งเข้าไปในโค๊ดของเราได้
เราจะทำการสร้างโค๊ด เพื่อทดสอบ RPi.GPIO ไลบรารี่ นี้
ทำการเขียนโด๊ดง่ายๆ ด้วย คำสั่งสร้างไฟล์
nano blink.py
เขียนโค๊ดตามที่ปรากฏข้างล่างนี้
simple code python control GPIO
หมายเหตุ : จากตอนที่แล้ว เราได้ทำการสั่งควบคุม GPIO7 ด้วย shell script แต่ในไลบรารี RPi.GPIO นั้น ได้ทำการ map pin ที่ไม่เหมือนเดิม เราจะต้องอ้างอิงตามไลบรารี่ ตาม RPi.GPIO ตามนี้
RPi.GPIO map pin
เมื่อเราต่อเข้ากับ GPIO7 จะตรงกับ map pin ที่ 26 ของ RPi.GPIO ซึ่งเมื่อพิจารณที่บอร์ดของ Raspberry Pi แล้ว จะตรงกับ PIN_26 เช่นกัน
ทำการเปลี่ยนโหมด เพื่อทำให้ไฟล์นี้สามารถที่จะ Execute ได้ ด้วยคำสั่ง
chmod +x blink.py
เราจะได้ไฟล์ที่สามารถ Execute ได้ (เหมือนกับไฟล์ exe ของ windows) 
เนื่องจากไฟล์นี้มีการเข้าถึงบางส่วนของ Hardware เพราะฉะนั้นจะต้องรันด้วยคำสั่ง sudo นำหน้าไฟล์ที่จะรัน
sudo ./blink.py 
จะเห็นไฟ LED กระพริบติด-ดับ สลับกัน โดยหน่วงเวลาครึ่งวินาที (  time.sleep(.5)  )  10 ครั้ง แล้วโปรแกรม ก็หยุดทำงาน
Raspberry Pi schematic
เท่านี้ เราก็สามารถที่จะควบคุม GPIO ของ Raspberry Pi ได้แล้ว ทีเหลือก็ขึ้นอยู่กับ Python Programming แล้วหล่ะ

2 ความคิดเห็น:

Wisit.P on 24 November 2012 at 05:35 said...

แต่ ถ้าในขั้นตอนติดตั้ง sudo python setup.py install แล้วเจอข้อความ error ว่า
"error: command 'gcc' failed with exit status 1
"

วิธีแก้ไข ให้ทำการติดตั้ง python-dev ก่อน ด้วยคำสั่ง sudo apt-get install python-dev เสร็จแล้ว ให้ reboot 1 ครั้ง

แล้วลองเข้าเรียก sudo python
>>>import RPi.GPIO as GPIO
>>>dir(GPIO)

น่าจะใช้ได้นะครับ

Apiwat Sooklueang on 8 September 2013 at 11:30 said...

ผมรันไม่ได้ครับ (ผมไม่ได้ต่อ LED ไว้นะเกี่ยวไหม)
มันฟ้องว่า import RPi.GPIO ไม่ได้ ที่ line3 เอเกี่ยวกันไหมหรือผมเขียนผิดเองแต่ไล่ดูมันก็ถูกนะครับ

 

แจกฟรี พื้นที่ฝากไฟล์ 15 GB

ติดตามข่าวสารผ่าน Twitter

ติดตาม Blog นี้

Blog อื่นๆของฉัน

  • Test AMR Fleet Management program - ระบบบริหารจัดการจราจรและจัดคิวงานของรถ AMR (Autonomous Mobile Robot) ที่พัฒนาโดยบริษัท WP Solution Co., Ltd. จากภาษา C# ทั้งในส่วนของ Backend (Service app...
  • Gearset matching 2021 program - เป็นงานใหญ่ที่เพิ่งจบไป ที่ระยอง ปลวกแดง บริษัทผลิตชิ้นส่วนรถยนต์ คอนเซปต์ คือต้องการเก็บค่าหลังจากการทดสอบชิ้นส่วยรถยนต์ เพื่อเก็บไว้ในฐานข้อมูลให้แผนกถ...
  • Free Screen Capture โปรแกรมบันทึกหน้าจอ ฟรีๆ - หากเพื่อนๆ จะมองหาโปรแกรม ที่ไว้สำหรับบันทึกหน้าจอคอมพิวเตอร์ ไม่ว่าจะบันทึกในรูปของภาพนีิ่ง (Screen shot) หรือแบบบันทึกเป็นภาพเคลื่อนไหว ( screencas...
  • Type-Fu : Typing practice game online - หากใครที่สนใจ หรือจะต้องทำงานเกี่ยวกับคอมพิวเตอร์ หนึ่งในความจำเป็นก็คือ จะต้องเรียนรู้ที่พิมพ์สัมผัสได้ เพราะการที่พิมพ์สัมผ้สได้ มันได้ประโยชน์หลายๆ อย...

Microcontroller Electronics update

สถิติเยี่ยมชมบล๊อก