实验八 传感器数据网站发布

实验八 传感器数据网站发布


一、实验目的

通过本实验,熟悉在计算机上使用NodeJS配置WebService的基本方法,掌握将传感器数据通过WIFI传递到WebService并发布的方法。


二、实验要求

 1、使用NodeJS软件在计算机上创建WebService服务器。

 2、使用导线正确连接ESP 8266电路板及温湿度传感器(实验四使用的传感器),实现温湿度数据的获取。

 3、使用ESP 8266电路板连接WIFI,将获取到的温湿度数据传递到WebService服务器,并能通过手机等设备查看到这些数据。


三、实验过程

 1、安装及配置NodeJS

1)在NodeJS安装包中选择对应操作系统版本的安装文件,若是32位的Windows操作系统则选择“Windows Installer (32 bit)”,双击后根据提示默认安装即可。

2)将实验源码中的NodeJS文件夹拷贝至系统C盘根目录。

3)点击“开始”-“所有程序”-“Node.js”-“Node.js command prompt”,在弹出的命令行窗口中依次输入“cd c:\NodeJS”和“node index.js”,每条命令输入完成后按回车键,若窗口中出现“Listening on port 80”的提示,则表明本实验需要使用的WebService配置完成(完成后该窗口不要关闭),如图所示。

8-1启动WebService服务

 2、搭建实验电路及编写程序代码

1)按照实验四的实验过程1搭建实验电路,如图所示。

8-2实验电路连接图

2)在新建的Arduino程序窗口中输入如下代码:

#include <dht11.h> //引入库,用于获取温湿度传感器的值

#include <ESP8266WiFi.h> //引入库,用于连接WIFI

#include <ESP8266HTTPClient.h> //引入库,用于编写HTTP命令

//填写WIFI信息

const char* ssid = "……";

const char* password = "……";

//指定WEB服务器地址,即安装NodeJS的计算机的IP地址

String webServiceIPAddress = "192.168.*.*";  

dht11 DHT11;

#define DHT11PIN 14 //温湿度传感器的数据针脚连接在GPIO14接口

void setup(){

  Serial.begin(115200);

  Serial.println("DHT11 TEST PROGRAM ");

  Serial.println();

  //WIFI连接

  Serial.print("Connecting to ");

  Serial.println(ssid);

  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {

    delay(500);

    Serial.print(".");

  }

  Serial.println("");

  Serial.println("WiFi Connected");

  Serial.println("IP Address: ");

  Serial.println(WiFi.localIP());

}

void loop(){

  //定时更新显示WIFI信息

  Serial.println("\n");

  Serial.println("");

  Serial.println("WiFi Connected");

  Serial.println("IP Address: ");

  Serial.println(WiFi.localIP());

  //获取温湿度传感器的值

  int chk = DHT11.read(DHT11PIN);

  Serial.print("Read Sensor: ");

  switch (chk){

    case DHTLIB_OK:  

    Serial.println("OK");  

    break;

    case DHTLIB_ERROR_CHECKSUM:  

    Serial.println("Checksum error");  

    break;

    case DHTLIB_ERROR_TIMEOUT:  

    Serial.println("Time out error");  

    break;

    default:  

    Serial.println("Unknown error");  

    break;

  }

  //输出显示获取到的温湿度数值

  Serial.print("Humidity: ");

  Serial.print(String(DHT11.humidity));

  Serial.println("%");

  Serial.print("Temperature: ");

  Serial.print(String(DHT11.temperature));

  Serial.println("C");

  //通过http将获取到的温湿度传感器数据传递到WebService服务器

  if(WiFi.status()== WL_CONNECTED){ //检查WIFI连接状态,若正常,执行下列代码

    HTTPClient http;

    http.begin("http://" + webServiceIPAddress + "/weather");

    http.addHeader("Content-Type", "application/json");  //Specify content-type header

    String body = "{ \"temp\":\"" + String(DHT11.temperature) + "\", \"humidity\":\"" + String(DHT11.humidity) + "\" }";

    Serial.println(body);

    int httpCode = http.POST(body);

    String payload = http.getString();

    Serial.println(httpCode);

    Serial.println(payload);

    http.end();

  }

  else {

    Serial.println("Error in WiFi connection");    

  }

  //2秒更新一次数据

  delay(2000);

}

2)将USB线缆插入计算机,待程序上传成功后打开串口监视器,观察WIFI连接情况及温湿度数据获取情况,正确的实验结果如图所示,每2秒会出现新的数据。

8-3串口监视器输出的实验结果

 3、测试实验结果

1)查看图12-1的命令行窗口,每2秒会出现新的数据,如图所示。

8-4通过NodeJS的命令行窗口查看实验结果

2)打开任意1台连入局域网的计算机的浏览器(可使用谷歌、傲游等浏览器,IE360等浏览器可能无法正确显示),在地址栏输入WebService服务器IP地址,即安装NodeJS的计算机的IP地址,若上述配置均正确,则会出现如图所示的页面效果,页面数据每2秒会自动更新(可试图改变传感器附近温湿度数据来观察曲线变化)。

8-5通过WebService网页查看实验结果

3)使用连接了WIFI的手机打开浏览器,输入WebService服务器IP地址,可查看到与(2)中相同的结果。

4)断开连接到计算机上的USB线缆,改由供电模块(9V电池)供电,此时传感器成为可移动的设备,通过计算机或手机仍然可以查看到实时的温湿度数据。