วันเสาร์ที่ 11 มกราคม พ.ศ. 2557

การติดตั้ง WiringPi เพื่อใช้งาน GPIO และเรียกใช้ผ่าน PHP บน Raspberry Pi

WiringPi เป็นไลบรารีที่ใช้ติดต่อกับพอร์ต GPIO (General Purpose Input/Output) ของ Raspberry Pi ถูกเขียนขึ้นด้วยภาษาซี พอร์ต GPIO เป็นพอร์ตอินพุตเอาต์พุตอเนกประสงค์ เราสามารถรับและส่งข้อมูลต่างๆได้ผ่านทางพอร์ตนี้ โดยในตัวอย่างวันนี้เราจะส่งค่าออกไปแสดงผลที่ LED และทดสอบรับค่ากลับจากการกดสวิตช์ จริงๆแล้วตัว WiringPi เป็นไลบรารีที่เราต้องเขียนโปรแกรมด้วยภาษาซีเพื่อเรียกใช้งาน แต่มันก็มีคำสั่งที่เป็นคอมมานไลน์ชื่อ gpio มาให้เราใช้งานด้วย คำสั่ง gpio นี้มีข้อดีตรงที่ว่ายูเซอร์ทุกคนในระบบสามารถเรียกใช้งานได้ ไม่จำกัดแค่ว่าต้องมีสิทธิเป็น root เหมือนกับการเรียกใช้ผ่าน shell ซึ่งข้อดีของคำสั่ง gpio ตรงนี้ทำให้เราสามารถเขียนคำสั่งด้วย PHP และเรียกใช้งานผ่านเว็บได้
อย่างแรกเริ่มจากการติดตั้ง GIT ลงไปก่อน
1
sudo apt-get install git-core
ถ้าหากว่าเกิดมี Error ขึ้นมาให้ลองทำการอัพเดทแพคเกจ และลองใหม่อีกครั้ง
1
2
sudo apt-get update
sudo apt-get upgrade
จากนั้นสั่งโคลน
1
git clone git://git.drogon.net/wiringPi
ต่อไปสั่งติดตั้งแพคเกจ
1
2
3
cd wiringPi
git pull origin
./build
เมื่อติดตั้งเรียบร้อย ลองทดสอบเรียกคำสั่ง gpio ขึ้นมาดูก่อนว่าใช้งานได้ไหม ถ้าไม่ได้ก็ตัวใครตัวมันครับ
1
gpio -v
ก่อนต่อวงจรเรามาดูตำแหน่งขาของ GPIO กันก่อนครับว่าอยู่ตรงไหนบ้าง จะเห็นว่ามีพอร์ต GPIO ให้เราใช้งานอยู่ทั้งหมด 17 ขา แต่วันนี้เราจะทดลองใช้ GPIO 7 สำหรับการทดสอบเรื่องอินพุต และใช้ GPIO 8 สำหรับการทดสอบเอาต์พุต
เริ่มต่อวงจรกันเลยครับ ในตัวอย่างเราจะใช้ LED เป็นเอาต์พุต และใช้สวิตกดติดปล่อยดับเป็นอินพุต
ต่อแล้วได้ออกมาหน้าตาประมาณนี้ครับ
เมื่อต่อวงจรเรียบร้อยแล้วมาเริ่มทดสอบกันเลย เริ่มจากทดสอบเอาต์พุตก่อน โดยใช้คำสั่งต่อไปนี้ (สังเกตที่ LED จะติดและดับตามการส่งสัญญานที่เราส่งไป)
gpio -g mode 8 out //กำหนดให้ GPIO 8 เป็นขาเอาต์พุต
gpio -g write 8 1 //ส่งค่า Height ไปที่ขา GPIO 8
gpio -g write 8 0 //ส่งค่า Low ไปที่ขา GPIO 8
1
2
3
gpio -g mode 8 out
gpio -g write 8 1
gpio -g write 8 0
ทำการทดสอบอินพุตกันต่อ (ทดลองกดสวิตและอ่านค่าจาก GPIO 7)
gpio -g mode 7 in //กำหนดให้ GPIO 7 เป็นขาอินพุต
gpio -g read 7 //อ่านค่าจาก GPIO 7 โดยจะมีค่าเป็น 0 กับ 1
1
2
gpio -g mode 7 in
gpio -g read 7
ก่อนออกไปเที่ยว เดี๋ยวเราจะลองเรียกใช้งาน gpio โดยใช้ PHP กันดูบ้าง ซึ่งหลักการก็ง่ายๆ คือเราจะใช้ฟังชั่น exec() ของ PHP เรียกไปที่ /usr/local/bin/gpio ตรงๆเลยง่ายดี
สร้างไฟล์ gpio.php ที่ /var/www/gpio.php
1
sudo nano /var/www/gpio.php
พิมพ์คำสั่งต่อไปนี้ลงไป
1
2
3
4
5
6
7
8
9
10
11
12
13
14

 
exec("/usr/local/bin/gpio -g mode 8 out");
exec("/usr/local/bin/gpio -g mode 7 in");
 
if($_GET['gpio8'] == 1){
 exec("/usr/local/bin/gpio -g write 8 1");
}else{
 exec("/usr/local/bin/gpio -g write 8 0");
}
 
echo "GPIO  7 = ".exec("/usr/local/bin/gpio -g read 7");
 
?>
เพียงเท่านี้เราก็สามารถควบคุม GPIO ของ Raspberry Pi ผ่านเว็บได้แล้ว ลองเปิดเว็บดูได้เลยครับ
http://192.168.8.102/gpio.php
http://192.168.8.102/gpio.php?gpio8=1
http://192.168.8.102/gpio.php?gpio8=0
นำมาจาก http://www.unzeen.com/article/2179/

ไม่มีความคิดเห็น:

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