Arduino MQTT 搭建物联网可视化温度实时监测
来源:互联网 发布:淘宝自制美白面膜 编辑:程序博客网 时间:2024/05/22 06:28
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 1883listener 9001protocol 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/
- Arduino MQTT 搭建物联网可视化温度实时监测
- 【Arduino】使用LM35传感器实时测量温度
- 物联网MQTT协议
- MQTT 物联网协议
- Arduino和物联网
- MQTT 物联网连接协议
- 物联网传输协议MQTT
- 物联网接入协议-MQTT
- 物联网通信协议之MQTT
- 连接OneNET物联网平台,实时监测家里的温湿度变化
- ESP8266+电量计模块通过物联网oneNET实现家庭用电的实时监测
- 物联网空气质量监测系统
- 【迷你强的物联网】起始篇-简介与MQTT服务器【从零开始搭建自己的物联网系统】
- 阿里云 物联网套件 MQTT Swift 搭建-基于Tcp连接-域名连接模式
- 一步步搭建物联网系统——Arduino 极客的玩具
- 《物联网框架ServerSuperIO教程》-22.Web端对传感器实时监测与控制。附:v3.6.8版本,支持WebSocket
- MQTT技术:为物联网而生
- MQTT技术:为物联网而生
- ES6 中的 let 和 const
- git与github区别与简介
- VS Code 版本控制
- test1
- 《大话设计模式》备忘笔记-UML类图图示
- Arduino MQTT 搭建物联网可视化温度实时监测
- 学习需要网址总汇
- SAP最常用的业务流程事务代码
- 【行人识别】Deep Transfer Learning for Person Re-identification
- 快速入门nice validator
- DVR 和 NVR 发展趋势
- 【Spark的那些事儿】DAG让计算更简单
- 禁用开机自启动项
- python常用库list