資料介紹
描述
這是我整理的一個教程,旨在盡可能多地解釋使用 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次下載 | 免費
評論
查看更多