基于Arduino的环境监测装置
基于Arduino的环境监测装置
- 引言
- 痛点
- 功能
- 前期准备
- 软件
- 硬件
- 项目开发
- 硬件开发
- 软件开发
- 功能演示
- 更多精彩,欢迎关注
引言
本项目使用机智云Gokit2.0开发板,实现基于Arduino的环境监测装置,解决目前大多数人对环境数据要求逐渐增高的痛点。
痛点
- 环境数据可检测
- 温湿度可智能调控
- 人起床自动开灯
- 按下开关调控屋内设备
功能
- 当温度超过20°C后,风扇打开一档;当温度超过30°C后,风扇打开二档。温度低于20°C,风扇自动关闭。
- 实时检测温湿度传感器、红外人体检测传感器等数据,并通过串口发送出来进行数据显示。
- 红外人体检测传感器实时检测是否有人起床,有人则打开白灯。
- 按下按键一,打开白灯;按下按键二,打开风扇。
前期准备
软件
- Arduino IED
- 串口调试助手
硬件
机智云Gokit2.0开发板(Arduino)
项目开发
硬件开发
软件开发
-
首先申明引用的头文件
#include <Gizwits.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <DHT.h>
#include <ChainableLED.h>
#include <MsTimer2.h> -
根据电路图,定义温湿度传感器、按键1、按键2、RGB灯、红外传感器和电机的管脚。
#define Infrared_PIN 2 ///< 红外IO管脚
#define DHTPIN 3 ///< 温湿度IO管脚
#define MOTOR_PINA 4 ///< 电机IO管脚
#define MOTOR_PINB 5 ///< 电机IO管脚
#define KEY1 6 ///< 按键IO管脚
#define KEY2 7 ///< 按键IO管脚
//温湿度功能值定义
#define DHTTYPE DHT11
//电机功能值定义
#define MOTOR_MAX 100
#define MOTOR_MAX1 -100
#define MOTOR_MIN 0
#define MOTOR_16
DHT dht(DHTPIN, DHTTYPE);
ChainableLED leds(A5, A4, 1);
SoftwareSerial mySerial(0, 1); // A2 -> RX, A3 -> TX -
编写温湿度读取功能函数
void DHT11_Read_Data(unsigned char * temperature, unsigned char * humidity)
{
*temperature = (unsigned char)dht.readTemperature();
*humidity = (unsigned char)dht.readHumidity();
return;
} -
编写电机控制功能程序
void Motor_status(long motor_speed)
{
unsigned char Temp_motor_speed = 0;
if (motor_speed == 0) //停止
{
digitalWrite(MOTOR_PINA, LOW);
}
if (motor_speed > 0) //正转
{
Temp_motor_speed = (motor_speed - 0) * 51;
if (Temp_motor_speed > 255) Temp_motor_speed = 255;
digitalWrite(MOTOR_PINA, LOW);
analogWrite( MOTOR_PINB, Temp_motor_speed);
}
if (motor_speed < 0) //反转
{
Temp_motor_speed = 255 - (0 - motor_speed) * 51; //Temp_motor_speed = (255 ‐ (5 + motor_speed))* 51;
if (Temp_motor_speed > 255) Temp_motor_speed = 255;
digitalWrite(MOTOR_PINA, HIGH);
analogWrite( MOTOR_PINB, Temp_motor_speed );
}
} -
编写RGB灯功能程序
void LED_RGB_Control(byte red, byte green, byte blue)
{
leds.setColorRGB(0, red, green, blue);
} -
声明温湿度暂存变量
unsigned char temperature_buf=0;
unsigned char humidity_buf=0; -
在初始化程序中,定义串口波特率,初始化RGB,定义GPIO。
mySerial.begin(115200);
leds.init();
digitalWrite(A0, HIGH);//使能RGB LED
pinMode(KEY1, INPUT_PULLUP); //KEY1 上拉输入
pinMode(KEY2, INPUT_PULLUP); //KEY2 上拉输入
LED_RGB_Control(0,0,0); -
在主循环中,首先检测温湿度值,并将温湿度传感器的值进行显示。当温度超过20°C后,风扇打开一档;当温度超过30°C后,风扇打开二档。温度低于20°C,风扇自动关闭。
DHT11_Read_Data(&temperature_buf, &humidity_buf);
if(temperature_buf>20)
{
Motor_status(1);
}
else if(temperature_buf>30)
{
Motor_status(2);
}
else
{
Motor_status(0);
}
mySerial.println(“temperature:”);
mySerial.println(temperature_buf, DEC);
mySerial.println(“humidity:”);
mySerial.println(humidity_buf, DEC);
按下按键一,打开白灯;按下按键二,打开风扇。
if(digitalRead(KEY1) == LOW)
{
LED_RGB_Control(255,255,255);
mySerial.println(“open led!”);
}
else if(digitalRead(KEY2) == LOW)
{
Motor_status(1);
mySerial.println(“open fan!”);
} -
检测红外人体检测传感器是否有人,有人则打开白灯,没人则关闭。并通过串口发送出来。
if (digitalRead(Infrared_PIN))
{
mySerial.println(“No one appears and disappears!”);
LED_RGB_Control(0,0,0);
}
else
{
LED_RGB_Control(255,255,255);
mySerial.println(“Someone is appearing!”);
}
功能演示
更多精彩,欢迎关注
抖音号:《物联网知识》
公众号:《物联网知识》
B站:《跋扈洋》
CSDN:《跋扈洋》
相关文章:

基于Arduino的环境监测装置
基于Arduino的环境监测装置 引言痛点功能前期准备软件硬件 项目开发硬件开发软件开发 功能演示更多精彩,欢迎关注 引言 本项目使用机智云Gokit2.0开发板,实现基于Arduino的环境监测装置,解决目前大多数人对环境数据要求逐渐增高的痛点。 痛…...
深度学习:模型攻击(Model Attack)详解
模型攻击(Model Attack)详解 模型攻击通常指在机器学习和人工智能领域中,故意设计的行为或方法,旨在操纵或欺骗机器学习模型的输出。这类攻击可能导致模型做出错误的决策或泄露敏感信息,对于安全性至关重要的应用&…...

CesiumLab介绍
软考鸭小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 CesiumLab是一个围绕Cesium平台设计的完整易用的数据预处理工具集,它旨在最大化提升三维数据可视化效率。本文将详细介绍CesiumLab的安装、主要功能…...

PyQt 入门教程(3)基础知识 | 3.2、加载资源文件
文章目录 一、加载资源文件1、PyQt5加载资源文件2、PyQt6加载资源文件 一、加载资源文件 常见的资源文件有图像与图标,下面分别介绍下加载资源文件的常用方法 1、PyQt5加载资源文件 2、PyQt6加载资源文件 PyQt6版本暂时没有提供pyrcc工具,下面介绍下在不…...

老照片修复工作流教程:用 ComfyUI 轻松还原历史记忆
你是否有过这样的遗憾? 那些珍贵的老照片因为时间的流逝,早已失去了当年的色彩,变得模糊、褪色,甚至破损? 今天带你了解如何使用 ComfyUI 的老照片修复工作流,通过简单的几步操作,在短短十几秒…...

ESP-IDF Blink实例学习
文章目录 一、引言二、工程创建1、打开vscode点击ESP-IDF资源管理器2、选择ESP-IDF框架3、选择Show Examples4、选择blink5、点击Create project using example blink ,选择创建目录6、创建完成 三、硬件电路LED管脚分配四、修改menuconfig五、编译和下载运行 一、引言 Blink实…...

QT QML 练习8-Simple Transformations
简单的转换(Simple Transformations) 转换操作改变了一个对象的几何状态。QML元素对象通常能够被平移,旋转,缩放。下面我们将讲解这些简单的操作和一些更高级的用法。 我们先从一个简单的转换开始。用下面的场景作为我们学习的开始…...

低空产业园搭建技术详解
低空产业园的搭建技术是一个复杂而系统的工程,涉及多个方面的技术和策略。以下是对低空产业园搭建技术的详细解析: 一、规划与设计 1. 总体规划:低空产业园的规划需要结合地方经济发展、产业基础、政策导向等因素,制定科学合理的…...

Python网络爬虫从入门到实战
目录 引言 一、网络爬虫的概念 二、 网络爬虫的基本工作流程 (一)过程: (二)安装requests模块和beautifulsoup4模块 (三)requests库的使用 1、requests库的基本介绍 2、导入requests库的…...

探索Theine:Python中的AI缓存新贵
文章目录 探索Theine:Python中的AI缓存新贵背景:为何选择Theine?Theine是什么?如何安装Theine?简单的库函数使用方法场景应用场景一:Web应用缓存场景二:分布式系统中的数据共享场景三࿱…...

js拼图(神鹰黑手哥)
直接上代码 再解释 这是最终效果图 css代码如下 * {margin: 0;padding: 0;}body {height: 800px;width: 100%;background-color: blanchedalmond;display: flex;justify-content: space-around;align-items: center;position: relative;}.img-box {display: flex;flex-wrap: w…...

值得推荐的五款数据恢复工具!!
当谈及我们日常工作生活中无法避免的数据丢失情况时,很多小伙伴一定急得如热锅上的蚂蚁,无助与忐忑。特别是现在社会,信息量庞大,一旦电脑上的重要数据不慎丢失,无论是工作文件、生活照片还是珍贵的视频,都…...

股票金融市场中的tick,分钟,日线数据
在金融市场中,股票数据的分析对于投资者来说至关重要。股票数据可以根据时间粒度的不同,分为几种不同的类型,包括Tick数据、分钟数据和日线数据。下面将详细介绍这些数据类型,并对比它们之间的差别。 Tick数据 Tick数据…...

OKG Research:如何衡量链上数据的开放价值?
在新加坡Token2049期间,欧科云链研究院受邀参加Bloomberg主办的企业另类资产投资峰会2024,与多位专家围绕未来数据形态与前景进行了深入交流。 活动后,欧科云链研究院负责人Lola Wang与资深研究员Jason Jiang在大公网发表署名文章《如何衡量…...

向日葵下载教程以及三款远程控制工具推荐!!!
向日葵远程控制下载教程!! 亲爱的朋友们,如果你对远程控制软件有所需求,那么向日葵绝对是一个不错的选择。现在我将带你走一遍向日葵的下载流程。 1. 打开你的浏览器,输入“向日葵官方网站”,进入官方网站…...

Studio One 6中文版及最新功能介绍 Studio One 6音乐软件安装包
Studio One 6是一款功能强大的数字音频工作站(DAW),专为音乐制作和录音而设计。它提供了从初学者到专业人士的所有需求,无论是创作、录音、混音还是母带处理。 Studio One 6拥有直观的界面和强大的虚拟乐器、插件和音频处理工具&a…...

【数据结构】栈和队列 + 经典算法题
目录 前言 一、栈 二、栈的实现 三、栈的循环遍历演示 四、栈的算法题 // 一、队列 二、队列的实现 三、使用演示 四、队列的算法题 总结 前言 本文完整实现了栈和队列的数据结构,以及栈和队列的一些经典算法题,让我们更加清楚了解这两种数据…...

C# 基于winform 使用NI-VISA USB口远程控制电源 万用表
1.下载完整版本NI-VISA NI-VISA Download - NI *注意支持的操作系统,以便后期编译 安装完成之后,打开NI MAX,插上usb口,打开测试面板进行通信 2.编程示例 见本地文件夹C:\Users\Public\Documents\National Instruments\NI-VIS…...
Python设计方差分析实验
前言 方差分析(ANOVA)是一种用于检测多个样本均值之间差异的统计方法,广泛应用于实验设计与数据分析中。通过分析不同因素对实验结果的影响,方差分析能够帮助评估哪些因素显著影响了实验结果,并且可以提供各因素交互作用的深入理解。在多因子实验设计中,随机化、重复和平…...

【Oracle DB故障分享】分享一次由于SGA设置太小导致的DP备份失败
List item 今天给客户做Oracle例行数据库健康巡检,过程中检出一些备份异常,分享如下。 排查问题: 打开DP备份软件,随即弹出如下提示: 登录DP,查看备份情况:发现从10/6开始,DP备份…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

Matlab实现任意伪彩色图像可视化显示
Matlab实现任意伪彩色图像可视化显示 1、灰度原始图像2、RGB彩色原始图像 在科研研究中,如何展示好看的实验结果图像非常重要!!! 1、灰度原始图像 灰度图像每个像素点只有一个数值,代表该点的亮度(或…...