找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2712|回復(fù): 0
收起左側(cè)

TPYBoard v102+v202家庭無線溫濕度檢測

[復(fù)制鏈接]
ID:130183 發(fā)表于 2018-9-30 14:41 | 顯示全部樓層 |閱讀模式
一、實(shí)驗(yàn)器件

    1、TPYBoard v102 1塊
    2、TPYBoard v202 1塊
    3、Nokia 5110LCD顯示屏 1塊
    4、DHT11溫濕度傳感器 1個
    5、micro USB 數(shù)據(jù)線 2根
    6、面包板 1塊
    7、杜邦線 若干

   二、實(shí)驗(yàn)步驟

    TPYBoard v102連接DHT11,采集溫濕度信息;
    TPYBoard v102將采集到的溫濕度信息顯示在LCD5110上;
    TPYBoard v102通過串口將溫濕度信息發(fā)送給TPYBoard v202;
    TPYBoard v202 將串口的數(shù)據(jù)讀取出來,同時傳遞到服務(wù)器上。

    三、實(shí)驗(yàn)方法

    1、Nokia 5110 LCD顯示屏說明

    LCD5110是一款84x48 的點(diǎn)陣LCD,可以顯示4 行漢字。采用串行接口與主處理器進(jìn)行通信,支持多種串行通信協(xié)議(如AVR 單片機(jī)的SPI、MCS51 的串口模式0等),傳輸速率高達(dá)4Mbps,可全速寫入顯示數(shù)據(jù)。

1.jpg

    Nokia 5110 LCD共有8個引腳,不同的板子可能標(biāo)注的英文略有不同,具體參照如下:

2.png

    2、DHT11溫濕度說明

    DHT11是一款有已校準(zhǔn)數(shù)字信號輸出的溫濕度傳感器。 精度濕度+-5%RH, 溫度+-2℃,量程濕度20-90%RH, 溫度0~50℃。

3.jpg

    DHT11溫濕度共有3個引腳,具體參照如下:

4.png

    四、接線方式

    1、針腳對應(yīng)圖

    DHT11和LCD5110的使用方法上面都介紹過了,接下來,就要動手和我們的TPYBoard v102接起來了。

    TPYBoard v102連接LCD5110

5.png

    TPYBoard v102連接DHT11

6.png

    TPYBoard v102連接TPYBoard v202

7.png

    2、實(shí)物連接圖

8.jpg


9.jpg

   四、源代碼

    TPYBoard v102 源代碼

10.png

    TPYBoard v102 main.py文件內(nèi)容,如下:

#main.py
import  pyb
import  upcd8544
from  machine  import  SPI,Pin
from  dht11  import  DHT11
def  main(lcd_5110,dht,uart6):
    data_=dht.read_data()
    lcd_5110.lcd_write_string(' ',0,1)#添加一個分隔行
   lcd_5110.lcd_write_string('Temp:'+str(data_[0]),2,2)
    lcd_5110.lcd_write_string(' ',0,3)
    lcd_5110.lcd_write_string(' Hum:'+str(data_[1]),2,4)
   uart6.write(str(data_[0])+','+str(data_[1]))#通過串口將數(shù)據(jù)發(fā)送給v202
if__name__ == '__main__':
    #init UART
    u6=pyb.UART(6,115200)
    #init DHT11
    dht=DHT11('X12')
    #init LCD5110
    SPI   = pyb.SPI(1)
    RST   = pyb.Pin('Y11')
    CE    = pyb.Pin('Y10')
    DC    = pyb.Pin('Y9')
    LIGHT = pyb.Pin('X4')
    #DIN=>X8-MOSI/CLK=>X6-SCK
    #DIN =>SPI(1).MOSI 'X8' data flow(Master out, Slave in)
    #CLK =>SPI(1).SCK  'X6' SPI clock
    lcd_5110 = upcd8544.PCD8544(SPI, RST, CE,DC, LIGHT)
    lcd_5110.lcd_write_string('TPYBoardv102',1,0)
    while  True:
        main(lcd_5110,dht,u6)
        pyb.delay(2000)

    *其他文件詳見最下方壓縮包*

    TPYBoard v202 源代碼

    只有1個main.py 文件TPYBoard v202 main.py文件內(nèi)容,如下:
import  machine
import  network
import  socket
from  machine  import  Pin
from  machine  import  UART
import  time
u2=UART(0,115200)#串口初始化
led =Pin(2, Pin.OUT).value(1)#板載小藍(lán)燈 默認(rèn)關(guān)閉
def  http_get(temp,hum):
   url='http://www點(diǎn)tpyboard點(diǎn)com/esp8266/SensorTest.php?t='+temp+'&h='+hum+''
    _, _, host, path = url.split('/', 3)
    addr = socket.getaddrinfo(host, 80)[0][-1]
    s = socket.socket()
    s.connect(addr)
    s.send(bytes('GET /%s HTTP/1.0\r\nHost:%s\r\n\r\n' % (path, host), 'utf8'))
    while  True:
        data = s.recv(50)
        if  data:
            recive=str(data, 'utf8').upper()
            #print(str(data, 'utf8'), end='')
            if(recive.find('YES')>-1):
               print('Send Data OK')
        else:
            break
    s.close()
def  do_connect():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if  not wlan.isconnected():
        print('connecting to network...')
        wlan.connect( 'ssid', 'pwd')
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())
do_connect()
led =Pin(2, Pin.OUT).value(0)#連接wifi成功 點(diǎn)亮LED
while 1:
    data_=u2.readall()
    if data_!=None:
        data_=data_.decode('utf8')#數(shù)組轉(zhuǎn)成字符串
        data_a=data_.split(',')#分割
        temp_=str(data_a[0])#溫度
        hum_=str(data_a[1])#濕度
        http_get(temp_,hum_)#發(fā)送給服務(wù)器
    time.sleep(2)

    服務(wù)器源碼

    SensorData.php 文件內(nèi)容如下:

<!DOCTYPEhtml>
<html>
<head>
<metacharset="utf-8">
<title>溫濕度傳感器實(shí)驗(yàn)</title>
<scripttype="text/javascript">
    var t;
    var te_html_str="N/A";
    function timedCount()
    {
      <?php
        $myfile = fopen("sensor.txt","r");
        $txt=fread($myfile,filesize("sensor.txt"));
        fclose($myfile);
        if($txt!="")
        {
            echo "te_html_str='".$txt."';";
        }
        ?>
     document.getElementById('test').innerHTML=te_html_str;
     t=setTimeout("javascript:location=location;",1000)
    }
</script>
</head>
  <body>
  <center>
  <div style="margin-top:80px">
    <h2>TPYBoardV202_溫濕度傳感器實(shí)驗(yàn)</h2>
    <div id="test"></div>
  </div>
   </center>
</body>
</html>

    SensorTest.php 文件內(nèi)容如下:

<?php
    $time_="獲取時間:".date('Y-m-d H:i:s');
    $data_="傳感器數(shù)據(jù):Sensor Error!";
    $state_="No";
   if(is_array($_GET)&&count($_GET)>1)
    {
        $data_="";
        //獲取溫度
        if(isset($_GET["t"]))
        {
            $para=$_GET["t"];
            $data_.="傳感器數(shù)據(jù):溫度:".$para." - ";
        }
        //獲取濕度
        if(isset($_GET["h"]))
        {
            $para=$_GET["h"];
            $data_.="濕度:".$para." % ";
            $state_="Yes";
        }  
    }
    $myfile = fopen("sensor.txt","w");
    $txt = $time_."<br /><br/>".$data_;
    fwrite($myfile, $txt);
    fclose($myfile);
    echo$state_;
?>

    五、效果圖

   實(shí)物效果圖

11.jpg

    網(wǎng)頁效果圖
12.png




回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表