Arduino MQTT 搭建物联网可视化温度实时监测

Arduino MQTT 搭建物联网可视化温度实时监测

  • 开发所需元器件
    Ardunio UNO Wifi 开发面板 x1
    DHT11 温湿度传感器 x1
    10k欧姆电阻 x1

  • 搭建MQTT服务器:

    搭建MQTT服务选择开源软件Mosquitto,下载地址及各系统安装方法见https://mosquitto.org/download/
    此实例安装于Mac系统,利用brew安装,安装命令brew install mosquitto

    1. 安装完成后,文件目录位于/usr/local/Cellar/mosquitto/1.4.11_2/ 配置文件位于目录/usr/local/etc/mosquitto/

    2. 设置 mosquitto MQTT服务启动websoc监听,修改配置文件/usr/local/etc/mosquitto/mosquitto.conf

      #listener port-number [ip address/host name]
      listener 1883
      listener 9001
      protocol websockets
      
  • 启动服务

    	命令行启动/usr/local/Cellar/mosquitto/1.4.11_2/sbin/mosquitto -c /usr/local/etc/mosquitto/mosquitto.conf
    
  • 连接元器件与线路板

  • 按如下线路图连接元器件
    Arduino MQTT 搭建物联网可视化温度实时监测_第1张图片
    R1为10k欧姆电阻

  • 连接Arduino Wifi 到网络
    参考http://www.arduino.org/learning/getting-started/getting-started-with-arduino-uno-wifi

  • 由于要连接MQTT服务,设置Arduino MQTT客户端连接
    Arduino MQTT 搭建物联网可视化温度实时监测_第2张图片

  • 编写Arduino运行代码

    Arduino 发送数据到MQTT服务采用Arduino Ciao Library

/** 
 *  Demo IoT use Arduino UNO WiFi DHT11 to monitor Temperature and Humidity
 *  @Author:fzh
 *  @mail:[email protected]
 */

#include "DHT.h"
#include 
#include 

#define CONNECTOR "mqtt"
#define TOPIC "DHT11_TOPIC"

// what digital pin we're connected to
#define DHTPIN 7    
// Uncomment whatever type you're using!
#define DHTTYPE DHT11   // DHT 11

// 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(9600);
  //DHT11 begin
  dht.begin();
  //Ciao begin
  Ciao.begin();
}

void loop() {
  // Wait a few seconds between measurements.
  delay(6000);
  // 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();

  // Check if any reads failed and exit early (to try again).
  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT11 sensor!");
    return;
  }

  Serial.print("Humidity: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperature: ");
  Serial.println(t);
  String data = "{\"H\":" + String(h) +",\"T\":" + String(t)+"}";
  // pushes data into a channel
  Ciao.write(CONNECTOR, TOPIC,data); 
}
  • 温、湿度web可视化

浏览器客户端展示数据,需要与MQTT服务通讯,这里采用MQTT client mqtt.js
可视化展示采用实时数据图表可视化epoch.js
代码如下:




  epoch.js mqtt.js
	
	
    
    
    


Arduino MQTT 搭建物联网可视化温度实时监测_第3张图片

Arduino MQTT 搭建物联网可视化温度实时监测_第4张图片

参考资源:
http://www.circuitbasics.com/how-to-set-up-the-dht11-humidity-sensor-on-an-arduino/
https://mosquitto.org/download/
http://www.arduino.org/learning/getting-started/getting-started-with-arduino-uno-wifi
http://www.arduino.org/learning/reference/ciao-library
https://github.com/mqttjs/MQTT.js
http://epochjs.github.io/epoch/real-time/

更多资源请关注公众号:
Arduino MQTT 搭建物联网可视化温度实时监测_第5张图片

你可能感兴趣的:(IoT)