先來一張效果圖吧:
提示
用到的工具或軟件有:
- WiringPi
- orangepi_PC_gpio_pyH3
- US-015模塊一個
- 杜邦線若干
準(zhǔn)備工作
1.安裝WiringPi
安裝方法來自官方用戶手冊:
安裝源碼需要的編譯工具
$ sudo apt-get install gcc g++ make
編譯GPIO 的H3 的驅(qū)動
git clone https://github.com/kazukioishi/WiringOP.git -b h3
cd WiringOP
chmod +x ./build
sudo ./build
GPIO 打印信息
gpio -v
gpio version: 2.20
Copyright (c) 2012-2014 Gordon Henderson
This is free software with ABSOLUTELY NO WARRANTY.
For details type: gpio -warranty
Banana Pro Details:
Type: Banana Pro, Revision: 1.2, Memory: 1024MB, Maker: LeMaker
顯示
gpio reada
2.安裝 orangepi_PC_gpio_pyH3
在github上下載orangepi_PC_gpio_pyH3或者使用如下命令clone:
git clone https://github.com/duxingkei33/orangepi_PC_gpio_pyH3.git
下載完成后執(zhí)行以下命令安裝:
python setup.py install
若提示 Python.h No such file or directory
請運(yùn)行以下命令安裝 python-dev
apt install python-dev
再次執(zhí)行安裝命令即可
3.連接US-015模塊至OrangePi Lite
US-015 模塊有一個4Pin接口
從左到右依次編號1,2,3,4。它們的定義如下:
- 1號Pin:接VCC電源(直流5V)。
- 2號Pin:接外部電路的Trig端,向此管腳輸入一個10uS以上的高電平,可觸發(fā)模塊測距。
- 3號Pin:接外部電路的Echo端,當(dāng)測距結(jié)束時,此管腳會輸出一個高電平,電平寬度為超聲波往返時間之和。
-
4號Pin:接外部電路的地。
OPI Lite的GPIO圖如下:
將1號Pin連接至GPIO的2口,2-4分別連至GPIO的35(PA10),37(PA20),39(GND)口。
編寫代碼
vi length.py
from pyA20.gpio import gpio
from pyA20.gpio import port
import time
def checkdist():
# 設(shè)置PA10為高電平,持續(xù)15微秒(大于10均可)
gpio.output(port.PA10,1)
time.sleep(0.000015)
gpio.output(port.PA10,0)
# 當(dāng)PA20接收到高電平信號后開始記錄時間,高電平小時候記錄時間
while not gpio.input(port.PA20):
pass
t1=time.time()
while gpio.input(port.PA20):
pass
t2=time.time()
# 根據(jù)超聲波速度計算距離
return (t2-t1)*340/2
# 初始化gpio
gpio.init()
# 設(shè)置PA10口為output
gpio.setcfg(port.PA10,1)
# 設(shè)置PA20口為input
gpio.setcfg(port.PA20,0)
# 等待2秒
time.sleep(2)
while True:
print 'Distance : %0.2f m' %checkdist()
# 每隔三秒獲取距離
time.sleep(0.3)
最后執(zhí)行
python length.py
即可看到運(yùn)行結(jié)果。
簡書上好像沒有代碼高亮,看起來不是很方便,可以去我的博客閱讀體驗更佳 虛耗的博客