ESP8266 NodeMCU小白手把手入门(实操篇)以土壤湿度和DHT传感器为例讲解读取传感器的值
物联网使得现实世界中的实体和数字世界比以往任何时候都更紧密地联系在一起。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) 示例代码:
#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小白手把手入门(实操篇)以土壤湿度和DHT传感器为例讲解读取传感器的值的更多相关文章
- Arduino杀手在此!!ESP 8266 NodeMCU小白手把手入门(二)(解惑篇)
上一次更新主要是简单介绍了NodeMCU的基本知识并且进行了一次简单的实操演示,最近有一些读者向我提出了一些小问题,所以决定出一期解惑篇,主要针对的是基础知识不是太牢固,或是喜欢刨根问底的小可爱们.里 ...
- HDFS集群PB级数据迁移方案-DistCp生产环境实操篇
HDFS集群PB级数据迁移方案-DistCp生产环境实操篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 用了接近2个星期的时间,终于把公司的需要的大数据组建部署完毕了,当然,在部 ...
- GitLab-CI/CD入门实操
以Spring boot项目为例.传统方式是本地生成jar包,FTP上传服务器,重启服务:如果是内网测试服,也可以在服务器上安装git,在服务器上编译打包.但这都需要人为干预,于是CI/CD就出现了. ...
- 02_Linux实操篇
第五章 VI和VIM编辑器 5.1. VI和VIM基本介绍 Vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器.由于对Unix及Linux系统的任何版本,Vi ...
- lightweight openpose 入门实操笔记(pytorch环境)
最近有个小项目要搞姿态识别,简单调研了一下2D的识别: 基本上是下面几种 (单人)single person 直接关键点回归 heatmap,感觉其实就是把一个点的标签弄成一个高斯分布 (多人)mul ...
- nodejs概论(实操篇)
什么是模块? 模块分为原生模块(node.jsAPI提供的原生模块,在启动时已经被加载)和 文件模块(动态加载模块,主要由原生模块module来实现和完成.通过调 用node.js的require方法 ...
- Linux实操篇
一:用户管理.群组管理 增: 1.指定群组添加账户: groupadd test 创建test用户组useradd -g test(用户组) xiaoming(用户名) ---- 创建us ...
- Linux实操篇 vi和vim编辑器
vi和vim的基本介绍 所有的Linux系统都会内建vi文本编辑器. vim具有程序编辑的能力,可以看做是vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计.代码补完.编译及错误跳转等 ...
- python 学习分享-购物车实操篇
程序要求如下: '''购物车程序: 启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 允许用户根据商品编号购买商品 用户选择商品后,检测余额是否够,够就直接扣款,不够就 ...
随机推荐
- TVM性能评估分析(一)
TVM性能评估分析(一) System Overview AutoTVM vs Auto-scheduler Table 1. Workflow Comparision Figure 1. Searc ...
- TensorRT IRNNv2Layer
TensorRT IRNNv2Layer IRNNv2Layer层实现递归层,如递归神经网络(RNN).门控递归单元(GRU)和长短期记忆(LSTM).支持的类型有RNN.GRU和LSTM.它执行一个 ...
- git介绍及使用
一.架构 版本库(仓库):工作区中有一个隐藏目录.git,这个目录不属于工作区,而是git的版本库,是git管理的所有内容. 暂存区:版本库中包含一个临时区域,保存下一步要提交的文件. 分支:版本库中 ...
- SQL注入问题------JDBC编写简单登录代码
一.什么是sql注入 sql注入:用户输入的内容, 有一些sql的特殊关键字参与字符串的拼接,完成了一条逻辑发生变化的新的SQL语句 !用代码举个例子简单说明一下: package cn.zhbit. ...
- 手把手教你彻底理解MySQL的explain关键字
数据库是程序员必备的一项基本技能,基本每次面试必问.对于刚出校门的程序员,你只要学会如何使用就行了,但越往后工作越发现,仅仅会写sql语句是万万不行的.写出的sql,如果性能不好,达不到要求,可能会阻 ...
- leetcode:在 D 天内送达包裹的能力
链接:https://leetcode-cn.com/problems/capacity-to-ship-packages-within-d-days/ 我是按照这个思路来做的. 如果随便给一个船的运 ...
- 【NX二次开发】根据视图名称旋转视图,在布局中替换视图uc6464
uc6464("布局名","旧视图名","新视图名");输入布局名.旧视图名.新视图名.如果布局名为空则更新当前布局.如果旧视图名为空,则工 ...
- [Linux]经典面试题 - 网络基础 - TCP三次握手
[Linux]经典面试题 - 网络基础 - TCP三次握手 目录 [Linux]经典面试题 - 网络基础 - TCP三次握手 一.TCP报文格式 1.1 TCP报头 1.2 报文图例 二.TCP三次握 ...
- SpringBoot实现通用的接口参数校验
本文介绍基于Spring Boot和JDK8编写一个AOP,结合自定义注解实现通用的接口参数校验. 缘由 目前参数校验常用的方法是在实体类上添加注解,但对于不同的方法,所应用的校验规则也是不一样的,例 ...
- [apue] linux 文件访问权限那些事儿
前言 说到 linux 上的文件权限,其实我们在说两个实体,一是文件,二是进程.一个进程能不能访问一个文件,其实由三部分内容决定: 文件的所有者.所在的组: 文件对所有者.组用户.其它用户设置的权限访 ...