【问题标题】:BMP180 sensor not updating temperature when I put my finger on it当我将手指放在 BMP180 传感器上时,它不会更新温度
【发布时间】:2019-08-01 04:15:40
【问题描述】:

所以我想开始一个项目,让我可以通过互联网检查房间内的温度。我使用了 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);
}

我想在刷新页面时更新温度,但它保持不变。我将手指放在传感器上并刷新页面。但是,当我根据串行监视器将手指放在传感器上时,传感器会更新,但刷新时不会在网页上更新。

【问题讨论】:

    标签: python flask arduino


    【解决方案1】:

    只是为了测试,我创建了非常简单的程序并将其上传到 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 对象:

    TemperatureSensor 将具有保持当前读取温度值的属性数据。

    TemperatureSensor 将处理与读取和处理数据相关的所有内容 = 不断从串行读取数据,防止总线上的溢出/堆栈数据。

    # 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

    干杯, 芬里尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-08-17
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      相关资源
      最近更新 更多