无法从 DHT 传感器获取数据

如何解决无法从 DHT 传感器获取数据

嘿伙计们, 实际上,我正在为我的学校开发浇水系统。 在我尝试用 tkinter 制作 gui 之后,令人惊讶的是什么工作。一段时间后,我的 grovepi DHT 传感器出现问题。

错误:

pi@raspberrypi:~/Desktop $ python3 t.py ^CTraceback(最近调用 最后):文件 "/usr/local/lib/python3.7/dist-packages/grovepi-1.4.1-py3.7.egg/grovepi.py",第 227 行,在 read_i2c_block 文件中 "/usr/local/lib/python3.7/dist-packages/Dexter_AutoDetection_and_I2C_Mutex-0.0.0-py3.7.egg/di_i2c.py",第 373 行,在 read_list 文件中 "/usr/local/lib/python3.7/dist-packages/Dexter_AutoDetection_and_I2C_Mutex-0.0.0-py3.7.egg/di_i2c.py",第 129 行,在传输文件中 "/usr/local/lib/python3.7/dist-packages/Dexter_AutoDetection_and_I2C_Mutex-0.0.0-py3.7.egg/di_mutex.py",第 48 行,在获取键盘中断

在处理上述异常的过程中,又发生了一个异常:

回溯(最近一次调用最后一次):文件“t.py”,第 5 行,在 [temp,hum] = grovepi.dht(dht_sensor,0) 文件“/usr/local/lib/python3.7/dist-packages/grovepi-1.4.1-py3.7.egg/grovepi.py”, 第 335 行,在 dht 文件中 "/usr/local/lib/python3.7/dist-packages/grovepi-1.4.1-py3.7.egg/grovepi.py",第 242 行,在 read_identified_i2c_block 文件中 "/usr/local/lib/python3.7/dist-packages/grovepi-1.4.1-py3.7.egg/grovepi.py",第 232 行,在 read_i2c_block KeyboardInterrupt

我的代码:

import grovepi

dht_sensor = 5

[temp,0)

print(temp)

即使在这个发生的小代码中...... 这是不完整的代码:

import time
import datetime
import grovepi
import tkinter
from tkinter import messagebox
from tkinter import ttk
from tkinter import *
import threading
import sys
import math


#############################################################
#definition global variables
global str_temp
global str_hum
global str_moist
global thresh
global watered
global stop_thread
global button_status

#############################################################
#define  some start values

thresh = 300
stop_thread = True
watered = False

#############################################################
#connect senosrs/actors

#connect grove LEDS to digital ports (green=7),(red=8)
green = 7
red = 8

#connect button tu digital port D2
button = 2
button_status = grovepi.digitalRead(button)

#connect relay to digital port D3
relay = 3

#connect dht sensor(temperature and humidity) to digital port D4
dht_sensor = 4

#connect moisture sensor to analog port A1
moisture = 1

#############################################################
#define pin modes
grovepi.pinMode(green,"OUTPUT")
grovepi.pinMode(red,"OUTPUT")
grovepi.pinMode(relay,"OUTPUT")
grovepi.pinMode(button,"INPUT")

#############################################################
#define functions

def on_closing():
    
    close_gui = tkinter.messagebox.askquestion("Diplomarbeit Stanislav Shubenok","Programm beenden?")
    
    
    if close_gui == "yes":
        grovepi.digitalWrite(relay,0)
        grovepi.digitalWrite(green,0)
        grovepi.digitalWrite(red,0)
        root.destroy()
    else:
        return

#############################################################

def green():
    grovepi.digitalWrite(green,1)

def red():
    grovepi.digitalWrite(red,1)

#############################################################

def emergency_stop():
    while True:
        button_status = grovepi.digitalRead(button)

        if button__status == 0:
            continue
        else:
            
            grovepi.digitalWrite(relay,0)
            grovepi.digitalWrite(green,0)
            grovepi.digitalWrite(red,0)
            root.destroy()

#############################################################

def stop_thread():
    global stop_thread
    stop_thread = False
def reset_stop_thread():
    global stop_thread
    stop_thread = True

#############################################################

def automatic():
    return

#############################################################

def getdata():
    stop_thread()
    reset_stop_thread()

    underlabel.config(text="Daten werden jede Sekunde aktualisiert")
    time.sleep(3)
    while True:
        if not stop_thread:
            break
        else:
            [temp,0)
            mosit = grovepi.analogRead(moisture)
            str_temp = str(temp)
            str_hum = str(hum)
            str_moist = str(moist)

            named_tuple = time.localtime()
            time_string = time.strftime("%H:%M")
            second = tim.time()
            local_time = time.ctime(second)

            middleLabel1.config(text=str_temp)
            middelLabel2.config(text=str_hum)
            middleLabel3.config(text=str_moist)
            upperLabel.config(text=local_time)
            underLabel.config(text="")
            time.sleep(1)
            
#############################################################

def manually():
    stop_thread()
    moist = grovepi.analogRead(moisture)
    if (moist > thresh):
        grovepi.digitalWrite(relay,0)
        
        underLabel.config(text="die Erde ist noch feucht")
        reset_stop_thread()
        time.sleep(3)
        
        threadin.Thread(target=getdata).start()
    else:
        underLabel.config(text="es wird 5 Sekunden lang bewässert")
        grovepi.digitalWrite(relay,1)
        time.sleep(5)
        grovepi.digitalWrite(relay,0)
        underLabel.config(text="Bewässerung beendet")
        reset_stop_thread()
        time.sleep(2)
        threading.Thread(target=getdata).start()

#############################################################

def read_button():
    while True:
        button_status = grovepi.digitalRead(button)
        if button_status == 0:
            print("nicht gedrückt")
        else:
            print("gedrückt")

#############################################################

#--------------------------main programm-------------------

   

root= tkinter.Tk()
root.wm_title("Diplomarbeit Stanislav Shubenok")
root.config(background="#C4C4C4")
#root.attribute('-zoomed')
root.geometry("400x400")

outerFrame = tkinter.Frame(root,bg="#000000",pady=10,padx=5)
outerFrame.pack(pady=1,padx=1)

mainFrame = tkinter.Frame(outerFrame,bg="#FFFFFF",padx=5)
mainFrame.pack(pady=1,padx=1)
upperLabel = tkinter.Label(mainFrame,text=local_time,font=('Arial','20'))
upperLabel.grid(row=0,column=0,columnspan=3,padx=5)
underLabel = tkinter.Label(mainFrame,text="Infos Hier",'20'))
underLabel.grid(row=0,column=4,padx=5)

leftLabel1 = tkinter.Label(mainFrame,text="Temperatur:",bg="#FFFFF",'20'))
leftLabel1.grid(row=1,padx=5)
leftLabel2 = tkinter.Label(mainFrame,text="Luftfeuchtigkeit:",'20'))
leftLabel2.grid(row=2,padx=5)
leftLabel3 = tkinter.Label(mainFrame,text="Erdfeuchtigkeit",'20'))
leftLabel3.grid(row=3,padx=5)

middleLabel1 = tkinter.Label(mainFrame,text=str_temp,'20'))
middleLabel1.grid(row=1,column=1,padx=5)
middleLabel2 = tkinter.Label(mainFrame,text=str_hum,'20'))
middleLabel2.grid(row=2,padx=5)
middleLabel3 = tkinter.Label(mainFrame,text=str_moist,'20'))
middleLabel3.grid(row=3,padx=5)

B_getdata = tkinter.Button(mainFrame,text="Daten aktualisieren",bg="#FFFF00",width=15,'20'),command=lambda:threading.Thread(target=getdata).start())
B_getdata.grid(row=1,column=2,padx=5)
B_automatic = tkinter.Button(mainFrame,text="Automatisch",bg="#00FF00",command=lambda:threading.Thread(target=automatic).start())
B_automatic.grid(row=2,padx=5)
B_manually = tkinter.Button(mainFrame,text="Manuell",bg="#0088FF",command=lambda:threading.Thread(target=manually).start())
B_manually.grid(row=3,padx=5)

threading.Thread(target=getdata).start()


root.protocol("WM_DEKETE_WINDOW",on_closing)
root.mainloop()
sys.exit("Ein Fehler ist aufgetreten,das Programm wurde geschlossen.")

我是编程初学者,需要heeelp :(

解决方法

即使我试图从 grovepi 获取其他数据,也存在同样的问题...:

import grovepi

dht_sensor = 5

moisture = 1

moist = grovepi.analogRead(moisture)

#[temp,hum] = grovepi.dht(dht_sensor,0)

print(moist)

错误:

pi@raspberrypi:~/Desktop $ python3 t.py ^CTraceback(最近调用 最后):文件 "/usr/local/lib/python3.7/dist-packages/grovepi-1.4.1-py3.7.egg/grovepi.py",第 228 行,在 read_i2c_block KeyboardInterrupt

在处理上述异常的过程中,又发生了一个异常:

回溯(最近一次调用最后一次):文件“t.py”,第 7 行,在 潮湿 = grovepi.analogRead(moisture) 文件“/usr/local/lib/python3.7/dist-packages/grovepi-1.4.1-py3.7.egg/grovepi.py”, 第 261 行,在模拟读取文件中 "/usr/local/lib/python3.7/dist-packages/grovepi-1.4.1-py3.7.egg/grovepi.py",第 242 行,在 read_identified_i2c_block 文件中 "/usr/local/lib/python3.7/dist-packages/grovepi-1.4.1-py3.7.egg/grovepi.py",第 232 行,在 read_i2c_block KeyboardInterrupt pi@raspberrypi:~/Desktop $^C

:(

,

更改 Grovepi 总线:

grovepi.set_bus("RPI_1")

现在可以工作了,如果以前没有改变公交车就可以工作。

我认为是线程的干扰。多个线程试图在同一个传感器上读/写数据。

我做到了,所以它不会为读取和显示数据的特定情况打开多个线程。

可以关闭

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-