Compare commits

...

2 Commits

Author SHA1 Message Date
Mario Pesch
0f0bd2aea4 update output 2023-05-08 14:17:18 +02:00
Mario Pesch
e685724a1f add bn880 gps 2023-05-04 15:12:12 +02:00
5 changed files with 104 additions and 3 deletions

3
.env
View File

@ -1,4 +1,5 @@
REACT_APP_COMPILER_URL=https://compiler.sensebox.de
#REACT_APP_COMPILER_URL=https://compiler.sensebox.de
REACT_APP_COMPILER_URL=http://localhost:3000
REACT_APP_BOARD=sensebox-mcu
REACT_APP_BLOCKLY_API=https://api.blockly.sensebox.de

View File

@ -582,4 +582,47 @@ Blockly.Blocks["sensebox_sensor_dps310"] = {
this.setTooltip(Blockly.Msg.senseBox_sps30_tooltip);
this.setHelpUrl(Blockly.Msg.senseBox_sps30_helpurl);
},
};
};
/**
* GPS Module BN880
*
*/
Blockly.Blocks["sensebox_gps_bn880"] = {
init: function () {
var dropdownOptions = [
[Blockly.Msg.senseBox_gps_lat, "latitude"],
[Blockly.Msg.senseBox_gps_lng, "longitude"],
[Blockly.Msg.senseBox_gps_alt, "altitude"],
[Blockly.Msg.senseBox_gps_timeStamp, "timestamp"],
];
this.appendDummyInput().appendField("GPS Modul BN-880");
this.appendDummyInput()
.setAlign(Blockly.ALIGN_RIGHT)
.appendField(Blockly.Msg.senseBox_value)
.appendField(new Blockly.FieldDropdown(dropdownOptions), "dropdown");
this.appendDummyInput()
.setAlign(Blockly.ALIGN_RIGHT)
.appendField("Serial Port:")
.appendField(
new Blockly.FieldDropdown(
selectedBoard().serialSensors),
"serial"
);
this.setOutput(true);
this.setColour(getColour().sensebox);
this.setTooltip(Blockly.Msg.senseBox_gps_tooltip);
},
};
Blockly.Blocks["sensebox_gps_isValid"] = {
init: function () {
this.appendDummyInput().appendField("GPS Modul is valid");
this.setOutput(true, Types.BOOLEAN.typeName);
this.setColour(getColour().sensebox);
this.setTooltip(Blockly.Msg.senseBox_gps_tooltip);
},
};

View File

@ -753,3 +753,58 @@ if (time_startsps > time_actualsps + intervalsps) {
var code = `m.mc_${dropdown_name}`;
return [code, Blockly.Arduino.ORDER_ATOMIC];
};
/**
* GPS Module
*
*/
Blockly.Arduino.sensebox_gps_bn880 = function () {
var dropdown = this.getFieldValue("dropdown");
var serial = this.getFieldValue("serial");
Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
Blockly.Arduino.libraries_["tinygps_library"] =
"#include <TinyGPSPlus.h> // http://librarymanager/All#SparkFun_u-blox_GNSS_Arduino_Library";
Blockly.Arduino.definitions_["TinyGPS"] = "TinyGPSPlus gps;";
Blockly.Arduino.setupCode_["init_tinygps"] = `
${serial}.begin(9600); // BN880
while (gps.location.lat() == 0.0 && gps.location.lng() == 0.0);
`
var code = "";
switch (dropdown) {
case "latitude":
code = "gps.location.lat()";
break;
case "longitude":
code = "gps.location.lng()";
break;
case "altitude":
code = "gps.altitude.meters()";
break;
case "timestamp":
Blockly.Arduino.variables_["define_tsBuffer"] = `char tsBuffer[21];`
Blockly.Arduino.codeFunctions_["getTimeStamp()"] = `
char *getTimeStamp()
{
memset(tsBuffer, 0, sizeof(tsBuffer));
if ((gps.date.isValid() == true) && (gps.time.isValid() == true))
{
sprintf(tsBuffer, "%04d-%02d-%02dT%02d:%02d:%02dZ",
gps.date.year(), gps.date.month(), gps.date.day(), gps.time.hour(), gps.time.minute(), gps.time.second());
}
return tsBuffer;
}
`;
code = "getTimeStamp()";
break;
default:
code = "";
}
return [code, Blockly.Arduino.ORDER_ATOMIC];
};
Blockly.Arduino.sensebox_gps_isValid = function () {
var code ="gps.location.isValid()";
return [code, Blockly.Arduino.ORDER_ATOMIC];
};

View File

@ -104,4 +104,4 @@ export const getCompatibleTypes = (type) => {
return compatibleTypes[type];
};
export const VARIABLE_TYPES = [['SHORT_NUMBER', 'char'], ['NUMBER', 'int'], ['DECIMAL', 'long'], ['TEXT', 'String'], ['CHARACTER', 'char'], ['BOOLEAN', 'boolean'], ['NULL', 'void'], ['UNDEF', 'undefined']];
export const VARIABLE_TYPES = [['NUMBER', 'int'], ['DECIMAL', 'long'], ['TEXT', 'String'], ['CHARACTER', 'char'], ['BOOLEAN', 'boolean'], ['NULL', 'void'], ['UNDEF', 'undefined']];

View File

@ -640,6 +640,8 @@ class Toolbox extends React.Component {
>
<Block type="init_serial_monitor"></Block>
<Block type="print_serial_monitor"></Block>
<Block type="sensebox_gps_bn880" />
<Block type="sensebox_gps_isValid" />
</Category>
<Category name={Blockly.Msg.toolbox_io} colour={getColour().io}>
<Block type="io_digitalwrite"></Block>