====== LamaPLC: DPS Infineon Temperature/Pressure sensors with I2C communication ======
{{ :sensor:dps310_4.png?180|DPS 310}}
The Infineon DPS310 is a precise digital sensor that measures air pressure and temperature, known for its accuracy, low power consumption, and suitability for applications such as indoor navigation and drone navigation. It is popular in hobbyist electronics projects using platforms such as Arduino and Raspberry Pi.
* **Integrated Temperature Compensation:** The sensor's capacitive sensing principle and internal signal processor, with individual calibration coefficients, ensure high precision under temperature variations.
* **Operating Modes:** It offers Command (manual), Background (automatic), and Standby operating modes for power management flexibility.
* **Built-in FIFO:** An internal FIFO (First-In, First-Out) can store up to 32 measurement results, reducing the host processor's polling rate.
* **Versatile Applications:** Common uses include indoor navigation (floor detection), health and sports (elevation tracking), outdoor navigation (GPS improvement), weather stations, and drone flight stability/height control.
^Type of \\ measurement ^Model^Power \\ voltage ^Measurement, range, accuracy^Communication^Note|
|{{anchor:dps310}}{{:sensor:t.png|Temperature sensor}}{{:sensor:p.png|Pressure sensor}}\\ Barometric Pressure Sensor |Infineon \\ **DPS310** {{:sensor:dps310.png?100|DPS310}}|**3.3V**|Supply voltage: VDDIO: 1.2 .. 3.6 V \\ Operation range: Pressure: 300 .. 1200 hPa. Temperature: -40 – 85 °C \\ Pressure sensor precision: ± 0.002 hPa (or ±0.02 m) (high precision mode) \\ Relative accuracy: ± 0.06 hPa (or ±0.5 m) \\ Absolute accuracy: ± 1 hPa (or ±8 m) \\ Temperature accuracy: ± 0.5°C \\ Pressure temperature sensitivity: 0.5Pa/K|[[com:basic_i2c|I²C]] or [[com:basic_spi|SPI]] \\ I2C default address: **0x76** (SDO←GND) or **0x77** (SDO←VDDIO)|Measurement time: Typical: 27.6 ms|
===== Moduls =====
^Type of \\ measurement ^Name^Pics^Sensors^Description|
|{{anchor:dps310_modul}}{{:sensor:t.png|Temperature measuring}}{{:sensor:p.png|Pressure measuring}} \\ - Barometric Pressure Sensor|**Pressure Shield2Go**|{{:sensor:dps310_4.png?150|Pressure Shield2Go}}|[[#dps310|DPS310]]|[[com:basic_i2c|I²C]] or [[com:basic_spi|SPI]] \\ I2C default address: **0x76** (SDO←GND) or **0x77** (SDO←VDDIO) \\ ✔ Arduino library|
{{page>:tarhal}}
==== Arduino & DPS310 ====
The DPS310 is a high-precision barometric pressure and temperature sensor. To use it with Arduino, the **Adafruit DPS310 library** is the most common choice, as it provides a simplified //"Unified Sensor"// interface.
**Wiring (I²C Mode)**
Connecting via I²C is the easiest method.
* **VIN:** 3.3V or 5V (most breakout boards have a built-in regulator).
* **GND:** Ground.
* **SCL (Clock):** Arduino SCL (Pin A5 on Uno).
* **SDA (Data):** Arduino SDA (Pin A4 on Uno).
* **Address:** Default is **0x77**. Pull the SDO pin to GND to change it to 0x76.
**Arduino Example Code**
You must install the **Adafruit DPS310**, **Adafruit BusIO**, and **Adafruit Unified Sensor** libraries via the Arduino Library Manager.
#include
Adafruit_DPS310 dps;
void setup() {
Serial.begin(115200);
while (!Serial) delay(10);
Serial.println("DPS310 Test");
if (!dps.begin_I2C()) { // Default address is 0x77
Serial.println("Failed to find DPS310 sensor!");
while (1) yield();
}
Serial.println("DPS310 Found!");
// Configure sensor for high precision
dps.configurePressure(DPS310_64HZ, DPS310_64SAMPLES);
dps.configureTemperature(DPS310_64HZ, DPS310_64SAMPLES);
}
void loop() {
sensors_event_t temp_event, pressure_event;
// Wait until data is ready
if (dps.temperatureAvailable() && dps.pressureAvailable()) {
dps.getEvents(&temp_event, &pressure_event);
Serial.print("Temperature: ");
Serial.print(temp_event.temperature);
Serial.println(" °C");
Serial.print("Pressure: ");
Serial.print(pressure_event.pressure);
Serial.println(" hPa");
Serial.println();
}
delay(1000);
}
**Alternative Libraries**
If you are using the Infineon Shield2Go or Seeed Studio Grove versions, you might prefer their specific libraries:
* **Infineon XENSIV:** Search for //XENSIV Digital Pressure Sensor// in the library manager.
* **Seeed Studio:** Use the Dps310 library which uses slightly different syntax, such as //Dps310PressureSensor.measurePressureOnce()//.
===== I²C topics on lamaPLC =====
{{topic>i2c}}
\\
\\
{{tag>DPS310 Infineon temperature pressure sensor arduino i2c communication code}}
This page has been accessed for: Today: {{counter|today}}, Until now: {{counter|total}}