Python做智能家居温湿度报警系统


Posted in Python onSeptember 25, 2018

物联网技术开创了一个智慧城市的新时代,从智能摄像头到部署各种传感器,以此对城市各种数据进行收集,并经云端AI技术处理后,有助于提高对交通和街道等城市公共管理能力;物联网的发展也为智能家居带来了新的玩法,智能机器人,智能冰箱,智能电视等相继推出,智能家居离我们越来越近。下面带大家用Python通过HTTP协议做一个廉价的温湿度报警系统。

物联网应用需要检测设备和处理设备,我们选用TPYBoard v102作为中心处理设备。为了方便我选择用无线传输,选了TPYBoard v202(ESP8266模块)用wifi来往云端传输数据,检测设备我们用一个比较简单的温湿度检测模块-DHT11温湿度传感器,显示设备我们就用廉价的显示屏-5110液晶显示屏,这些是主要的设备,在某宝上都能买得到,通过这些我们就可以做到网上看数据,现实看数据了,了解当前的温度和湿度了。

一、 实验器材

1.TPYBoard v102   1块
2.TPYBoard v202   1块
3.LCD5110显示屏 1块
4.DHT11温湿度传感器 1个
5.安卓数据线 2条
6.面包板 1块
7.杜邦线 若干

二、实验步骤

1.用TPYBoard v102连接DHT11温湿度传感器采集温湿度信息;
2.将采集到的温湿度信息显示在LCD5110上;
3.将采集到的温湿度信息通过TPYBoard v102发送给TPYBoard  v202;
4.通过TPYBoard v202 将串口的数据读取出来,同时传到服务器上
5.通过网页的形式显示采集到的实时温湿度

三、实验方法

1. LCD 5110显示屏说明

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

Python做智能家居温湿度报警系统

LCD5110 显示屏共有8个引脚,不同的板子可能标注的英文略有不同,具体参照如下:

Python做智能家居温湿度报警系统

2 .  DHT11温湿度说明

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

Python做智能家居温湿度报警系统

DHT11温湿度共有3个引脚-VCC,DATA,GND。

四、接线方式

1 .  针脚对应图

DHT11温湿度传感器和LCD5110显示屏的使用方法上面都介绍过了,接下来,就要动手和我们的TPYBoard v102 接起来了。

TPYBoard v102连接LCD5110显示屏

Python做智能家居温湿度报警系统

TPYBoard v102连接DHT11温湿度传感器

Python做智能家居温湿度报警系统

TPYBoard v102连接TPYBoard v202

Python做智能家居温湿度报警系统

2. 实物连接图

Python做智能家居温湿度报警系统

五、源代码

TPYBoard v102 源代码

Python做智能家居温湿度报警系统 

main.py 如下:

#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]))#通过串口将数据发送给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('TPYBoard v102',1,0)
while True:
main(lcd_5110,dht,u6)
        pyb.delay(2000)

TPYBoard v202 源代码

main.py 如下:

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)#板载小蓝灯 默认关闭
def http_get(temp,hum):
url='http://www.tpyboard.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成功 点亮LED
while 1:
data_=u2.readall()
if data_!=None:
data_=data_.decode('utf8')#数组转成字符串
data_a=data_.split(',')#分割
temp_=str(data_a[0])#温度
hum_=str(data_a[1])#湿度
http_get(temp_,hum_)#发送给服务器
    time.sleep(2)

服务器源码

SensorData.php 文件内容如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>温湿度传感器实验</title>
<script type="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 onload="timedCount()">
<center>
<div style="margin-top:80px">
<h2>TPYBoardV202_温湿度传感器实验</h2>
<div id="test"></div>
</div>
</center>
</body>
</html>
SensorTest.php 文件内容如下:
<?php
$time_="获取时间:".date('Y-m-d H:i:s');
$data_="传感器数据:Sensor Error!";
$state_="No";
if(is_array($_GET)&&count($_GET)>1)
{
$data_="";
//获取温度
if(isset($_GET["t"]))
{
$para=$_GET["t"];
$data_.="传感器数据:温度:".$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_;
?>

六、效果图

1. 实物效果图 

Python做智能家居温湿度报警系统

2. 网页效果图

Python做智能家居温湿度报警系统 

总结

以上所述是小编给大家介绍的Python做智能家居温湿度报警系统,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python中xrange和range的区别
May 13 Python
Python生成随机验证码的两种方法
Dec 22 Python
Apache如何部署django项目
May 21 Python
python 接口_从协议到抽象基类详解
Aug 24 Python
Python实现进程同步和通信的方法
Jan 02 Python
python验证码识别教程之滑动验证码
Jun 04 Python
用Python实现大文本文件切割的方法
Jan 12 Python
基于python3实现倒叙字符串
Feb 18 Python
Python Selenium 设置元素等待的三种方式
Mar 18 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
Dec 03 Python
python3.9.1环境安装的方法(图文)
Feb 02 Python
图文详解matlab原始处理图像几何变换
Jul 09 Python
python+splinter自动刷新抢票功能
Sep 25 #Python
python+Splinter实现12306抢票功能
Sep 25 #Python
一百多行python代码实现抢票助手
Sep 25 #Python
python爬虫之自动登录与验证码识别
Jun 15 #Python
python使用matplotlib模块绘制多条折线图、散点图
Apr 26 #Python
python绘制多个曲线的折线图
Mar 23 #Python
python使用Matplotlib绘制分段函数
Sep 25 #Python
You might like
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
php 截取中英文混合字符串的方法
2018/05/31 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
EditPlus注册码生成器(js代码实现)
2013/03/25 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
AngularJS入门教程之Cookies读写操作示例
2016/11/02 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
JS+html5实现异步上传图片显示上传文件进度条功能示例
2019/11/09 Javascript
通过实例解析chrome如何在mac环境中安装vue-devtools插件
2020/07/10 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
Python中输出ASCII大文字、艺术字、字符字小技巧
2015/04/28 Python
Python中字符串对齐方法介绍
2015/05/21 Python
Python中装饰器学习总结
2018/02/10 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Python中sorted()排序与字母大小写的问题
2020/01/14 Python
python对文件的操作方法汇总
2020/02/28 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
html5 input属性使用示例
2013/06/28 HTML / CSS
公司培训欢迎词
2014/01/10 职场文书
2014年五四青年节演讲稿范文
2014/04/22 职场文书
三八活动策划方案
2014/08/17 职场文书
2014年国庆节演讲稿精选范文1500字
2014/09/25 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
开会迟到检讨书范文
2015/05/06 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
导游词之青城山景区
2019/09/27 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL