LAB2 — [M1] —Remote Control via WebIoPi
Web IO PI เป็น web applocation ที่ถูกพัฒนามากจาก Pythonทำงานร่วมกับ REST Frame work ตัวนี้มีความสามารถ คือ ใช้ในการควบคุม GPIO ของบอร์ด Raspberry pi นั่นเองการควบคุมหรือเรียกดูทําได้ผ่านหน้าโปรแกรมเวปเบราว์เซอร์ หรืออีนัยหนึ่ง คือ ตัว Web io pi นี้เป็นตัวแสดงผลเพื่อติดต่อกับ Raspberry Pi การติดตั้ง WebIOPi-0.7.1 Patch สําหรับ Raspberry B+, Pi2, and Pi3 มีความสามารถเข้าถึง I/O Header 40 pins (40 ขา) บนอุปกรณ์ Raspberry และดึงค่าออกมา แสดงผ่านบนหน้า Web อินเทอร์เฟซ
แนะนำ การใช้งาน Node-RED : คลิกที่นี่
เริ่มการใช้งาน
Step 1 : Start
1: Install Program
ให้พิมพ์คำสั่งที่ให้มาลง Terminal
1.1 คำสั่งดาวน์โหลดไฟล์ WebIOPi-0.7.1.tar.gz
$ sudo wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
1.2 คำสั่งแตกไฟล์ WebIOPi-0.7.1.tar.gz
$ sudo tar xvzf WebIOPi-0.7.1.tar.gz
1.3 คำสั่งเข้าไปในโฟลเดอร์ WebIOPi-0.7.1
$ cd WebIOPi-0.7.1
1.4 คำสั่งดาวน์โหลด Patch เสริม webiopi-pi2bplus.patch
$ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
1.5 คำสั่งติดตั้ง Patch webiopi-pi2bplus.patch
$ patch -p1 -i webiopi-pi2bplus.patch
1.6 คำสั่งติดตั้ง WebIOPi-0.7.1
$ sudo ./setup.sh
1.7 คำสั่งรีบูตระบบ
$ sudo reboot
2 : วิธี start/stop WebIOPi
2.1 คำสั่ง start การทำงาน WebIOPi
$ sudo /etc/init.d/webiopi start
2.1 คำสั่ง stop การทำงาน WebIOPi
$ sudo /etc/init.d/webiopi stop
3 : ตั้งค่า Auto Start webiopi
3.1 คำสั่ง Auto Start WebIOPi
$ sudo update-rc.d webiopi defaults
3.2 คำสั่งยกเลิก Auto Start WebIOPi
$ sudo update-rc.d webiopi remove
4 : ตรวจสอบการทำงานของ webiopi
$ sudo /etc/init.d/webiopi status
5 : เปลี่ยน User Name หรือ password
5.1 คำสั่งในการเปลี่ยน User Name หรือ password
$ sudo webiopi-passwd
5.2 คำสั่งยกเลิกในการเปลี่ยน User Name หรือ password เข้าไปแก้ config ของ WebIOpi ด้วยคำสั่ง
$ sudo nano /etc/webiopi/config
แก้ไขบรรทัด passwd-file = /etc/webiopi/passwd ใส่เครื่องหมาย # ข้างหน้า passwd-file
5.3 แล้ว Restart WebIOPi
$ sudo /etc/init.d/webiopi restart
6 : ตั้ง Power On Reboot (เปิดมาทำงานเลย)
6.1 ให้พิมพ์ 2 คำสั่งนี้แล้ว Restart RPi เราก็จะเข้า WebIOpi โดยไม่ต้อง Start ใหม่ทุกครั้ง
$ sudo systemctl start webiopi
$ sudo systemctl enable webiopi
6.2 ถ้าอยากยกเลิกให้ใช้คำสั่ง
$ sudo systemctl disable webiopi
-> เมื่อเรา Restart เครื่องมาใหม่ก็ไม่สามารถเข้า WebIOPi ได้ทันทีต้องพิมพ์คำสั่ง Start ใหม่
7. แก้ไข config ของ Web io ด้วยคำสั่ง
$ sudo nano /etc/webiopi/config
Step 2 : Test Program
การทดลองที่ 1 ทดสอบการทำงาน Digital Input/Output
- การเข้าใช้งาน Web IOPi เข้าไปที่ http://rpi_ipAddress:8000/
-> ตัวอย่าง 192.168.1.49:8000
- รหัสเริ่มต้น เข้าใช้งาน
User name: webiopi
Password : raspberry
➽ ต่อวงจารเพื่อทดสอบการทำงาน
- กำหนด IN/OUT ที่ขาก่อนใช้งาน, กรณีให้เป็นอินพุต ต้องมี R-Pull Up
- คลิกเปลี่ยน PIN 16 และ PIN 18 เป็น OUT
- ทดสอบการใช้งานโดยคลิกที่ตัวเลขเพื่อเปิด, ปิด LED
- ผลลัพธ์
การทดลองที่ 2 Read DHT-22 Send to WebIoPi
** แนะนำวิธีการต่อ และการเรียกใช้งาน DHT22 : คลิกที่นี่
- พิมพ์คำสั่งต่อไปนี้ลงใน Terminal ในการดาวน์โหลดและเรียกใช้ DHT22
$ sudo apt-get update
$ sudo apt-get install build-essential python-dev
$ git clone https://github.com/adafruit/Adafruit_Python_DHT.git
$ cd Adafruit_Python_DHT
/Adafruit_Python_DHT $ sudo python setup.py install
- การต่อวงจร
- เรียกใช้งาน DHT22
/Adafruit_Python_DHT $ cd examples
/Adafruit_Python_DHT/examples $ sudo ./AdafruitDHT.py 22 4
- พิมพ์ Code ที่ให้มาใน Python3 (IDLE)
พิมพ์โค้ดที่ให้มาลงไปในโปรแกรม Python 3(IDLE) save file ชื่อว่า temperature.py
- ใส่คำสั่งนี้ เข้าหน้า config ของ webiopi เพื่อเรียกใช้ไฟล์ที่เราบันทึกไว้ก่อนหน้านี้
$ sudo nano /etc/webiopi/config
— > หา [SCRIPTS] แล้วพิมพ์ temperature = /home/pi/temperature.py หรือตำแหน่งอื่นที่บันทึกไว้ เพื่อเรียกใช้งาน เมื่อเสร็จแล้ว Ctlr+O เพื่อบันทึกแล้ว Ctlr+X เพื่อออกจากหน้า config
- ให้พิมพ์คำสั่งใน Terminal คำสั่งเพื่อเปิดใช้งาน
$ sudo webiopi -d -c /etc/webiopi/config
***** ถ้ารันไม่ได้หน้าตาคล้ายนี้แสดงว่า Adafruit_Python_DHT ไม่ support Python3 ให้ลงตามขั้นตอนต่อไปนี้
[จะทำตามนี้ก็ได้นะครับ]
ให้ลงตาม Step
=====================[ Dependencies ]========================
1. Python 2:
$ sudo apt-get update
$ sudo apt-get install python-pip
$ sudo python -m pip install --upgrade pip setuptools wheel2. Python 3:
$ sudo apt-get update
$ sudo apt-get install python3-pip
$ sudo python3 -m pip install --upgrade pip setuptools wheel===================[ Install with pip ]=======================
3. Python 2:
$ sudo pip install Adafruit_DHT4. Python 3:
$ sudo pip3 install Adafruit_DHT===================[ Compile and Install ]====================
5. Python 2:
$ cd Adafruit_Python_DHT
$ sudo python setup.py install6. Python 3:
$ cd Adafruit_Python_DHT
$ sudo python3 setup.py install
- เมื่อเปิดใช้งานแล้ว ให้เปิดอีก Terminal โดย Terminal แรกที่เรารันคำสั่งไว้ยังเปิดอยู่ เพื่อดูผลลัพธ์ ให้คำสั่งนี้ใน Terminal ใหม่
$ curl -X POST -u webiopi:<password> ip_rpi:8000/macros/temperature
ผลลัพธ์จะได้ค่าเป็นอุณหภูมิ {“temperature”: xx.yy, “humidity”: xx.yy} ถ้าต้องการออกจากโปรแกรมให้ Ctlr+C
โจทย์ท้าทาย
การทดลองที่ 3 อ่าน CPU and GPU Temperature WebIoPi
- พิมพ์ Code ที่ให้มาใน Python3 (IDLE)
พิมพ์โค้ดที่ให้มาลงไปในโปรแกรม Python 3(IDLE) save file ชื่อว่า tempCPUwebio.py
- ใส่คำสั่งนี้ เข้าหน้า config ของ webiopi เพื่อเรียกใช้ไฟล์ที่เราบันทึกไว้ก่อนหน้านี้
$ sudo nano /etc/webiopi/config
— > หา [SCRIPTS] แล้วพิมพ์ temperature = /home/pi/tempCPUwebio.py หรือตำแหน่งอื่นที่บันทึกไว้ เพื่อเรียกใช้งาน เมื่อเสร็จแล้ว Ctlr+O เพื่อบันทึกแล้ว Ctlr+X เพื่อออกจากหน้า config
- ให้ใส่ใน Terminal คำสั่งเพื่อเปิดใช้งาน
$ sudo webiopi -d -c /etc/webiopi/config
- เมื่อเปิดใช้งานแล้ว ให้เปิดอีก Terminal โดย Terminal แรกที่เรารันคำสั่งไว้ยังเปิดอยู่ เพื่อดูผลลัพธ์ ให้คำสั่งนี้ใน Terminal ใหม่
$ curl -X POST -u webiopi:<password> ip_rpi:8000/macros/temperature
ผลลัพธ์จะได้ค่าเป็นอุณหภูมิ{“temp CPU”: xx.yy, “temp GPU”: xx.yy} ถ้าต้องการออกจากโปรแกรมให้ Ctlr+C
เอกสาร PDF สำหรับ Offline : link