内容简介:Arduino MQTT 搭建物联网可视化温度实时监测
Arduino MQTT 搭建物联网可视化温度实时监测
-
开发所需元器件
Ardunio UNO Wifi 开发面板 x1
DHT11 温湿度传感器 x1
10k欧姆电阻 x1
-
搭建MQTT服务器:
搭建MQTT服务选择开源软件Mosquitto,下载地址及各系统安装方法见 https://mosquitto.org/download/
此实例安装于Mac系统,利用brew安装,安装命令brew install mosquitto
- 安装完成后,文件目录位于/usr/local/Cellar/mosquitto/1.4.11_2/ 配置文件位于目录/usr/local/etc/mosquitto/
-
设置 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
-
连接元器件与线路板
-
按如下线路图连接元器件
R1为10k欧姆电阻
-
连接Arduino Wifi 到网络
参考 http://www.arduino.org/learning/getting-started/getting-started-with-arduino-uno-wifi
-
由于要连接MQTT服务,设置Arduino MQTT客户端连接
-
编写Arduino运行代码
Arduino 发送数据到MQTT服务采用Arduino Ciao Library
/**
* Demo IoT use Arduino UNO WiFi DHT11 to monitor Temperature and Humidity
* @Author:fzh
* @mail:81597228@qq.com
*/
#include "DHT.h"
#include <Wire.h>
#include <UnoWiFiDevEd.h>
#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
代码如下:
<!DOCTYPE HTML>
<html>
<head>
<title>epoch.js mqtt.js</title>
<script src="https://unpkg.com/mqtt/dist/mqtt.min.js" type="text/javascript"></script>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="http://d3js.org/d3.v3.js" charset="utf-8"></script>
<script src="http://epochjs.github.io/epoch/js/epoch.js" charset="utf-8"></script>
<link rel="stylesheet" href="http://epochjs.github.io/epoch/css/epoch.css">
</head>
<body>
<div id="container" style="min-width: 310px; height: 200px; margin: 30 auto" class="epoch"></div>
<script>
$(function(){
var temperatureData = {
label: "temperature",
values:[]
};
var humidityData = {
label: "humidity",
values:[]
};
var chartData = [temperatureData,humidityData];
var temperature,humidity,nextData = [];
var mychart = $('#container').epoch({
type: 'time.line',
data: chartData,
ticks:{ right: 5, bottom: 50, left: 5 },
axes: ['left', 'bottom', 'right']
});
var client = mqtt.connect('http://192.168.31.175:9001'); // you add a ws:// url here
client.subscribe("DHT11_TOPIC")
client.on("message", function (topic, msg) {
nextData = [];
//console.log([topic, msg].join(": "));
var jsonData = JSON.parse(msg);
// console.log(jsonData);
time = parseInt(new Date().getTime() / 1000);
temperature = {time:time,y:jsonData.T};
humidity = {time:time,y:jsonData.H};
nextData.push(temperature);
nextData.push(humidity);
mychart.push(nextData);
})
});
</script>
</body>
</html>
参考链接:
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/以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Jmeter + Grafana搭建实时监控可视化
- 前端工程实践之可视化搭建系统(一)
- 使用 QuickBI 搭建酷炫可视化分析
- RocketMQ 可视化环境搭建和基础代码使用
- 可视化搭建平台的地图组件和日历组件方案选型
- 基于 vue 的移动端页面可视化搭建工具思路
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网络营销实战密码
昝辉Zac / 电子工业出版社 / 2009.1 / 56.00元
本书是作者几年来网络营销实战的总结,与其他网络营销书籍最大不同之处是:只专注于实战,不谈理论。本书分三部分详细介绍了网络营销实用策略和技巧,并分析了大量实战案例。第一部分介绍市场与产品研究,包括用户、市场和竞争对手的调查;产品、目标市场的确定;价格策略;赢利模式等。第二部分讨论以网络营销为导向的网站设计,包括怎样在网站上卖东西、提高转化率,以及网站目标设定等。第三部分研究怎样给网站带来流量,详细讨......一起来看看 《网络营销实战密码》 这本书的介绍吧!