ESP8266 Gửi kết quả đọc cảm biến BME280 tới InfluxDB

ESP8266 Gửi kết quả đọc cảm biến BME280 tới InfluxDB

Thiết lập cơ sở dữ liệu InfluxDB

Bây giờ chúng ta hãy xem cách dễ dàng thiết lập cơ sở dữ liệu InfluxDB của chúng ta để ghi chép nhật ký dữ liệu ESP8266. Đầu tiên, hãy truy cập trang web chính thức của InfluxDB và nhấp vào nút 'Get InfluxDB' như được đánh dấu bên dưới.

InfluxDB tạo tài khoản 1

Bạn sẽ phải tạo một tài khoản đám mây InfluxDB miễn phí. Bạn có thể tiếp tục với tài khoản Google hoặc Microsoft của mình hoặc đăng nhập bằng cách cung cấp thông tin chi tiết của bạn như được hiển thị bên dưới để tạo tài khoản.

InfluxDB tạo tài khoản 2

Bước tiếp theo là chọn nơi bạn muốn lưu trữ dữ liệu. Chúng tôi đang chọn Google Cloud làm bộ nhớ. Bạn cũng có tùy chọn sử dụng các dịch vụ web của Amazon và Microsoft Azure. Hơn nữa, tên công ty cũng sẽ được yêu cầu. Đừng quên đánh dấu vào thỏa thuận sau khi đọc nó.

InfluxDB lưu trữ dữ liệu

Tiếp theo, chúng tôi sẽ được yêu cầu chọn một kế hoạch. Chúng tôi sẽ gắn bó với gói 'Miễn phí' vì nó hoạt động tốt với các dự án của chúng tôi.

InfluxDB chọn kế hoạch

Bây giờ trang bắt đầu sẽ mở ra. Bây giờ chúng tôi đã đăng nhập thành công vào InfluxDB, đặt đích lưu trữ và chọn gói đám mây InfluxDB của chúng tôi. Bây giờ chúng tôi đã sẵn sàng để tải dữ liệu.

Trang bắt đầu InfluxDB

Tải dữ liệu

Để tải dữ liệu vào InfluxDB, hãy bắt đầu bằng cách nhấp vào nút Thêm như được tô sáng bên dưới.

InfluxDB tải dữ liệu

Thao tác này sẽ mở phần tải dữ liệu. Ở đây trong tab 'Nguồn', chọn Arduino làm thư viện khách hàng.

InfluxDB tải dữ liệu 2

Thao tác này cũng sẽ mở ra trang vùng lưu trữ với mã mẫu. Hiện tại chúng tôi không có bất kỳ thùng nào. Đầu tiên, chúng ta sẽ phải tạo một bucket. Nhấp vào '+ CREATE BUCKET' để tiếp tục.

InfluxDB tạo Bucket 1

Đặt tên cho vùng lưu trữ của bạn và tùy chỉnh tùy chọn xóa dữ liệu theo yêu cầu của bạn. Sau đó nhấp vào 'TẠO' để hoàn tất quá trình tạo vùng lưu trữ.

InfluxDB tạo bucket cho esp8266 1

Bây giờ như bạn có thể thấy, trong trang vùng lưu trữ, chúng ta có thể xem vùng lưu trữ mà chúng ta vừa tạo. Chúng tôi đã đặt tên cho nó là 'ESP8266' và nó có thể được tìm thấy trong phần xô. Nhấp đúp chuột vào nó để vùng lưu trữ được chọn.

InfluxDB tạo bucket cho esp8266 2

Lấy tham số InfluxDB (URL, ORG và Bucket)

Đây là một bước rất quan trọng. Chúng ta sẽ lấy InfluxDB URL, ORG và Bucket. Các tham số này sẽ được sử dụng bên trong bản phác thảo chương trình của chúng tôi để gửi dữ liệu thành công đến InfluxDB.

Bên trong vùng lưu trữ ESP8266 của chúng tôi, hãy chuyển đến phần 'Khởi tạo máy khách'. Tại đây bạn có thể xem định nghĩa của các tham số InfluxDB khác nhau. Sao chép INFLUXDB_URL, INFLUXDB_ORG và INFLUXDB_BUCKET.

InfluxDB tạo bucket cho esp8266 3

Nhận API Token

Bước quan trọng tiếp theo là tạo API Token. Điều này cũng được yêu cầu để đọc/ghi an toàn vào cơ sở dữ liệu InfluxDB.

Ở phía ngoài cùng bên trái, hãy nhấp vào biểu tượng mũi tên như hình dưới đây rồi chọn Mã thông báo API.

InfluxDB API Mã thông báo 1

Bây giờ hãy nhấp vào + GENERATE API TOKEN và sau đó nhấp vào All Access API Token như được đánh dấu bên dưới:

InfluxDB API Mã thông báo 2

Cung cấp mô tả cho Mã thông báo API không giới hạn của bạn và lưu nó.

InfluxDB tạo API Token

Bây giờ mã thông báo API của bạn sẽ được tạo. Sao chép nó và lưu nó một cách an toàn. Bạn sẽ không thể xem lại.

InfluxDB API Mã thông báo 4

ESP8266: Ghi lại số đọc BME280 vào InfluxDB

Bây giờ chúng ta đã sẵn sàng để gửi các điểm dữ liệu ESP8266 trong InfluxDB. Vì mục đích trình diễn, chúng tôi sẽ giao diện bảng ESP8266 của mình với cảm biến BME280 và gửi các chỉ số nhiệt độ, độ ẩm và áp suất hiện tại đến vùng lưu trữ ESP8266 của chúng tôi trong InfluxDB.

Cảm biến BME280 được sử dụng để đo các chỉ số liên quan đến nhiệt độ môi trường, áp suất khí quyển và độ ẩm tương đối. Nó chủ yếu được sử dụng trong các ứng dụng web và di động, nơi tiêu thụ điện năng thấp là chìa khóa. Cảm biến này sử dụngđể giao 

I2C có nghĩa là Mạch liên tích hợp và hoạt động theo nguyên tắc của hệ thống đa nô lệ đồng bộ, đa chủ. Với BME280 và bo mạch ESP, ESP8266 hoạt động như một bậc thầy và cảm biến BME280 như một nô lệ vì nó là một thiết bị bên ngoài, hoạt động như một nô lệ. Các bo mạch phát triển ESP8266 giao tiếp với cảm biến BME280 thông qua giao thức I2C để nhận nhiệt độ, áp suất khí quyển và độ ẩm tương đối.

Hình dưới đây cho thấy cảm biến BME280 và sơ đồ chân của nó.

Sơ đồ sơ đồ chân BME280

  • VCC: kết nối với 3.3V

  • SCL: dùng để tạo tín hiệu đồng hồ

  • SDA: được sử dụng trong việc gửi và nhận dữ liệu

Giao diện cảm biến BME280 với ESP8266

Việc kết nối BME280 với bo mạch NodeMCU ESP8266 rất dễ dàng. Chúng ta phải kết nối thiết bị đầu cuối VCC với 3.3V, nối đất với mặt đất (mặt bằng chung), SCL của cảm biến với SCL của mô-đun và SDA của cảm biến với chân SDA của mô-đun ESP.

Chân I2C trong ESP8266 NodeMCU cho SDA là GPIO4 và cho SCL là GPIO5.

Các thành phần bắt buộc

Chúng tôi sẽ cần các thành phần sau để kết nối bảng NodeMCU ESP8266 với cảm biến BME280.

  1. Bảng mạch ESP8266 NodeMCU

  2. Cảm biến BME280

  3. Dây kết nối

  4. Breadboard

Thực hiện theo sơ đồ bên dưới cho mô-đun NodeMCU ESP8266 và kết nối chúng cho phù hợp.

BME280 giao diện với ESP8266 NodeMCU Arduino IDE

Thiết lập Arduino IDE để ghi dữ liệu cảm biến ESP8266 vào InfluxDB

Chúng tôi sẽ sử dụng Arduino IDE để lập trình bảng phát triển NodeMCU ESP8266 của chúng tôi. Vì vậy, bạn nên có phiên bản Arduino IDE mới nhất. Ngoài ra, bạn cũng cần cài đặt plugin ESP8266 NodeMCU. Nếu IDE của bạn chưa cài đặt các plugin, bạn có thể truy cập liên kết bên dưới:

Cài đặt Thư viện InfluxDB trong Arduino IDE

Mở Arduino IDE và nhấp vào Sketch > Library > Manage Libraries

MPU-6050 Cài đặt thư viện

Cửa sổ sau sẽ mở ra.

thư viện tìm kiếm Arduino IDE

Nhập 'Influxdb' vào thanh tìm kiếm và nhấn enter. Cài đặt phiên bản mới nhất của thư viện như hình dưới đây. Thư viện này tương thích với cả bảng phát triển ESP8266 và ESP32.

Cài đặt Thư viện InfluxDB

Cài đặt Thư viện BME280 Arduino

Vì chúng tôi đang kết nối cảm biến BME280 với ESP8266 nên chúng tôi cũng sẽ phải cài đặt các thư viện BME280. Chúng tôi sẽ yêu cầu hai thư viện cho dự án này:

Chúng tôi sẽ sử dụng Trình quản lý thư viện trong Arduino IDE của chúng tôi để cài đặt các phiên bản mới nhất của thư viện. Mở Arduino IDE của bạn và đi tới Sketch > Bao gồm thư viện > Quản lý thư viện. Nhập tên thư viện Adafruit BME280 vào thanh tìm kiếm và cài đặt cả hai.

Adafruit BME280 thư viện Arduino IDE

Mở Arduino IDE của bạn và đi tới Sketch > Bao gồm thư viện > Quản lý thư viện. Nhập tên thư viện cảm biến thống nhất Adafruit vào thanh tìm kiếm và cài đặt nó.

Cài đặt thư viện cảm biến hợp nhất Adafruit

Sau khi cài đặt các thư viện, hãy khởi động lại IDE của bạn.

Phác thảo: ESP8266 Ghi dữ liệu cảm biến BME280 vào InfluxDB

Mở Arduino IDE của bạn và đi tới Tệp > Mới để mở tệp mới. Sao chép mã được cung cấp bên dưới trong tệp đó. Hãy nhớ thay đổi thông tin đăng nhập Wi-Fi, URL InfluxDB, org, tên vùng lưu trữ và mã thông báo API. Ngoài ra, hãy đặt chuỗi múi giờ theo vị trí của bạn để đồng bộ hóa thời gian một cách chính xác.

Bản phác thảo này tạo ra ba điểm dữ liệu (nhiệt độ, độ ẩm và áp suất) trên cơ sở dữ liệu với các thẻ và trường. Sau mỗi 10 giây, nó sẽ lưu các số đọc cảm biến được lấy từ BME280 được kết nối với bảng phát triển ESP8266.

#include <ESP8266WiFiMulti.h>

#include <InfluxDbClient.h>

#include <InfluxDbCloud.h>

#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BME280.h>

 

ESP8266WiFiMulti wifiMulti;

Adafruit_BME280 bme; 

 

float temperature;

float humidity;

float pressure;

 

#define DEVICE "ESP8266"

#define WIFI_SSID "WRITE_YOUR_SSID"

#define WIFI_PASSWORD "WRITE_YOUR_PASSWORD"

#define INFLUXDB_URL "WRITE_YOUR_URL"

#define INFLUXDB_TOKEN "WRITE_YOUR_API_TOKEN"

#define INFLUXDB_ORG "WRITE_YOUR_ORG"

#define INFLUXDB_BUCKET "WRITE_YOUR_BUCKET"

 

// Set timezone string according to https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html

#define TZ_INFO "PKT-5"

 

// InfluxDB client instance with preconfigured InfluxCloud certificate

InfluxDBClient client(INFLUXDB_URL, INFLUXDB_ORG, INFLUXDB_BUCKET, INFLUXDB_TOKEN, InfluxDbCloud2CACert);

 

// Data points

Point sensor1("temperature_status");

Point sensor2("humidity_status");

Point sensor3("pressure_status");

 

 

void setup() {

  Serial.begin(115200);

  WiFi.mode(WIFI_STA);

  wifiMulti.addAP(WIFI_SSID, WIFI_PASSWORD);

  Serial.print("Connecting to wifi");

  while (wifiMulti.run() != WL_CONNECTED) {

    Serial.print(".");

    delay(500);

  }

  Serial.println();

 

  if (!bme.begin(0x76)) {

    Serial.println("Could not detect a BME280 sensor, Fix wiring Connections!");

    while (1);

  }

 

  // Add tags

  sensor1.addTag("device", DEVICE);

  sensor1.addTag("SSID", WiFi.SSID());

 

  sensor2.addTag("device", DEVICE);

  sensor2.addTag("SSID", WiFi.SSID());

 

  sensor3.addTag("device", DEVICE);

  sensor3.addTag("SSID", WiFi.SSID());

  

  timeSync(TZ_INFO, "pool.ntp.org", "time.nis.gov");

  

  if (client.validateConnection()) {

    Serial.print("Connected to InfluxDB: ");

    Serial.println(client.getServerUrl());

  } else {

    Serial.print("InfluxDB connection failed: ");

    Serial.println(client.getLastErrorMessage());

  }

}

 

void loop() {

  // Store measured values into points

  sensor1.clearFields();

  sensor2.clearFields();

  sensor3.clearFields();

  

  temperature = bme.readTemperature();

  humidity = bme.readHumidity();

  pressure = bme.readPressure() / 100.0F;

  

  sensor1.addField("Temperature",temperature);

  sensor2.addField("Humidity",humidity);

  sensor3.addField("Pressure",pressure);

 

  Serial.print("Writing: ");

  Serial.println(client.pointToLineProtocol(sensor1));

  Serial.println(client.pointToLineProtocol(sensor2));

  Serial.println(client.pointToLineProtocol(sensor3));

  

  // If no Wifi signal, try to reconnect it

  if (wifiMulti.run() != WL_CONNECTED) {

    Serial.println("Wifi connection lost");

  }

  // Write point

  if (!client.writePoint(sensor1)) {

    Serial.print("InfluxDB write failed for temperature: ");

    Serial.println(client.getLastErrorMessage());

  }

 

    if (!client.writePoint(sensor2)) {

    Serial.print("InfluxDB write failed for humidity: ");

    Serial.println(client.getLastErrorMessage());

  }

 

    if (!client.writePoint(sensor3)) {

    Serial.print("InfluxDB write failed for pressure: ");

    Serial.println(client.getLastErrorMessage());

  }

  Serial.println("");

  Serial.println("Delay 10s");

  delay(10000);

}

 

Mã hoạt động như thế nào?

Bước đầu tiên là bao gồm tất cả các thư viện cần thiết cho dự án này. ESP8266WiFiMulti thư viện sẽ cho phép chúng tôi thêm nhiều mạng Wi-Fi bên trong bản phác thảo của mình và ESP8266 kết nối với mạng mạnh nhất. Tuy nhiên, chúng tôi sẽ sử dụng một mạng duy nhất trong ví dụ này. Thứ hai, cũng bao gồm các thư viện InfluxDB mà chúng tôi vừa cài đặt. Điều này sẽ đảm bảo giao tiếp ESP8266 dễ dàng và thành công với InfluxDB. Hơn nữa, các thư viện khác bao gồm chức năng BME280.

#include <ESP8266WiFiMulti.h>

#include <InfluxDbClient.h>

#include <InfluxDbCloud.h>

#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BME280.h>

Tiếp theo, tạo một đối tượng của ESP8266WiFiMulti như hình dưới đây:

ESP8266WiFiMulti wifiMulti;

Sau đó, xác định đối tượng Adafruit_BME280 có tên bme bằng cách đặt nó trên các chân I2C GPIO mặc định của ESP8266.

Adafruit_BME280 bme; 

Tiếp theo, khai báo các biến để giữ các chỉ số cảm biến BME280 như nhiệt độ, áp suất và độ ẩm. Chúng được khai báo là kiểu thả nổi vì chúng ta sẽ xử lý các giá trị số có thể có dấu thập phân nổi. Nói cách khác, các giá trị được trả về bởi cảm biến BME280 là các giá trị dấu phẩy động.

 

float temperature;

float humidity;

float pressure;

Thông số InfluxDB

Chỉ định tên của thiết bị mà bạn sẽ sử dụng. Trong trường hợp của chúng tôi, đó là ESP8266.

#define DEVICE "ESP8266"

Bước tiếp theo rất quan trọng. Xác định cẩn thận SSID Wi-Fi, mật khẩu Wi-Fi, URL InfluxDB, InfluxDB ORG, mã thông báo API InfluxDB và tên vùng lưu trữ InfluxDB. Các tham số liên quan đến InfluxDB là những tham số mà trước đây chúng tôi đã có được và lưu lại.

#define WIFI_SSID "WRITE_YOUR_SSID"

#define WIFI_PASSWORD "WRITE_YOUR_PASSWORD"

#define INFLUXDB_URL "WRITE_YOUR_URL"

#define INFLUXDB_TOKEN "WRITE_YOUR_API_TOKEN"

#define INFLUXDB_ORG "WRITE_YOUR_ORG"

#define INFLUXDB_BUCKET "WRITE_YOUR_BUCKET"

Bây giờ, hãy xác định múi giờ theo vị trí của bạn. Điều này là cần thiết để đồng bộ hóa thời gian.

Tham khảo liên kết được cung cấp bên dưới để có được múi giờ gần nhất với vị trí của bạn và xác định múi giờ đó trong mã.

Chúng tôi đã đặt múi giờ cho Châu Á / Karachi, do đó chúng tôi sử dụng PKT-5.

// Set timezone string according to https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html

#define TZ_INFO "PKT-5"

Bước tiếp theo là tạo một phiên bản InfluxDBCliant. Thao tác này sẽ tạo ra một máy khách an toàn với chứng chỉ được định cấu hình sẵn.

InfluxDBClient client(INFLUXDB_URL, INFLUXDB_ORG, INFLUXDB_BUCKET, INFLUXDB_TOKEN, InfluxDbCloud2CACert);

Ở đây chúng ta sẽ tạo ba điểm dữ liệu được gọi là 'temperature_status', 'humidity_status' và 'pressure_status' trong cơ sở dữ liệu InfluxDB. Chúng sẽ bao gồm phép đo, bộ thẻ, khóa trường, giá trị trường và dấu thời gian. Trong trường hợp này, các trường hợp điểm được gọi là sensor1, sensor2 và sensor3 tương ứng cho ba lần đọc.

Point sensor1("temperature_status");

Point sensor2("humidity_status");

Point sensor3("pressure_status");

thiết lập()

Bên trong hàm setup(), chúng ta sẽ mở giao tiếp nối tiếp với tốc độ truyền là 115200. Sau đó, chúng tôi sẽ đặt ESP8266 ở chế độ trạm.

Serial.begin(115200);

WiFi.mode(WIFI_STA);

Sau đó, thêm mạng Wi-Fi cho ESP8266 để kết nối. Điều này sẽ được thực hiện bằng phương thức addAP() trên đối tượng WiFiMulti. Ở đây chúng tôi sẽ chỉ định hai tham số. Tham số đầu tiên là SSID và tham số thứ hai là mật khẩu. Bạn có thể thêm bao nhiêu mạng tùy thích. Chúng tôi chỉ thêm một mạng duy nhất.

wifiMulti.addAP(WIFI_SSID, WIFI_PASSWORD);

Chúng ta sẽ sử dụng phương thức run() trên đối tượng WiFimulti, để kết nối ESP8266 với kết nối Wi-Fi mạnh nhất. Thao tác này trả về trạng thái của kết nối Wi-Fi.

Các dòng mã sau đây sẽ được sử dụng để theo dõi xem ESP8266 có được kết nối hay không. Trong khi kết nối bị mất, nó sẽ cố gắng kết nối lại.

Serial.print("Connecting to wifi");

  while (wifiMulti.run() != WL_CONNECTED) {

    Serial.print(".");

    delay(500);

  }

  Serial.println();

Kiểm tra xem cảm biến BME280 có được khởi tạo hay không.

  if (!bme.begin(0x76)) {

    Serial.println("Could not detect a BME280 sensor, Fix wiring Connections!");

    while (1);

  }

Bây giờ thêm các thẻ vào các điểm dữ liệu. Điều này được thực hiện bằng cách sử dụng phương thức addTag() trên các trường hợp điểm. Nó có hai tham số. Đầu tiên là khóa thẻ và thứ hai là giá trị thẻ.

Ở đây chúng tôi đang thêm hai thẻ vào ba điểm dữ liệu. Một cho tên thiết bị và một cho SSID Wi-Fi.

  sensor1.addTag("device", DEVICE);

  sensor1.addTag("SSID", WiFi.SSID());

 

  sensor2.addTag("device", DEVICE);

  sensor2.addTag("SSID", WiFi.SSID());

 

  sensor3.addTag("device", DEVICE);

  sensor3.addTag("SSID", WiFi.SSID());

Tiếp theo chúng ta sẽ đồng bộ hóa thời gian với máy chủ NTP bằng hàm timeSync().

timeSync(TZ_INFO, "pool.ntp.org", "time.nis.gov");

Cuối cùng, máy khách InfluxDB xác nhận kết nối của nó với máy chủ. Một thông báo có liên quan sẽ được in trong màn hình nối tiếp trong cả hai trường hợp nếu máy khách có được kết nối hay không.

 

  if (client.validateConnection()) {

    Serial.print("Connected to InfluxDB: ");

    Serial.println(client.getServerUrl());

  } else {

    Serial.print("InfluxDB connection failed: ");

    Serial.println(client.getLastErrorMessage());

  }

vòng lặp()

Bên trong hàm loop(), chúng ta lưu trữ dữ liệu đến điểm. Trước hết, chúng tôi sẽ xóa tất cả các trường của các trường hợp điểm.

  sensor1.clearFields();

  sensor2.clearFields();

  sensor3.clearFields();

Sau đó, chúng tôi sẽ truy cập các chỉ số cảm biến BME280 và lưu chúng trong các biến phao nhiệt độ, độ ẩm và áp suất. Số đọc nhiệt độ có được thông qua bme.readTemperature(). Số đọc áp suất và độ ẩm được truy cập bằng cách sử dụng các hàm bme.readPressure ()/ 100.0F và bme.readHumidity() tương ứng.

  temperature = bme.readTemperature();

  humidity = bme.readHumidity();

  pressure = bme.readPressure() / 100.0F;

Tiếp theo, chúng ta thêm trường Nhiệt độ vào điểm temperature_status, trường Độ ẩm vào điểm humidity_status và trường Áp suất vào điểm pressure_status của chúng ta Điều này được thực hiện bằng cách sử dụng phương thức addField() trên các trường hợp Điểm. Chúng tôi chỉ định khóa là tham số đầu tiên và giá trị là tham số thứ hai.

  sensor1.addField("Temperature",temperature);

  sensor2.addField("Humidity",humidity);

  sensor3.addField("Pressure",pressure);

Sau đó, chúng tôi sẽ hiển thị trên màn hình nối tiếp thông tin đang được ghi vào các điểm. Dữ liệu sẽ được hiển thị trong biểu mẫu Giao thức dòng.

  Serial.print("Writing: ");

  Serial.println(client.pointToLineProtocol(sensor1));

  Serial.println(client.pointToLineProtocol(sensor2));

  Serial.println(client.pointToLineProtocol(sensor3));

Ngoài ra, hãy kết nối với mạng Wi-Fi trong trường hợp ngắt kết nối.

  if (wifiMulti.run() != WL_CONNECTED) {

    Serial.println("Wifi connection lost");

  }

Cuối cùng, viết điểm vào cơ sở dữ liệu sau mỗi 10 giây. Điều này được thực hiện bằng cách sử dụng client.writePoint() và truyền điểm làm tham số bên trong nó.

if (!client.writePoint(sensor1)) {

    Serial.print("InfluxDB write failed for temperature: ");

    Serial.println(client.getLastErrorMessage());

  }

 

    if (!client.writePoint(sensor2)) {

    Serial.print("InfluxDB write failed for humidity: ");

    Serial.println(client.getLastErrorMessage());

  }

 

    if (!client.writePoint(sensor3)) {

    Serial.print("InfluxDB write failed for pressure: ");

    Serial.println(client.getLastErrorMessage());

  }

  Serial.println("");

  Serial.println("Delay 10s");

  delay(10000);

Demonstration

Sao chép đoạn mã trên vào Arduino IDE. Chọn đúng bảng và cổng COM trước khi tải mã của bạn lên bảng NodeMCU ESP8266. Đi tới Bảng > Công cụ và chọn Mô-đun phát triển NodeMCU ESP8266.

Tiếp theo, đi tới Công cụ > Cổng và chọn cổng thích hợp mà qua đó bảng của bạn được kết nối.

Cổng COM ESP8266

Bây giờ hãy nhấp vào nút tải lên để tải mã lên ESP8266 NodeMCU. Sau đó, mở màn hình nối tiếp Arduino và nhấn nút bật trên ESP8266 NodeMCU:

Trong Arduino IDE của bạn, hãy mở màn hình nối tiếp và đặt tốc độ truyền thành 115200. Đầu tiên, bo mạch sẽ kết nối với Wi-Fi cục bộ sau đó thời gian sẽ đồng bộ hóa. Tiếp theo, máy khách được kết nối với máy chủ InfluxDB và bạn có thể xem dữ liệu được ghi vào cơ sở dữ liệu sau mỗi 10 giây.

ESP8266 gửi số đọc BME280 đến màn hình nối tiếp InfluxDB

Trực quan hóa dữ liệu trong InfluxDB

Bây giờ chúng ta hãy trực quan hóa dữ liệu mà chúng ta đã gửi đến InfluxDB Cloud. Đăng nhập vào tài khoản InfluxDB của bạn và truy cập Data Explorer như hình dưới đây.

InfluxDB Trình khám phá dữ liệu

Thao tác này sẽ mở trang Data Explorer. Ở đây chúng ta sẽ có thể vẽ đồ thị dữ liệu đang được gửi đến đám mây InfluxDB. Đầu tiên hãy nhấp vào vùng lưu trữ ESP8266. Sau đó, để xem số đọc nhiệt độ, nhấp temperature_status bên dưới bộ lọc đo, SSID đang được sử dụng trong bộ lọc SSID, Nhiệt độ là thẻ trường bên dưới bộ lọc trường và ESP8266 trong bộ lọc thiết bị. Nhấp vào Gửi để hiển thị dữ liệu.

ESP8266 gửi số đọc BME280 đến InfluxDB dữ liệu thám hiểm nhiệt độ 1

Bây giờ bạn có thể xem dữ liệu nhiệt độ đang được vẽ trong biểu đồ. Bạn cũng có thể tùy chỉnh nó.

ESP8266 gửi số đọc BME280 đến InfluxDB dữ liệu thám hiểm nhiệt độ 2

Để xem số đọc áp suất, nhấp pressure_status bên dưới bộ lọc đo, SSID đang được sử dụng trong bộ lọc SSID, Áp suất là thẻ trường dưới bộ lọc trường và ESP8266 dưới bộ lọc thiết bị. Nhấp vào Gửi để hiển thị dữ liệu.

Bây giờ bạn có thể xem dữ liệu áp suất đang được vẽ trong biểu đồ.

ESP8266 gửi số đọc BME280 đến áp suất khám phá dữ liệu InfluxDB

Tương tự, để xem các chỉ số độ ẩm, hãy nhấp humidity_status vào bên dưới bộ lọc đo, SSID đang được sử dụng trong bộ lọc SSID, Độ ẩm là thẻ trường bên dưới bộ lọc trường và ESP8266 trong bộ lọc thiết bị. Nhấp vào Gửi để hiển thị dữ liệu.

Bây giờ bạn có thể xem dữ liệu độ ẩm đang được vẽ trong biểu đồ.

ESP8266 gửi số đọc BME280 đến độ ẩm khám phá dữ liệu InfluxDB

Hơn nữa, bạn cũng có thể hiển thị dữ liệu ở nhiều định dạng khác nhau bao gồm băng tần, thước đo, biểu đồ tần suất, bản đồ, v.v. Chỉ cần chọn nó từ menu thả xuống bên dưới.

InfluxDB Trình khám phá dữ liệu 4

Xây dựng Dashboard

Bây giờ hãy để chúng tôi chỉ cho bạn cách hiển thị dữ liệu ở các định dạng khác nhau trên cùng một trang. Chúng tôi sẽ tạo một bảng điều khiển. Đi tới biểu tượng Bảng điều khiển và nhấp vào nó.

InfluxDB Tạo Dashboard

Thao tác này sẽ mở Bảng điều khiển mở. Hiện tại, chúng tôi không có bất kỳ bảng điều khiển nào được tạo. Nhấp vào nút '+ TẠO BẢNG ĐIỀU KHIỂN' như được đánh dấu bên dưới:

InfluxDB Tạo Bảng điều khiển 1

Đặt tên cho trang tổng quan của bạn. Sau đó bấm THÊM Ô để thêm trực quan hóa.

InfluxDB Tạo Bảng điều khiển 2

Nhiệt độ

Chỉ định tên của ô. Chúng tôi đã đặt cho nó cái tên 'BME280 Temperature Reading'. Tiếp theo, chọn trực quan hóa từ menu thả xuống. Chúng tôi đã chọn Single Stat.

Để có được dữ liệu, hãy thực hiện một truy vấn như chúng ta đã làm trước đây trong trình khám phá dữ liệu. Đầu tiên hãy nhấp vào vùng lưu trữ ESP8266, sau đó đánh dấu vào temperature_status bên dưới bộ lọc đo, SSID đang được sử dụng trong bộ lọc SSID, Nhiệt độ là thẻ trường bên dưới bộ lọc trường và ESP8266 trong bộ lọc thiết bị. Nhấp vào nút gửi để các thay đổi diễn ra. Bạn sẽ có thể xem trực quan hóa. Vì chúng tôi đang hiển thị số đọc nhiệt độ dưới dạng một chỉ số duy nhất, do đó chúng tôi có số đọc 30.28. Bạn cũng có thể tùy chỉnh trực quan hóa từ nút TÙY CHỈNH. Chúng tôi đã tùy chỉnh chỉ số duy nhất của mình bằng cách thêm đơn vị ° C làm hậu tố. Sau khi bạn hài lòng, hãy nhấp vào nút đánh dấu để ô được thêm vào bảng điều khiển.

ESP8266 gửi bài đọc BME280 đến dữ liệu InfluxDB Tạo Bảng điều khiển 1

Như bạn có thể thấy, việc đọc bây giờ có thể được nhìn thấy trong bảng điều khiển của chúng tôi.

ESP8266 gửi bài đọc BME280 đến dữ liệu InfluxDB Tạo Bảng điều khiển 2

Để thêm trực quan hóa khác, hãy nhấp lại vào 'THÊM Ô' và làm theo quy trình như được mô tả trước đây.

Áp lực

Bên cạnh việc thêm hình ảnh trực quan cho các bài đọc áp lực, chúng ta sẽ tạo một ô khác. Đặt tên cho nó. Chúng tôi đã đặt cho nó cái tên 'BME280 Pressure Readings'. Tiếp theo, chọn trực quan hóa từ menu thả xuống. Chúng tôi đã chọn Biểu đồ lần này.

Để có được dữ liệu, hãy thực hiện một truy vấn như chúng ta đã làm trước đây trong trình khám phá dữ liệu. Đầu tiên hãy nhấp vào vùng lưu trữ ESP8266, sau đó đánh dấu vào pressure_status bên dưới bộ lọc đo, SSID đang được sử dụng trong bộ lọc SSID, Áp suất là thẻ trường bên dưới bộ lọc trường và ESP8266 trong bộ lọc thiết bị. Nhấp vào nút gửi để các thay đổi diễn ra. Bạn sẽ có thể xem trực quan hóa. Chúng tôi đã tùy chỉnh biểu đồ bằng cách thêm Áp suất nhãn trục y (hPa). Sau khi bạn hài lòng, hãy nhấp vào nút đánh dấu để ô được thêm vào bảng điều khiển.

ESP8266 gửi bài đọc BME280 đến dữ liệu InfluxDB Tạo Bảng điều khiển 3

Độ ẩm

Tương tự, chúng tôi thêm hình ảnh trực quan cho các bài đọc độ ẩm. Tạo một ô mới và đặt tên cho nó. Chúng tôi đã đặt cho nó cái tên 'BME280 Humidity Reading'. Tiếp theo, chọn trực quan hóa từ menu thả xuống. Chúng tôi đã chọn Gauge lần này.

Để có được dữ liệu, hãy thực hiện một truy vấn như chúng ta đã làm trước đây trong trình khám phá dữ liệu. Đầu tiên hãy nhấp vào vùng lưu trữ ESP8266, sau đó đánh dấu vào humidity_status bên dưới bộ lọc đo, SSID đang được sử dụng trong bộ lọc SSID, Độ ẩm là thẻ trường dưới bộ lọc trường và ESP8266 trong bộ lọc thiết bị. Nhấp vào nút gửi để các thay đổi diễn ra. Bạn sẽ có thể xem trực quan hóa. Chúng tôi đã tùy chỉnh thước đo bằng cách thêm % làm hậu tố. Sau khi bạn hài lòng, hãy nhấp vào nút đánh dấu để ô được thêm vào bảng điều khiển.

ESP8266 gửi bài đọc BME280 đến dữ liệu InfluxDB Tạo Bảng điều khiển 4

Đây là cách bảng điều khiển Đọc cảm biến ESP8266 BME280 của chúng tôi trông như thế nào với ba ô được thêm vào. Bạn cũng có thể thay đổi cài đặt để đặt thời gian làm mới bảng thông tin của mình.

ESP8266 gửi bài đọc BME280 đến dữ liệu InfluxDB Tạo Bảng điều khiển 5

Nếu hình dung cả ba dưới dạng đồ thị:

ESP8266 gửi bài đọc BME280 đến dữ liệu InfluxDB Tạo Bảng điều khiển 6

Bài viết cùng chuyên mục

NHANH

NHANH

Vì Đổi mới liên tục nên Nhanh hơn

ĐÚNG

ĐÚNG

Coi trọng và ưu tiên việc làm Đúng

ĐỦ

ĐỦ

Tìm và mua Đủ Đơn hàng hơn

KỊP THỜI

KỊP THỜI

Hiệu suất tối ưu bởi Kịp Thời hơn