所以我想开始一个项目,让我可以通过互联网检查房间内的温度。我使用了 Arduino Nano、Raspberry pi 3 B+ 和 BMP180 传感器。我能够使用本地 IP 地址检查温度,但温度似乎没有正确更新。我将手指放在传感器上并刷新页面,但温度保持不变。
这是python脚本A:
import serial
arduino = serial.Serial("/dev/ttyUSB0", 115200)
def temp():
while (arduino.inWaiting()==0):
pass
arduinoString = arduino.readline()
decodedData = arduinoString.decode()
return decodedData
这是python脚本B:
from A import temp
from flask import Flask
app = Flask(__name__)
@app.route("/")
def func():
data = temp()
return (data)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80, debug=True)
这是在 Arduino 上运行的脚本:
include "Wire.h"
include "Adafruit_BMP085.h"
Adafruit_BMP085 mySensor;
float tempC;
void setup() {
Serial.begin(115200);
mySensor.begin();
}
void loop() {
tempC = mySensor.readTemperature();
Serial.println(tempC);
delay(250);
}
我想在刷新页面时更新温度,但它保持不变。我将手指放在传感器上并刷新页面。但是,当我根据串行监视器将手指放在传感器上时,传感器会更新,但刷新时不会在网页上更新。
只是为了测试,我创建了非常简单的程序并将其上传到 Arduino:
void setup() {
Serial.begin(115200);
}
void loop() {
for (int i=1; i<11; i++) {
Serial.print("message :");
Serial.println(i);
delay(250);
}
}
我强烈建议创建一个 TemperatureSensor python 对象:
温度传感器将具有保持读取温度的当前值的属性数据。
温度传感器将处理与读取和处理数据相关的所有内容 = 从串行读取数据的常量,防止总线上的溢出/堆栈数据。
# file sensor.py
import serial
import time
import threading
class TemperatureSensor:
def __init__(self, port, baud_rate):
self.port = port
self.baud_rate = baud_rate
self.data = ''
self.init_connection()
threading.Thread(target=self.read_data).start()
def init_connection(self):
try:
self.arduino = serial.Serial(self.port, self.baud_rate)
except Exception as e:
# HANDLE THIS ERROR
print('cannot create connection, exception:', e)
def read_data(self):
while True:
while (self.arduino.inWaiting() == 0):
pass
readed_data = self.arduino.readline()
self.data = readed_data.decode()
time.sleep(0.25)
之后你可以:
from flask import Flask
app = Flask(__name__)
import datetime
from .sensor import TemperatureSensor
temperature_sensor = TemperatureSensor(port='/dev/ttyUSB0',
baud_rate=115200)
@app.route("/")
def func():
return (temperature_sensor.data)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=80, debug=True
由于导入,记得添加init.py。
我创建了类似的项目,您可以在我的 repo 中查看课程:https : //github.com/t1waz/alternative_station/blob/master/alternative_station/scanner.py
干杯,芬里尔
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句