Difference between revisions of "Barometrische Höhenstufe"
(9 intermediate revisions by 2 users not shown) | |||
Line 4: | Line 4: | ||
| Sensors = BMP581 | | Sensors = BMP581 | ||
}} | }} | ||
− | |||
− | |||
− | |||
Der Drucksensor BMP581 ist für die Messung atmosphärischer Drücke ausgelegt. Er misst sehr schnell und hat eine so gute Auflösung, dass sich Höhendifferenz von nur wenigen Zentimetern auflösen lassen. Die barometrische Höhenstufe auf Meeresniveaus beträgt 1 hPa auf 8 m. | Der Drucksensor BMP581 ist für die Messung atmosphärischer Drücke ausgelegt. Er misst sehr schnell und hat eine so gute Auflösung, dass sich Höhendifferenz von nur wenigen Zentimetern auflösen lassen. Die barometrische Höhenstufe auf Meeresniveaus beträgt 1 hPa auf 8 m. | ||
+ | <gallery widths=500px heights=400px> | ||
+ | File:IMG_3042.jpg|Aufbau | ||
+ | </gallery> | ||
==Setup== | ==Setup== | ||
− | Die Verdrahtung ist wie üblich bei I2C-Sensoren trivial: 3V3 – Vin, | + | Die Verdrahtung ist wie üblich bei I2C-Sensoren trivial: 3V3 – Vin, GND – GND, SCL – GPIO22, SDA – GPIO21. |
==Programming== | ==Programming== | ||
Line 17: | Line 17: | ||
Es ist darauf zu achten, dass jeder ESP32 eine eigene Kennung hat (diese wird in ''PhyphoxBLE::start("Barometer_01")'' festgelegt). Anschließend kann über das Plus-Symbol in phyphox ein Bluetooth-Experiment hinzugefügt werden, das Experiment wird dann automatisch geladen. | Es ist darauf zu achten, dass jeder ESP32 eine eigene Kennung hat (diese wird in ''PhyphoxBLE::start("Barometer_01")'' festgelegt). Anschließend kann über das Plus-Symbol in phyphox ein Bluetooth-Experiment hinzugefügt werden, das Experiment wird dann automatisch geladen. | ||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
− | |||
#include <phyphoxBle.h> | #include <phyphoxBle.h> | ||
#include <Wire.h> | #include <Wire.h> | ||
Line 32: | Line 28: | ||
void setup() | void setup() | ||
{ | { | ||
− | + | PhyphoxBLE::start("Barometer_01"); //Start the BLE server | |
− | //Experiment | + | //Experiment |
PhyphoxBleExperiment experiment; | PhyphoxBleExperiment experiment; | ||
Line 56: | Line 52: | ||
graph.setLabelX("time"); | graph.setLabelX("time"); | ||
graph.setLabelY("Druck"); | graph.setLabelY("Druck"); | ||
+ | graph.setChannel(0,1); | ||
view.addElement(graph); //Attach graph to view | view.addElement(graph); //Attach graph to view | ||
Line 77: | Line 74: | ||
bmp5_sensor_data data = {0,0}; | bmp5_sensor_data data = {0,0}; | ||
int8_t err = pressureSensor.getSensorData(&data); | int8_t err = pressureSensor.getSensorData(&data); | ||
− | // | + | //Serial.print(data.temperature); |
float p = data.pressure/100; | float p = data.pressure/100; | ||
− | + | Serial.println(p)/100; | |
− | + | PhyphoxBLE::write(p); | |
delay(10); | delay(10); | ||
} | } | ||
+ | </pre> | ||
+ | |||
+ | ==Arbeitsmaterialien== | ||
+ | Ein mögliches Schülerarbeitsblatt zur barometrischen Höhenstufe, wo die Höhe eines Treppenhauses bestimmt werden soll. | ||
+ | (aktuelle Sicherheitsrichtlinien nach RISU beachten!) | ||
+ | |||
+ | |||
+ | [[file:AB_Barometrische_Höhenstufe.pdf]] | ||
− | |||
[[Category:Arduino library experiments]] | [[Category:Arduino library experiments]] |
Latest revision as of 11:18, 7 November 2023
Experiment | Druckmessungen |
---|---|
Category | Arduino library experiments |
Used sensors | BMP581 |
Der Drucksensor BMP581 ist für die Messung atmosphärischer Drücke ausgelegt. Er misst sehr schnell und hat eine so gute Auflösung, dass sich Höhendifferenz von nur wenigen Zentimetern auflösen lassen. Die barometrische Höhenstufe auf Meeresniveaus beträgt 1 hPa auf 8 m.
Setup
Die Verdrahtung ist wie üblich bei I2C-Sensoren trivial: 3V3 – Vin, GND – GND, SCL – GPIO22, SDA – GPIO21.
Programming
Der ESP32 wird über die Arduino IDE programmiert. Es müssen die Definitionen für den ESP32 und die phyphox-Bibliothek installiert sein. Siehe dazu das Video unter Category: Arduino library experiments.
Es ist darauf zu achten, dass jeder ESP32 eine eigene Kennung hat (diese wird in PhyphoxBLE::start("Barometer_01") festgelegt). Anschließend kann über das Plus-Symbol in phyphox ein Bluetooth-Experiment hinzugefügt werden, das Experiment wird dann automatisch geladen.
#include <phyphoxBle.h> #include <Wire.h> #include "SparkFun_BMP581_Arduino_Library.h" BMP581 pressureSensor; uint8_t i2cAddress = BMP581_I2C_ADDRESS_DEFAULT; // 0x47 void setup() { PhyphoxBLE::start("Barometer_01"); //Start the BLE server //Experiment PhyphoxBleExperiment experiment; experiment.setTitle("Barometer"); 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("Druck"); graph.setChannel(0,1); view.addElement(graph); //Attach graph to view view.addElement(Value1); experiment.addView(view); //Attach view to experiment PhyphoxBLE::addExperiment(experiment); //Attach experiment to server Serial.begin(115200); Wire.begin(); pressureSensor.beginI2C(i2cAddress); bmp5_iir_config config = { .set_iir_p = BMP5_IIR_FILTER_COEFF_127, // Set filter coefficient .shdw_set_iir_p = BMP5_ENABLE, // Store filtered data in data registers .iir_flush_forced_en = BMP5_DISABLE // Flush filter in forced mode }; } void loop() { bmp5_sensor_data data = {0,0}; int8_t err = pressureSensor.getSensorData(&data); //Serial.print(data.temperature); float p = data.pressure/100; Serial.println(p)/100; PhyphoxBLE::write(p); delay(10); }
Arbeitsmaterialien
Ein mögliches Schülerarbeitsblatt zur barometrischen Höhenstufe, wo die Höhe eines Treppenhauses bestimmt werden soll. (aktuelle Sicherheitsrichtlinien nach RISU beachten!)