通过简单的温湿度传感器进行简单的物联网设计(二)电路连接下

本文是物联网设计系列的第二部分,详细介绍了如何连接和测试DHT11温湿度传感器,以及如何将其与LCD1602显示器结合使用。此外,还涉及了WiFi连接的初步测试,提到了软串口和硬串口的区别,并提醒读者在实际操作中可能会遇到的问题。最后,预告了下一篇文章将涵盖完整的设计方案,包括软硬件整合及文档说明。

接上一篇:

以下给出的代码都是能够完美运行的,注意的是可能每次用到引脚不同,要注意一下,在每个注释中都写的很清楚!!

我先设计的顺序是:

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测试的时候需要用到网络调试助手和串口调试助手,要明白软串口和硬串口的区别,以及哪一个是能够输出到调试助手哪一个是输出到服务器的,当时做这个的时候在这方面吃了很大的亏。

剩下的完整的部分我会在下一篇中给出,包括软硬件以及文档!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值