【物联网实训项目】------(四)家庭智慧安防系统之智能温控

Python之adafruit-dht包语法、参数和实际应用案例 adafruit-dht 是一个用于与 DHT 系列温湿度传感器(如 DHT11、DHT22、AM2302)进行交互的 Python 库,特别适用于树莓派等单板计算机。它简化了传感器数据的读取过程,提供了简洁的 API 接口。 阅读详情

1.所需材料:

树莓派、面包板、温湿度传感器DHT11、直流电机、风扇、L298N电机驱动模块。

2.树莓派从DHT11温湿度传感器读取数据

(1)DHT11 介绍

DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度+-5%RH, 温度+-2℃,量程湿度20-90%RH, 温度0~50℃。

(2)硬件连接图

(3)具体流程

DHT11的读取需要遵循特定的信号协议完成,为了方便使用Adafruit DHT库。

a.软件安装

sudo apt-get install build-essential python-dev

b.从GitHub获取Adafruit库

sudo git clone https://github.com/adafruit/Adafruit_Python_DHT.git

cd Adafruit_Python_DHT

 

c.给python2和python3安装该库

sudo python setup.py install

sudo python3 setup.py install

d.书写dht.py程序引入Adafruit库来读取DHT11的数据

import Adafruit_DHT

  

# Set sensor type : Options are DHT11,DHT22 or AM2302

sensor=Adafruit_DHT.DHT11

  

# Set GPIO sensor is connected to

gpio=17

  

# Use read_retry method. This will retry up to 15 times to

# get a sensor reading (waiting 2 seconds between each retry).

humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)

  

# Reading the DHT11 is very sensitive to timings and occasionally

# the Pi might fail to get a valid reading. So check if readings are valid.

if humidity is not None and temperature is not None:

  print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity))

else:

  print('Failed to get reading. Try again!')

e.运行结果图

3.树莓派从DHT11温湿度传感器读取数据写入到数据库中

(1)在树莓派上安装MySQL数据库

  a.安装MySQL

使用管理员权限运行获取最新的MySQL及Python编程接口。

$ sudo apt-get install mysql-server python-mysqldb

安装过程中需要输入root管理员的密码,该密码用于之后访问数据库。

b.登录MySQL

mysql -u root -p

Enter password:

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 53

Server version: 5.5.60-0+deb8u1 (Raspbian)



Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.



Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.



Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

c.查看当前的数据库

mysql> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

+--------------------+

3 rows in set (0.00 sec)

d.创建一个新的数据库

mysql> CREATE DATABASE jiankong;

Query OK, 1 row affected (0.00 sec)

e.在jiankong数据库下创建dht2的表

mysql> use jiankong;

Database changed
mysql> create table dht2(id int auto_increment primary key not null, time char(255),temperature int,humidity int);

Query OK, 0 rows affected (0.03 sec)

f.查看表是否创建成功。

mysql> describe dht2;

+-------------+-----------+------+-----+---------+----------------+

| Field       | Type      | Null | Key | Default | Extra          |

+-------------+-----------+------+-----+---------+----------------+

| id          | int(11)   | NO   | PRI | NULL    | auto_increment |

| time        | char(255) | YES  |     | NULL    |                |

| temperature  | int(11)   | YES  |     | NULL    |                |

| humidity    | int(11)   | YES  |     | NULL    |                |

+-------------+-----------+------+-----+---------+----------------+

4 rows in set (0.00 sec)

(2)在树莓派上通过python来对mysql数据库进行存储操作

书写测试文件mysql_test.py来测试是否成功

import MySQLdb

sql='show databases';

conn=MySQLdb.connect(host='localhost',user='root',passwd='root',db='jiankong',port=3306)

cur=conn.cursor(

cur.execute(sql)

print cur.fetchone()

测试成功结果图

(3)将树莓派读取到的温湿度信息写入到我们mysql数据库,对dht.py文件进行修改

#coding: utf8

import Adafruit_DHT

import MySQLdb  

import datetime

#引入gpio的模块

import RPi.GPIO as GPIO

import time

# Set sensor type : Options are DHT11,DHT22 or AM2302

sensor=Adafruit_DHT.DHT11

  

# Set GPIO sensor is connected to

gpio=4

dt=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")  



# Use read_retry method. This will retry up to 15 times to

# get a sensor reading (waiting 2 seconds between each retry).

humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)

  

# Reading the DHT11 is very sensitive to timings and occasionally

# the Pi might fail to get a valid reading. So check if readings are valid.

if humidity is not None and temperature is not None:

  print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity))

  print "temperature:",temperature

  print "humidity:",humidity  

  conn=MySQLdb.connect(

    host='localhost',

    port=3306,

    user='root',

    passwd='root',

    db='jiankong',

  )

  sql="insert into dht2(time,temperature,humidity) values('%s','%d','%d')"%(dt,temperature,humidity)

  cur=conn.cursor()

  cur.execute(sql)

  cur.close()

  conn.commit()

  conn.close()

else:

  print('Failed to get reading. Try again!')

查看一下数据表dht2中的数据

 

4.树莓派结合L298N模块驱动直流电机

(1)L298N模块的介绍

接口说明:INT1、INT2、INT3、INT4分别接了树莓派的GPIO13、GPIO15、GPIO16、GPIO18。+5V接树莓派5V,GND接地。

(2)Python代码:

#!/usr/bin/python

#coding: utf8

#引入gpio的模块

import RPi.GPIO as GPIO

import time

#设置GPIO模式

GPIO.setmode(GPIO.BOARD)



#设置in1到in4接口

IN1 = 13

IN2 = 15

IN3 = 16

IN4 = 18



#初始化接口

def init():

    GPIO.setup(IN1,GPIO.OUT)

    GPIO.setup(IN2,GPIO.OUT)

    GPIO.setup(IN3,GPIO.OUT)

    GPIO.setup(IN4,GPIO.OUT)



#前进的代码

def qianjin(sleep_time):

    GPIO.output(IN1,GPIO.HIGH)

    GPIO.output(IN2,GPIO.LOW)

    GPIO.output(IN3,GPIO.HIGH)

    GPIO.output(IN4,GPIO.LOW)

    time.sleep(sleep_time)

    GPIO.cleanup()



#后退

def cabk(sleep_time):

    GPIO.output(IN1,GPIO.LOW)

    GPIO.output(IN2,GPIO.HIGH)

    GPIO.output(IN3,GPIO.LOW)

    GPIO.output(IN4,GPIO.HIGH)

    time.sleep(sleep_time)

    GPIO.cleanup()



#左转

def left(sleep_time):

    GPIO.output(IN1,False)

    GPIO.output(IN2,False)

    GPIO.output(IN3,GPIO.HIGH)

    GPIO.output(IN4,GPIO.LOW)

    time.sleep(sleep_time)

    GPIO.cleanup()



#右转

def right(sleep_time):

    GPIO.output(IN1,GPIO.HIGH)

    GPIO.output(IN2,GPIO.LOW)

    GPIO.output(IN3,False)

    GPIO.output(IN4,False)

    time.sleep(sleep_time)

    GPIO.cleanup()

init()#调用初始化方法初始化接口

cabk(10)#调用后退方法,并且10秒后停止

运行该程序,直流电机可运行10s。

5.树莓派智能调温综合

对dhp.py程序进行修改,使其测温度、湿度的时候,如果温度超过25℃,会自启动风扇降温。

#coding: utf8

import Adafruit_DHT

import MySQLdb  

import datetime

#引入gpio的模块

import RPi.GPIO as GPIO

import time

# Set sensor type : Options are DHT11,DHT22 or AM2302

sensor=Adafruit_DHT.DHT11

  

# Set GPIO sensor is connected to

gpio=4

dt=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")  

#设置GPIO模式

GPIO.setmode(GPIO.BOARD)



#设置in1到in4接口

IN1 = 13

IN2 = 15

IN3 = 16

IN4 = 18



#初始化接口

def init():

    GPIO.setup(IN1,GPIO.OUT)

    GPIO.setup(IN2,GPIO.OUT)

    GPIO.setup(IN3,GPIO.OUT)

    GPIO.setup(IN4,GPIO.OUT)

 #后退

def cabk(sleep_time):

    GPIO.output(IN1,GPIO.LOW)

    GPIO.output(IN2,GPIO.HIGH)

    GPIO.output(IN3,GPIO.LOW)

    GPIO.output(IN4,GPIO.HIGH)

    time.sleep(sleep_time)

    GPIO.cleanup()

# Use read_retry method. This will retry up to 15 times to

# get a sensor reading (waiting 2 seconds between each retry).

humidity, temperature = Adafruit_DHT.read_retry(sensor, gpio)

  

# Reading the DHT11 is very sensitive to timings and occasionally

# the Pi might fail to get a valid reading. So check if readings are valid.

if humidity is not None and temperature is not None:

  print('Temp={0:0.1f}*C  Humidity={1:0.1f}%'.format(temperature, humidity))

  print "temperature:",temperature

  print "humidity:",humidity  

  conn=MySQLdb.connect(

    host='localhost',

    port=3306,

    user='root',

    passwd='root',

    db='jiankong',

  )

  sql="insert into dht2(time,temperature,humidity) values('%s','%d','%d')"%(dt,temperature,humidity)

  cur=conn.cursor()

  cur.execute(sql)

  cur.close()

  conn.commit()

  conn.close()

  if temperature > 25:

    init()

    cabk(30)

else:

  print('Failed to get reading. Try again!')

 

Python之adafruit-python-dht包语法、参数和实际应用案例 adafruit-python-dht是Adafruit推出的Python库,用于通过GPIO接口读取DHT11、DHT22(AM2302)等温湿度传感器的数据。该库封装了传感器通信协议,支持树莓派(Raspberry Pi)等基于GPIO的开发板,简化了温湿度采集的开发流程。 阅读详情

相关推荐

Python库adafruit-circuitpython-dht-3.2.0实战指南

选对传感器:优先用 DHT22 替代 DHT11,精度更高、范围更宽;规范接线:务必加上拉电阻,短距离布线,避免干扰;严格守时:遵守最小 2 秒采样间隔,禁止频繁轮询;异常兜底try-except+ 重试机制,保证系统不崩溃;数据净化:滑动平均 + 校验和,输出干净可信的结果。🔚 最后一句话:传感器不是插上去就能稳定的,它是软硬件协同的艺术。只有当你既懂电路又懂代码,才能真正掌控每一个读数背后的真相。现在,就去点亮你的第一块 DHT 传感器吧!✨。

weixin_36296444的博客 630

树莓派远程连接(SSH&&VNC)及DHT11温湿度传感器获取数据脚本,及数据本地存储Mariadb

树莓派远程连接(SSH&&VNC)及DHT11温湿度传感器获取数据脚本,及数据本地存储Mariadb

weixin_52169101的博客 3079

SAP SD实战:用BADI_SLS_HEAD_SCR_CUS给销售订单VA01/VA02加自定义字段(附完整函数组代码)

本文详细解析了在SAP SD模块中如何利用BADI_SLS_HEAD_SCR_CUS实现销售订单(VA01/VA02)的屏幕增强,包括数据结构设计、函数组创建和BADI接口实现。通过实战案例和完整代码,帮助开发者掌握在SAPMV45A标准流程中添加自定义字段的关键技术,提升业务定制化能力。

weixin_27015733的博客 369

使用 Adafruit 读取 DHT11 温湿度传感器

DHT11 温湿度传感器尽管不是使用效率最高的温湿度传感器,但价格便宜被广泛应用。下面我们介绍基于Adafruit DHT 库读取 DHT11 数据的方法。 DHT11 规格 DHT11 有四个引脚,但是其中一个没有被使用到。所有有的模块会简化成3个引脚。 湿度检测范围 : ...

chengyuweng7838的博客 5702

Zynq 【SDK裸机开发之PS】——DDR的内存分配使用详解

Zynq如果跑操作系统的话,内存管理的工作都会交给系统来操作,但是如果是裸机的话,则需要自己对DDR3的内存进行管理。

shizhibuyi1234的博客 7378

5大战略:构建AI金融交易项目的智能成本控制体系

在AI驱动的金融交易项目中,成本控制已从单纯的技术优化升级为战略决策的核心环节。随着大型语言模型在金融分析、风险管理和交易决策中的广泛应用,Token使用成本已成为影响项目可持续性的关键因素。TradingAgents-CN作为基于多智能体LLM的中文金融交易框架,通过创新的成本管理架构,为技术决策者和项目管理者提供了一套完整的AI项目管理与资源优化解决方案。 ## 问题诊断:AI金融项目的成本

gitblog_00630的博客 910

HC32F460 SPI DMA 实现高效TFT屏幕刷新的实战解析

本文针对HC32F460 MCU驱动TFT屏幕时刷新卡顿的问题,深入解析了SPI DMA技术的实战应用。通过对比传统查询模式与DMA模式的性能数据,详细阐述了如何配置SPI与DMA资源、构建核心驱动框架,并提供了避坑指南与进阶优化思路,最终实现高效、流畅的屏幕刷新,显著降低CPU占用率。

weixin_29163797的博客 151

树莓派使用DHT11/DHT22无输入/输出,Adafruit_DHT库输出None值

【代码】树莓派使用DHT11/DHT22无输入/输出,Adafruit_DHT库输出None值。

pp2373886592的博客 1317

LightTools中VBA宏的编写入门

LightTools和VBA联动

bestgamer的博客 2348

Google Gemini 模型本地可视化

Google近期发布了Gemini模型,而且开放了Gemini Pro API,Gemini Pro 可免费使用!Gemini Pro支持全球180个国家的38种语言,目前接受文本、图片作为输入并生成文本作为输出。Gemini Pro的表现超越了其他同类模型,当前版本配备了 32K 文本上下文窗口,可免费使用,且其定价将十分有竞争力。Gemini Pro具备丰富的功能:函数调用、数据嵌入、语义检索、自定义知识嵌入以及聊天功能。

HJ_blog 1246

楼宇控制与智能家居实训室解决方案

此外,实训室还配置了楼宇控制的核心设备,如楼宇自控系统(BAS)、安防监控系统和消防报警系统等,用于模拟楼宇的集中控制和管理。培训课程涵盖了楼宇控制与智能家居的基础理论、系统设计、设备安装调试等多个方面,通过理论知识教学与实践操作指导相结合的方式,确保学生能够全面掌握相关知识和技能,为未来的职业生涯打下坚实的基础。具体而言,实训室力求使学生深刻理解楼宇自动化系统的内在机制与设计精髓,包括传感器网络、执行机构及中央控制系统的协同工作,并掌握其安装、配置与调试的精湛技艺。3.2 软件平台建设。

whwzzc的博客 1737

可编程逻辑控制器(PLC)系列:Mitsubishi MELSEC-Q_(8).MELSEC-Q系列PLC故障诊断与维护

MELSEC-Q系列PLC的故障诊断与维护是一个系统性的过程,需要工程师具备扎实的理论基础和丰富的实践经验。通过了解故障类型、使用诊断工具、遵循诊断步骤,可以有效地定位和解决故障问题。同时,定期的检查与保养、备份与恢复、优化程序和配置,以及提供良好的运行环境,可以减少故障的发生,提高系统的可靠性。希望本文能够帮助工程师在故障诊断与维护过程中更加得心应手,确保MELSEC-Q系列PLC的稳定运行。

2401_87715305的博客 1247

智联未来:Microi吾码低代码平台,引领智能生活的新纪元

无线通信与智能互联Micro吾码通过无线技术(如Wi-Fi、蓝牙、Zigbee等)与用户的智能设备连接,能够远程控制家电、灯光、安防系统等设备。支持与智能手机、平板、智能语音助手(如Amazon Alexa、Google Assistant等)兼容,通过APP或语音指令实现设备控制。设备自动化与场景设定.用户可以通过Micro吾码设置不同的场景模式。例如,在家模式、离家模式、睡眠模式等,让家庭环境自动适应不同的需求。

2303_81060385的博客 3699

ShaderJoy —— 简单又神奇的 “合体” 函数【GLSL】

smin 函数 它实际上有两种常见的实现方式 多项式 指数 多项式 smin 函数图 其对应的代码为 float smin( float a, float b ) { // 多项式 const float k = 0.5; float h = clamp(0.5 + 0.5 * (b - a) / k, 0.0, 1.0); return mix(b, a, h) - k * h * (1.0 - h); } 从上图中我们可以很明显的看出有两处不连...

ShaderJoy 的兴趣技术杂货铺 1857

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

为什么选择Piccolo?5个让开发者爱上的异步ORM特性

在现代Python开发中,异步编程已成为提升应用性能的关键技术。Piccolo作为一款快速、用户友好的异步ORM(对象关系映射)工具,正以其独特的优势吸引着越来越多的开发者。本文将深入探讨Piccolo的5个核心特性,揭示它如何简化数据库操作并提升开发效率,帮助你理解为什么它值得成为你的下一个项目首选ORM。 [![Piccolo ORM Logo](https://raw.gitcode.co

gitblog_07962的博客 698

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Adafruit DHT Sensor Library - 简介、应用与特性

是一个用于控制 Adafruit 生产的 [DHT 系列温湿度传感器](https://www.adafruit.com/categoriez/456/dht-temperature-and-humidity-sensors) 的 Arduino 库。它支持多种型号的 DHT 系列传感器,并提供了简单易用的 API 接口,让开发者能够轻松地将这些传感器集成到自己的 Arduino 项目中。 ##

gitblog_00007的博客 786

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Adafruit_Python_DHT: Python库用于DHT湿度和温度传感器的完整指南

**Adafruit_Python_DHT** 是一个专为树莓派(Raspberry Pi)和BeagleBone设计的Python库,它提供了与DHT系列湿度和温度传感器通信的功能。DHT传感器,如DHT11、DHT22以及AM2302,是流行的环境感应设备,广泛应用于物联网(IoT)项目中。该库由Adafruit Industries开发并维护,保证了对这些低功耗传感器的可靠支持。 ## 项...

gitblog_00479的博客 1152

Adafruit_CircuitPython_DHT 安装与配置指南

Adafruit_CircuitPython_DHT 安装与配置指南 1. 项目基础介绍 本项目是用于支持DHT11和DHT22温度湿度传感器的CircuitPython库。CircuitPython是一种针对微控制器的简化版Python,它允许开发者使用Python语言来编写和执行硬件相关的程序。本项目主要使用Python语言编写。 2. 项目使用的关键技术和框架 CircuitPython:...

gitblog_00594的博客 536

树莓派4B使用串口读取温湿度传感器DHT11/22数据

文章目录一、开篇简单介绍二、在树莓派4B上导入Adafruit_DHT的库三、使用Adafruit_DHT的库获取温湿度数据四、应用到项目中去五、写在最后 一、开篇简单介绍 使用设备情况: Raspberry Pi 4 Model B 4g版 ​系统为:官方 Raspberry Pi OS 2021.01.11版 使用元器件:DHT22,3根杜邦线,vcc接3.3v & out 接gpio 4 (参考下图,忽略标出来的TX和RX,没找其他图,(~ ̄▽ ̄)~) & GND 接ground 树

刘墨苏的技术博客 8843

自己动手实现智能家居之温湿度数据采集存储(DHT11,MySql)

在这里插入代码片 DHT11有三个IO接口,一个VCC(正极)接3.3v,一个GND接GND,剩下一个DATA接树莓派的任意一个GPIO。在设备上有印刷的字体标明了引脚,可以根据指示接到树莓派上。 使用开源类库Adafruit_DHT获取温湿度 读取温度和湿度我们可以使用已经封装好的开源库:Adafruit_DHT import Adafruit_DHT Use read_retry metho...

ting2909的博客 1546

终极Adafruit DHT传感器完整使用指南:从零基础到实战避坑

想要快速掌握Adafruit DHT温湿度传感器的使用方法吗?这份完整的Adafruit DHT传感器使用指南将带你从安装到实战,一步步学会如何在树莓派或BeagleBone Black上读取温湿度数据。无论你是物联网初学者还是资深开发者,都能在这里找到实用的解决方案和避坑技巧!✨ ## 🚀 快速安装Adafruit DHT库 Adafruit DHT传感器库是专为读取DHT系列温湿度传感器

gitblog_00198的博客 511

树莓派(十二)——安装使用DHT11温湿度传感器

文章目录一、接线二、安装DHT库 一、接线 1、下图为DHT11温湿度传感器 右侧有三根接线,黑色的是电源负极(GND)、红色的是电源正极(VCC)、绿色的是数据输入输出(DATA) 2、下图为树莓派2代上默认的GPIO接口: 3、下图为连接图 其中红线接3V的电源、黑线接Ground、绿线接GPIO25 二、安装DHT库 1、安装python开发环境(我们之前已经默认安装过了,可以不用再...

耕云者~ 6658

【物联网实训项目】------(五)家庭智慧安防系统之智能监控

1.所需材料:人体感应模块、蜂鸣器以及树莓派摄像头                                                            人体感应模块接线:中间数据引脚接的是pin12,剩下两个引脚分别接电源和接地。 蜂鸣器接线:一根接电源线,一根接pin11 2.树莓派结合人体感应模块进行蜂鸣器报警 当人体感应模块感应到有人体活动时,蜂鸣器进行报警,同时...

Mind_programmonkey的博客 2805
上一篇: 【物联网实训项目】------(三)家庭智慧安防系统之实时监控
下一篇: 【物联网实训项目】------(五)家庭智慧安防系统之智能监控
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值