示例 - 溫度感測器
DS18B20 與 Raspberry pi 的介面
DS18B20 與 Raspberry pi 的連線
你可以看到有三個終端
- VCC
- GND
- 資料(單線協議)
R1 為 4.7k 歐姆電阻,用於提升電壓電平
- Vcc 應連線到 Raspberry pi 的任何 5v 或 3.3v 引腳(PIN:01,02,04,17)。
- Gnd 應連線到 Raspberry pi 的任何 Gnd 引腳(PIN:06,09,14,20,25)。
- 資料應連線到(PIN:07)
從 RPi 側啟用單線介面
-
使用 putty 或任何其他 linux / unix 終端登入 Raspberry pi。
-
登入後,在你喜歡的瀏覽器中開啟/boot/config.txt 檔案。
nano /boot/config.txt
-
現在將此行
dtoverlay=w1–gpio
新增到檔案的末尾。 -
現在重新啟動 Raspberry pi
sudo reboot
。 -
登入 Raspberry pi,然後執行
sudo modprobe g1-gpio
-
然後執行
sudo modprobe w1-therm
-
現在轉到目錄/ sys / bus / w1 / devices
cd /sys/bus/w1/devices
-
現在,你將找到一個從 28 - ********開始的溫度感測器建立的虛擬目錄。
-
轉到此目錄
cd 28-********
-
現在有一個檔名 w1-slave ,該檔案包含溫度和其他資訊,如 CRC。
cat w1-slave
。
現在在 python 中編寫一個模組來讀取溫度
import glob
import time
RATE = 30
sensor_dirs = glob.glob("/sys/bus/w1/devices/28*")
if len(sensor_dirs) != 0:
while True:
time.sleep(RATE)
for directories in sensor_dirs:
temperature_file = open(directories + "/w1_slave")
# Reading the files
text = temperature_file.read()
temperature_file.close()
# Split the text with new lines (\n) and select the second line.
second_line = text.split("\n")[1]
# Split the line into words, and select the 10th word
temperature_data = second_line.split(" ")[9]
# We will read after ignoring first two character.
temperature = float(temperature_data[2:])
# Now normalise the temperature by dividing 1000.
temperature = temperature / 1000
print 'Address : '+str(directories.split('/')[-1])+', Temperature : '+str(temperature)
以上 python 模組將列印溫度與地址無限時間。定義 RATE 引數以改變或調整來自感測器的溫度查詢頻率。
GPIO 引腳圖