电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>电子资料>使用Arduino和网络技术制作实时气象站

使用Arduino和网络技术制作实时气象站

2022-12-15 | zip | 0.07 MB | 次下载 | 免费

资料介绍

描述

这是我整理的一个教程,旨在尽可能多地解释使用 Arduino 和一些网络技术制作一个简单的实时气象站的过程。在这个项目中,我将尝试从 DHT11 温度、湿度传感器获取传感器数据,并将其显示在一个漂亮的 Web 用户界面中。

对于系统的后端,我将使用一个名为 Express 的 Javascript Web 框架。从 Arduino 读取的传感器将通过串行通信发送,在 javascript 的帮助下,我将读取这些串行通信并使用 socket.io 操作数据以发送到前端。另外,我还集成了MoosunMv API以显示一些额外的天气信息MoosunMv API 是建立在马尔代夫气象站之上的开放 API。

注意:所有天气信息都来自我自己的服务器。它不会使气象服务器超载。我们的服务器每 12 小时从马尔代夫气象站获取天气信息并将其存储在我们的数据库中:)

使用的网络技术

  • 表达
  • 套接字.io
  • Vuejs
  • 爱讯
 
poYBAGOYAHCAdgBVABiKQRxRw7o076.jpg
 

要求:

  • 阿杜诺
  • DHT11 传感器
  • 面包板
  • 3 跨接电缆
  • USB 电缆类型 A/B 标准 USB 2.0 电缆

- 硬件接线:

将硬件组件连接到 arduino。接线图如下图所示:

 
poYBAGOYAHiAcFaeAAD9y1NAnCM451.jpg
 

注意:我使用的传感器有一个内置电阻器,因此我的传感器中会缺少一个引脚。

- 使用 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。科林·埃斯皮纳斯大喊

这个项目就差不多了。您可以在下面找到该项目的所有代码:


下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1山景DSP芯片AP8248A2数据手册
  2. 1.06 MB  |  532次下载  |  免费
  3. 2RK3399完整板原理图(支持平板,盒子VR)
  4. 3.28 MB  |  339次下载  |  免费
  5. 3TC358743XBG评估板参考手册
  6. 1.36 MB  |  330次下载  |  免费
  7. 4DFM软件使用教程
  8. 0.84 MB  |  295次下载  |  免费
  9. 5元宇宙深度解析—未来的未来-风口还是泡沫
  10. 6.40 MB  |  227次下载  |  免费
  11. 6迪文DGUS开发指南
  12. 31.67 MB  |  194次下载  |  免费
  13. 7元宇宙底层硬件系列报告
  14. 13.42 MB  |  182次下载  |  免费
  15. 8FP5207XR-G1中文应用手册
  16. 1.09 MB  |  178次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33566次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21549次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6656次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537798次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420027次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191187次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183279次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费