TPYBoard v102+v202 家庭无线温湿度检测

一、实验器件

1、TPYBoard v102 1块

2、TPYBoard v202 1块

3、Nokia 5110LCD显示屏 1块

4、DHT11温湿度传感器 1个

5、micro USB 数据线 2根

6、面包板 1块

7、杜邦线 若干

二、实验步骤

TPYBoard v102连接DHT11,采集温湿度信息;

TPYBoard v102将采集到的温湿度信息显示在LCD5110上;

TPYBoard v102通过串口将温湿度信息发送给TPYBoard v202;

TPYBoard v202 将串口的数据读取出来,同时传递到服务器上。

三、实验方法

1、Nokia 5110 LCD显示屏说明

LCD5110是一款84×48 的点阵LCD,可以显示4 行汉字。采用串行接口与主处理器进行通信,支持多种串行通信协议(如AVR 单片机的SPI、MCS51 的串口模式0等),传输速率高达4Mbps,可全速写入显示数据。

Nokia 5110 LCD共有8个引脚,不同的板子可能标注的英文略有不同,具体参照如下:

2、DHT11温湿度说明

DHT11是一款有已校准数字信号输出的温湿度传感器。 精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。

DHT11温湿度共有3个引脚,具体参照如下:

四、接线方式

1、针脚对应图

DHT11和LCD5110的使用方法上面都介绍过了,接下来,就要动手和我们的TPYBoard v102接起来了。

TPYBoard v102连接LCD5110

TPYBoard v102连接DHT11

TPYBoard v102连接TPYBoard v202

2、实物连接图

四、源代码

TPYBoard v102 源代码

TPYBoard v102 main.py文件内容,如下:

view plaincopy to clipboardprint?

  1. #main.py
  2. importpyb
  3. importupcd8544
  4. frommachine import SPI,Pin
  5. from dht11import DHT11
  6. defmain(lcd_5110,dht,uart6):
  7.     data_=dht.read_data()
  8.     lcd_5110.lcd_write_string(” ”,0,1)#添加一个分隔行
  9.    lcd_5110.lcd_write_string(”Temp:”+str(data_[0]),2,2)
  10.     lcd_5110.lcd_write_string(” ”,0,3)
  11.     lcd_5110.lcd_write_string(” Hum:”+str(data_[1]),2,4)
  12.    uart6.write(str(data_[0])+”,”+str(data_[1]))#通过串口将数据发送给v202
  13. if__name__ == ”__main__”:
  14.     #init UART
  15.     u6=pyb.UART(6,115200)
  16.     #init DHT11
  17.     dht=DHT11(”X12”)
  18.     #init LCD5110
  19.     SPI   = pyb.SPI(1)
  20.     RST   = pyb.Pin(”Y11”)
  21.     CE    = pyb.Pin(”Y10”)
  22.     DC    = pyb.Pin(”Y9”)
  23.     LIGHT = pyb.Pin(”X4”)
  24.     #DIN=>X8-MOSI/CLK=>X6-SCK
  25.     #DIN =>SPI(1).MOSI ”X8” data flow(Master out, Slave in)
  26.     #CLK =>SPI(1).SCK  ”X6” SPI clock
  27.     lcd_5110 = upcd8544.PCD8544(SPI, RST, CE,DC, LIGHT)
  28.     lcd_5110.lcd_write_string(”TPYBoardv102”,1,0)
  29.     while True:
  30.         main(lcd_5110,dht,u6)
  31.         pyb.delay(2000)

*其他文件详见最下方压缩包*

TPYBoard v202 源代码

只有1个main.py 文件TPYBoard v202 main.py文件内容,如下:

view plaincopy to clipboardprint?

  1. import machine
  2. importnetwork
  3. importsocket
  4. frommachine import Pin
  5. frommachine import UART
  6. importtime
  7. u2=UART(0,115200)#串口初始化
  8. led =Pin(2, Pin.OUT).value(1)#板载小蓝灯 默认关闭
  9. defhttp_get(temp,hum):
  10.    url=”http://www.tpyboard.com/esp8266/SensorTest.php?t=”+temp+”&h=”+hum+””
  11.     _, _, host, path = url.split(”/”, 3)
  12.     addr = socket.getaddrinfo(host, 80)[0][-1]
  13.     s = socket.socket()
  14.     s.connect(addr)
  15.     s.send(bytes(”GET /%s HTTP/1.0\r\nHost:%s\r\n\r\n” % (path, host), ”utf8”))
  16.     while True:
  17.         data = s.recv(50)
  18.         if data:
  19.             recive=str(data, ”utf8”).upper()
  20.             #print(str(data, ”utf8”), end=””)
  21.             if(recive.find(”YES”)>-1):
  22.                print(”Send Data OK”)
  23.         else:
  24.             break
  25.     s.close()
  26. defdo_connect():
  27.     wlan = network.WLAN(network.STA_IF)
  28.     wlan.active(True)
  29.     if not wlan.isconnected():
  30.         print(”connecting to network…”)
  31.         wlan.connect( ”ssid”, ”pwd”)
  32.         while not wlan.isconnected():
  33.             pass
  34.     print(”network config:”, wlan.ifconfig())
  35. do_connect()
  36. led =Pin(2, Pin.OUT).value(0)#连接wifi成功 点亮LED
  37. while 1:
  38.     data_=u2.readall()
  39.     if data_!=None:
  40.         data_=data_.decode(”utf8”)#数组转成字符串
  41.         data_a=data_.split(”,”)#分割
  42.         temp_=str(data_a[0])#温度
  43.         hum_=str(data_a[1])#湿度
  44.         http_get(temp_,hum_)#发送给服务器
  45.     time.sleep(2)

服务器源码

SensorData.php 文件内容如下:

view plaincopy to clipboardprint?

  1. <!DOCTYPEhtml>
  2. <html>
  3. <head>
  4. <metacharset=”utf-8″>
  5. <title>温湿度传感器实验</title>
  6. <scripttype=”text/javascript”>
  7.     var t;
  8.     var te_html_str=”N/A”;
  9.     function timedCount()
  10.     {
  11.       <?php
  12.         $myfile = fopen(“sensor.txt”,”r”);
  13.         $txt=fread($myfile,filesize(“sensor.txt”));
  14.         fclose($myfile);
  15.         if($txt!=””)
  16.         {
  17.             echo “te_html_str=””.$txt.””;”;
  18.         }
  19.         ?>
  20.      document.getElementById(”test”).innerHTML=te_html_str;
  21.      t=setTimeout(“location=location;”,1000)
  22.     }
  23. </script>
  24. </head>
  25.   <body>
  26.   <center>
  27.   <div style=”margin-top:80px”>
  28.     <h2>TPYBoardV202_温湿度传感器实验</h2>
  29.     <div id=”test”></div>
  30.   </div>
  31.    </center>
  32. </body>
  33. </html>    SensorTest.php 文件内容如下:
  34. <?php
  35.     $time_=”获取时间:”.date(”Y-m-d H:i:s”);
  36.     $data_=”传感器数据:Sensor Error!”;
  37.     $state_=”No”;
  38.    if(is_array($_GET)&&count($_GET)>1)
  39.     {
  40.         $data_=””;
  41.         //获取温度
  42.         if(isset($_GET[“t”]))
  43.         {
  44.             $para=$_GET[“t”];
  45.             $data_.=”传感器数据:温度:”.$para.” ℃ – “;
  46.         }
  47.         //获取湿度
  48.         if(isset($_GET[“h”]))
  49.         {
  50.             $para=$_GET[“h”];
  51.             $data_.=”湿度:”.$para.” % “;
  52.             $state_=”Yes”;
  53.         }
  54.     }
  55.     $myfile = fopen(“sensor.txt”,”w”);
  56.     $txt = $time_.”<br /><br/>”.$data_;
  57.     fwrite($myfile, $txt);
  58.     fclose($myfile);
  59.     echo$state_;
  60. ?>

五、效果图

实物效果图

网页效果图

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论