Ein Thermometer für alle Fälle

From phyphox
Revision as of 07:33, 1 September 2023 by Nabla (talk | contribs) (Created page with "{{Infobox Experiment | Name = Ein Thermometer für alle Fälle | Category = Arduino library experiments | Sensors = DS18B20 }} Text File:Amontons_Glas_1.jpg ==Aufba...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Ein Thermometer für alle Fälle
Experiment Ein Thermometer für alle Fälle
Category Arduino library experiments
Used sensors DS18B20


Text

Amontons Glas 1.jpg


Aufbau

Der Temperatursensor liefert seine Daten über den OneWire-Bus: 3V3 – Vin, Gnd – Gnd, 4 - Datenbus.


Programmierung

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("Baro_Therm_01") festgelegt). Anschließend kann über das Plus-Symbol in phyphox ein Bluetooth-Experiment hinzugefügt werden, das Experiment wird dann automatisch geladen.


#include <Wire.h>
#include "Adafruit_MPRLS.h"
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
#include <phyphoxBle.h>
float p;
#define RESET_PIN -1
#define EOC_PIN -1
Adafruit_MPRLS mpr = Adafruit_MPRLS(RESET_PIN, EOC_PIN);
void setup() {
PhyphoxBLE::start("Baro_Therm_01");
//Experiment
PhyphoxBleExperiment experiment;
experiment.setTitle("Baro_Therm_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);
PhyphoxBleExperiment::Value Value2;
Value2.setLabel("Theta = ");
Value2.setUnit("°C");
Value2.setChannel(2);
//Graph
PhyphoxBleExperiment::Graph graph1;
graph1.setLabel("Druck");
graph1.setUnitX("s");
graph1.setUnitY("hPa");
graph1.setLabelX("time");
graph1.setLabelY("p");
graph1.setChannel(0,1);
PhyphoxBleExperiment::Graph graph2;
graph2.setLabel("Temperatur");
graph2.setUnitX("s");
graph2.setUnitY("°C");
graph2.setLabelX("time");
graph2.setLabelY("Theta");
graph2.setChannel(0,2);
PhyphoxBleExperiment::Graph graph3;
graph3.setLabel("p over Theta");
graph3.setUnitX("°C");
graph3.setUnitY("hPa");
graph3.setLabelX("Theta");
graph3.setLabelY("p");
graph3.setStyle("dots");
graph3.setChannel(2,1);
view.addElement(graph1);
view.addElement(Value1);
view.addElement(graph2);
view.addElement(Value2);
view.addElement(graph3);
experiment.addView(view);
PhyphoxBLE::addExperiment(experiment);
Serial.begin(38400);
sensors.begin();
mpr.begin();
}
void loop() {
p=0;
for(int i=0;i<37;i++){
p+=mpr.readPressure();
delay(10);
}
p=p/37;
sensors.requestTemperatures();
float T = sensors.getTempCByIndex(0);
PhyphoxBLE::write(p,T);
Serial.print(p);
Serial.print(" ");
Serial.println(T);
delay(10);
}


Arbeitsmaterialien