本文示範 remote-Pio 藉由網頁介面遙控 Raspberry Pi® GPIO 腳位並驅動外部繼電器。在前一篇完成電路接線後,即可開機進入 Raspbian 系統進行軟體設定以及測試,首先自 Github 下載 remote-Pio 專案,remote-Pio 提供以下三項實做:
- gpio.py 可於 command line 下操作 GPIO pins
- 提供 Web API 存取 GPIO pins
- 提供 Web UI 供使用者控制 GPO pins
由於 remote-Pio 使用 Python Flask 設計 Web API/UI 須先安裝 Flask ,安裝完 Flask 後執行 gpioapi.py:
$ pip install Flask
$ python gpioapi.py
此時會在 Raspberry pi 執行 web server 測試環境,可此用平板或手機以 WiFi 連線到 Raspberry pi 的 Port 5000 (http://raspberrypi-ip:5000/)即可操作 Web UI 介面,透過點選畫面中的按鈕即可控制 Raspberry Pi GPO 針腳輸出電壓,進而切換繼電器開關。
實際上 Web UI 透過 gpo.js 存取存取 API:
GET /gpio/ - get data {pin: value}
POST /gpio/{pin} - post data {cmd: on|off}
當按鈕被點擊時觸發 click 事件並執行對應的處理函數 set_gpio(),該函數判別按鈕所對應的 pin number 以及狀態,接著以 ajax 方法存取 API,Flask 提供 app.route() decorator 對應 request 與處理函數,因此對於 /gpio/{pin} 的 GET 或是 POST 請求都會對應到 gpio(pin),gpio(pin) 收到 request 後透過 sudo 以 root 權限呼叫 gpio.py 調用 RPi.GPIO 執行開關切換動作,因此可實現遠端遙控 Raspberry Pi 以及繼電器。