An external pressure sensor
Experiment | An external pressure sensor |
---|---|
Category | Arduino library experiments |
Used sensors | MPRLS |
The pressure sensor MPRLS enables absolute pressure measurements in the range 0 to 25 PSI (1.72 bar). The resolution is so good that a difference in altitude (in air) of 1 m can be resolved. The barometric height step at sea level is 1 hPa at 8 m. If you connect the sensor with a thin hose, you can also measure the gravitational pressure in liquids very well as shown in the picture above. (Here the sensor data were sent to a PC via a serial connection.)
Setup
As usual with I2C sensors, the wiring is simple: 3V3 - Vin, Gnd - Gnd, SCL - 22, SDA -21. So no picture was taken before the sensor was taped on with mirror tape and everything was packaged with transparent shrink tube.
Programming
The definitions for the ESP32 and the phyphox library must be installed. See the video at Category: Arduino library experiments.
It must be ensured that each ESP32 has its own ID (this is defined in PhyphoxBLE::start("Barometer_01")). A Bluetooth experiment can then be added via the plus symbol in phyphox, the experiment will then be loaded automatically.
#include <Wire.h> #include "Adafruit_MPRLS.h" #include <phyphoxBle.h> float Messwert; #define RESET_PIN -1 #define EOC_PIN -1 Adafruit_MPRLS mpr = Adafruit_MPRLS(RESET_PIN, EOC_PIN); void setup() { PhyphoxBLE::start("Barometer_01"); //Experiment PhyphoxBleExperiment experiment; experiment.setTitle("Barometer_01"); experiment.setCategory("Arduino Experiments"); experiment.setDescription("Plot the pressure over time."); //View PhyphoxBleExperiment::View view; //Value PhyphoxBleExperiment::Value Value1; Value1.setLabel("p = "); Value1.setUnit("hPa"); Value1.setChannel(1); //Graph PhyphoxBleExperiment::Graph graph; graph.setLabel("Druck"); graph.setUnitX("s"); graph.setUnitY("hPa"); graph.setLabelX("time"); graph.setLabelY("p"); view.addElement(graph); view.addElement(Value1); experiment.addView(view); PhyphoxBLE::addExperiment(experiment); Serial.begin(38400); mpr.begin(); } void loop() { Messwert=0; for(int i=0;i<37;i++){ Messwert+=mpr.readPressure(); delay(10); } Messwert=Messwert/37; PhyphoxBLE::write(Messwert); Serial.println(Messwert); delay(10); }