基于Arduino的智能环境监测与反馈系统

  • 一、项目背景
  • 二、效果展示
  • 三、材料清单
    • 1.Arduino开发板——YwRduino uno
    • 2.Arduino盾板——IO Sensor Shield传感器接口扩展板
    • 3.8x7LED点阵显示模块
    • 4.AM2302 DHT22温湿度传感器
    • 5.火焰传感器——类似光敏传感器
    • 6.声音传感器
  • 四、实现思路
    • 1.通过传感器获取环境信息
    • 2.根据环境情况做出不同回应
  • 五、具体步骤
    • 1.获取环境温湿度
      • 连接电路
      • 引入必要的库和文件
      • 主要函数编写
      • 效果展示及验证
    • 2.获取环境声音大小
      • 连接电路
      • 主要函数编写
      • 效果展示及验证
    • 3.获取环境亮度
      • 连接电路
      • 主要函数编写
      • 效果展示及验证
    • 4.确定反馈逻辑
      • 代码实现
    • 5.根据反馈逻辑输出表情
      • 连接电路
      • 引入必要的库和文件并编写表情
      • 主要函数编写
      • 效果展示及验证
    • 6.根据反馈逻辑合成语音并输出
      • 通过Python获取Arduino串口数据
        • 打开串口
        • 读取串口输出
      • 通过win32com库语音合成
  • 六、代码汇总

一、项目背景

一个小巧轻便的环境监测系统,可以帮助人们更好地了解周围环境。

随着社会的发展,生产技术的更新,物联网理念如今已经深入人心,并随着传感器技术,通信技术和物联网技术的发展逐渐触及社会的每一个角落。

在当代社会信息化,智能化快速发展的背景下,设计了“基于Arduino的智能环境监测与反馈系统”。

近几年,工业化进程的日益发展导致环境污染问题日益突出,随着环境状况的不断变化,各地雾霾天气日益严重,已经影响到了人们的正常出行、生活以及健康,因此人们掌握了解自身所处周边环境状况信息的需求越来越迫切。

伴随着当前移动互联网技术的飞速发展,人们可以随时随地了解自己所处的环境状况信息,为出行和生活提供便捷服务,为寻求更加健康的环境提供依据。

本文主要利用现有的成熟传感技术和互联网技术实现实时获取环境状况信息,并对用户给予相应的反馈。

二、效果展示

基于Arduino的智能环境监测与反馈系统

三、材料清单

1.Arduino开发板——YwRduino uno

市面上的开发板大同小异,一般都是使用Arduino UNO R3,新款开发板的性能可能要好一些,但是使用方法几乎一样

2.Arduino盾板——IO Sensor Shield传感器接口扩展板


因为该项目需要接的传感器较多,所以我买了一个扩展板。

如果平常使用的传感器不多,可以不使用扩展板。

3.8x7LED点阵显示模块


该模块用于显示表情,通过表情反映当前环境的状况

4.AM2302 DHT22温湿度传感器


温湿度传感器,顾名思义,就是用来检测环境温度和湿度的

5.火焰传感器——类似光敏传感器

火焰传感器只是对火焰最敏感,但是对普通光也有反应

6.声音传感器


声音传感器是用于检测声音信号大小的传感器

四、实现思路

在购买材料之前,我们计划把这个系统打造成一个“人”,赋予他感知环境并根据环境做出反馈的能力。

因此整体的思路是:

1.通过传感器获取环境信息

作为一个智能系统,当然是获取的信息越全面越好。因此这里指的传感器可以不止是上面提到的那些传感器,用户可以根据需要自行添加更多种类的传感器。

每个传感器的使用方法其实查查文档,基本都能找到使用方法,网上也有很多案例,基本都是可以拿来即用的。

这一步的工作量主要在代码整理上,将各种传感器的代码进行整合。

2.根据环境情况做出不同回应

有了所需要的环境信息后,便能利用环境信息做出一定的反馈,就跟人一样,当我们感到太热或太冷时,我们会通过表情及言语表达出来。

这一步主要的工作量在于如何设计系统的判断条件,即到底什么是热,它的具体数值是多少,这是我们需要确定的。

然后再写一些条件判断,当条件成立时,执行某些操作;条件不成立,再去执行其他操作。

五、具体步骤

1.获取环境温湿度

连接电路

引入必要的库和文件

// Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain#include "DHT.h"#define DHTPIN 2// what pin we're connected to// Uncomment whatever type you're using!
//#define DHTTYPE DHT11   // DHT 11
#define DHTTYPE DHT22// DHT 22  (AM2302)
//#define DHTTYPE DHT21   // DHT 21 (AM2301)// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensorDHT dht(DHTPIN, DHTTYPE);void setup() {Serial.begin(9600); Serial.println("DHTxx test!");dht.begin();
}

主要函数编写

// 读取湿度
void ReadH(){float humidity = dht.readHumidity();Serial.print("Humidity: "); Serial.print(humidity);Serial.print(" %\t");return humidity;
}// 读取温度
void ReadT(){float temperature = dht.readTemperature();Serial.print("Temperature: "); Serial.print(temperature);Serial.println(" *C");return temperature;
}

效果展示及验证

2.获取环境声音大小

连接电路


这里我将声音传感器的out引脚接到了模拟口0上

主要函数编写

void ReadVoice(){int Voice = analogRead(0);   //传感器接于模拟口0Serial.print("Voice: "); Serial.print(Voice);Serial.println();return Voice;
}

效果展示及验证

3.获取环境亮度

连接电路

主要函数编写

void ReadFire(){int Fire = analogRead(5);   //传感器接于模拟口5Serial.print("Fire: "); Serial.print(Fire);Serial.println();return Fire;
}

效果展示及验证


在没有光照或光照很弱时,火焰传感器的输出数值较大

当受到光照或有火焰时:

传感器输出数值变小:

4.确定反馈逻辑

根据传感器接收到的环境数据做出相应动作,此处参数可自行修改

代码实现

  if (humidity < 25){DrawEmoji(broken_emoji);Serial.println("broken");}else if (Fire > 1000){DrawEmoji(blush_emoji);Serial.println("blush");}else if (temperature < 15){DrawEmoji(sad_emoji);Serial.println("sad");}else if (Voice > 100){DrawEmoji(angry_emoji);Serial.println("angry");}else{DrawEmoji(smeil_emoji);Serial.println("smeil");}

5.根据反馈逻辑输出表情

连接电路

引入必要的库和文件并编写表情

// 7*8点阵屏
#include <SparkFun_LED_8x7.h>
#include <Chaplex.h>byte led_pins[] = {4, 5, 6, 7, 8, 9, 10, 11}; // Pins for LEDs
byte i;
byte x;
byte y;
byte radius;
// smeil
const byte smeil_emoji[] = { 0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0};// sad
const byte sad_emoji[] = { 0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0};// shy
const byte shy_emoji[] = { 0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,1,0,0,1,1,0,0,1};// blush
const byte blush_emoji[] = { 0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,1,0,1,0,0,1,0,1,1,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0};// angry
const byte angry_emoji[] = { 0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,1,0,1,0,0,1,0,1,1,0,0,0,1,0,0,1};// broken
const byte broken_emoji[] = { 0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,1,0,1,0,1,0,0,0,0,1,0,1,0,1,0,0,1,0,1};

主要函数编写

void DrawEmoji(const byte emojy[]){Plex.clear();Plex.drawBitmap(emojy);Plex.display();
}

效果展示及验证

  • 输出笑脸:
  • 蒙圈表情:
  • 难受表情:

6.根据反馈逻辑合成语音并输出

通过Python获取Arduino串口数据

这里需要一个serial库,用于和Arduino通信,使用以下命令进行安装:

pip install pyserial

pyserial的官方文档:https://pypi.org/project/pyserial/

这里简单带大家过一下pyserial库的使用方法。

打开串口

插入Arduino后,可以看到对应的串口,一般是COM3

下面通过serial库打开COM3:

import serialSensor = serial.Serial('COM3', 9600, timeout=0.2)

读取串口输出

strs = Sensor.readline().decode('utf-8')
if strs.strip()!='':print(strs)

通过win32com库语音合成

import win32com.clientspeaker = win32com.client.Dispatch("SAPI.SpVoice")
text = "输入要语音合成的内容"
speaker.Speak(text)

六、代码汇总

本项目使用的代码已上传至GitHub:
https://github.com/zbp-xxxp/EMF

基于Arduino的智能环境监测与反馈系统相关推荐

  1. 基于Arduino的智能家居系统设计

    基于Arduino的智能家居系统设计 一.设计要求 1.利用DHT11温湿度检测模块和光敏电阻采集环境温度.湿度和光强信息: 2.通过Arduino开发板对DS1302时钟模块进行初始设置,并每隔一定 ...

  2. arduino灯光装置_基于Arduino的智能家居灯控系统设计

    &能应用 ------ T X 阵 W S 2 8 1 2 全 彩 灯 带 R X 工 G N D r 0 引言 智能家居的概念虽然已经有了几十年,但进入我国并取 得一定发展还是最近几年的事, ...

  3. 【毕业设计】基于Arduino的智能灌溉系统 - 嵌入式 单片机 物联网

    文章目录 1 简介 1 硬件要求 2 项目背景 3 实现功能 4 OLDE显示屏 5 IO扩展器 6 系统构建 7 完整代码 8 最后 1 简介 Hi,大家好,这里是丹成学长,今天向大家介绍一个 单片 ...

  4. 基于Arduino的智能晾衣架

    前段时间,由于个人原因没有及时更新,今天准备写一个基于Arduino的智能晾衣架. 摘要: 智能晾衣架是应用物联网工程技术,通过网络和物品的连接得以控制晾衣架的状态.智能晾衣架通过多个传感器来对外界环 ...

  5. 基于arduino单片机智能避障小车

    基于arduino单片机智能避障小车 思路简介 本文简要介绍了基于arduino单片机智能小车可以通过手机端蓝牙助手对其进行遥控操作'可以切换手动操作和自动避障两个模式,避障基于蝙蝠超声波测距的原理, ...

  6. 红外测温枪,超进化 -- 智能温度传感器 基于 arduino 的智能测温模块

    红外测温枪,超进化!--智能温度传感器!基于 arduino 的智能测温模块. 前言 硬件选择 代码讲解 通过 SDDC 协议接入 Spirit 1 部分 配置设备信息 数据获取与发送流程 融合!特殊 ...

  7. 基于Arduino的智能家居语音识别系统设计

    基于Arduino的智能家居语音识别系统设计 前言:       随着这两年深入中国本土企业,在移动智能终端市场疯狂抢食,英特尔早已"摸清"了中国厂商和市场的情况.现在顺势推出智能 ...

  8. 基于Arduino的智能洗手机

    目录 引言 1 ATMEGA328P 芯片简介 1.1 理论介绍 1.2 芯片引脚定义图 1.3 最小系统制作原理图 2 框架及组成结构 2.1 系统框架 2.2 主要模块介绍 2.2.1 HC-SR ...

  9. 基于Arduino之智能小夜灯项目

    基于Arduino之智能小夜灯项目 目录 基于Arduino之智能小夜灯项目 前言 一.功能介绍 二.实物图 三.设置代码 总结 前言 此小灯是我第一次使用Arduino进行操作的实验,它包含了小夜灯 ...

  10. Arduino项目实战——基于Arduino【智能垃圾桶】设计

       Arduino项目实战        -基于Arduino[智能垃圾桶]设计 第一次接触Arduino是在大一的时候,距离现在已经五年,当时一个简单的"电子琴"项目就让我抓耳 ...

最新文章

  1. HAproxy七层负载均衡介绍
  2. JDK源码解析之集合篇2--Collection
  3. Citrix Reciever更改https为http模式
  4. c语言中和if语句作用相似的运算符,南开18秋学期(1709、1803、1809)《C语言程序设计》在线作业【答案】...
  5. Android BOOTCLASSPATH详解
  6. Apache Flink 1.10.0 发布 | 云原生生态周报 Vol. 38
  7. f-BRS: Rethinking Backpropagating Refinement for Interactive Segmentation解析
  8. String类的构造与析构相关处理
  9. undefined reference to `std::cout'等错误
  10. Eclipse安装VJET报错解决办法
  11. 摄影基础知识:等效焦距是什么?
  12. vue-router 跳转原理
  13. Linux系列在线培训五月盛情开幕!!(5月9日,10日,16日,17日,23日,24日)18:30 - 21:30,
  14. 深入探讨JavaScript函数
  15. CocoaPods 错误 target overrides the `OTHER_LDFLAGS`...
  16. 14.json文件读取
  17. IDEA汉化包安装和卸载
  18. threejs道路贴图动画
  19. mysql事务6,MySQL6-事务
  20. flask python 上传图片或头像

热门文章

  1. 计算机维护的工作周记,计算机维护实习周记
  2. band math函数_波段运算(bandmath)工具中常用的函数和实例
  3. 基于X射线的工业无损检测系统
  4. MVP架构模式简单示例
  5. 电路中各种地,数字地DGND、模拟地AGND、功率地PGND、电源地GND、交流地AGND、大地EGND的区别及处理
  6. c语言杭电oj1090答案,杭电OJ水题答案.doc
  7. ie11加载项启用不了 java,IE11网页加载项和控件不能运行怎么办
  8. (附源码)计算机毕业设计Java远程健康数据管理系统
  9. FDS学习笔记(三)全局变量的设置
  10. 微信h5 支付,已经获得weixin://wap/pay?prepayid,但是无法调起微信客户端支付