เราทราบดีอยู่แล้วว่า Raspberry pi นั้น สามารถทำให้เป็น web Server ได้ และในขณะเดียวกัน ก็ยังมี GPIO เหลือไว้ให้นักพัฒนาไว้ทำอะไรเล่นได้แตกต่างจาก PC ทั่วไปที่ไม่มี GPIO ให้ใช้ ก็เลยมีคนคิดที่จะทำ web application ที่สามารถที่จะควบคุม GPIO ผ่านทางหน้าเว็บ วันนี้ เรามาติดตั้ง web application ตัวหนึุ่่งที่น่าสนใจสำหรับ Raspberry pi นั่นก็คือ WebIOPi
WebIOPi คือเว็บแอพลิเคชั่น ที่ออกแบบด้วยภาษา Python ซึ่งทำงานร่วมกับ REST framework จุดประสงค์เพื่อให้การควบคุม GPIO ของ Raspberry Pi แสดงผล แบบ(เกือบจะ) Realtime ให้เห็นผ่านหน้าเว็บ โดยที่เราไม่ต้อง refresh หน้าเว็บ เมื่อ GPIO มีการเปลี่ยนแปลงสถานะ
"WebIOPi is developed and tested on Raspbian"
เพราะฉะนั้นใครทีใช้ Raspian อยู่แล้ว ก็ไม่น่ามีปัญหาอะไร ขั้นตอนติดตั้งไม่ยุ่งยากครับ เริ่มจากดาวน์โหลดไฟล์ แล้วก็ทำการรันสคริปต์ที่ติดตั้ง
wget http://webiopi.googlecode.com/files/WebIOPi-0.5.3.tar.gz
tar xvzf WebIOPi-0.5.3.tar.gz
cd WebIOPi-0.5.3
sudo ./setup.sh
รอสักครู่ จากนั้นก็สั่งให้ webiopi ทำงานด้วยการรันเซอร์วิส
sudo /etc/init.d/webiopi start
หากต้องการสั่งให้เซอร์วิสหยุดทำงาน ก็ตรงกันข้ามครับ
sudo /etc/init.d/webiopi stop
แต่ถ้าถูกใจแอพพลิเคชั่นนี้ และอยากให้ทำงานทุกครั้งที่เปิดเครื่องแล้วหล่ะก็ ให้กำหนดเป็นค่า default ตอนเปิดเครื่องไปเลย ด้วยคำสั่ง
sudo update-rc.d webiopi defaults
หลังจากนั้น เปิด web browser ของเราขึ้นมา แล้วกรอก URL ไปที่ไอพีของ Raspberry Pi ครับโดยใส่ port 8000 เข้าไปด้วย
เช่น ไอพีบอร์ด raspberry pi ของผมเป็น 192.168.2.105 จะได้ว่า http://192.168.2.105:80000/webiopi/ ครับ
ทำการกรอก username / password ครับ ในที่นี้ถูกกำหนดเป็น webiopi รหัสผ่านก็ raspberry ครับ
จะปรากฏหน้าเว็บ จากนั้น ลองกำหนดให้ GPIO ใดๆ ก็ได้เป็น OUT แล้วลองเอา LED ต่อที่ pin นั้นๆ จากนั้นกดเปลี่ยนสถานะ หากเป็น Hi จะเปลี่ยนสีเป็นสีเหลืองที่หน้าเว็บ ที่หลอด LED ก็ควรจะติดด้วย
ทดลองเปิดหน้าเว็บจากคอมพิวเตอร์เครื่องอื่น หรือเปิด browser เพิ่มอีก และดูผลการเปลี่ยนแปลง เราจะเห็นว่าหน้าเว็บแสดงผลได้แทบจะทันทีทันใด ที่มีการเปลี่ยนแปลงที่ GPIO ครับ นั่นก็เป็นเพราะ REST framework นั่นเอง
ลองติดตั้ง แล้วศึกษาตัวโปรเจคนี้ดูครับ รับรองได้ประโยชน์แน่นอน
แหล่งที่มา : http://code.google.com/p/webiopi/
13 ความคิดเห็น:
ผมได้ทำการลองแล้วครับแต่ผม ติดปัญหาคือ cannot install for python 2.7.3rc2 missing development headers ครับ ลอง google แล้ว เขาให้ upgrade firmware แต่ก็ยังไม่ได้ผลเลยครับ พอมีแนวทางแก้ไขไหมครับ ขอบคุณครับ
ลองติดตั้งนี้เพิ่มครับ
sudo apt-get install python-dev
ผมเจอปัญหาครับ คือ ผม config ให้ Pi ทำตัวเป็น access point (ต่อ wifi ได้ แจก IP ได้ แต่ไม่ได้เป็น Wifi Router) เพื่อผมจะได้ control GPIO ผ่านทาง wifi ได้โดยไม่ต้องต่อสาย LAN
หลังจากติดตั้ง hostapd เพื่อ config ให้เป็น AP และติดตั้ง udhcpd เพื่อให้ Pi แจาก IP ได้แล้ว ก็ติดตั้ง webiopi ต่อเลย ก็ทำงานได้ตามปกติ
ถ้าผม connect ผ่าน wifi โดยที่เสียบสาย LAN อยู่ก็ไม่มีปัญหาอะไรครับ เรียกใช้งานได้ แต่ถ้า boot ขึ้นมาโดยที่ไม่ได้ต่อสาย LAN มันจะ browse webIOPi ไม่ได้ คือ ping เจอครับ แต่ browse ไม่ขึ้นเลย (ไม่ถาม user name / password ด้วย) ไม่ทราบว่าเป็นเหมือนกันหรือเปล่าครับ
น่าแปลกที่ ping เจอ แต่ เปิดหน้าเว็บไม่ขึ้น บน wifi เท่าที่ผมเจออยู่ตอนนี้คือ ไฟบอร์ดไม่พอจ่าย usb wifi หน่ะครับ
พี่ครับในกรณีนี้ผมเข้าใจว่าทำงานผ่านวงแลน อยากทราบว่าถ้าจะทำให้ออกเน็ตทำไงครับ
จด domain name แล้วเอามาผูกกับ router ของเรา จากนั้นทำการ forward port จาก router ไปหาบอร์ด Raspberry pi ผมว่าจะเขียนบทความเรื่องนี้ แต่ คิดว่า หลายคนอาจทราบดีอยู่แล้ว ผมเลยไม่เขียนครับ
เขียนเหอะ ครับ นะครับจริงๆๆ
พี่ครับ ถ้าจะเอาโค๊ดไปใส่ต้องทำยังไงครับ
ถ้านะนำเอาโค๊ดมาใส่ต้องทำยังไงครับ
ถ้าอ่านโค๊ดเขาออก ก็ modify ได้แล้วครับ
ผมทดลองติดตั้งแล้วติด error ดังนีัครับ
Error response
Error code: 404
Message: Not Found.
Error code explanation: 404 - Nothing matches the given URI.
รบกวน พี่ช่วยแนะนำหน่อยครับ ว่าผมต้องแก้ใขตรงใหนบ้างนะครับ ขอบคุณครับ
Error 404 คือ เราเปิดบน browser แล้วมันหาหน้าเว็บนั้นไม่เจอ ลองใส่ / ต่อท้ายครับ ดูตามรูปด้านบนครับ
ปล. ตอนนี้มันออกเวอร์ชั่นใหม่ ไปไกลแหละ ลองไปตามอ่านดูในหน้าเว็บมันเลยครับ
ขอบคุณครับ ...ตอนนี้ผม ลองโหลดเวอร์ชั่น ใหม่ เป็น 0.6.0 มาติดตั้งครับ สามารถเข้าหน้าเปได้แล้ว ครับ ขอบคุณมาก ครับ ....
Post a Comment