资料介绍
描述
这是我整理的一个教程,旨在尽可能多地解释使用 Arduino 和一些网络技术制作一个简单的实时气象站的过程。在这个项目中,我将尝试从 DHT11 温度、湿度传感器获取传感器数据,并将其显示在一个漂亮的 Web 用户界面中。
对于系统的后端,我将使用一个名为 Express 的 Javascript Web 框架。从 Arduino 读取的传感器将通过串行通信发送,在 javascript 的帮助下,我将读取这些串行通信并使用 socket.io 操作数据以发送到前端。另外,我还集成了MoosunMv API以显示一些额外的天气信息。MoosunMv API 是建立在马尔代夫气象站之上的开放 API。
注意:所有天气信息都来自我自己的服务器。它不会使气象服务器超载。我们的服务器每 12 小时从马尔代夫气象站获取天气信息并将其存储在我们的数据库中:)
使用的网络技术
- 表达
- 套接字.io
- Vuejs
- 爱讯
要求:
- 阿杜诺
- DHT11 传感器
- 面包板
- 3 跨接电缆
- USB 电缆类型 A/B 标准 USB 2.0 电缆
- 硬件接线:
将硬件组件连接到 arduino。接线图如下图所示:
注意:我使用的传感器有一个内置电阻器,因此我的传感器中会缺少一个引脚。
- 使用 Arduino IDE 编写 Arduino 代码:
#include "DHT.h"
//Sensor digital pin
#define DHTPIN 8
//Setting the sensor type
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup() {
//Starting the serial communication
Serial.begin(9600);
dht.begin();
}
void loop() {
//delay for 2 second before reading again
delay(2000);
//setting humidity
float humidity = dht.readHumidity();
//setting temperature
float temperature = dht.readTemperature();
Serial.print(temperature);
//Output for splitting the string into two array during serial read.
Serial.print(",");
Serial.println(humidity);
}
我用来从传感器读取数据的 Arduino 库是 adafruit 的 DHT-sensor-library。DHT 库。
- 读取串行数据并发送到前端:
通过串口发送传感器数据后。我正在使用一个名为Serial Port的 javascript 库来读取 Arduino 发送的串行数据并将数据字符串拆分为两个变量。数据从逗号开始的地方拆分。
将日期发送到前端是这样完成的:
var today = new Date();
var date = today.getDate() + "-" + (today.getMonth() + 1) + "-" + today.getFullYear();
weekday = [
"Sunday", "Monday", "Tuesday", "Wednesday", "Thurday", "Friday", "Saturday"
];
var day = weekday[today.getDay()];
var secondDay = weekday[today.getDay() + 1];
var thirdDay = weekday[today.getDay() + 2];
var fourthDay = weekday[today.getDay() + 3];
到目前为止,我所做的是使用 WebSocket 连接获取我需要发送到前端的所有信息。现在我将使用一个名为socket.io的 javascript 库将数据从后端实时发送到前端。
这部分的代码如下所示:
io.sockets.emit('data', {
humidity: humidity,
temperature: temperature,
date: date,
day: day,
secondDay: secondDay,
thirdDay: thirdDay,
fourthDay: fourthDay
});
现在,这几乎就是后端需要做的所有事情。不是世界上最复杂的事情。第二天发送到前端仅用于演示。它上面的温度数据是完全静态的。继续!!..
让我们回忆一下。我正在将传感器数据从 Arduino 发送到串行端口。在我的情况下,它的 COM5。Javascript Serial Port 库比从串口读取串行数据并根据设置拆分键的位置拆分数据。在这种情况下,我使用逗号将字符串分隔为两个变量。我还设置了一些有关要发送到前端的数据的日期和信息。最后,我使用 socket.io 通过 WebSocket 发送数据。在前端,socket.io 将监听数据来自的端口,我使用 VUEJS 绑定 socket.io 接收的数据以在 HTML 中显示它们。
- 将一切连接在一起:
前端javascript代码如下所示:
feather.replace()
var socket = io.connect('http://127.0.0.1:4000/');
var temperature = new Vue({
el: '#app',
data: {
ApiUrl: 'http://moosunmv.jinas.me/v1/latest',
temperature: '',
humidity: '',
date: '',
day: '',
wind: '',
secondDay: '',
thirdDay: '',
fourthDay: ''
},
methods: {
getWeather(){
var vm = this;
axios.get(this.ApiUrl)
.then(function (response) {
vm.wind = response.data.wind;
console.log(vm.wind);
})
}
},
mounted: function () {
socket.on('data', function (data) {
this.temperature = data.temperature;
console.log(this.temperature);
this.humidity = data.humidity;
console.log(this.humidity);
this.date = data.date;
this.day = data.day;
this.secondDay = data.secondDay;
this.thirdDay = data.thirdDay;
this.fourthDay = data.fourthDay;
}.bind(this));
this.getWeather();
}
});
然后将 VUEJS 设置的数据绑定到 HTML 文件中。我正在使用一个名为axios的 JavaScript 库从 MoosunMv API 获取天气信息。
它是这样完成的:
<div class="info-side">
<div class="today-info-container">
<div class="today-info">
<div class="precipitation"> class="title">PRECIPITATION</span>0 %span>
<div class="clear"></div>
div>
<div class="humidity"> class="title">HUMIDITY</span>{{humidity}} %span>
<div class="clear"></div>
div>
<div class="wind"> class="title">WIND</span>{{wind}}span>
<div class="clear"></div>
div>
</div>
div>
注:本项目中使用的 Html、Css 模板取自 codepen。向科林·埃斯皮纳斯大喊。
这个项目就差不多了。您可以在下面找到该项目的所有代码:
- Arduino在线气象站(NodeMCU)
- 如何制作简单的气象站
- Arduino无线气象站
- Arduino气象站
- Arduino UNO迷你气象站
- 使用Arduino Nano的迷你气象站
- Sigfox和Arduino气象站
- 基于Arduino的无线气象站 0次下载
- 私人实时气象站开源分享
- Arduino物联网气象站
- 基于Arduino UNO的气象站 2次下载
- Arduino气象站项目
- 带有Arduino的Lora气象站
- 使用Arduino和NodeMCU的气象站
- Arduino气象站的设置开源分享
- Linux网络技术栈的相关知识 569次阅读
- 如何利用ESP8266实现防雨物联网气象站的设计 4963次阅读
- 如何利用粒子光子把你的雨伞变成气象站 1391次阅读
- 如何使用ESP32创建一个气象站 3771次阅读
- 如何手动制作一个风速仪 5629次阅读
- 基于Linux和CDMA无线网络技术实现远程数据传输系统的设计 2053次阅读
- 基于树莓派组成的可随身携带气象站设计方案 2815次阅读
- 如何使用两个dht传感器及HC12模块制作远程气象站? 2792次阅读
- 基于创建带有空气质量传感器的室内气象站 2186次阅读
- dfrobotDIY智能气象站套件简介 1618次阅读
- 2019年网络技术发展趋势及展望 1w次阅读
- 区块链的底层网络技术P2P网络解析 7867次阅读
- CEVA无线网络技术的革新 3984次阅读
- 基于STM32的自动气象站控制模块设计 8306次阅读
- 软件定义网络技术现状分析 3777次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成威廉希尔官方网站 应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口威廉希尔官方网站 图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字威廉希尔官方网站 基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动威廉希尔官方网站 设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6威廉希尔官方网站 仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多