当前位置: 首页 > news >正文

基于Arduino的环境监测装置

基于Arduino的环境监测装置

  • 引言
  • 痛点
  • 功能
  • 前期准备
    • 软件
    • 硬件
  • 项目开发
    • 硬件开发
    • 软件开发
  • 功能演示
  • 更多精彩,欢迎关注

引言

本项目使用机智云Gokit2.0开发板,实现基于Arduino的环境监测装置,解决目前大多数人对环境数据要求逐渐增高的痛点。

痛点

  1. 环境数据可检测
  2. 温湿度可智能调控
  3. 人起床自动开灯
  4. 按下开关调控屋内设备

功能

  1. 当温度超过20°C后,风扇打开一档;当温度超过30°C后,风扇打开二档。温度低于20°C,风扇自动关闭。
  2. 实时检测温湿度传感器、红外人体检测传感器等数据,并通过串口发送出来进行数据显示。
  3. 红外人体检测传感器实时检测是否有人起床,有人则打开白灯。
  4. 按下按键一,打开白灯;按下按键二,打开风扇。

前期准备

软件

  1. Arduino IED
  2. 串口调试助手

硬件

机智云Gokit2.0开发板(Arduino)

项目开发

硬件开发

软件开发

  1. 首先申明引用的头文件
    #include <Gizwits.h>
    #include <Wire.h>
    #include <SoftwareSerial.h>
    #include <DHT.h>
    #include <ChainableLED.h>
    #include <MsTimer2.h>

  2. 根据电路图,定义温湿度传感器、按键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

  3. 编写温湿度读取功能函数
    void DHT11_Read_Data(unsigned char * temperature, unsigned char * humidity)
    {
    *temperature = (unsigned char)dht.readTemperature();
    *humidity = (unsigned char)dht.readHumidity();
    return;
    }

  4. 编写电机控制功能程序
    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 );
    }
    }

  5. 编写RGB灯功能程序
    void LED_RGB_Control(byte red, byte green, byte blue)
    {
    leds.setColorRGB(0, red, green, blue);
    }

  6. 声明温湿度暂存变量
    unsigned char temperature_buf=0;
    unsigned char humidity_buf=0;

  7. 在初始化程序中,定义串口波特率,初始化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);

  8. 在主循环中,首先检测温湿度值,并将温湿度传感器的值进行显示。当温度超过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!”);
    }

  9. 检测红外人体检测传感器是否有人,有人则打开白灯,没人则关闭。并通过串口发送出来。
    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的环境监测装置 引言痛点功能前期准备软件硬件 项目开发硬件开发软件开发 功能演示更多精彩&#xff0c;欢迎关注 引言 本项目使用机智云Gokit2.0开发板&#xff0c;实现基于Arduino的环境监测装置&#xff0c;解决目前大多数人对环境数据要求逐渐增高的痛点。 痛…...

深度学习:模型攻击(Model Attack)详解

模型攻击&#xff08;Model Attack&#xff09;详解 模型攻击通常指在机器学习和人工智能领域中&#xff0c;故意设计的行为或方法&#xff0c;旨在操纵或欺骗机器学习模型的输出。这类攻击可能导致模型做出错误的决策或泄露敏感信息&#xff0c;对于安全性至关重要的应用&…...

CesiumLab介绍

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

PyQt 入门教程(3)基础知识 | 3.2、加载资源文件

文章目录 一、加载资源文件1、PyQt5加载资源文件2、PyQt6加载资源文件 一、加载资源文件 常见的资源文件有图像与图标&#xff0c;下面分别介绍下加载资源文件的常用方法 1、PyQt5加载资源文件 2、PyQt6加载资源文件 PyQt6版本暂时没有提供pyrcc工具&#xff0c;下面介绍下在不…...

老照片修复工作流教程:用 ComfyUI 轻松还原历史记忆

你是否有过这样的遗憾&#xff1f; 那些珍贵的老照片因为时间的流逝&#xff0c;早已失去了当年的色彩&#xff0c;变得模糊、褪色&#xff0c;甚至破损&#xff1f; 今天带你了解如何使用 ComfyUI 的老照片修复工作流&#xff0c;通过简单的几步操作&#xff0c;在短短十几秒…...

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

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

低空产业园搭建技术详解

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

Python网络爬虫从入门到实战

目录 引言 一、网络爬虫的概念 二、 网络爬虫的基本工作流程 &#xff08;一&#xff09;过程&#xff1a; &#xff08;二&#xff09;安装requests模块和beautifulsoup4模块 &#xff08;三&#xff09;requests库的使用 1、requests库的基本介绍 2、导入requests库的…...

探索Theine:Python中的AI缓存新贵

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

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…...

值得推荐的五款数据恢复工具!!

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

股票金融市场中的tick,分钟,日线数据

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

OKG Research:如何衡量链上数据的开放价值?

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

向日葵下载教程以及三款远程控制工具推荐!!!

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

Studio One 6中文版及最新功能介绍 Studio One 6音乐软件安装包

Studio One 6是一款功能强大的数字音频工作站&#xff08;DAW&#xff09;&#xff0c;专为音乐制作和录音而设计。它提供了从初学者到专业人士的所有需求&#xff0c;无论是创作、录音、混音还是母带处理。 Studio One 6拥有直观的界面和强大的虚拟乐器、插件和音频处理工具&a…...

【数据结构】栈和队列 + 经典算法题

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

C# 基于winform 使用NI-VISA USB口远程控制电源 万用表

1.下载完整版本NI-VISA NI-VISA Download - NI *注意支持的操作系统&#xff0c;以便后期编译 安装完成之后&#xff0c;打开NI MAX&#xff0c;插上usb口&#xff0c;打开测试面板进行通信 2.编程示例 见本地文件夹C:\Users\Public\Documents\National Instruments\NI-VIS…...

Python设计方差分析实验

前言 方差分析(ANOVA)是一种用于检测多个样本均值之间差异的统计方法,广泛应用于实验设计与数据分析中。通过分析不同因素对实验结果的影响,方差分析能够帮助评估哪些因素显著影响了实验结果,并且可以提供各因素交互作用的深入理解。在多因子实验设计中,随机化、重复和平…...

【Oracle DB故障分享】分享一次由于SGA设置太小导致的DP备份失败

List item 今天给客户做Oracle例行数据库健康巡检&#xff0c;过程中检出一些备份异常&#xff0c;分享如下。 排查问题&#xff1a; 打开DP备份软件&#xff0c;随即弹出如下提示&#xff1a; 登录DP&#xff0c;查看备份情况&#xff1a;发现从10/6开始&#xff0c;DP备份…...

告别C盘战士!ArcGIS 10.6安装路径选择与磁盘空间优化全攻略

告别C盘战士&#xff01;ArcGIS 10.6安装路径选择与磁盘空间优化全攻略当GIS初学者第一次安装ArcGIS 10.6时&#xff0c;往往会被其庞大的安装体积所震惊。许多用户习惯性地点击"下一步"&#xff0c;结果发现C盘空间被迅速吞噬&#xff0c;系统运行变得迟缓。本文将深…...

企业内统一API网关与Taotoken聚合平台对接方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 企业内统一API网关与Taotoken聚合平台对接方案 在推进AI应用落地的过程中&#xff0c;许多中大型企业面临一个共同挑战&#xff1a…...

同步带装配工艺要点与损伤防控策略

一、引言在工业精密传动系统中&#xff0c;盖茨同步带凭借高精度、高效率、无滑差的优势&#xff0c;成为自动化设备、精密机床、输送产线的核心传动部件。多数企业在运维中&#xff0c;普遍将同步带异常磨损、断齿、断带等故障归咎于工况恶劣或产品质量问题&#xff0c;却忽略…...

3分钟快速安装BetterNCM插件管理器,让你的网易云音乐功能翻倍

3分钟快速安装BetterNCM插件管理器&#xff0c;让你的网易云音乐功能翻倍 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐功能单一而烦恼吗&#xff1f;想要解锁更多个…...

Java网络编程基础分享

在学习 Java 的过程中&#xff0c;网络编程是非常重要的一环。无论是后端开发、分布式系统、即时通讯、文件传输&#xff0c;还是游戏服务、物联网设备&#xff0c;都离不开网络通信一、计算机网络基础1.1 什么是计算机网络把不同地理位置、具有独立功能的计算机&#xff0c;通…...

告别KITTI!用TartanAir数据集在Unreal Engine仿真环境里“虐”你的VSLAM算法(附保姆级下载与使用指南)

用TartanAir数据集在Unreal Engine中打造VSLAM算法的"极限考场"当你的视觉SLAM算法在KITTI数据集上跑出98%的准确率时&#xff0c;是否意味着它已经准备好应对真实世界的复杂场景&#xff1f;现实往往会给乐观的开发者当头一棒——实验室里的"优等生"在遇到…...

从《吃豆人》到开放世界:聊聊Unity Navigation里Agent Radius和Cost的那些‘潜规则’

从《吃豆人》到开放世界&#xff1a;Unity Navigation中Agent Radius与Cost的隐藏逻辑1980年诞生的《吃豆人》用简单的迷宫路径定义了早期游戏AI的移动规则——幽灵们沿着固定路线巡逻&#xff0c;遇到转角时随机选择方向。这种设计在当时堪称革命性&#xff0c;但以今天的标准…...

收藏干货|2026 版双非零基础入局大模型开发,RAG 与 Agent 就业上岸全攻略

日常总能收到不少初学伙伴的私信&#xff0c;大家普遍都有同一个疑惑&#xff1a;二本及普通院校学历&#xff0c;零基础入门 RAG、Agent 大模型应用开发&#xff0c;究竟能不能顺利入职&#xff1f;行业后续发展前景又如何&#xff1f; 本篇 2026 年全新内容&#xff0c;不空谈…...

Facebook登录协议逆向解析:appsecret_proof与e2e加密机制

1. 这不是“爬虫教程”&#xff0c;而是一次对现代Web身份协议的解剖实验你有没有试过&#xff0c;在调试一个Facebook登录集成时&#xff0c;浏览器Network面板里突然冒出一串带sig、access_token、e2e、c_user的请求&#xff0c;参数长度动辄上千字符&#xff0c;加密方式五花…...

JavaScript对象创建:告别繁琐,四种灵活写法一学就会

在JavaScript里&#xff0c;创建对象的这般方法常把刚开始学习的新手弄得困惑不已&#xff0c;好像无论走哪条道都行得通&#xff0c;可又不清楚该挑哪一条才好。我编写JavaScript都有十几年功夫了&#xff0c;对象创建这事差不多每天都会碰到可谓基础技能。它不像变量声明那般…...