吳友蘭 王琳娜 胡冬琴
摘 要:該文設(shè)計(jì)了基于嵌入式樹莓派為核心控制器的遠(yuǎn)程溫度監(jiān)測系統(tǒng),并通過溫度傳感器DS18B20獲得數(shù)據(jù)加以融合以及模糊算法對其進(jìn)行處理,用戶可在手機(jī)或電腦客戶終端上了解到居室溫度變化情況。該系統(tǒng)可以被廣泛地用于生產(chǎn)中的各領(lǐng)域,特別適合于人體無法接近的高溫或危險(xiǎn)場所的溫度控制。
關(guān)鍵詞:樹莓派 DS18B20 網(wǎng)絡(luò)監(jiān)控 單總線協(xié)議
中圖分類號:TP274.4 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2017)07(a)-0006-02
Abstract: The designs is a remote temperature monitoring system based on embedded controllers raspberry pie, And use the temperature sensor DS18B20 to get data and fuzzy algorithm to deal with it, The user can know the room temperatures change by the mobile phone or computer client terminal. The system can be widely used in various fields of production. Especially suitable for the people can not be close to the high temperature or dangerous places of temperature control.
Key Words: Raspberry pie; DS18B20; Network monitoring; 1-wire protocol
在日常生活中溫度在我們身邊無時(shí)不在,溫度的控制和應(yīng)用在各個(gè)領(lǐng)域都有重要的作用。目前市場上的大多數(shù)溫室測控系統(tǒng)大多采用有線布網(wǎng)、人工測量,導(dǎo)致現(xiàn)場安裝困難,工作效率偏低,測量精度差,這不僅大大增加了電氣工程施工費(fèi)用,也導(dǎo)致施工等工作困難;此外,系統(tǒng)中的每個(gè)監(jiān)控點(diǎn)沒有自組織功能和自愈能力,維護(hù)工作量大,也不利十系統(tǒng)升級。因此,開發(fā)和研制一種新型的遠(yuǎn)程溫室環(huán)境測控系統(tǒng)是十分必要的。
傳統(tǒng)的利用單片機(jī)來檢測控制溫度的案例有很多,但是用單片機(jī)來實(shí)現(xiàn)遠(yuǎn)程無線通信比較復(fù)雜,涉及到編寫WiFi模塊的驅(qū)動(dòng)程序和無線數(shù)據(jù)通信程序。如果我們把主控制器換成樹莓派,實(shí)現(xiàn)遠(yuǎn)程監(jiān)控就會(huì)變得簡單很多。樹莓派(Raspberry PI)是英國一個(gè)小型慈善組織開發(fā)的一款基于Linux的開放式嵌入式系統(tǒng),通過裝載相應(yīng)的Linux系統(tǒng)和相應(yīng)的應(yīng)用程序,可以實(shí)現(xiàn)強(qiáng)大的能力,還具有廉價(jià)、體積小等優(yōu)點(diǎn)。該次設(shè)計(jì)開發(fā)就是以硬件開源的嵌入式系統(tǒng)樹莓派作為應(yīng)用開發(fā)平臺,加上現(xiàn)在特別流行的數(shù)字型溫度傳感器ds18b20作為采集數(shù)據(jù)的終端。利用創(chuàng)業(yè)公司Yeelink公司開發(fā)的Yeelink作為云存儲(chǔ)平臺來實(shí)現(xiàn)遠(yuǎn)程的溫度數(shù)據(jù)的監(jiān)測和控制。
1 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)
該系統(tǒng)設(shè)計(jì)分為以下幾個(gè)模塊:主控模塊、待測模塊、顯示模塊、控制模塊、遠(yuǎn)程交互模塊。
(1)主控模塊我們采用嵌入式樹莓派作為該系統(tǒng)的主控器。
(2)待測模塊采用的單總線結(jié)構(gòu)的數(shù)字型溫度傳感器ds18b20。
(3)控制模塊采用的報(bào)警發(fā)聲模塊。
(4)輸出模塊采用四位數(shù)碼管顯示所測得溫度值。
(5)主控模塊通過WiFi連接internet,用于實(shí)現(xiàn)遠(yuǎn)程的數(shù)據(jù)交互。
2 環(huán)境搭建
主控器我們采用的是樹莓派,它是只有信用卡大小的卡片式電腦。Raspberry Pi是一款以SD卡為內(nèi)存硬盤,操作系統(tǒng)采用開源的Linux系統(tǒng)。通過裝載相應(yīng)的Linux系統(tǒng)和相應(yīng)的應(yīng)用程序,樹莓派可以實(shí)現(xiàn)強(qiáng)大的應(yīng)用功能,為我們提供了一個(gè)理想的嵌入式開發(fā)平臺。樹莓派預(yù)搭載的編程開發(fā)環(huán)境是Python語言,Python是一種面向?qū)ο?、直譯式計(jì)算機(jī)編程語言,包含了一組完善而且容易理解的標(biāo)準(zhǔn)庫,能夠輕松完成很多常見的任務(wù)。
就像每一個(gè)計(jì)算機(jī)那樣,樹莓派需要一個(gè)操作系統(tǒng),我們選擇Linux。選擇Linux是因?yàn)樗赓M(fèi),而且可支持ARM處理器。
系統(tǒng)安裝過程如下:
制作可引導(dǎo)的SD卡。
(1)一個(gè)帶讀卡器的PC。
(2)從官方下載頁下載Debian映像文件。
下載地址:http://downloads.raspberrypi.org/images/raspbian/2013-02-09-wheezy-raspbian/2013-02-09-wheezy-raspbian.zip
下載完成后,PC上將有2013-02-09-wheezy-raspbian.zip文件。
(3)用專門的工具將映像文件寫入到SD卡。
Windows用戶可以使用Win32DiskImager軟件,Unix用戶使用dd工具。
在Windows下可以使用Win32Disk Imager進(jìn)行鏡像恢復(fù),非常方便,也是樹莓派官方推薦的方法。官方下載地址:http://sourceforge.net/projects/win32diskimager/。
(4)樹莓派實(shí)現(xiàn)WiFi上網(wǎng)。
給樹莓派添加wifi模塊,實(shí)際上就是一個(gè)usb無線網(wǎng)卡。我使用的是EOUP的usb無線網(wǎng)卡,經(jīng)測試樹莓派可以直接識別,不需要額外配置驅(qū)動(dòng),即可實(shí)現(xiàn)樹莓派的無線上網(wǎng)功能。
3 硬件電路設(shè)計(jì)
設(shè)計(jì)中我們采用的樹莓派的擴(kuò)展板對樹莓派的外圍電路進(jìn)行擴(kuò)展,擴(kuò)展板上已經(jīng)設(shè)計(jì)引出DS18B20的引腳,我們只需要把DS18B20插在擴(kuò)展板上即可實(shí)現(xiàn)硬件的設(shè)計(jì)和開發(fā)。
4 軟件電路設(shè)計(jì)
4.1 ds18b20驅(qū)動(dòng)的安裝和使用
樹莓派支持多種串行總線,包括SPI和I2C,卻沒有提供1-Wire接口。溫度傳感器DS18B20就是個(gè)1-Wire接口的器件,為了使用這款溫度傳感器,我們必須使用軟件來模擬1-Wire接口時(shí)序,從DS18B20中讀取我們需要的溫度。在樹莓派的操作系統(tǒng)Debian中,包含這部分驅(qū)動(dòng),我們可以直接使用它。
具體方式,進(jìn)入命令行(通過ssh或者直接連顯示器)。
輸入如下命令:
sudo wget http://www.frank-buss.de/raspberrypi/kernel-rpi-w1.tgz
sudo tar -xzf kernel-rpi-w1.tgz
sudo rm -f kernel-rpi-w1.tgz
sudo cd /lib/modules
sudo wget http://www.frank-buss.de/raspberrypi/modules-rpi-w1.tgz
sudo tar -xzf modules-rpi-w1.tgz
sudo rm -f modules-rpi-w1.tgz
sudo sync
sudo reboot
然后等待機(jī)器重啟重新加載1-wire設(shè)備的驅(qū)動(dòng),也就是給18b20的驅(qū)動(dòng)。
接下來,在命令行輸入:
sudo modprobe w1-gpio
sudo modprobe w1-therm
在打開的界面上,其中28開頭的就是28b20設(shè)備了,如果接多個(gè)DS18B20,將會(huì)看到多個(gè)28-xxxx的文件,分別對應(yīng)各個(gè)DS18B20。程序中我們只要調(diào)用驅(qū)動(dòng)程序w1_slave中的提供的獲得溫度數(shù)據(jù)函數(shù),進(jìn)行處理即可得到DS18B20傳感器監(jiān)測的溫度值。
4.2 溫度獲取程序
下面是利用python實(shí)現(xiàn)獲得溫度值程序模塊。
import os
import glob
import time
os.system(‘modprobe w1-gpio)
os.system(‘modprobe w1-therm)
base_dir=/sys/bus/w1/devices/
device_folder=glob.glob(base_dir+28*)[0]
device_file=device_folder+/w1_slave
def read_temp_raw():
f=open(device_file,r)
lines=f.readlines()
f.close()
return lines
def read_temp():
lines=read_temp_raw()
while lines[0].strip()[-3:]!=YES:
time.sleep(0.2)
lines=read_temp_raw()
equals_pos=lines[1].find(‘t=)
if equals_pos!=-1:
temp_string=lines[1][equals_pos+2:]
temp_c=float(temp_string)/1000.0
return temp_c
4.3 遠(yuǎn)程交互
Yeelink獨(dú)有設(shè)計(jì)的高并發(fā)接入服務(wù)器和云存儲(chǔ)方案,能夠同時(shí)完成海量的傳感器數(shù)據(jù)接入和存儲(chǔ)任務(wù),確保您的數(shù)據(jù)能夠安全的保存在互聯(lián)網(wǎng)上,先進(jìn)的鑒權(quán)系統(tǒng)和安全機(jī)制,能夠確保數(shù)據(jù)只在您允許的范圍內(nèi)共享。
此次設(shè)計(jì)中我們就利用互聯(lián)網(wǎng)云平臺yeelink將采集的溫度數(shù)據(jù)進(jìn)行收集并顯示出來,Yeelink是一個(gè)開源的硬件數(shù)據(jù)平臺,我們把它定義為一個(gè)物聯(lián)網(wǎng)云平臺,因?yàn)樗o我們提供了API接口,我們可以把數(shù)據(jù)發(fā)送到云平臺保存起來,也可以隨時(shí)隨地查看。
5 結(jié)語
該文介紹了基于樹莓派檢測溫度控制系統(tǒng)的工作原理, 測溫系統(tǒng)采用了樹莓派為核心微處理器,通過傳感器DS18B20實(shí)現(xiàn)對溫度測量,并進(jìn)行存儲(chǔ)和遠(yuǎn)程顯示。用戶可以遠(yuǎn)程監(jiān)測溫度,并顯示溫度變化曲線圖。我們在此基礎(chǔ)上,還可以擴(kuò)展其他信號,如濕度,PM2.5等,來實(shí)現(xiàn)遠(yuǎn)程環(huán)境的監(jiān)測。
參考文獻(xiàn)
[1] 劉繼忠,邱于兵,黃翔.基于ARM的遠(yuǎn)程溫濕度監(jiān)測系統(tǒng)的設(shè)計(jì)[J].儀表技術(shù)與傳感器,2012(8):90-92.
[2] 張文普,牟宇飛,基于ARM的遠(yuǎn)程無線瓦斯監(jiān)控系統(tǒng)[J].儀表技術(shù)與傳感器,2012(1):68-70.
[3] 衷衛(wèi)聲,施忠華.嵌入式Web Server在遠(yuǎn)程數(shù)據(jù)采集系統(tǒng)中的應(yīng)用[J].儀表技術(shù)與傳感器,2012(9):103-104,110.