我正在尝试从Wemos D1 R1运行DHT11传感器。我的接地端接地,传感器连接到D2引脚,传感器和电源线之间有一个电阻。我尝试将电源连接到D3引脚并设置pinMode(D3,OUTPUT);和digitalWrite(D3,HIGH);,但是无法识别传感器。如果我将电源连接到Wemos上的3.3v输出引脚,则可以正常工作。我将Wemos插入计算机的USB。谁能告诉我为什么Wemos没有通过D3引脚供电。我需要将9v连接到Wemos而不是计算机电源吗?没什么大不了的,但是很高兴理解为什么并将它连接到另一个电源引脚。 这是我的代码,用于激活引脚并打开D3引脚的电源。
#include <DHTesp.h>
DHTesp dht;
pinMode(D3,OUTPUT);//make pin D3 a power outlet for 3.3v
void setup() {
Serial.begin(115200);
dht.setup(D2, DHTesp::DHT11);
digitalWrite(D3,HIGH);//make pin D3 hot
}
void loop() {
delay(8000);
float t = dht.getTemperature();
float f = (t*1.8) + 32;
if (isnan(t))
{
Serial.println("Failed to read from DHT2 sensor!"); **//when the sensor is powered by pin D3 this shows up but when powered by 3.3v it does get the sensor amount**
return;
}
Serial.print(", \"maintemp\": ");
Serial.print(f);
Serial.print("}\n");
delay(2000);
}
答案 0 :(得分:0)
DHT11的引脚排列如下:
1 VCC->外部电源更好,工作于3.5至5.5V
2数据-> WEMOS D2 ... D7
3 NC
4 GND-> GND
如果连接到D2,则按如下所示编写代码:
dht.setup(D2,DHTesp :: DHT11);
答案 1 :(得分:0)
确定在打开DHT11的电源之前可以执行dht.setup(...)吗?我猜想它首先需要电源然后再安装。您甚至可能需要暂停一下。
也;确保您为正确的板进行编译,否则D3可能与板上的D3不相关。
答案 2 :(得分:0)
以下代码尝试首先初始化DHT传感器,但之后才将其加电。由于初始化代码已经尝试与没有电源的传感器进行通讯,因此无法正常工作:
dht.setup(D2, DHTesp::DHT11);
digitalWrite(D3,HIGH);//make pin D3 hot
所以写:
digitalWrite(D3,HIGH); // power up the sensor
delay(500); // allow some time to become ready
dht.setup(D2, DHTesp::DHT11); // initialiye the sensor
顺便说一句:pinMode
命令是否在setup
函数之外?它会这样编译吗?