接上一篇:
以下给出的代码都是能够完美运行的,注意的是可能每次用到引脚不同,要注意一下,在每个注释中都写的很清楚!!
我先设计的顺序是:
DHT11连接:(注意,这儿的与上面不一样,这是单独测试dht11的部分)
#include <dht11.h> //引用dht11库文件,使得下面可以调用相关参数
#define DHT11PIN 2 //定义温湿度针脚号为2号引脚
dht11 DHT11; //实例化一个对象
void setup() { //设置
Serial.begin(115200); //设置波特率参数
pinMode(DHT11PIN,OUTPUT); //定义输出口
}
void loop() { //循环
int chk = DHT11.read(DHT11PIN); //将读取到的值赋给chk
int tem=(float)DHT11.temperature; //将温度值赋值给tem
int hum=(float)DHT11.humidity; //将湿度值赋给hum
//Serial.print("Tempeature: Humidity:",tem hum); //打印出Tempeature:
Serial.print("{\"Tempeature\":");
Serial.print("\"");
Serial.print(tem);
Serial.print("\"");
//Serial.print("\"}"); //打印温度结果
Serial.print(",");
Serial.print("\"Humidity"); //打印出Humidity:
Serial.print("\":");
Serial.print("\"");
Serial.print(hum); //打印出湿度结果
Serial.print("\"");
Serial.println("}"); //打印出%
delay(1000); //延时一段时间
}
连接LCD1602(以及显示如下代码)
LCD以及DHT11接线:
· 将 LCD 的 RS, E, D4, D5, D6, D7 依序接到 12, 11, 5, 4, 3, 2 引脚上
· 将 LCD 的 Vss 及 RW 接到 GND,Vdd 接到 +5V
· 可变电阻(可接1K的)中间引脚接到 LCD 的 Vo,剩下的两个引脚,一支接到 5V,另外一支接到 GND
· DHT11接数字口8.

#include <dht11.h>
#include <LiquidCrystal.h>
#define DHT11PIN 8
dht11 DHT11;
// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
pinMode(DHT11PIN,OUTPUT);
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);
}
void loop() {
int chk = DHT11.read(DHT11PIN);
lcd.setCursor(0, 0);
lcd.print("Tep: ");
lcd.print((float)DHT11.temperature, 2);
lcd.print("C");
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 1);
// print the number of seconds since reset:
lcd.print("Hum: ");
lcd.print((float)DHT11.humidity, 2);
lcd.print("%");
delay(200);
}
WiFi连接以及测试
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8, 9); // RX, TX
void setup() {
Serial.begin(115200);
mySerial.begin(115200);
delay(1000);
Serial.println("Goodnight moon2");
mySerial.println("AT+GMR");
}
void loop() {
while (mySerial.available()) {
mySerial.write(Serial.read());
Serial.println("Goodnight moon1");
}
}
DHT11+WiFi显示
//软串口
#include <SoftwareSerial.h>
// RX, TX 配置2、3为软串口
SoftwareSerial mySerial(2, 3);
#include <dht11.h> //引用dht11库文件,使得下面可以调用相关参数
#define DHT11PIN 4 //定义温湿度针脚号为4号引脚
dht11 DHT11; //实例化一个对象
//定时器函数
void onTimer();
//WIFI上传函数,s为上传到服务器的值
void sendmessage(String s);
void setup()
{
Serial.begin(115200); //波特率设置为115200因为要跟ESP8266的串口波特率保持一致
mySerial.begin(115200); //ESP8266的串口波特率为115200
mySerial.println("AT+CIPMODE=1");//设置信息发送的模式为透传模式
delay(500);
mySerial.println("AT+CIPSTART=\"TCP\",\"192.168.43.8\",8883");//连接服务器,
delay(5000);
/***********发送数据*************/
mySerial.println("AT+CIPSTATUS");
delay(500);
mySerial.println("AT+CIPSEND");
delay(500);
pinMode(DHT11PIN,OUTPUT); //定义输出口
// DHT11.begin();
}
void loop() {
//与下一句清空串口缓存
if((mySerial.available() > 0)){
mySerial.println(Serial.read());
}
int chk = DHT11.read(DHT11PIN); //将读取到的值赋给chk
int tem=(float)DHT11.temperature; //将温度值赋值给tem
int hum=(float)DHT11.humidity; //将湿度值赋给hum
mySerial.print("{\"temperature\":"); //打印出tempeature:
mySerial.print("\"");
mySerial.print(tem);
mySerial.print("\"");
//Serial.print("\"}"); //打印温度结果
mySerial.print(",");
mySerial.print("\"humidity"); //打印出humidity:
mySerial.print("\":");
mySerial.print("\"");
mySerial.print(hum); //打印出湿度结果
mySerial.print("\"");
mySerial.println("}"); //打印出%
delay(6000); //延时一段时间
}
这是每个部分都测试完成的,需要用到面包板(或者焊好的电路板),面包板有时候效果不好,不如直接焊好效果好,WiFi测试的时候需要用到网络调试助手和串口调试助手,要明白软串口和硬串口的区别,以及哪一个是能够输出到调试助手哪一个是输出到服务器的,当时做这个的时候在这方面吃了很大的亏。
剩下的完整的部分我会在下一篇中给出,包括软硬件以及文档!
本文是物联网设计系列的第二部分,详细介绍了如何连接和测试DHT11温湿度传感器,以及如何将其与LCD1602显示器结合使用。此外,还涉及了WiFi连接的初步测试,提到了软串口和硬串口的区别,并提醒读者在实际操作中可能会遇到的问题。最后,预告了下一篇文章将涵盖完整的设计方案,包括软硬件整合及文档说明。
电路连接下&spm=1001.2101.3001.5002&articleId=103736515&d=1&t=3&u=46d7380455874022aa75307939a0702a)
3449

被折叠的 条评论
为什么被折叠?



