除上星期提及的物業公司、舉辦活動外,若是一些規劃部門,如進行道路規劃,也需要知道該條道路的人流數量是多少。以上的例子,均適用量度流量,而且十分重要。今期會進一步詳解程式編寫及超聲波感測器的原理。
整個設計意念是當有人經過感應器時, Raspberry Pi 經由感應器和程式,將數據記錄記下來。基於 IoT 觀念,我們甚至可將數據定時上傳到 Thingspeak ,方便有關人士可使用互聯網即時監察人流數據,或將數據儲起來,日後再作分析。
Python 電腦程式
最後的階段, 與上期設計相似, 在 Raspberry Pi 編寫程式讓 HC-SR04 傳感器運作,並將數據定時上傳到 Thingspeak 。在這裏使用 Python 2 ,並使用 RPi.GPIO Library 。有關這個人流計算器的程式碼可見下面 Code ,當中的一些重點解釋如下:
[row][double_paragraph] [/double_paragraph][double_paragraph] 行數 1-5 : 載入所需要用的 Library。
行數 7-8 : 設定 Trigger 及 Echo 的接口位置。
行數 9-10 : 定義變數 Num_people 為人流數目, counter 為測試人流次數。
行數 11-12 : 定義輸入及輸出的接口。
行數 13 : 列印「 Raspberry Pi people counter 」,以表示程式開始。
行數 15 : while True 使行數 16 至 40 會不斷重複執行。
行數 16-17 : 設 Trigger 接口為低電位,並維持 0.5 秒。
這個時間值是需要作調節,以提升人流計算器的準確性,不會因為路人行得太慢,而令計算器錄得多於一次的記錄,或因路人行得太快而未能記錄到他們的數據。
行數 18-20 : Trigger 發出一個 10us 脈衝。
行數 21-24 : 記錄發出訊號的時間( start ),及接收到反射回來的訊號的時間( stop )。
行數 26-28 :計算訊號的來回時間 travel_time ( stopstart ),並用 travel_time 計算及列印出前面物件(行人)的距離。
行數 29 :每次測量完之後便會將 counter 的數值增加 1 。
行數 31-33 :當行人與感應器的距離少於 40 厘米時, Num_people 的數值便會增加 1 ,再列印出數值作參考。
行數 35-40 :當進行了 50 次的測試行人經過後,人流次數( Num_people )的數據便會上載到 Thingspeak 。留意在第 36 行中的 api_key ,是剛才 Thingspeak Channel 的 Write API KEY ,只要複製上去便可以了。 [/double_paragraph] [/row]
超聲波感測器如蝙蝠
人流計算器的其中一個硬件是傳感器 HC-SR04 ,此超聲波感測器非常普及,常用於機械人對障礙物的測量,而且價錢便宜。此傳感器的原理是使用超聲波的發出及反射回來,過程中所需要的時間而估計前面障礙物的距離。情況好像在大自然中的蝙蝠,他們也是利用超聲波來確定前面障礙物的位置。 HC-SR04 傳感器能有效探測距離為 2cm 至 400cm ,十分適合於人流計算器內使用。
Thingspeak 監察人流
按照上述步驟,就可以將人流計算器設定好,只要將它放在行人經過的地方,例如出入口附近的位置,就可以量度經過的人流,只要行人經過感應器,並與感應器距離少於 40 厘米範圍內,人次就可記錄下來,並於 Thingspeak 平台上監察人流數據。
[row][double_paragraph]
[/double_paragraph][double_paragraph]
[/double_paragraph] [/row]
另外,讀者也可以考慮,在人流計算器加上 LED 小燈,每當有人經過感應器的時候, LED 小燈便會亮起來,可以令到整個裝置更加互動。