資料介紹
描述
這是我整理的一個(gè)教程,旨在盡可能多地解釋使用 Arduino 和一些網(wǎng)絡(luò)技術(shù)制作一個(gè)簡單的實(shí)時(shí)氣象站的過程。在這個(gè)項(xiàng)目中,我將嘗試從 DHT11 溫度、濕度傳感器獲取傳感器數(shù)據(jù),并將其顯示在一個(gè)漂亮的 Web 用戶界面中。
對于系統(tǒng)的后端,我將使用一個(gè)名為 Express 的 Javascript Web 框架。從 Arduino 讀取的傳感器將通過串行通信發(fā)送,在 javascript 的幫助下,我將讀取這些串行通信并使用 socket.io 操作數(shù)據(jù)以發(fā)送到前端。另外,我還集成了MoosunMv API以顯示一些額外的天氣信息。MoosunMv API 是建立在馬爾代夫氣象站之上的開放 API。
注意:所有天氣信息都來自我自己的服務(wù)器。它不會(huì)使氣象服務(wù)器超載。我們的服務(wù)器每 12 小時(shí)從馬爾代夫氣象站獲取天氣信息并將其存儲在我們的數(shù)據(jù)庫中:)
使用的網(wǎng)絡(luò)技術(shù)
- 表達(dá)
- 套接字.io
- Vuejs
- 愛訊

要求:
- 阿杜諾
- DHT11 傳感器
- 面包板
- 3 跨接電纜
- USB 電纜類型 A/B 標(biāo)準(zhǔn) USB 2.0 電纜
- 硬件接線:
將硬件組件連接到 arduino。接線圖如下圖所示:

注意:我使用的傳感器有一個(gè)內(nèi)置電阻器,因此我的傳感器中會(huì)缺少一個(gè)引腳。
- 使用 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);
}
我用來從傳感器讀取數(shù)據(jù)的 Arduino 庫是 adafruit 的 DHT-sensor-library。DHT 庫。
- 讀取串行數(shù)據(jù)并發(fā)送到前端:
通過串口發(fā)送傳感器數(shù)據(jù)后。我正在使用一個(gè)名為Serial Port的 javascript 庫來讀取 Arduino 發(fā)送的串行數(shù)據(jù)并將數(shù)據(jù)字符串拆分為兩個(gè)變量。數(shù)據(jù)從逗號開始的地方拆分。
將日期發(fā)送到前端是這樣完成的:
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 連接獲取我需要發(fā)送到前端的所有信息。現(xiàn)在我將使用一個(gè)名為socket.io的 javascript 庫將數(shù)據(jù)從后端實(shí)時(shí)發(fā)送到前端。
這部分的代碼如下所示:
io.sockets.emit('data', {
humidity: humidity,
temperature: temperature,
date: date,
day: day,
secondDay: secondDay,
thirdDay: thirdDay,
fourthDay: fourthDay
});
現(xiàn)在,這幾乎就是后端需要做的所有事情。不是世界上最復(fù)雜的事情。第二天發(fā)送到前端僅用于演示。它上面的溫度數(shù)據(jù)是完全靜態(tài)的。繼續(xù)!!..
讓我們回憶一下。我正在將傳感器數(shù)據(jù)從 Arduino 發(fā)送到串行端口。在我的情況下,它的 COM5。Javascript Serial Port 庫比從串口讀取串行數(shù)據(jù)并根據(jù)設(shè)置拆分鍵的位置拆分?jǐn)?shù)據(jù)。在這種情況下,我使用逗號將字符串分隔為兩個(gè)變量。我還設(shè)置了一些有關(guān)要發(fā)送到前端的數(shù)據(jù)的日期和信息。最后,我使用 socket.io 通過 WebSocket 發(fā)送數(shù)據(jù)。在前端,socket.io 將監(jiān)聽數(shù)據(jù)來自的端口,我使用 VUEJS 綁定 socket.io 接收的數(shù)據(jù)以在 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 設(shè)置的數(shù)據(jù)綁定到 HTML 文件中。我正在使用一個(gè)名為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>
注:本項(xiàng)目中使用的 Html、Css 模板取自 codepen。向科林·埃斯皮納斯大喊。
這個(gè)項(xiàng)目就差不多了。您可以在下面找到該項(xiàng)目的所有代碼:
- Arduino在線氣象站(NodeMCU)
- 如何制作簡單的氣象站
- Arduino無線氣象站
- Arduino氣象站
- Arduino UNO迷你氣象站
- 使用Arduino Nano的迷你氣象站
- Sigfox和Arduino氣象站
- 基于Arduino的無線氣象站 0次下載
- 私人實(shí)時(shí)氣象站開源分享
- Arduino物聯(lián)網(wǎng)氣象站
- 基于Arduino UNO的氣象站 2次下載
- Arduino氣象站項(xiàng)目
- 帶有Arduino的Lora氣象站
- 使用Arduino和NodeMCU的氣象站
- Arduino氣象站的設(shè)置開源分享
- 小型氣象站監(jiān)測系統(tǒng)技術(shù)解析 113次閱讀
- 便攜式氣象站:移動(dòng)場景下的氣象“感知官” 176次閱讀
- 小型自動(dòng)氣象站:精細(xì)化氣象監(jiān)測的技術(shù)革新與應(yīng)用拓展 342次閱讀
- 校園科普氣象站:技術(shù)賦能下的自然探索課堂 230次閱讀
- 小型全自動(dòng)氣象站到底 “自動(dòng)” 在哪? 586次閱讀
- 光伏實(shí)驗(yàn)氣象站的技術(shù)架構(gòu)與應(yīng)用實(shí)踐 2k次閱讀
- 分布式光伏氣象站:光伏產(chǎn)業(yè)的智慧守護(hù)者 335次閱讀
- 車載氣象站在多領(lǐng)域的應(yīng)用 347次閱讀
- 如何利用ESP8266實(shí)現(xiàn)防雨物聯(lián)網(wǎng)氣象站的設(shè)計(jì) 6.2k次閱讀
- 如何使用ESP32創(chuàng)建一個(gè)氣象站 5.5k次閱讀
- 基于樹莓派組成的可隨身攜帶氣象站設(shè)計(jì)方案 3.7k次閱讀
- 如何使用兩個(gè)dht傳感器及HC12模塊制作遠(yuǎn)程氣象站? 4.1k次閱讀
- 基于創(chuàng)建帶有空氣質(zhì)量傳感器的室內(nèi)氣象站 2.9k次閱讀
- dfrobotDIY智能氣象站套件簡介 2.3k次閱讀
- 基于STM32的自動(dòng)氣象站控制模塊設(shè)計(jì) 9.4k次閱讀
下載排行
本周
- 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
- 3.40 MB | 1次下載 | 免費(fèi)
- 2冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 1次下載 | 10 積分
- 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊
- 2.33 MB | 次下載 | 免費(fèi)
- 4MDD品牌三極管S9012數(shù)據(jù)手冊
- 2.62 MB | 次下載 | 免費(fèi)
- 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
- 0.60 MB | 次下載 | 3 積分
- 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
- 0.89 MB | 次下載 | 3 積分
- 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊
- 2.50 MB | 次下載 | 免費(fèi)
- 8MS1000TA 超聲波測量模擬前端芯片技術(shù)手冊
- 0.60 MB | 次下載 | 免費(fèi)
本月
- 1愛華AIWA HS-J202維修手冊
- 3.34 MB | 37次下載 | 免費(fèi)
- 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊
- 1.63 MB | 23次下載 | 免費(fèi)
- 3NB-IoT芯片廠商的資料說明
- 0.31 MB | 22次下載 | 1 積分
- 4UWB653Pro USB口測距通信定位模塊規(guī)格書
- 838.47 KB | 5次下載 | 免費(fèi)
- 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
- 0.04 MB | 4次下載 | 1 積分
- 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
- 0.08 MB | 2次下載 | 1 積分
- 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
- 0.09 MB | 2次下載 | 1 積分
- 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊
- 1.81 MB | 1次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191439次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183353次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81602次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73822次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論