基于樹莓派的數(shù)據(jù)采集與存儲(chǔ)_第1頁(yè)
基于樹莓派的數(shù)據(jù)采集與存儲(chǔ)_第2頁(yè)
基于樹莓派的數(shù)據(jù)采集與存儲(chǔ)_第3頁(yè)
基于樹莓派的數(shù)據(jù)采集與存儲(chǔ)_第4頁(yè)
基于樹莓派的數(shù)據(jù)采集與存儲(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式綜合實(shí)踐設(shè)計(jì)報(bào)告目錄一、樹莓派簡(jiǎn)介3二、配置樹莓派31.樹莓派供電32.手動(dòng)對(duì)SD存儲(chǔ)卡進(jìn)行寫操作(windows)33.連接筆記本電腦顯示器3三、硬件電路連接7四、DHT11簡(jiǎn)介7五、獲取DHT11傳感器溫濕度8六、安裝本地MYSQL10七、連接阿里云RDS數(shù)據(jù)庫(kù)11八、上傳數(shù)據(jù)到傳感云13九、Cron 實(shí)現(xiàn)定時(shí)功能14一、 樹莓派簡(jiǎn)介Raspberry Pi(中文名為“樹莓派”,簡(jiǎn)寫為RPi,或者RasPi/RPi)是為學(xué)生計(jì)算機(jī)編程教育而設(shè)計(jì),只有信用卡大小的卡片式電腦,其系統(tǒng)基于Linux。隨著Windows 10 IoT的發(fā)布,我們也將可以用上運(yùn)行Windows的樹莓派。自問世

2、以來(lái),受眾多計(jì)算機(jī)發(fā)燒友和創(chuàng)客的追捧,曾經(jīng)一“派”難求。別看其外表“嬌小”,內(nèi)“心”卻很強(qiáng)大,視頻、音頻等功能通通皆有,可謂是“麻雀雖小,五臟俱全”。二、 配置樹莓派1. 樹莓派供電 樹莓派的供電裝置與智能手機(jī)的充電器是一樣的?;疽?guī)格為DC 5V(直流電),至少達(dá)到700mA的輸出電流,樹莓派2的輸出電流應(yīng)該更大,比如1.5A或2A。2. 手動(dòng)對(duì)SD存儲(chǔ)卡進(jìn)行寫操作(windows) 選擇一張4GB以上的SD存儲(chǔ)卡,SD卡插入筆記本電腦卡槽(或者需要一個(gè)讀卡器)。下載官方發(fā)行的樹莓派操作系統(tǒng)發(fā)行包(),并解壓到本地。用管理員權(quán)限打開Fedora ARM Installer(http:/bit

3、.ly/ISLPc4下載),將下載的鏡像寫入SD存儲(chǔ)卡。如下圖:3. 連接筆記本電腦顯示器² 網(wǎng)絡(luò)設(shè)置:SD卡插入樹莓派的SD卡插槽,把樹莓派和路由器用網(wǎng)線連接。打開電腦“網(wǎng)絡(luò)和共享中心”,點(diǎn)擊“WLAN(*)”點(diǎn)擊“屬性”,點(diǎn)擊“共享”,在“允許其他網(wǎng)絡(luò)用戶通過此計(jì)算機(jī)的Internet來(lái)連接”前打勾。² 查找樹莓派IP地址:打開“運(yùn)行”(win+R鍵),輸入cmd”,輸入“arp -a”,在下圖中的0x4接口下的動(dòng)態(tài)地址就為樹莓派的IP地址。² 下載PuTTy,在Host Name中輸入樹莓派IP,² 登入樹莓派:在下圖頁(yè)面中l(wèi)ogin處輸入樹莓派賬

4、號(hào)(pi),在password處輸入密碼(raspberry)?;剀囘M(jìn)入下圖頁(yè)面² 樹莓派的桌面環(huán)境配置:在上putty中輸入sudo apt-get update; sudo apt-get install tightvncserver。安裝完成vnc服務(wù)后,在上圖中繼續(xù)輸入以下命令:vncserver :1 (一定要?jiǎng)?chuàng)建連接端口)。在第一次運(yùn)行時(shí),會(huì)提示你創(chuàng)建密碼。在連接時(shí)就需要此密碼。下載RealVNC(),在下圖中輸入樹莓派IP:1(如13:1。在下圖中輸入上面創(chuàng)建的密碼進(jìn)入樹莓派桌面 三、 硬件電路連接DHT11與樹莓派引腳圖如下:具體電路連接如下DH

5、T11的VDD連接樹莓派17號(hào)管腳,GND連接20號(hào)管腳,DATA連接18號(hào)管腳。實(shí)物圖如下:四、 DHT11簡(jiǎn)介數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。它應(yīng)用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長(zhǎng)期穩(wěn)定性。DATA 用于微處理器與 DHT11之間的通訊和同步,采用單總線數(shù)據(jù)格式,一次通訊時(shí)間4ms左右,數(shù)據(jù)分小數(shù)部分和整數(shù)部分,具體格式在下面說明,當(dāng)前小數(shù)部分用于以后擴(kuò)展,現(xiàn)讀出為零.操作流程如下:一次完整的數(shù)據(jù)傳輸為40bit,高位先出。數(shù)據(jù)格式:8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)

6、+8bit校驗(yàn)和數(shù)據(jù)傳送正確時(shí)校驗(yàn)和數(shù)據(jù)等于“8bit濕度整數(shù)數(shù)據(jù)+8bit濕度小數(shù)數(shù)據(jù)+8bi溫度整數(shù)數(shù)據(jù)+8bit溫度小數(shù)數(shù)據(jù)”所得結(jié)果的末8位。DHT11發(fā)送響應(yīng)信號(hào),送出40bit的數(shù)據(jù),并觸發(fā)一次信號(hào)采集,用戶可選擇讀取部分?jǐn)?shù)據(jù).從模式下,DHT11接收到開始信號(hào)觸發(fā)一次溫濕度采集,如果沒有接收到主機(jī)發(fā)送開始信號(hào),DHT11不會(huì)主動(dòng)進(jìn)行溫濕度采集.采集數(shù)據(jù)后轉(zhuǎn)換到低速模式。通訊過程如圖所示五、 獲取DHT11傳感器溫濕度采用Python語(yǔ)言實(shí)現(xiàn)溫濕度的獲取,每執(zhí)行一次程序讀取一次溫濕度的值。采用putty中的nano編輯器完成匯編。步驟如下:² 登入樹莓派,獲取root權(quán)限

7、² 進(jìn)入nano編輯器,編輯Python程序,程序如下:#! /usr/bin/env pythonimport RPi.GPIO as GPIO import time channel = 12data = j = 0GPIO.setmode(GPIO.BCM)time.sleep(1)GPIO.setup(channel, GPIO.OUT)GPIO.output(channel, GPIO.LOW)time.sleep(0.02)GPIO.output(channel, GPIO.HIGH)GPIO.setup(channel, GPIO.IN)while GPIO.input

8、(channel) = GPIO.LOW: continuewhile GPIO.input(channel) = GPIO.HIGH: continuewhile j < 40: k = 0 while GPIO.input(channel) = GPIO.LOW: continue while GPIO.input(channel) = GPIO.HIGH: k += 1 if k > 100: break if k < 8: data.append(0) else: data.append(1) j += 1print "sensor is working.&

9、quot;print datahumidity_bit = data0:8humidity_point_bit = data8:16temperature_bit = data16:24temperature_point_bit = data24:32check_bit = data32:40humidity = 0humidity_point = 0temperature = 0temperature_point = 0check = 0for i in range(8): humidity += humidity_biti * 2 * (7 - i) humidity_point += h

10、umidity_point_biti * 2 * (7 - i) temperature += temperature_biti * 2 * (7 - i) temperature_point += temperature_point_biti * 2 * (7 - i) check += check_biti * 2 * (7 - i)tmp = humidity + humidity_point + temperature + temperature_pointif check = tmp: print "temperature : ", temperature, &q

11、uot;, humidity : " , humidityelse: print "wrong" print "temperature : ", temperature, ", humidity : " , humidity, " check : ", check, " tmp : ", tmpGPIO.cleanup()² 保存(Ctrl+O)并退出(Ctrl+X)² 執(zhí)行此程序(dht11.py):python dht11.py六、 安裝本地MYSQL²

12、; 使用管理員權(quán)限運(yùn)行apt-get獲取最新的MySQL及Python編程接口(之后用于數(shù)據(jù)庫(kù)編程):sudo apt-get install mysql-server python-mysqldb安裝過程中需要輸入root管理員的密碼,該密碼之后用于訪問數(shù)據(jù)庫(kù)系統(tǒng)。在本地MYSQL創(chuàng)建庫(kù)“test”,表“dht”和三個(gè)列“dht_tem”,“dht_hum”,“dht_time”。 mysql -u root p ;登入本地MySQLcreate database test ; 創(chuàng)建數(shù)據(jù)庫(kù)”test”USE test ; 選擇數(shù)據(jù)庫(kù)”test”create table dht ;創(chuàng)建表“dh

13、t”CREATE TABLE dht(dht_tem DECIMAL(4,1), dht_hum DECIMAL(4,1),dht_time char(25) ;創(chuàng)建列“dht_tem”,“dht_hum”,“dht_time”完成后查看建好的表“dht”,如下圖所示:² 在之前的dht11.py中添加如下幾段語(yǔ)句:import MySQLdbconn = MySQLdb.connect(host='localhost',port=3306,user='root',passwd='QAZQAZ',db='test')cu

14、r = conn.cursor()value = temperature,humidity,str(time.strftime('%A %X %Z',time.localtime(time.time()cur.execute("insert into dht (dht_tem,dht_hum,dht_time) values(%s,%s,%s)",value)mit()conn.rollback()² 執(zhí)行dht11.py:python dht11.py 按照之前數(shù)據(jù)庫(kù)的操作方法,可在本地?cái)?shù)據(jù)庫(kù)MySQL查看到新插入的溫濕度數(shù)據(jù)。如下圖所示(已執(zhí)行

15、多次程序):七、 連接阿里云RDS數(shù)據(jù)庫(kù)云服務(wù)器和云數(shù)據(jù)庫(kù)RDS:云服務(wù)上安裝了下mysql,在云盾里開放3306端口,遠(yuǎn)程同樣能夠正常連接數(shù)據(jù)庫(kù),但云服務(wù)器里搭建數(shù)據(jù)庫(kù)可能不如云數(shù)據(jù)庫(kù)來(lái)的穩(wěn)定,云數(shù)據(jù)庫(kù)更易維護(hù)。利用實(shí)名賬戶在阿里云試用一個(gè)月的免費(fèi)云數(shù)據(jù)庫(kù)。具體操作如下:² 申請(qǐng)阿里云試用一個(gè)月的免費(fèi)云數(shù)據(jù)庫(kù)² 登入阿里云RDS,創(chuàng)建賬號(hào)”dht_zzx”和創(chuàng)建數(shù)據(jù)庫(kù)”dht”² 登入自己創(chuàng)建的數(shù)據(jù)庫(kù)“dht”,創(chuàng)建表“dht11”和三個(gè)列“dht_tem”,“dht_hum”,“dht_time”。結(jié)果如下:² 設(shè)置白名單:/0 即不設(shè)

16、置訪問限制;連接信息改為切換外網(wǎng)模式,并將外網(wǎng)地址保存好。² 在dht11.py中添加如下程序:import requestsimport jsondb = MySQLdb.connect(host='',port=3306,user='dht_zzx',passwd='qaz123',db='dht')cur_db = db.cursor()cur_db.execute("insert into tb_dht (dht_tem,dht_hum,dht_time) values (%s,%s,%s)"

17、,value)mit()運(yùn)行程序,打開阿里云數(shù)據(jù)庫(kù),觀察結(jié)果,如下:八、 上傳數(shù)據(jù)到傳感云² 申請(qǐng)傳感云賬號(hào)² 添加一個(gè)設(shè)備“dht11溫濕度采集”,添加兩傳感器“dht11溫度”,“dht11濕度”,得到傳感器ID分別為:565274cce4b0932584ded623,5652756ee4b0932584ded624;² 在個(gè)人中心查看自己的密鑰:c0b419675b8955d2866e224e448b06e1;在API文檔的插入數(shù)值型傳感器數(shù)據(jù)點(diǎn)查看URL:在dht11.py中添加如下程序:#wenduapiurl =''apiheaders='ak':'c0b419675b8955d2866e224e448b06e1','id':565274cce4b0932584ded623',value: temperaturer = requests.post(apiurl, params=apiheaders)Print (r.text)# shiduapiurl =''apiheaders='ak':'c0b41

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論