ESP8266 NodeMCU手把手入门(实操篇)——读取传感器的值 - 滴漏咖啡 - 博客园

标签: | 发表时间:2021-07-23 16:36 | 作者:
出处:https://www.cnblogs.com

物联网使得现实世界中的实体和数字世界比以往任何时候都更紧密地联系在一起。NodeMCU作为其中的一个重要设备,作用之一就是与传感器相连以实现万物互联通讯。这篇关于NodeMCU的实操篇以土壤湿度传感器和DHT传感器为例,详细介绍了如何使用ESP8266获取传感器的值及相应的示例代码。之所以选择这两个传感器作为示例进行讲解,是因为土壤传感器输出值的信号引脚输出模拟信号,而DHT传感器的信号引脚输出数字信号,在使用过程中也需要引入库(也可以不使用库,代码相对复杂)。当你理解了这篇文章后,NodeMCU与其它大多数传感器的通信也就迎刃而解了。

 

一、实验所需设备及环境

二、连线方式和示例代码

三、延伸拓展及注意事项

 

一、实验所需设备及环境

(一)NodeMCU ESP8266

 

 

 

首先你需要了解ESP8266 NodeMCU是什么及其该设备的基本操作环境,如果你没有接触过的话,请先查看 NodeMCU小白手把手入门。最好选择ESP-12E型号,关于各个不同型号的NodeMCU的区别看 解惑篇的第一部分。

在NodeMCU的引脚图中包含一些GPIO(通用输入输出 general purpose Input Output)引脚,通过它们,可以实现NodeMCU与传感器的通信。GPIO是集成电路的一种数字引脚,可作为接口设备的输入或输出。 如果我们想要控制LED亮度,电机状态等,那么我们需要将其配置为输出。反正,如果我们想要读取开关的状态,传感器数据等,那么我们就要把GPIO配置为输入。  很明显,在本教程中,我们需要配置GPIO为输入,注意在代码中,如需配置GPIO为输入,相关代码pinMode(GPIO, INPUT)可写可不写,如配置GPIO为输出,则把必须使用pinMode(GPIO, OUTPUT)说明。

 

 

 

 

 

 

NodeMCU ESP8266的引脚图(图源:lastminuteengineers.com)

 

 

 

 

(二)土壤传感器YL-69

土壤传感器用于获取土壤湿度参数,即土壤中的水分百分比。常见的土壤传感器分为两类,电阻型和电容型土壤湿度传感器。它们的原理大同小异,都是用于测量土壤中水分的体积含量,并以传感器输入GPIO(0-1024)的电压值表示水分的多少,电压值越小,表明水分多,土壤越湿;电压值越大,表明导电性不好,土壤越干。详细的关于土壤传感器的知识请查看 如何用树莓派获取土壤传感器的值中的土壤传感器部分。在本教程中,使用任一土壤传感器即可,价格低廉。

(三)DHT11传感器

用于获取空气中的温度和湿度数据。详细的关于DHT11的知识请查看 如何用树莓派获取DHT传感器的值

 

 

 

 

 

 

(四)Arduino IDE

 

 

二、连线方式和示例代码

 在Arduino IDE中进行如下设置:开发板:NodeMCU 1.0(ESP-12E Module);上传速度:115200(与代码一致);端口:板子所连端口

 

(一)土壤传感器与NodeMCU的通信

(1)连线方式

 

 

 

 

 

(2) 示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define soilPin A0
 
//存储中间值
int  soilValue;
//定义土壤湿度
int  soilMoisture;
void  setup()
{
       Serial.begin(115200);
      //这句代码写不写都可
      //pinMode(soilPin, INPUT);
}
void  loop()
{
     //读取土壤传感器上的电压值
     soilValue = analogRead(soilPin);
     //把电压值按照[0,1023]映射到[100,0]
     soilMoisture = map(soilValue,0,1023,100,0);
     //每隔一秒输出一次值
     delay(1000);
     Serial.print( "soilMositure: " );
     Serial.print(soilMoisture);
     Serial.println( "%" );
}

 (3)输出结果

 

 

 

 (二)DHT11与NodeMCU的通信

(1)连线方式

 

 

 

(2)下载库。打开库管理器,搜索DHT,下载DHT sensor libraray。

 

 (3)代码实现

#include "DHT.h"

#define DHTPIN D4     // Digital pin connected to the DHT sensor

#define DHTTYPE DHT11   // DHT 11
//#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321
//#define DHTTYPE DHT21   // DHT 21 (AM2301)

// Connect pin 1 (on the left) of the sensor to +5V
// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1
// to 3.3V instead of 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 sensor

// Initialize DHT sensor.
// Note that older versions of this library took an optional third parameter to
// tweak the timings for faster processors.  This parameter is no longer needed
// as the current DHT reading algorithm adjusts itself to work on faster procs.

DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  dht.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(1000);

  // Reading temperature or humidity takes about 250 milliseconds!
  // Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
  float h = dht.readHumidity();
  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();

  //如果温度湿度有一个为空,则输出“获=获取值失败”
  if (isnan(h) || isnan(t)) {
    Serial.println(F("Failed to read from DHT sensor!"));
    return;
  }

   //输出温度
  Serial.print(t);
  Serial.print("℃");
  Serial.print(",");
  //输出湿度
  Serial.print(h);
  Serial.println("%");
 
}

 

(4)输出结果

 

  三、延伸拓展及注意事项

所有应用于NodeMCU的代码可以直接用于Arduino,更改相应的参数和引脚名称即可。

NodeMCU只有一个模拟引脚,只能同时获取一个输出模拟信号的传感器的值,这是它的局限性。

相关 [esp8266 nodemcu 手把] 推荐:

ESP8266 NodeMCU手把手入门(实操篇)——读取传感器的值 - 滴漏咖啡 - 博客园

- -
物联网使得现实世界中的实体和数字世界比以往任何时候都更紧密地联系在一起. NodeMCU作为其中的一个重要设备,作用之一就是与传感器相连以实现万物互联通讯. 这篇关于NodeMCU的实操篇以土壤湿度传感器和DHT传感器为例,详细介绍了如何使用ESP8266获取传感器的值及相应的示例代码. 之所以选择这两个传感器作为示例进行讲解,是因为土壤传感器输出值的信号引脚输出模拟信号,而DHT传感器的信号引脚输出数字信号,在使用过程中也需要引入库(也可以不使用库,代码相对复杂).

基于MQTT协议与ESP8266平台的家庭环境监控实现 | 千里

- -
在智能家居的应用场景中,传感器一直是非常重要的组成部分. 比如传感器报告的温度高了可以自动关窗开空调. 在一般的使用场景中,众多的传感器和开关会分散在房子中的不同位置,通过布线连接是不现实的,理想的情况当然是通过已有的无线网络进行连接,网络传输就需要特定的协议,MQTT协议就是一个不错的选择. 手头刚好有一些传感器和一个ESP8266芯片的单片机(WeMos D1),做了一个家庭温湿度、光照及空气质量监控器,并通过MQTT协议推送数据到Home Assistant平台.

手把手教你使用GoAgent

- sky fire - iGFW
因为本人是文科生,本来就不适合写程序和脚本,因此AutoGoAgent出现了种种问题,而且GoAgent中自带的上传工具比AutoGoAgent还简单-_-. 如果您使用AutoGoAgent出现了问题,您可以跟着这篇文章做一遍. 在Google APP Engine中申请帐号、上传GoAgent服务器端.

手把手教你用jpcap抓包

- - ITeye博客
本文原创,转载请注明出处~. 在工作中经常需要抓包进行分析,我们可以使用各种工具来抓包,比如常用的tcpdump和wireshark. 但有时候我们想用程序来进行控制,比如把抓到的包存储到数据库中,以后可以进行查询等等. 我在工作中用的是Java,那么就用它来做示范吧. 本教程在centos和ubuntu上测试通过.

手把手教你做文本挖掘

- - IT瘾-bigdata
文本挖掘指的是从文本数据中获取有价值的信息和知识,它是数据挖掘中的一种方法. 文本挖掘中最重要最基本的应用是实现文本的分类和聚类,前者是有监督的挖掘算法,后者是无监督的挖掘算法. 1)读取数据库或本地外部文本文件. 2.4)文字云检索哪些词切的不准确、哪些词没有意义,需要循环2.1、2.2和 2.3步骤.

手把手教你 Spark 性能调优

- - ImportNew
上周四接到反馈,集群部分 spark 任务执行很慢,且经常出错,参数改来改去怎么都无法优化其性能和解决频繁随机报错的问题. 看了下任务的历史运行情况,平均时间 3h 左右,而且极其不稳定,偶尔还会报错:. 在有限的计算下,job的运行时长和数据量大小正相关,在本例中,数据量大小基本稳定,可以排除是日志量级波动导致的问题:.

手把手教你伪装成超级黑客

- 月朗星稀 - 煎蛋
好莱坞那些美国大片里,哪个黑客不是噼里啪啦键盘上一阵乱打,然后屏幕上一行行代码一阵乱跳之后就入侵成功. 想不想也感受一下这种牛逼的感觉. 如果你的答案是“是”的话……你可以点开hackertyper.net玩一把. 打开之后界面上有几个选项,如果大家懒得研究的话,直接用默认值也可以,点下面的“Hack!”按钮稍等片刻就会到一个全黑的界面,这时你就可以在键盘上拼命乱打了.

海外购之Amazon亚马逊购物手把手教程

- yird - 什么值得买
本篇教程以Amazon亚马逊为例,一步一步手把手教你从注册账号到下单成功,希望本文能帮助初次进行海外购的网友安全的迈出第一步,“什么值得买”网站愿更多的网友能够享受到海外购的实惠和乐趣. 在浏览器的地址栏输入http://www.amazon.com. 恭喜你,到此你已经成功注册账号,迈出了海外购的第一步.

手把手教你如何成为X战警

- Jiang - 煎蛋
X战警里这样那样的超能力,大家是不是早就眼红了呢. 其实自己动手,丰衣足食,你也能够拥有. //“X战警超能力套装,只要998. 没错,不是99998,不是9998,是998. © ivanchaos for 煎蛋, 2011.

海外购之转运手把手教程

- Hming - 什么值得买
之前我们曾经发布过海外购之Amazon亚马逊购物手把手教程,这次什么值得买给大家带来的是转运手把手教程,以百通为例,供海外购新手参考. 1.在浏览器的地址栏输入http://www.buytong.com. 3.输入注册信息,注意带*号为必填. 5.登陆在左侧菜单中选择“我的百通网”并点击“账户信息”.