日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

先上一些照片。

硬件:樹莓派+DHT22溫濕度傳感器(白色的那個(gè)就是)。

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

網(wǎng)頁(yè),顯示當(dāng)前時(shí)間、最新一條監(jiān)測(cè)記錄。

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

傳感器記錄寫入DB程序。

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

一個(gè)簡(jiǎn)單的查詢數(shù)據(jù)程序。

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

整個(gè)程序下來,涉及了:

樹莓派、DHT22溫濕度傳感器、Python3、SQLite3、Nginx、JQuery。


緣起:

因?yàn)橐咔樵颍诩业臅r(shí)間比較長(zhǎng),一直是在書房工作學(xué)習(xí)。偶爾去趟客廳,現(xiàn)在天熱,客廳朝南,又沒開空調(diào),就比較悶熱潮濕。我就比較想知道客廳的溫濕度。

家里倒是有個(gè)物理溫濕度計(jì),就是這玩意兒:

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

不過作為一個(gè)IT男,數(shù)據(jù)不數(shù)碼化,總覺得很不爽,所以就動(dòng)了心思買個(gè)電子溫度計(jì),家里小米的多,就想買這個(gè):

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

但是現(xiàn)在窮的叮當(dāng)響,又恰好翻箱底的時(shí)候,翻出了我的老樹莓派——確實(shí)很老了,是很多年前,剛出來的時(shí)候買的,GPIO引腳還是26針的,配套的SD卡也找著了,因?yàn)檫@款沒有WIFI,恰好又有富余的網(wǎng)線,一裝系統(tǒng)還能運(yùn)行,所以干脆就自己搞吧。


過程:不能放外鏈,大家想用就搜搜吧。

1、安裝系統(tǒng):

1.1 格式化SD卡:去SD官方網(wǎng)站下載專門的格式化工具

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

1.2 安裝樹莓派系統(tǒng):

下載燒錄程序

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

下載系統(tǒng)

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

分別是:桌面+命令行版、桌面版、命令行版。我選的是第一個(gè),回頭可以在配置里將啟動(dòng)改為進(jìn)入命令行界面。

燒錄:

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

這個(gè)沒啥了,選系統(tǒng)鏡像,選SD卡,寫入。


1.2 系統(tǒng)配置:

升級(jí):

sudo apt-get update
sudo apt-get dist-upgrade

通過桌面首選項(xiàng),可以打開VNC、SSH服務(wù)。

VNC是桌面連接,我們?cè)陔娔X上用VNC Viewer可以訪問樹莓派桌面。

SSH是遠(yuǎn)程命令行訪問,在終端上使用命令"ssh pi@樹莓派IP"即可。

安裝Python3.

安裝Nginx、安裝SQLite。

安裝ufw防火墻,打開端口:

sudo ufw allow 80#Nginx端口
sudo ufw allow 8080#Python的HTTP服務(wù)接口
sudo ufw allow 22#SSH端口
sudo ufw allow 5900#VNC端口

2、硬件安裝:

去某寶買了DHT22溫濕度傳感器+杜邦線,20塊錢,從汕頭發(fā)過來的。

傳感器一共有三個(gè)針腳“+、-、out”

我的樹莓派比較老舊,只有26個(gè)針腳:

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 

如圖,+接入3.3v,-接入Ground,out接入GPIO2。

正負(fù)極可不能接反了,會(huì)燒的。


3、程序:

3.1 創(chuàng)建數(shù)據(jù)庫(kù)、表:

#!/usr/bin/python
import sqlite3
conn=sqlite3.connect('temper.db')
print("Open temperDB")
c = conn.cursor()
c.execute('''CREATE TABLE temper
       (ID INTEGER PRIMARY KEY   autoincrement,
       create_time DEFAULT (datetime('now', 'localtime')),
       temp            CHAR(50)     NOT NULL,
       humi        CHAR(50) NOT NULL);''')
print('Table created successfully')
conn.commit()
conn.close()

3.2 下載讀取傳感器相關(guān)驅(qū)動(dòng):

sudo apt-get install build-essential python-dev
git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python3 setup.py install

3.3 每隔10分鐘,讀取傳感器記錄寫入到數(shù)據(jù)庫(kù)

#!/usr/bin/python
import Adafruit_DHT
from datetime import datetime
import time
import sqlite3
sensor = Adafruit_DHT.DHT22
#pin = 'P8_11'
pin = 2
def timer(n):
    while True:
        humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
        if humidity is not None and temperature is not None:
            print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))
            print('溫度={0:0.1f}*C  濕度={1:0.1f}%'.format(temperature, humidity))
            conn = sqlite3.connect('temper.db')
            c = conn.cursor()
            c.execute("INSERT INTO temper (temp,humi) VALUES ("+'{0:0.1f}'.format(temperature)+","+'{0:0.1f}'.format(humidity)+")")
            conn.commit()
            conn.close()
        else:
            print('Failed to get reading. Try again!')
        time.sleep(n)
timer(600)

3.4 Python服務(wù)端,返回JSON格式的最新記錄:

#!/usr/bin/python
from http.server import HTTPServer, BaseHTTPRequestHandler
import json
import sqlite3
host = ('0.0.0.0', 8080)#開8080端口
class Resquest(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'Application/json')
        self.send_header('Accexx-Control-Allow-Origin','*')#解決跨域問題
        self.end_headers()
        conn = sqlite3.connect('temper.db')
        c = conn.cursor()
        cursor = c.execute("SELECT *  from temper order by id desc limit 0,1")
        for row in cursor:
            data = {'id':row[0],'time':row[1],'temp':row[2],'humi':row[3]}
        result="returnTemp("+json.dumps(data)+")"
        self.wfile.write(result.encode())
if __name__ == '__main__':
    server = HTTPServer(host, Resquest)
    print("Starting server, listen at: %s:%s" % host)
    server.serve_forever()

3.5 網(wǎng)頁(yè)

編輯/var/www/html/index.nginx-debian.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<meta http-equiv="Access-Control-Allow-Origin" content="*" /> 
<title>溫濕度計(jì)</title>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.js"></script>
<script>
$(function() {
    var myDate = new Date;
    var year = myDate.getFullYear(); //獲取當(dāng)前年
    var mon = myDate.getMonth() + 1; //獲取當(dāng)前月
    var date = myDate.getDate(); //獲取當(dāng)前日
    var h = myDate.getHours();//獲取當(dāng)前小時(shí)數(shù)(0-23)
    var m = myDate.getMinutes();//獲取當(dāng)前分鐘數(shù)(0-59)
    var s = myDate.getSeconds();//獲取當(dāng)前秒
    var week = myDate.getDay();
    var weeks = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
    console.log(year, mon, date, weeks[week])
    $("#time").html("當(dāng)前時(shí)間:"+year + "年" + mon + "月" + date + "日" + weeks[week]+" "+h+":"+m+":"+s);
    $.ajax({
      url: "http://192.168.31.88:8080",//樹莓派IP地址,PythonHTTP服務(wù)端口號(hào)
      type: "GET",
      dataType: "jsonp",//解決跨域問題
      jsonpCallback:"returnTemp",//解決跨域問題
      success: function (data) {
      $("#data").html("記錄ID:"+data.id+"<br/>記錄時(shí)間:"+data.time+"<br/>溫度:"+data.temp+"°,濕度:"+data.humi+"%");
      }
    });
})
</script>
</head>
<body>
<span id="time"></span><br/>
<span id="data"></span>
</body>
</html>

4、啟動(dòng):

分別啟動(dòng)Nginx、dht.py、serv.py

訪問網(wǎng)頁(yè)http://192.168.31.88

使用樹莓派+DHT22做一個(gè)溫濕度計(jì)

 


5、一些問題:

因?yàn)槲耶吘故歉鉐AVA服務(wù)端開發(fā)的,用Python也只是處理一下數(shù)據(jù),頁(yè)面跨域的問題在實(shí)際工作中,運(yùn)維人員就解決了,所以搞這一塊有點(diǎn)手生,不過也是很快解決了。

本來我想讓開機(jī)自啟動(dòng)的,但是查了不少資料,做了不少測(cè)試,總是有問題,所以暫時(shí)也不弄,就這么跑者吧。


6、后續(xù)的一些規(guī)劃:

因?yàn)閿?shù)據(jù)都入庫(kù)了,我準(zhǔn)備使用ECharts,將歷史數(shù)據(jù)做一個(gè)折線圖。

另外某寶上也看了墨水屏,可以接到樹莓派上,將網(wǎng)頁(yè)上的信息展示在上面。不過那玩意兒也太貴了,4.2寸的要快200了,舍不得啊。

分享到:
標(biāo)簽:樹莓派
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定