วันเสาร์ที่ 15 กุมภาพันธ์ พ.ศ. 2557

gpio raspberry pi python

สวัสดีครับ ชาว raspberry pi

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

ตอนที่แล้ว แนะนำเรื่อง gpio ไป ดังนั้นเนื้อหาในตอนนี้ก็คงต้องเป็นเรื่อง การควบคุม gpio
การควบคุม gpio ทำได้หลายรูปแบบ ไม่ว่าจะเป็น shell script, c programming, python เป็นต้น

แต่วิธีที่ดูเหมือนว่าจะสะดวกที่สุดในการพัฒนาต่อยอดอุปกรณ์ ในความเห็นของผมเอง น่าจะเป็นการใช้ภาษา python
เรามาเริ่มกันเลยดีกว่า ว่าควบคุม gpio ผ่าน python กันยังไง

ก่อนอื่น เราต้องต่อวงจร LED รอไว้ก่อน ดังภาพ



เราสามารถเขียนออกมาเป็นวงจรอิเล็คทรอนิกส์ได้ดังนี้


โดยเราจะกำหนดให้ gpio17(ตอนที่แล้ว) เป็นขา output (เส้นสีเหลือง) ไว้ควบคุม LED

กลับมาที่เครื่อง linux pc ของเรา เปิด terminal ขึ้นมา ให้ ssh root@192.168.0.7 (ip address ของ rpi)
เริ่มต้นที่ สร้าง folder gpio ที่ /home/pi/ ด้วยคำสั่ง
cd /home/pi (enter)
mkdir gpio
แล้วเข้าไปใน folder gpio ด้วยคำสั่ง cd gpio
จากนั้นที่เครื่อง pc ของเรา ให้ไป download control module RPi.GPIO จาก web https://pypi.python.org/pypi/RPi.GPIO (ปัจจุบันเวอร์ชัน 0.5.4)


เมื่อได้ file มาแล้ว ให้เรา sftp เพื่อย้ายไฟล์ไปที่บอร์ด rpi
ในขั้นตอนนี้ให้เราเปิด terminal ขึ้นมาใหม่อีกหน้านึง แล้วย้ายตัวเองไปที่ directory ที่ download มา
cd /home/pi1/Downloads แล้วพิมพ์
sftp root@192.168.0.7
จากนั้นทำการวางไฟล์ ด้วยคำสั่ง put ไปไว้ที่ /home/pi/gpio
put RPi.GPIO-0.5.4.tar.gz /home/pi/gpio/RPi.GPIO-0.5.4.tar.gz
file ก็จะมาอยู่ใน folder gpio ที่เราสร้างไว้ก่อนหน้านี้
ให้เราแตกไฟล์ ด้วยคำสั่ง tar -zxvf RPi.GPIO-0.5.4.tar.gz

ในตอนแรกผมได้พยายามลองลง python ตามวิธีที่อยู่ใน install.txt ที่ติดมากับ RPi.GPIO-0.5.4.tar.gz
แต่ไม่สำเร็จ
พอสำเร็จแล้ว ก็สรุปได้ดังนี้
ให้เราพิมพ์ตามนี้
sudo apt-get update (enter แล้วรอจนเสร็จ จะนานหน่อย) ทำบรรทัดนี้เพื่อ update system
sudo apt-get dist-upgrade (enter แล้วรอจนเสร็จ จะนานหน่อย) ทำบรรทัดนี้เพื่อ upgrade system
sudo apt-get install python-dev python3-dev (enter) เพื่อ install python-dev
sudo apt-get install python-rpi.gpio python3-rpi.gpio เพื่อลง library gpio
sudo python setup.py install (enter) เพื่อ setup python
reboot 1 ครั้ง

จากนั้นเราก็สร้างโปรแกรมไฟล์ของเรา ให้ตั้งชื่อว่า gpio.py ด้วยคำสั่ง nano gpio.py
แล้วให้พิมพ์ตามนี้


** ให้แก้ไขตรง GPIO.setmode(GPIO.BOARD) เป็น GPIO.setmode(GPIO.BCM)
เสร็จแล้ว กด ctrl+x เพิ่อออก กด y กด enter เพื่อ save
จากนั้นให้เปลี่ยนโหมดของ gpio.py ให้สามารถ execute ได้ โดยพิมพ์ chmod +x gpio.py

ใน code จะเห็นได้ว่าใช้ gpio11 ทั้งๆที่ในตอนต้นบอกว่าใช้ gpio17
สาเหตุเนื่องมาจากไลบราลี่ของ RPi.gpio นั้นได้ map pin ใหม่ ซึ่งแสดงให้เห็นได้ดังต่อไปนี้


จากภาพ ที่เห็นเป็นสีๆ นั่นคือ original ส่วนที่อยู่ตรงกลาง(สีขาว) เป็น pin ที่ map ใหม่
GPIO17 ตรงกับ 11เราจึงต้องเขียน code เป็น 11

เรามาทดสอบโปรแกรมของเราด้วยการพิมพ์ ./gpio.py ถ้าไม่มีอะไรผิดพลาด จะเห็น LED กระพริบตลอดเวลา
ถ้าต้องการหยุดโปรแกรม ให้กด ctrl+c

ถึงตอนนี้เพื่อนๆก็จะสามารถควบคุม gpio โดยใช้ python ได้แล้ว

ตอนต่อไปเราจะมาขับ LED แผงใหญ่กันครับ

ที่มา
http://www.raspberrypi.org/archives/1417
http://raspberry-pi-th.blogspot.com/2012/10/rpigpio-python-control-gpo-of-raspberry.html

นอกเหนือจากนี้ ยังมีวิธีอื่นๆอีก ลองศึกษาเพิ่มเติมกันดูนะครับ
เพิ่มเติม
https://projects.drogon.net/raspberry-pi/gpio-examples/tux-crossing/gpio-examples-1-a-single-led/


แสดงความคิดเห็น