基于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的智能家居环境监测系统是一种利用开源硬件平台和传感器技术来实现对家庭环境中各种参数(如温度、湿度、空气质量等)进行实时监测的技术方案。这种系统不仅能够提供精确的数据采集功能,还能通过联网设备将这些数据传输到云端或移动终端,从而让用户随时随地了解家中的环境状况[^1]。 #### 系统的主要特点 该系统的显著特点是灵活性高、成本低且易于部署。它可以通过简单的电路设计和编程完成复杂的自动化任务,比如当检测到房间内的CO₂浓度过高时自动启动排气扇;或者在发现火灾隐患(如烟雾浓度异常升高)时及时发出警报并通知住户采取措施[^3]。 #### 应用场景分析 此类环境监测解决方案适用于多种场合,包括但不限于住宅区、办公室大楼甚至是工业厂房内部的安全保障工作当中。特别是在一些特殊场所,例如老年人居住的地方或是无人值守的工作区域,这样的智能化管理系统显得尤为重要因为它可以有效预防潜在危险发生的同时也提高了人们的生活质量[^2]。 #### 设计与实施要点 为了确保整个项目的顺利开展,在实际操作过程中需注意以下几个方面: - **安全性**: 需要充分考虑电气安全问题以防止短路或其他意外情况造成损害; - **电源供应**: 合理规划供电方式以满足长时间稳定运行的要求; - **可靠性测试**: 对各个组件进行全面的功能验证以保证整体性能达到预期目标; - **通信协议选择**: 根据具体需求挑选合适的无线通讯手段如Wi-Fi, Bluetooth LE等等; - **用户体验优化**: 提供直观友好的交互界面使得普通用户也能轻松掌握如何设置及维护这套装置[^4]。 以下是用于此目的的一个基础示例程序片段展示如何读取来自DHT11温湿度传感器的信息并通过串口打印出来: ```cpp #include <DHT.h> #define DHTPIN 2 // 连接到DHT传感器上的数字针脚编号 #define DHTTYPE DHT11 // 使用的是DHT11型号 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); } void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); return; } Serial.print("Humidity: "); Serial.print(h); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(t); Serial.println(" *C"); delay(2000); // 每隔两秒更新一次测量值 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

跋扈洋

编写不易,打赏支持一下我吧

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

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

打赏作者

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

抵扣说明:

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

余额充值