BMP180传感器不更新温度时,我把我的手指放在I

2024-09-19 21:00:38 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我想开始一个项目,让我可以从互联网上检查我房间里的温度。我用的是Arduino Nano,覆盆子PI3B+,和BMP180传感器。我可以使用本地IP地址检查温度,但温度似乎没有正确更新。我把手指放在传感器上刷新页面,但温度保持不变。你知道吗

这是python脚本:

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);
}

我想更新温度每当我刷新页面,但它保持不变。我把手指放在传感器上刷新页面。然而,当我把手指放在串行监视器上时,传感器确实会更新,但当我刷新时,它不会在网页上更新。你知道吗


Tags: import脚本appdefserial页面传感器温度
1条回答
网友
1楼 · 发布于 2024-09-19 21:00:38

为了测试,我创建了一个非常简单的程序并上传到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

记住添加初始.py由于导入。你知道吗

我做了一个类似的项目,你可以在我的报告里查到: https://github.com/t1waz/alternative_station/blob/master/alternative_station/scanner.py

干杯, 芬利尔

相关问题 更多 >