Αισθητήρας BMP280 ατμοσφαιρικής πίεσης και θερμοκρασίας

και
Η μονάδα ψηφιακού αισθητήρα πίεσης BMP280 έχει 6 ακίδες: VCC, GND, SCL, SDA, CSB και SDO. Όλες οι ακίδες αυτής της μονάδας αισθητήρα είναι ψηφιακές, εκτός από το VCC και τη γείωση. Η έξοδος ακίδων του αισθητήρα βαρομετρικής πίεσης και θερμοκρασίας BMP280 φαίνεται παρακάτω:
Υλοποίηση κώδικα
Ο κώδικας για τη διασύνδεση του αισθητήρα BMP280 με το Arduino φαίνεται παρακάτω. Ο κώδικας είναι πολύ απλός και εύκολος στην κατανόηση επειδή χρησιμοποιούμε τη βιβλιοθήκη Adafruit BMP280, η οποία κάνει τη διαδικασία κωδικοποίησης πολύ εύκολη. Επομένως, πριν ξεκινήσουμε τη διαδικασία κωδικοποίησης, πρέπει να εγκαταστήσουμε τη βιβλιοθήκη. Για να το κάνετε αυτό, μεταβείτε στην ενότητα Διαχείριση βιβλιοθήκης του Arduino και αναζητήστε το BMP280. Θα βρείτε τη βιβλιοθήκη Adafruit BMP280. Κάντε κλικ στην εγκατάσταση και θα σας ζητηθεί να εγκαταστήσετε όλες τις εξαρτήσεις. Κάντε κλικ στο κουμπί Εγκατάσταση όλων και η βιβλιοθήκη θα πρέπει να εγκατασταθεί.
Ο κώδικας
Στη συνάρτηση setup, όπως πάντα, αρχικοποιούμε τη σειριακή μνήμη για εντοπισμό σφαλμάτων. Ορίσαμε επίσης μια μεταβλητή κατάστασης για να ελέγξουμε εάν η μέθοδος begin της παρουσίας BMP μπόρεσε να επικοινωνήσει με τη μονάδα ή όχι. Εάν η διαδικασία επικοινωνίας επιστρέψει ανεπιτυχής, εκτυπώνουμε κάποιο μήνυμα εντοπισμού σφαλμάτων στο παράθυρο της σειριακής οθόνης.
/***************************************************************************
This is a library for the BMP280 humidity, temperature & pressure sensor
Designed specifically to work with the Adafruit BMP280 Breakout
----> http://www.adafruit.com/products/2651
These sensors use I2C or SPI to communicate, 2 or 4 pins are required
to interface.
Adafruit invests time and resources providing this open source code,
please support Adafruit andopen-source hardware by purchasing products
from Adafruit!
Written by Limor Fried & Kevin Townsend for Adafruit Industries.
BSD license, all text above must be included in any redistribution
***************************************************************************/
#include <Wire.h>
#include <SPI.h>
#include <Adafruit_BMP280.h>
#define BMP280_ADDRESS 0x76
Adafruit_BMP280 bmp; // I2C
void setup() {
Serial.begin(9600);
while ( !Serial ) delay(100); // wait for native usb
Serial.println(F("BMP280 test"));
unsigned status;
status = bmp.begin(BMP280_ADDRESS);
if (!status) {
Serial.println(F("Could not find a valid BMP280 sensor, check wiring or "
"try a different address!"));
Serial.print("SensorID was: 0x"); Serial.println(bmp.sensorID(),16);
Serial.print(" ID of 0xFF probably means a bad address, a BMP 180 or BMP 085\n");
Serial.print(" ID of 0x56-0x58 represents a BMP 280,\n");
Serial.print(" ID of 0x60 represents a BME 280.\n");
Serial.print(" ID of 0x61 represents a BME 680.\n");
while (1) delay(10);
}
/* Default settings from datasheet. */
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
Adafruit_BMP280::FILTER_X16, /* Filtering. */
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
}
void loop() {
Serial.print(F("Temperature = "));
Serial.print(bmp.readTemperature());
Serial.println(" *C");
Serial.print(F("Pressure = "));
Serial.print(bmp.readPressure());
Serial.println(" Pa");
Serial.print(F("Approx altitude = "));
Serial.print(bmp.readAltitude(1013.25)); /* Adjusted to local forecast! */
Serial.println(" m");
Serial.println();
delay(2000);
}
Σχόλια
Δημοσίευση σχολίου