add DPS310 Sensor

closes #137
This commit is contained in:
Mario Pesch 2022-01-19 11:39:58 +01:00
parent d4ad3ad915
commit 6f9e4bd79f
5 changed files with 110 additions and 3 deletions

View File

@ -514,3 +514,54 @@ Blockly.Blocks["sensebox_soundsensor_dfrobot"] = {
this.setHelpUrl(Blockly.Msg.senseBox_soundsensor_dfrobot_helpurl); this.setHelpUrl(Blockly.Msg.senseBox_soundsensor_dfrobot_helpurl);
}, },
}; };
/**
* Infineon DPS310 Pressure Sensor
*
*/
Blockly.Blocks["sensebox_sensor_dps310"] = {
init: function () {
var dropdownOptions = [
[Blockly.Msg.senseBox_pressure, "Pressure"],
[Blockly.Msg.senseBox_temp, "Temperature"],
[Blockly.Msg.senseBox_gps_alt, "Altitude"],
];
var dropdown = new Blockly.FieldDropdown(dropdownOptions, function (
option
) {
var input =
option === "Pressure" ||
option === "Temperature" ||
option === "Altitude";
this.sourceBlock_.updateShape_(input);
});
this.appendDummyInput().appendField(Blockly.Msg.senseBox_sensor_dps310);
this.appendDummyInput()
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.senseBox_value)
.appendField(dropdown, "NAME");
this.setColour(getColour().sensebox);
this.setOutput(true, Types.DECIMAL.typeName);
this.setTooltip(Blockly.Msg.senseBox_sensor_dps310_tooltip);
this.setHelpUrl(Blockly.Msg.senseBox_sensor_dps310_helpurl);
this.getField("NAME").setValidator(
function (val) {
this.updateShape_(val === "Altitude");
}.bind(this)
);
},
updateShape_(isAltitude) {
if (isAltitude) {
if (this.getInput("extraField") == null) {
this.appendDummyInput("extraField")
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.senseBox_pressure_referencePressure)
.appendField(new Blockly.FieldTextInput("1013"), "referencePressure")
.appendField(Blockly.Msg.senseBox_pressure_referencePressure_dim);
}
} else {
this.removeInput("extraField", true);
}
},
};

View File

@ -644,3 +644,42 @@ float getSoundValue(){
var code = "getSoundValue()"; var code = "getSoundValue()";
return [code, Blockly.Arduino.ORDER_ATOMIC]; return [code, Blockly.Arduino.ORDER_ATOMIC];
}; };
/**
* Infineon DPS310 Pressure Sensor
*
*/
Blockly.Arduino.sensebox_sensor_dps310 = function () {
var dropdown_name = this.getFieldValue("NAME");
var code = "";
var referencePressure = this.getFieldValue("referencePressure");
Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
Blockly.Arduino.libraries_[
"adafruit_dps310"
] = `#include <Adafruit_DPS310.h>`;
Blockly.Arduino.definitions_["define_dps"] = "Adafruit_DPS310 dps;";
Blockly.Arduino.setupCode_["dps_begin"] = "dps.begin_I2C(0x76);";
Blockly.Arduino.setupCode_["dps_configuration"] = `
dps.configurePressure(DPS310_64HZ, DPS310_64SAMPLES);
dps.configureTemperature(DPS310_64HZ, DPS310_64SAMPLES);
`;
Blockly.Arduino.loopCodeOnce_["dps_events"] =
"sensors_event_t temp_event, pressure_event;";
Blockly.Arduino.loopCodeOnce_["dps_getEvents"] =
"dps.getEvents(&temp_event, &pressure_event);";
switch (dropdown_name) {
case "Temperature":
code = "temp_event.temperature";
break;
case "Pressure":
code = "pressure_event.pressure";
break;
case "Altitude":
code = "dps.readAltitude(" + referencePressure + ")";
break;
default:
code = "";
}
return [code, Blockly.Arduino.ORDER_ATOMIC];
};

View File

@ -11,11 +11,20 @@ export const SENSORS = {
senseBox_pressure_sensor: "Luftdruck-/Temperatursensor (BMP280)", senseBox_pressure_sensor: "Luftdruck-/Temperatursensor (BMP280)",
senseBox_pressure: "Luftdruck in hPa", senseBox_pressure: "Luftdruck in hPa",
senseBox_pressure_dimension: "Luftdruck in hPa", senseBox_pressure_dimension: "Luftdruck in hPa",
senseBox_pressure_tip: senseBox_pressure_tooltip:
"Schließe den Sensor an einen der 5 **I2C-Anschlüsse** an. Der Sensor gibt dir den Messwert für den Luftdruck in hPa. Um die korrekte Höhe über NN zu berechnen benötigt der Sensor einen aktuellen Referenzwert.", "Schließe den Sensor an einen der 5 **I2C-Anschlüsse** an. Der Sensor gibt dir den Messwert für den Luftdruck in hPa. Um die korrekte Höhe über NN zu berechnen benötigt der Sensor einen aktuellen Referenzwert.",
senseBox_pressure_referencePressure: "Luftdruck auf NN", senseBox_pressure_referencePressure: "Luftdruck auf NN",
senseBox_pressure_referencePressure_dim: "hPa", senseBox_pressure_referencePressure_dim: "hPa",
senseBox_pressure_helpurl: "", senseBox_pressure_helpurl:
"https://docs.sensebox.de/hardware/sensoren-luftdruck-temperatur/",
/**
* DPS310
*/
senseBox_sensor_dps310: "Luftdruck-/Temperatursensor (DPS310)",
senseBox_sensor_dps310_tooltip:
"Schließe den Sensor an einen der 5 **I2C-Anschlüsse** an. Der Sensor gibt dir den Messwert für den Luftdruck in hPa. Um die korrekte Höhe über NN zu berechnen benötigt der Sensor einen aktuellen Referenzwert.",
senseBox_sensor_dps310_helpurl: "",
/** /**
* Mikro * Mikro

View File

@ -11,12 +11,19 @@ export const SENSORS = {
senseBox_pressure_sensor: "Airpressure/Temperature Sensor (BMP280)", senseBox_pressure_sensor: "Airpressure/Temperature Sensor (BMP280)",
senseBox_pressure: "Airpressure in hPa", senseBox_pressure: "Airpressure in hPa",
senseBox_pressure_dimension: "Airpressure in hPa", senseBox_pressure_dimension: "Airpressure in hPa",
senseBox_pressure_tip: senseBox_pressure_tooltip:
"Connect the sensor to one of the 5 **I2C ports**. The sensor gives you the measured value for the air pressure in hPa. To calculate the correct altitude above sea level the sensor needs a current reference value.", "Connect the sensor to one of the 5 **I2C ports**. The sensor gives you the measured value for the air pressure in hPa. To calculate the correct altitude above sea level the sensor needs a current reference value.",
senseBox_pressure_referencePressure: "Pressure at Sea Level", senseBox_pressure_referencePressure: "Pressure at Sea Level",
senseBox_pressure_referencePressure_dim: "hPa", senseBox_pressure_referencePressure_dim: "hPa",
senseBox_pressure_helpurl: "", senseBox_pressure_helpurl: "",
/**
* DPS310
*/
senseBox_sensor_dps310: "Airpressure/Temperature Sensor (DPS310)",
senseBox_sensor_dps310_tooltip:
"Connect the sensor to one of the 5 **I2C ports**. The sensor gives you the measured value for the air pressure in hPa. To calculate the correct altitude above sea level the sensor needs a current reference value.",
/** /**
* Mikro * Mikro
*/ */

View File

@ -65,6 +65,7 @@ class Toolbox extends React.Component {
<Block type="sensebox_sensor_bmx055_accelerometer" /> <Block type="sensebox_sensor_bmx055_accelerometer" />
<Block type="sensebox_sensor_sds011" /> <Block type="sensebox_sensor_sds011" />
<Block type="sensebox_sensor_pressure" /> <Block type="sensebox_sensor_pressure" />
<Block type="sensebox_sensor_dps310" />
<Block type="sensebox_sensor_bme680_bsec" /> <Block type="sensebox_sensor_bme680_bsec" />
<Block type="sensebox_scd30" /> <Block type="sensebox_scd30" />
<Block type="sensebox_gps" /> <Block type="sensebox_gps" />