السبت، 16 يوليو 2022

بناء مسجل بيانات الطقس القائم على إنترنت الأشياء

 سيساعدك هذا الدليل على إنشاء مسجل بيانات الطقس القائم على إنترنت الأشياء باستخدام Blues Wireless Notecard و Notecarrier.



مكونات الأجهزة

بطاقة الملاحظات اللاسلكية Blues (خلوية)

Blues Wireless Notecarrier-A

Arduino Nano 33 BLE Sense

Seeed Studio Grove - مستشعر الضوء

انظر Studio Grove - مستشعر جودة الهواء v1.3

مستشعر درجة الحرارة والرطوبة DHT11 (3 دبابيس)

تطبيقات البرمجيات والخدمات عبر الإنترنت

Blues Wireless Notehub.io

Qubitro

اردوينو IDE


قصة

مع ارتفاع درجات الحرارة في جميع أنحاء العالم ، لم تكن مراقبة الظروف البيئية أكثر أهمية من أي وقت مضى

يمكن تتبع البيانات البيئية بعدة طرق. يمكنك استخدام الأجهزة السلكية ، أو بطاقة SD في وحدة التحكم لالتقاط البيانات يدويًا ، أو يمكنك استخدام وحدات التحكم القائمة على الاتصال عبر Wi-Fi أو BLE للتعامل مع هذه المهمة.

ضع في اعتبارك إذا لم يكن لديك الوقت لاسترداد البيانات يدويًا من بطاقة SD ، أو إذا لم تكن أجهزتك في نطاق اتصال Wi-Fi أو Bluetooth ، فكيف ستقوم بتتبع بيانات الطقس الخاصة بك؟

في هذا البرنامج التعليمي ، سأوضح لك كيفية إنشاء مسجل بيانات الطقس القائم على إنترنت الأشياء باستخدام وحدات أجهزة Blues Wireless ؛ لا يلزم وجود بطاقة SD أو Wi-Fi أو BLE. ما عليك سوى توصيل Blues Notecard و Notecarrier بوحدات التحكم لتتبع بيانات الطقس الخاصة بك


سيتبع هذا البرنامج التعليمي بالكامل هذه الخطوات الثلاث:


الخطوة 1: إعداد الجهاز


تتمثل الخطوة الأولى في جمع البيانات البيئية ، لذلك سنستخدم DHT11 ، ومستشعر المطر ، ومستشعر جودة الهواء ، ومستشعر الضوء للقيام بذلك. يتم توصيل Arduino Nano 33 BLE Sense بجميع المستشعرات ، والتي ستعمل كوحدة تحكم لمعالجة البيانات.


الخطوة 2: إعداد Notehub

سيتم إرسال البيانات التي تم جمعها من أجهزة الاستشعار إلى سحابة Blues Notehub باستخدام Blues Notecard و Blues Notecarrier.

الخطوة 3: إعداد Qubitro

بمجرد وصول بيانات المستشعر إلى السحابة ، سنستخدم Qubitro لتصورها ومعالجتها بعد ذلك

إعداد الأجهزة:

جميع أجهزة الاستشعار باستثناء DHT11 تناظرية. قم بتوصيل DHT11 بـ D13 من Arduino Nano 33 BLE Sense وقم بتوصيل A0 بـ A2 من دبابيس Arduino Nano 33 التناظرية مباشرة.



الآن بعد أن تم توصيل جميع المستشعرات الخاصة بك ، دعنا ننتقل إلى جزء البرمجة. للقيام بذلك ، افتح Arduino IDE وقم بتجميع الكود أدناه. سيقوم بجمع جميع بيانات المستشعر وإخراجها إلى الشاشة التسلسلية.

#include "Air_Quality_Sensor.h"
#include <DHT.h>

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);

}

الخطوة التالية هي إعداد Blues Notecarrier. قم بتوصيل Notecard بـ Notecarrier (أنا أستخدم بطاقة sim خارجية ، لذلك سأشرح كيفية القيام بذلك). قم بتوصيل Notecarrier بجهاز الكمبيوتر الخاص بك عن طريق كابل micro USB.

[يمكنك إلقاء نظرة تفصيلية على الإعداد الموجود على عنوان URL التالي - https://dev.blues.io/quickstart/notecard-quickstart/notecarrier-a/ ، إذا واجهت أي مشكلات أثناء التشغيل ، فيمكنك التواصل للمساعدة في منتدى Blues Forum.]

إذا كنت تريد استخدام بطاقة SIM خارجية مثل I am (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}

الآن سنقوم بتجربة Blues Notecarrier. أنا أستخدم Python لإرسال بعض البيانات الوهمية إلى 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 إلى المنفذ الخاص بك والضغط على run. يمكنك رؤية البيانات الوهمية في الجهاز.



سيعود هذا البرنامج النصي مع الرد أعلاه. بعد ذلك ، افتح لوحة معلومات Notehub وانتقل إلى علامة التبويب "الأحداث" وشاهد البيانات.

يمكنك رؤية البيانات التي يتم إرسالها بواسطة برنامج Python النصي في Notehub ، إذا كنت قد انتهيت من هذه الخطوة ، يمكنك توصيل Blues Notecard و Notecarrier بـ Arduino Nano 33 BLE Sense باستخدام منفذ UART.

[يدعم The Blues Notecarrier اتصال I2C و UART]


بعد اكتمال الاتصالات ، قم فقط بتجميع كود Arduino أدناه في Arduino IDE ، سيؤدي ذلك إلى إرسال بيانات المستشعر إلى Notehub.

#include <Notecard.h>
#include "Air_Quality_Sensor.h"
#include <DHT.h>

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);

}

ما عليك سوى فتح الشاشة التسلسلية وإلقاء نظرة على البيانات الناتجة. بعد ذلك ، انتقل إلى علامة التبويب "الأحداث" في لوحة معلومات Notehub.




هناك يمكنك رؤية بيانات المستشعر الخاصة بنا.

في هذه المرحلة ، انتهينا من جزء الجهاز. يمكنك النقر فوق بيانات JSON وتحليل البيانات الكاملة التي تم إرسالها بواسطة جهاز Blues الخاص بنا.

إعداد Notehub:

لقد أرسلنا بياناتنا إلى Notehub ، لذا نحتاج الآن إلى تصور البيانات ببعض الرسوم البيانية والجداول. دعونا نلقي نظرة على كيفية القيام بذلك باستخدام Qubitro cloud.

أولاً ، افتح Notehub وانتقل إلى علامة التبويب "المسارات" ، ثم أنشئ مسارًا جديدًا



ثم حدد نوع التكامل مثل HTTP / HTTPS.






أدخل الاسم كما تريد وأدخل عنوان URL كـ "https://webhook.qubitro.com/integrations/blueswireless" ، ثم انقر فوق العناوين ، واختر رؤوسًا إضافية ، وأدخل العنوانين كما هو موضح في الصورة belo

إعداد Qubitro:

في هذه الخطوة ، سنقوم بإعداد المشروع في Qubitro. للبدء ، افتح https://portal.qubitro.com/ ، وقم بتسجيل الدخول باستخدام بيانات الاعتماد الخاصة بك ، وأنشئ مشروعًا جديدًا. لست بحاجة إلى إضافة أي أجهزة.

بعد ذلك ، انتقل إلى إعدادات المشروع وانسخ "معرف المشروع



ثم انتقل إلى علامة تبويب بيانات الاعتماد في بوابة Qubitro وانسخ "مفتاح تسجيل الدخول للخطّاف على الويب". خذ هذه وأدخلها مرة أخرى في رأس مسار Blues Notehub.



بمجرد إكمال الإعداد بالكامل ، انقر فوق "إنشاء مسار جديد" ، والذي سيضيف المسار الجديد في Notehub الخاص بك.

يمكنك الآن رؤية جهاز Blues الخاص بك في بوابة Qubitro.


فقط افتح الجهاز وشاهد البيانات الواردة. يقوم Qubitro تلقائيًا باستخراج البيانات من Blues. في علامة التبويب "نظرة عامة" ، يمكنك رؤية الموقع الحالي والجهد والاتجاه للجهاز.


بعد ذلك ، افتح علامة تبويب البيانات ، حيث يمكنك هنا رؤية بيانات المستشعر.

سنقوم الآن ببعض التصورات ، والتي يمكنك القيام بها عن طريق فتح علامة التبويب المراقبة وإضافة بعض الأدوات.



وبالمثل ، أضف عناصر واجهة مستخدم إلى جميع البيانات. هنا نموذج لوحة القيادة الخاصة بي



أخيرًا ، وصلنا إلى تصور بيانات المستشعر في الرسوم البيانية والمخططات.


الآن وبعد أن اكتمل تقريبًا مسجل بيانات الطقس المستند إلى إنترنت الأشياء ، نحن في الخطوة النهائية والأكثر أهمية. ماذا عن مشاركة البيانات مع مستخدمين آخرين في تطبيق جوال أو تطبيق ويب؟ يسمح Qubitro لواجهات برمجة التطبيقات بمشاركة البيانات السحابية مع منصات ولغات متعددة.


لتجربتها ، افتح علامة التبويب بيانات الاعتماد في بوابة Qubitro وانسخ مفتاح API.


ثم افتح عنوان URL هذا https://qubitro-api.readme.io/reference/getdevice ، والذي سيطلب منك إكمال بعض المدخلات.


أدخل مفتاح واجهة برمجة التطبيقات بتنسيق "Bearer-API Key" ، وأدخل معرف الجهاز وقم بعرض المشروع الذي استخدمته في إعداد مشروع Qubitro ، ثم انقر فوق الزر "جربه". يمكنك رؤية بياناتك بالكامل من جهاز Blues الخاص بك.


لنقم بعمل نص برمجي بايثون بسيط للحصول على استجابة API. ما عليك سوى نسخ نص Python أدناه وتغيير المفاتيح ، ثم التنفيذ.

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

while (True):
url = "https://api.qubitro.com/v1/projects/e675f223-ff1e-4bab-85e1-37de1e944f6d/devices/dev%3A867730051771776-e675f223-ff1e-4bab-85e1-37de1e944f6d"
headers = {
"Accept": "application/json",
"Authorization": "Bearer-xxxxxxxxxxxxxxxxxxxxxxxx"
}
response = requests.get(url, headers=headers)
print(response.text)
time.sleep(10)

سيعيد البيانات من الجهاز.





في هذا البرنامج التعليمي ، أوضحت لك كيفية إنشاء مسجل بيانات الطقس الخاص بك المستند إلى إنترنت الأشياء مع وحدات أجهزة Blues ، وشرحت كيفية مشاركة هذه البيانات مع العالم الخارجي. يمكنك الآن تتبع بيانات الطقس بدون أسلاك أو Wi-


كود