目录

前言

硬件部分

Wemos D1单片机

DHT22温湿度传感器

SIM900A GSM模块

实物连接效果图

软件部分

DHT库的配置方法

添加.zip库文件包

代码

注意事项



前言

在某些实验室或者是对温度湿度有严格要求的场所,都需要让温度或者湿度保持在某一范围内,超出范围则会容易出现较为严重的问题。该项目目的是通过较为简单硬件组合,搭建出一个一旦温湿度超出范围则可通过短信或者电话的方式进行即使提醒的系统。

本篇主要分为三个部分:硬件部分(各硬件简介和连接图)、软件部分(DHT库的安装和代码)、注意事项(自己在开发过程中吃过的亏)

硬件部分

Wemos D1单片机

基于ESP8266,可以通过Arduino IDE进行编程

DHT22温湿度传感器

DHT22的各种参数如上图所示,因为DHT22的性能会比DHT11好很多,选择DHT22可以进行更加精确的测量

SIM900A GSM模块

SIM900A的其他信息可以直接跟商家要,为了缩减篇幅这里直接不介绍了

实物连接效果图

考虑到直接拍实物图会看不清,所以采用了这种比较直观的方式,应该不会还有人看不懂叭

软件部分

DHT库的配置方法

因为DHT的库属于第三方库,不在arduino标准库里面,所以需要手动导入。

首先点击图中蓝色部分(Manage Libraries…),然后等一会儿会出现如下界面

因为我不知道哪个真正需要的DHT库,所以有关DHT的一次性全部下下来了,如果有小可耐在别处看到了希望可以在评论区留言,我好把不用的删掉,蟹蟹

添加.zip库文件包

因为我们虽然在网上安装了库,但是并没有导入库文件,此时我们需要在网上下载库文件,否则会出现:dht.h: No such file or directory

这里给大家分享两个.zip文件,如果其中一个不行,那就试试另一个:

dht1(提取码)  dht2(提取码)

下载完后解压缩,接着复制到Arduino文件下的libraries中
提醒:打开后的路径,不能在中间多加一个文件夹,因为很多压缩包打开之后里面是有两个一样的文件夹的,如果放到库名文件夹下再有一个文件夹下还是会出现这种情况的。*.cpp和*.h文件一定要放在这个库的根目录下,不要放在二级目录。

只要(DHT)文件中有这三个就可以了(下面所示的三个文件)

如下图所示,如果可以找到库文件的话,那就说明配置成功,如果没有那就关闭后重新打开Arduino IDE试试看

代码

#include "DHT.h"#define DHTPIN D8     //DHT22 DAT端所连接口
#define DHTTYPE DHT22   // DHT 22  (AM2302)DHT dht(DHTPIN, DHTTYPE);     //声明dht函数void setup()     //程序初始化
{Serial.begin(115200);       //设置波特率Serial.println("DHT22 test!");dht.begin();
}void loop()
{delay(1000);float h = dht.readHumidity();     //测量湿度数据float t = dht.readTemperature();     //测量温度数据(摄氏度)float f = dht.readTemperature(true);     //测量温度数据(华氏度)if (isnan(h) || isnan(t) || isnan(f)) {     //判断测量数据是否为数字Serial.println("Failed to read from DHT sensor!");return;}if(h>75||t>30){     //设置短信发送条件delay(2000);SendMessage();  }float hi = dht.computeHeatIndex(f, h);Serial.print("Humidity: "); Serial.print(h);     //输出湿度数据Serial.print(" %");Serial.print("\t");Serial.print("Temperature: "); Serial.print(t);     //输出温度数据Serial.println(" *C ");
}void SendMessage( )     //短信发送部分
{//Ring();Serial.print("AT+CSCS=\"GSM\"\r\n");delay(1000);Serial.print("AT+CMGF=1\r\n");delay(1000);      Serial.print("AT+CMGS=\"xxxxxxxxxxx\"\r\n"); //输入想要发送到的号码delay(3000);Serial.printf("Warning! Temperature and Humidity:%fcfr in the laboratory are abnormal");     //短信内容delay(1000);Serial.write(0x1A);      //发送操作delay(1000);Ring();//HangUp();delay(1000);
}void Ring()
{Serial.print("ATDxxxxxxxxxxx;\r\n");        //xxxxxxxxxxx为拨打对象的号码delay(1000);
}void HangUp()
{Serial.print("ATH\r\n");      //挂断指令delay(1000);
}

我看其他人都是用的波特率为9600,但是我试了一下115200是可以正常运行的,波特率的设置如下图所示

注意事项:

  1. DHT22的库arduino本身没有,需要自行进行配置,库的下载链接在文中有
  2. SIM900A 经过检测,只能用移动的卡,其他的卡并不能进行正常工作
  3. SIM900A在进行调试的时候,要注意设置有一定门槛的触发条件,防止因为连续发短信而导致卡被认定为垃圾短信发生器
  4. 在代码进行烧录的时候,注意先把单片机的rx和tx引脚断开,烧录成功上之后再插上,否则会出现百度也无法解决的问题
  5. 连线的时候,是单片机的tx连接GSM模块的rx,单片机的rx连接GSM模块的tx

至于什么是百度也无法解决的问题,如下图所示。只要你VCC连接的都是5V那就是没有问题的,只是你把Rx和Tx接上了,这个事情我绕了很多弯路,以至于以为是板子的问题

基于Wemos D1和SIM900A(发短信和打电话)的温湿度报警系统相关推荐

  1. cmgr linux命令,linux下利用GPRS模块发短信、打电话

    本文转自:http://www.cnblogs.com/wss-linux/p/3986006.html 一.开发环境 内核版本:linux-3.0 开发板:FL2440(nandflash:K9F1 ...

  2. 通过超级终端连接短信猫, 用at指令发短信和打电话

    1.连接短信猫 开始--〉程序--〉附件--〉通讯--〉超级终端 选择短信猫连接的com口,设置波特率(如果是手机卡发短信,需要设置为19200). 2.输入指令发短信 在短信猫界面输入 at at+ ...

  3. Android实现发短信,打电话

    最近做的这个HTML5项目中有2个调用本地的打电话,发短信功能,之后就去在网上找实现方式下面就是实现方式. 首先想到就是权限问题所以在AndroidManifest中添加权限 <?xml ver ...

  4. iOS 调用系统发短信以及打电话功能

    先介绍一种最简单的方法: 调用打电话功能 [[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"tel://100 ...

  5. H5调用手机发短信和打电话功能

    前言 本来感觉用H5写调用电话拨号功能和发送短信功能会很不好写,后来通过实践得出,其实很简单的. 首先简单介绍一下业务功能,就是显示通讯录中的人员用户信息,然后分别点击相应的按钮来发送短信和拨通电话 ...

  6. Android Studio 获取手机联系人并进行,发短信,打电话,增删改操作

    1.总体设计 我的整体功能设计相对简单.一个主要的联系人显示界面,使用ListView将得到联系人数据进行显示,通过点击,长按联系人事件触发相应的弹窗(Dailog)然后选择想要的功能.通过点击加号图 ...

  7. 基于STM32F103+AS608指纹模块+4X4矩阵按键+SIM900A发短信——智能门禁卡系统

    STM32F103-智能门禁卡系统 1.基本介绍 1.用到硬件 2.功能介绍 2.代码 指纹模块 SIM900A模块 矩阵按键 主程序 项目展示 验证密码开锁演示 指纹验证开锁演示 添加指纹演示 删除 ...

  8. 清单文件,测试,打电话和发短信应用

    android:layout_width="fill_parent":表示水平包裹元素 android:layout_width="wrap_content": ...

  9. 手把手教你如何在安卓平台上实现打电话发短信的功能

    首发地址 http://www.eoeandroid.com/thread-228079-1-1.html 1 案例目的 本案例通过一个简单通讯工具来巩固android的activity.Linear ...

最新文章

  1. 深度学习LiDAR定位:L3-Net
  2. linux下ssh文件配置,允许root远程用密码登录
  3. linux运维高频命令汇总
  4. Redis事务与MySQL事务的区别
  5. IT也要健康:帮助你保持健康的几个重要因素
  6. delphi android 2017,Delphi春天将来临,Android遇到XE7我也是醉了,Hello World
  7. Python 音频: 使用 sounddevice 调用 ASIO 声卡驱动
  8. 信安软考 第十四章 恶意代码防范技术原理
  9. nodejs追加写入日志文件
  10. 练习:使用Python爬取COVID-19疫情国内当日数据
  11. 高并发高负载网站系统架构
  12. 设计一个Dog类,包含名字,年龄,颜色三个属性
  13. 基于Java Springboot+Vue+MyBatis音乐播放系统设计实现
  14. 设计模式之单例设计模式初步
  15. 用python制作九宫格图片原来如此简单
  16. 使用Python在Excel表指定位置插入多列并赋值
  17. RatingBar详解
  18. 有关计算机启动过程的书籍,操作系统—计算机的启动过程
  19. cadence 原理图orcad使用总结篇二:FPGA/CPLD换PIN方法
  20. 比较图片相似度算法介绍与应用(Java版)

热门文章

  1. 旁瓣对消原理_自适应旁瓣对消及其在通信对抗系统中的应用研究
  2. 物联网课程学习目标_【新生教育】物联网专业介绍大会|向新的目标进发
  3. 已安装ME,PR队列导出仍无法打开ME
  4. 阿菜的Vue学习之旅(一)
  5. dbcp2数据源配置详解
  6. 著名的三门问题,是在 “胡扯” 吗?
  7. 促销drools_规则引擎在促销管理系统中的研究及应用(华东理工大学2010年度硕士学位论文)...
  8. 用java获取一维数组的平均值_java中一维数组常见运算
  9. 从《陈六事疏》说开去
  10. C语言编译全过程【转】