LAB2 — [M1] —Remote Control via WebIoPi

Puwanat Torcheewee
5 min readApr 8, 2020

--

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

-> ตัวอย่าง 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 wheel
2. 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_DHT
4. Python 3:
$ sudo pip3 install Adafruit_DHT
===================[ Compile and Install ]====================
5. Python 2:
$ cd Adafruit_Python_DHT
$ sudo python setup.py install
6. 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

--

--