概述:
Wi-Fi模块一款基于ESP8266设计的串口转Wi-Fi物联网模块,用以接收和发送物联网信息。内置AT指令固件,适用于3.3V~5V的控制系统。
参数:
尺 寸:48x24mm
工作电压:3.3-5V
工作电流:500mA
接口类型:XH2.54mm-4P
引脚定义:R、T-信号 V-电源 G-地
接口:
串口
使用方式:
搭建信息系统——室内环境实时监测系统
1、好搭Bit使用(基于好搭Block)
室内环境实时监测系统
(1)硬件连接
通过USB线将好搭Bit连接到计算机,将温度传感器与好搭Bit的P0端口连接。具体连接如图所示。
(2)编写程序
智能终端代码:Haoda:bit 先通过串口配置 WiFi 模块,然后采集温度传感器数值, 拼接为一个 URL 地址,如 http:192.168.60.108:8080/input?id=1&val=22.5
注意:根据实际情况修改 WiFi 的 ID、密码和 IP 地址。
from microbit import *
#*****************************WIFI模块内部代码***************************************************
class Obloq(object):
ip_address = ''
def connectWifi(self,SSID,PASSWORD,TIME):
uart.write('AT+RST
')
sleep(5000)
uart.write('AT+CWMODE_CUR=3
')
sleep(1000)
uart.write('AT+CWJAP_CUR="%s","%s"
' %(SSID, PASSWORD)) # 设置wifi模块连接无线网络
# display.scroll("wait...");display.show(Image.HAPPY)
sleep(8000)
return True
uart.write('AT+CIPMUX=0
');sleep(500) # 设置WIFI模块单路链接模式
uart.write('AT+CIPSTART="TCP","0",0
');sleep(TIME)
if uart.any(): #第二次读,返回服务器IP设置消息
data = str(uart.read(), "UTF-8");sleep(1000)
uart.write('AT+CIFSR
');sleep(2000);data=0 # 设置这个后 读串口返回绑定ip
if uart.any():
data = str(uart.read(), "UTF-8")
temp = data.split(""",5)
self.ip_address = temp[1]
if self.ip_address[0]=='1' and len(self.ip_address)>10:
return True
else:
display.show(".");sleep(3000)
return False
else:
display.show(".");sleep(3000)
return False
def ifconfig(self):
return self.ip_address
def httpSet(self,IP,PORT):
uart.write('AT+CIPSTART="TCP","%s",%s
' %(IP, PORT))
sleep(6000)
uart.write('AT+CIPMODE=1
') # 设置WIFI模块为透穿模式
sleep(500)
uart.write('AT+CIPSEND
') # 在透穿模式下开始发送数据
sleep(3000)
if uart.any(): # 如果串口有值
self.res = str(uart.read(), "UTF-8")
self.res = 0
def get(self,url,time):
uart.write('GET /'+ url + '
')
sleep(1000)
if uart.any(): # 如果串口有值
res = str(uart.read(), "UTF-8")
return (200,res)
return (404,"NOT FOUND")
Obloq = Obloq()
#***********************************************************************************************
IP="192.168.60.108"
PORT="8080"
SSID="haoda"
PASSWORD="1234"
uart.init(baudrate=115200, bits=8, parity=None, stop=1, tx=pin2, rx=pin1) # 设置串口引脚,连接到wifi模块
while Obloq.connectWifi(SSID,PASSWORD,10000) != True:
display.show(".")
display.scroll(Obloq.ifconfig())
Obloq.httpSet(IP,PORT)
while True:
erron,resp = Obloq.get('input?id=1&val=' + str("%.1f"%(pin0.read_analog()*3.3/10.24)), 10000)
if erron == 200:
display.scroll(resp)
else:
display.scroll(str(erron))
sleep(1000*5)
Web 服务器端代码:基于 Python 的 Web 应用框架 Flask 编写,下面的代码中提供了默认主页和获取传感器数据的功能。
# coding = UTF-8
import sqlite3
import datetime
from flask import Flask, render_template, request
DATABASE = 'data.db'
app = Flask(__name__)
# root
@app.route("/")
def hello():
db = sqlite3.connect(DATABASE)
cur = db.cursor()
cur.execute("SELECT * FROM sensorlog WHERE sensorid=1")
temp_data = cur.fetchall()
cur.close()
db.close()
temp1 = temp_data[len(temp_data)-1]
temp = temp1[2]
return render_template('index.html', temp_data=temp_data, temp=temp)
# Adding data
@app.route("/input", methods=['POST', 'GET'])
def add_data():
if request.method == 'POST':
sensorid = int(request.form.get('id'))
sensorvalue = float(request.form.get('val'))
else:
sensorid = int(request.args.get('id'))
sensorvalue = float(request.args.get('val'))
nowtime = datetime.datetime.now()
nowtime = nowtime.strftime('%Y-%m-%d %H:%M:%S')
db = sqlite3.connect(DATABASE)
cur = db.cursor()
cur.execute("INSERT INTO sensorlog (sensorid, sensorvalue, updatetime) VALUES (%d, %f, '%s')" % (sensorid, sensorvalue, nowtime))
db.commit()
cur.execute("SELECT * FROM sensorlist WHERE sensorid=%d" % sensorid)
rv = cur.fetchall()
cur.close()
db.close()
print(rv)
maxrv = rv[0][2]
minrv = rv[0][3]
if sensorvalue < minrv:
return '0'
else:
return '1'
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080, debug=False)
Web 模板文件代码:
<!doctype html>
<body><meta charset="UTF-8" http-equiv="refresh" content="60"></body>
<style>
#center {MARGIN-RIGHT: auto;MARGIN-LEFT: auto;background: #eff7ff;width: 600px;
height: 500px;vertical-align: left;overflow-y: scroll;overflow-x: scroll}
</style>
<title>室内环境实时监测系统</title>
<h1 align="center">室内环境实时监测系统</h1>
<h2 align="center">当前室内温度:{{temp}}</h2>
<h2 align="center"><a href="/">刷新</a>历史数据列表:</h2>
<div id="center" style="border:2px solid #96c2f1">
温度 记录时间<br>
{% for i in temp_data[::-1] %}
{{i[2]}} {{i[3]}}<br>
{% endfor %}
</div>
(3)搭建服务器
①在空白处Shift+右键,选择“在此处打开Powershell窗口(S)”。
②安装Flask模块。在Windows PowerShell输入”pip install flask”,回车。
③右键选择Edit with IDLE(Python软件)打开服务器端程序。
④在Python IDLE编辑器中,点击运行模块(F5),或在资源管理器中双击运行.py文件。
⑤打开浏览器,通过Web访问
通过本机访问,在搭建Web服务器计算机中打开页面http://localhost:8080或http://127.0.0.1:8080。
通过远程访问,打开页面http://192.168.60.108:8080(本例)。
(4)烧录程序
使用BXY软件打开智能终端程序,单击 “烧录” 按钮,haoda:bit开发板上的LED开始闪烁。等到闪烁停止,表示程序上传成功。
(5)结果呈现
附件
Python代码
室内环境实时监测系统.rar
AT指令说明
ESP8266 Wi-Fi模块AT指令.pdf