電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>使用Blues Wireless和Qubitro的物聯(lián)網(wǎng)天氣數(shù)據(jù)記錄器

使用Blues Wireless和Qubitro的物聯(lián)網(wǎng)天氣數(shù)據(jù)記錄器

2023-02-06 | zip | 0.11 MB | 次下載 | 免費(fèi)

資料介紹

描述

隨著全球氣溫上升,監(jiān)測環(huán)境狀況變得前所未有的重要。

可以通過多種方式跟蹤環(huán)境數(shù)據(jù)。您可以使用有線設(shè)備、控制器中的 SD 卡來手動(dòng)捕獲發(fā)回?cái)?shù)據(jù),或者您可以使用基于 Wi-Fi 或 BLE 通信的控制器來處理此任務(wù)。

考慮一下如果您沒有時(shí)間從 SD 卡手動(dòng)檢索數(shù)據(jù),或者如果您的設(shè)備不在 Wi-Fi 或藍(lán)牙連接范圍內(nèi),您將如何跟蹤您的天氣數(shù)據(jù)?

在本教程中,我將向您展示如何使用Blues Wireless硬件模塊創(chuàng)建基于物聯(lián)網(wǎng)的天氣數(shù)據(jù)記錄器;不需要 SD 卡、Wi-Fi 或 BLE。只需將Blues Notecard和 Notecarrier 連接到控制器即可跟蹤您的天氣數(shù)據(jù)。

你需要的東西:

硬件:

軟件:

結(jié)構(gòu)概要:

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

整個(gè)教程將遵循以下三個(gè)步驟:

第 1 步:硬件設(shè)置

第一步是收集環(huán)境數(shù)據(jù),因此我們將使用一個(gè) DHT11、一個(gè)雨水傳感器、一個(gè)空氣質(zhì)量傳感器和一個(gè)光傳感器來這樣做。Arduino Nano 33 BLE Sense 連接到所有傳感器,這些傳感器將充當(dāng)處理數(shù)據(jù)的控制器。

第 2 步:Notehub 設(shè)置

從傳感器收集的數(shù)據(jù)將使用 Blues Notecard 和 Blues Notecarrier 發(fā)送到 Blues Notehub 云。

第 3 步:Qubitro 設(shè)置

一旦我們的傳感器數(shù)據(jù)到達(dá)云端,我們將使用 Qubitro 對其進(jìn)行可視化和后處理。

硬件設(shè)置:

除 DHT11 之外的所有傳感器都是模擬的。將 DHT11 連接到 Arduino Nano 33 BLE Sense 的 D13,并將 A0 直接連接到 Arduino Nano 33 模擬引腳的 A2。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

現(xiàn)在您的傳感器都已連接,讓我們繼續(xù)進(jìn)行編程部分。為此,打開 Arduino IDE 并編譯以下代碼。它將收集所有傳感器數(shù)據(jù)并將其輸出到串行監(jiān)視器。

#include "Air_Quality_Sensor.h"
#include 

String Stage;

AirQualitySensor sensor(A1);       //Analog pin A1 for Air Quality sensor
#define DHTPIN 13                  //Digital pin 13 for DHT11 sensor
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);

void setup(void) {

  dht.begin();                        // Init DHT11
  Serial.println("Waiting sensor to init...");
  delay(10000);

}
void loop(void) {

  int quality = sensor.slope();

  Serial.print("AQ Sensor value    : ");
  Serial.println(sensor.getValue());
  Serial.print("Pollution Level    : ");

  if (quality == AirQualitySensor::FORCE_SIGNAL) {
    String Stage = "ERROR!";
    Serial.println(Stage);
  }
  else if (quality == AirQualitySensor::HIGH_POLLUTION) {
    String Stage = "High pollution!";
    Serial.println(Stage);
  }
  else if (quality == AirQualitySensor::LOW_POLLUTION) {
    String Stage = "Low pollution!";
    Serial.println(Stage);
  }
  else if (quality == AirQualitySensor::FRESH_AIR) {
    String Stage = "Fresh air!";
    Serial.println(Stage);
  }

  float h = dht.readHumidity();
  Serial.print("Humidity Level     : ");
  Serial.print(h);
  Serial.println(" %");

  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  Serial.print("Temperature Level  : ");
  Serial.print(t);
  Serial.println(" C");

  int value = analogRead(A2);       //Analog pin A2 for Light sensor
  float valuel = map(value, 0, 800, 0, 100);
  Serial.print("Light Sensor Level : ");
  Serial.print(valuel);
  Serial.println(" %");

  int rainSensor = analogRead(A3);  //Analog pin A3 for Rain sensor
  float rainSensor1 = map(rainSensor, 0, 1024, 0, 100);
  Serial.print("Rain Sensor Level  : ");
  Serial.println(rainSensor);
  Serial.print("Dry level          : ");
  Serial.print(rainSensor1);
  Serial.println(" %");
  Serial.println("------------------------------------------------");
  delay(10000);

}
pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

下一步是設(shè)置您的Blues Notecarrier。將 Notecard 連接到 Notecarrier(我使用的是外部 SIM 卡,所以我將解釋如何操作)。通過微型 USB 數(shù)據(jù)線將 Notecarrier 連接到您的 PC。

如果您在啟動(dòng)和運(yùn)行時(shí)遇到任何問題,可以聯(lián)系我們在Blues 論壇上尋求幫助。]

如果你想像我一樣使用外部 SIM (Airtel),請另外按照以下步驟配置你的 Notecard。

# disable the cellular modem on the Notecard
{"req":"hub.set","mode":"off"}

# set the Airtel APN
{"req":"card.wireless","mode":",airtelgprs.com"}

# make sure the Notecard cloud host is set to the default (if you changed it)
{"req":"hub.set","host":"a.notefile.net"}

# enable the cellular modem (minimum requires explicit sync requests)
{"req":"hub.set","mode":"minimum"}

# force a sync (if it hasn't started already)
{"req":"hub.sync","allow":true}

現(xiàn)在我們將試用 Blues Notecarrier。我正在使用 Python 將一些虛擬數(shù)據(jù)發(fā)送到 Notehub。

import json
import notecard
import serial
import time

productUID = "com.gmail.pradeeplogu26:env_data_logger" #Change this with yours

# Select Serial
use_uart = True
card = None
# Configure the serial connection to the Notecard
serial = serial.Serial('COM7', 9600)                  #Change this with your COM port

card = notecard.OpenSerial(serial, debug=True)
req = {"req": "hub.set"}
req["product"] = productUID
req["mode"] = "continuous"
card.Transaction(req)

while True:
    temp = 10
    humidity = 20
    print('Temperature: {} degrees C'.format(temp))
    print('Humidity: {}%'.format(humidity))
    req = {"req": "note.add"}
    req["file"] = "sensors.qo"
    req["start"] = True
    req["body"] = {"temp": temp, "humidity": humidity}
    card.Transaction(req)
    time.sleep(15)

只需將 projectUID 和 Com 端口重命名為你的,然后點(diǎn)擊運(yùn)行。您可以在終端中看到虛擬數(shù)據(jù)。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

該腳本將返回上述響應(yīng)。接下來,打開 Notehub 儀表板并導(dǎo)航到“事件”選項(xiàng)卡并查看數(shù)據(jù)。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

您可以在 Notehub 中看到由 Python 腳本發(fā)送的數(shù)據(jù),如果完成此步驟,您可以使用 UART 端口將 Blues Notecard 和 Notecarrier 連接到 Arduino Nano 33 BLE Sense。

【Blues Notecarrier同時(shí)支持I2CUART通信】

pasted_image_0.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?

連接完成后,只需在 Arduino IDE 中編譯以下 Arduino 代碼,這會(huì)將傳感器數(shù)據(jù)發(fā)送到 Notehub。

#include 
#include "Air_Quality_Sensor.h"
#include 

AirQualitySensor sensor(A1);         //Analog pin A1 for Air Quality sensor
#define DHTPIN 13                    //Digital pin 13 for DHT11 sensor

#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

#define txRxPinsSerial Serial1
#define productUID "xxxxxxxxxxxxxxxxxxxx"
Notecard notecard;

String Stage;

void setup(void) {

  notecard.begin(txRxPinsSerial, 9600);

  J *req = notecard.newRequest("hub.set");
  JAddStringToObject(req, "product", productUID);
  JAddStringToObject(req, "mode", "continuous");
  notecard.sendRequest(req);

  delay(1000);

  dht.begin(); // Init DHT11
  Serial.println("Waiting sensor to init...");
  delay(10000);

}

void loop(void) {

  int quality = sensor.slope();
  Serial.print("AQ Sensor value    : ");
  Serial.println(sensor.getValue());

  Serial.print("Pollution Level    : ");
  if (quality == AirQualitySensor::FORCE_SIGNAL) {
    String Stage = "ERROR!";
    Serial.println(Stage);
  }
  else if (quality == AirQualitySensor::HIGH_POLLUTION) {
    String Stage = "High pollution!";
    Serial.println(Stage);
  }
  else if (quality == AirQualitySensor::LOW_POLLUTION) {
    String Stage = "Low pollution!";
    Serial.println(Stage);
  }
  else if (quality == AirQualitySensor::FRESH_AIR) {
    String Stage = "Fresh air!";
    Serial.println(Stage);
  }

  float h = dht.readHumidity();
  Serial.print("Humidity Level     : ");
  Serial.print(h);
  Serial.println(" %");

  // Read temperature as Celsius (the default)
  float t = dht.readTemperature();
  Serial.print("Temperature Level  : ");
  Serial.print(t);
  Serial.println(" C");

  int value = analogRead(A2);
  float valuel = map(value, 0, 800, 0, 100);
  Serial.print("Light Sensor Level : ");
  Serial.print(valuel);
  Serial.println(" %");

  int rainSensor = analogRead(A3);
  float rainSensor1 = map(rainSensor, 0, 1024, 0, 100);
  Serial.print("Rain Sensor Level  : ");

  Serial.println(rainSensor);
  Serial.print("Dry level          : ");
  Serial.print(rainSensor1);
  Serial.println(" %");

  J *req = notecard.newRequest("note.add");
  if (req != NULL) {
    JAddStringToObject(req, "file", "sensors.qo");
    JAddBoolToObject(req, "sync", true);

    J *body = JCreateObject();
    if (body != NULL) {
      JAddNumberToObject(body, "temperature", t);
      JAddNumberToObject(body, "humidity", h);
      JAddNumberToObject(body, "air quality value", sensor.getValue());
      JAddNumberToObject(body, "light intencity", valuel);
      JAddNumberToObject(body, "rain sensor", rainSensor);
      JAddNumberToObject(body, "dry level", rainSensor1);
      JAddItemToObject(req, "body", body);
    }
    notecard.sendRequest(req);
  }
  Serial.println("------------------------------------------------");
  delay(10000);

}

只需打開串口監(jiān)視器并查看輸出的數(shù)據(jù)。接下來,移至 Notehub 儀表板中的“事件”選項(xiàng)卡。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

在那里您可以看到我們的傳感器數(shù)據(jù)。

至此,您已經(jīng)完成了硬件部分。您可以單擊 JSON 數(shù)據(jù)并分析我們的 Blues 硬件發(fā)送的全部數(shù)據(jù)。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

接下來,讓我們轉(zhuǎn)到 Notehub 集成。

Notehub 設(shè)置:

我們將數(shù)據(jù)發(fā)送到 Notehub,所以現(xiàn)在我們需要用一些圖形和表格來可視化數(shù)據(jù)。讓我們看看如何使用 Qubitro 云來做到這一點(diǎn)。

首先,打開 Notehub 并導(dǎo)航到“路由”選項(xiàng)卡,然后創(chuàng)建一個(gè)新路由。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

然后選擇集成類型為 HTTP/HTTPS。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

現(xiàn)在我們必須輸入一些關(guān)于我們的“Qubitro Route”的信息。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

根據(jù)需要輸入名稱并輸入 URL 為“ https://webhook.qubitro.com/integrations/blueswireless” ,然后單擊標(biāo)頭,選擇其他標(biāo)頭,然后輸入 2 個(gè)標(biāo)頭,如下圖所示。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

[注意:標(biāo)頭值將在下一步中添加]

Qubitro 設(shè)置:

在這一步中,我們將在 Qubitro 中設(shè)置項(xiàng)目。首先,打開https://portal.qubitro.com/,使用您的憑據(jù)登錄,然后創(chuàng)建一個(gè)新項(xiàng)目。您無需添加任何設(shè)備。

接下來,導(dǎo)航到項(xiàng)目設(shè)置并復(fù)制“項(xiàng)目 ID”。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

然后導(dǎo)航到 Qubitro 門戶中的憑據(jù)選項(xiàng)卡并復(fù)制“Webhook 登錄密鑰”。拿走這些并將它們輸入回 Blues Notehub 的路由標(biāo)題中。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

完成整個(gè)設(shè)置后,單擊“創(chuàng)建新路線”,這將在您的 Notehub 中添加新路線。

現(xiàn)在您可以在 Qubitro 門戶中看到您的 Blues 設(shè)備。

picture1_JKMnjmE6gf.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

只需打開設(shè)備并查看傳入的數(shù)據(jù)。Qubitro 自動(dòng)從 Blues 中提取數(shù)據(jù)。在概覽選項(xiàng)卡中,您可以看到硬件的當(dāng)前位置、電壓和方向。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

接下來打開數(shù)據(jù)選項(xiàng)卡,在這里您可以看到您的傳感器數(shù)據(jù)。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

現(xiàn)在我們要做一些可視化,您可以通過打開“監(jiān)控”選項(xiàng)卡并添加一些小部件來實(shí)現(xiàn)。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

同樣,將小部件添加到所有數(shù)據(jù)。這是我的示例儀表板。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

最后,我們必須以圖形和圖表的形式可視化我們的傳感器數(shù)據(jù)。

現(xiàn)在我們基于物聯(lián)網(wǎng)的天氣數(shù)據(jù)記錄器幾乎完成了,我們正處于最后也是最重要的一步。在移動(dòng)應(yīng)用程序或 Web 應(yīng)用程序中與其他用戶共享數(shù)據(jù)怎么樣?Qubitro 允許 API 與多種平臺和語言共享云數(shù)據(jù)。

要試用它,請打開 Qubitro 門戶中的“憑據(jù)”選項(xiàng)卡并復(fù)制 API 密鑰。

然后打開這個(gè) URL https://qubitro-api.readme.io/reference/getdevice,它會(huì)要求你完成一些輸入。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

以“Bearer-API Key”格式輸入 API 密鑰,輸入您在 Qubitro 項(xiàng)目設(shè)置中使用的設(shè)備 ID 和項(xiàng)目,然后單擊“Try It”按鈕。您可以從您的 Blues 硬件中查看您的全部數(shù)據(jù)。

讓我們制作一個(gè)簡單的 Python 腳本來獲取 API 響應(yīng)。只需復(fù)制下面的 Python 腳本并更改密鑰,然后執(zhí)行。

import requests
import time
from colorama import Fore, Back, Style

while (True):
    headers = {
    "Accept": "application/json",
    "Authorization": "Bearer-xxxxxxxxxxxxxxxxxxxxxxxx"
    }
    response = requests.get(url, headers=headers)
    print(response.text)
    time.sleep(10)

它將從硬件返回?cái)?shù)據(jù)。

pasted_image_0.png?auto=compress%2Cformat&w=740&h=555&fit=max
?

所以現(xiàn)在您可以將您的 Blues 天氣記錄器的數(shù)據(jù)分享給外部世界。

結(jié)論:

pasted_image_0.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?

在本教程中,我向您展示了如何使用 Blues 硬件模塊構(gòu)建您自己的基于物聯(lián)網(wǎng)的天氣數(shù)據(jù)記錄器,并解釋了如何與外部世界共享該數(shù)據(jù)。現(xiàn)在,您可以在沒有電線、Wi-Fi 或 SD 卡的情況下跟蹤您的天氣數(shù)據(jù)。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1ADE-12H混頻器規(guī)格書
  2. 0.28 MB   |  1次下載  |  5 積分
  3. 2AD9984A高性能10位顯示接口英文手冊
  4. 0.49 MB   |  1次下載  |  5 積分
  5. 351開發(fā)板芯片資料
  6. 14.95 MB   |  1次下載  |  1 積分
  7. 4用TL431LI-Q1監(jiān)控電流供應(yīng)
  8. 176.71KB   |  1次下載  |  免費(fèi)
  9. 5十進(jìn)制數(shù)據(jù)轉(zhuǎn)十六進(jìn)制字符_轉(zhuǎn)ASCII碼
  10. 0.01 MB   |  次下載  |  免費(fèi)
  11. 6使用TRF7970A進(jìn)行NFC主動(dòng)和被動(dòng)點(diǎn)對點(diǎn)通信
  12. 926.87KB   |  次下載  |  免費(fèi)
  13. 7LP8864-Q1 LP8864S-Q1 LP8866-Q1和LP8866S-Q1診斷說明和故障處理程序
  14. 577.42KB   |  次下載  |  免費(fèi)
  15. 8將設(shè)計(jì)移植到LP3470A低lq電壓監(jiān)控器,以改善電源監(jiān)控
  16. 115.28KB   |  次下載  |  免費(fèi)

本月

  1. 1HFSS電磁仿真設(shè)計(jì)應(yīng)用詳解PDF電子教程免費(fèi)下載
  2. 24.30 MB   |  129次下載  |  1 積分
  3. 2正激、反激、推挽、全橋、半橋區(qū)別和特點(diǎn)
  4. 0.91 MB   |  36次下載  |  1 積分
  5. 3GBT 4706.1-2024家用和類似用途電器的安全第1部分:通用要求
  6. 7.43 MB   |  20次下載  |  免費(fèi)
  7. 4在設(shè)計(jì)中使用MOSFET瞬態(tài)熱阻抗曲線
  8. 1.57MB   |  15次下載  |  免費(fèi)
  9. 5幾張電動(dòng)車充電器電路圖
  10. 0.23 MB   |  9次下載  |  1 積分
  11. 6AD18學(xué)習(xí)筆記
  12. 14.47 MB   |  8次下載  |  2 積分
  13. 7H橋中的電流感測
  14. 545.39KB   |  7次下載  |  免費(fèi)
  15. 8電機(jī)驅(qū)動(dòng)器電路板布局的最佳實(shí)踐
  16. 3.03MB   |  6次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935113次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191360次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81578次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73804次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分