diff --git a/boards/default_src/micropython/blocks/ai_local.js b/boards/default_src/micropython/blocks/ai_local.js index 8bb3f7f1..fa166923 100644 --- a/boards/default_src/micropython/blocks/ai_local.js +++ b/boards/default_src/micropython/blocks/ai_local.js @@ -419,7 +419,7 @@ export const SCREEN_SHOW_CAM_GRAPH_SHOOT = { this.appendValueInput("SUB") .appendField(Blockly.Msg.OLEDDISPLAY + Blockly.Msg.MIXLY_MICROBIT_IMAGE) this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); this.setPreviousStatement(true); this.setNextStatement(true); this.setInputsInline(true); @@ -441,7 +441,7 @@ export const SCREEN_DISPLAY_IMAGE = { ['270','270'] ]),'angle'); this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); this.setPreviousStatement(true); this.setNextStatement(true); this.setInputsInline(true); @@ -844,6 +844,8 @@ export const GET_QR_CODE_RECOGNITION_DATA = { .setCheck("var"); this.appendDummyInput() .appendField(Blockly.Msg.MIXLY_GET_QR_CODE_RECOGNITION_RESULT); + this.appendValueInput('boolean') + .appendField( Blockly.Msg.MIXLY_synchronize); this.setOutput(true); this.setInputsInline(true); } @@ -852,58 +854,46 @@ export const GET_QR_CODE_RECOGNITION_DATA = { export const GET_COLOR_DETECTION_NUM = { init: function () { this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') + this.appendValueInput('SUB') .setCheck("var"); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_RECOGNITION + Blockly.Msg.MIXLY_HOW_MUCH) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.COLOUR_RGB_RED,"0"], - [Blockly.Msg.COLOUR_RGB_ORANGE,"1"], - [Blockly.Msg.COLOUR_RGB_YELLOW,"2"], - [Blockly.Msg.COLOUR_RGB_GREEN,"3"], - [Blockly.Msg.COLOUR_RGB_CYAN,"4"], - [Blockly.Msg.COLOUR_RGB_BLUE,"5"], - [Blockly.Msg.COLOUR_RGB_PURPLE,"6"], - [Blockly.Msg.COLOUR_RGB_WHITE,"7"], - [Blockly.Msg.COLOUR_RGB_GREY,"8"], - [Blockly.Msg.MIXLY_CUSTOM_STUDY,"9"] - ]),'color'); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_Pixel_block); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_HOW_MUCH + Blockly.Msg.MIXLY_REGISTER + Blockly.Msg.HTML_COLOUR ) + this.appendValueInput('boolean') + .appendField( Blockly.Msg.MIXLY_synchronize); this.setOutput(true); this.setInputsInline(true); // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); } }; -export const GET_COLOR_DETECTION_LOCATION = { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput('NO') - .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.COLOUR_RGB_RED,"0"], - [Blockly.Msg.COLOUR_RGB_ORANGE,"1"], - [Blockly.Msg.COLOUR_RGB_YELLOW,"2"], - [Blockly.Msg.COLOUR_RGB_GREEN,"3"], - [Blockly.Msg.COLOUR_RGB_CYAN,"4"], - [Blockly.Msg.COLOUR_RGB_BLUE,"5"], - [Blockly.Msg.COLOUR_RGB_PURPLE,"6"], - [Blockly.Msg.COLOUR_RGB_WHITE,"7"], - [Blockly.Msg.COLOUR_RGB_GREY,"8"], - [Blockly.Msg.MIXLY_CUSTOM_STUDY,"9"] - ]),'color'); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_Pixel_block + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); - this.setOutput(true); - this.setInputsInline(true); - // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); - } -}; +// export const GET_COLOR_DETECTION_LOCATION = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendValueInput('NO') +// .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1); +// this.appendDummyInput() +// .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2) +// .appendField(new Blockly.FieldDropdown([ +// [Blockly.Msg.COLOUR_RGB_RED,"0"], +// [Blockly.Msg.COLOUR_RGB_ORANGE,"1"], +// [Blockly.Msg.COLOUR_RGB_YELLOW,"2"], +// [Blockly.Msg.COLOUR_RGB_GREEN,"3"], +// [Blockly.Msg.COLOUR_RGB_CYAN,"4"], +// [Blockly.Msg.COLOUR_RGB_BLUE,"5"], +// [Blockly.Msg.COLOUR_RGB_PURPLE,"6"], +// [Blockly.Msg.COLOUR_RGB_WHITE,"7"], +// [Blockly.Msg.COLOUR_RGB_GREY,"8"], +// [Blockly.Msg.MIXLY_CUSTOM_STUDY,"9"] +// ]),'color'); +// this.appendDummyInput() +// .appendField(Blockly.Msg.MIXLY_Pixel_block + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); +// this.setOutput(true); +// this.setInputsInline(true); +// // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); +// } +// }; export const GET_CAT_FACE_DETECTION_NUM = { init: function () { @@ -911,22 +901,39 @@ export const GET_CAT_FACE_DETECTION_NUM = { this.appendValueInput('SUB') .setCheck("var"); this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_RECOGNITION + Blockly.Msg.MIXLY_HOW_MUCH +Blockly.Msg.MIXLY_CAT_FACE) + .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_HOW_MUCH +Blockly.Msg.MIXLY_CAT) + this.appendValueInput('boolean') + .appendField( Blockly.Msg.MIXLY_synchronize); this.setOutput(true); this.setInputsInline(true); // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); } }; -export const GET_CAT_FACE_DETECTION_LOCATION = { +// export const GET_CAT_FACE_DETECTION_LOCATION = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendValueInput('NO') +// .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1); +// this.appendDummyInput() +// .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_CAT_FACE + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); +// this.setOutput(true); +// this.setInputsInline(true); +// // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); +// } +// }; + +export const GET_HUMAN_DETECTION_NUM = { init: function () { this.setColour(AI_LOCAL_GRAPH_HUE); this.appendValueInput('SUB') .setCheck("var"); - this.appendValueInput('NO') - .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1); this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_CAT_FACE + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); + .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_HOW_MUCH +Blockly.Msg.MIXLY_HUMAN) + this.appendValueInput('boolean') + .appendField( Blockly.Msg.MIXLY_synchronize); this.setOutput(true); this.setInputsInline(true); // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); @@ -936,129 +943,174 @@ export const GET_CAT_FACE_DETECTION_LOCATION = { export const GET_FACE_DETECTION_NUM = { init: function () { this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') + this.appendValueInput('SUB') .setCheck("var"); this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_RECOGNITION + Blockly.Msg.MIXLY_HOW_MUCH +Blockly.Msg.MIXLY_FACE) + .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_HOW_MUCH +Blockly.Msg.MIXLY_FACE) + this.appendValueInput('boolean') + .appendField( Blockly.Msg.MIXLY_synchronize); this.setOutput(true); this.setInputsInline(true); // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); } }; -export const GET_FACE_DETECTION_LOCATION = { +export const GET_FACE_DETECTION_NAME = { init: function () { this.setColour(AI_LOCAL_GRAPH_HUE); this.appendValueInput('SUB') .setCheck("var"); - this.appendValueInput('NO') - .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1); this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_FACE + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); + .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_AipFace +Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_NAME) + this.appendValueInput('boolean') + .appendField( Blockly.Msg.MIXLY_synchronize); this.setOutput(true); this.setInputsInline(true); // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); } }; -export const GET_FACE_DETECTION_KEYPOINT_LOCATION = { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput('NO') - .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_FACE); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_KEYPOINT) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.MIXLY_LEFT_EYE,"0"], - [Blockly.Msg.MIXLY_RIGHT_EYE,"1"], - [Blockly.Msg.MIXLY_NOSE,"2"], - [Blockly.Msg.MIXLY_LEFT_MOUSE_CORNER,"3"], - [Blockly.Msg.MIXLY_RIGHT_MOUSE_CORNER,"4"] - ]),'kp') - .appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); - this.setOutput(true); - this.setInputsInline(true); - } -}; +// export const GET_FACE_DETECTION_LOCATION = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendValueInput('NO') +// .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1); +// this.appendDummyInput() +// .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_FACE + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); +// this.setOutput(true); +// this.setInputsInline(true); +// // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); +// } +// }; -export const GET_FACE_RECOGNITION_ID = { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.MIXLY_FACE + 'ID'); - this.setOutput(true); - this.setInputsInline(true); - } -}; +// export const GET_FACE_DETECTION_KEYPOINT_LOCATION = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendValueInput('NO') +// .appendField(Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER1); +// this.appendDummyInput() +// .appendField(Blockly.Msg.MIXLY_4DIGITDISPLAY_NOMBER2 + Blockly.Msg.MIXLY_FACE); +// this.appendDummyInput() +// .appendField(Blockly.Msg.MIXLY_KEYPOINT) +// .appendField(new Blockly.FieldDropdown([ +// [Blockly.Msg.MIXLY_LEFT_EYE,"0"], +// [Blockly.Msg.MIXLY_RIGHT_EYE,"1"], +// [Blockly.Msg.MIXLY_NOSE,"2"], +// [Blockly.Msg.MIXLY_LEFT_MOUSE_CORNER,"3"], +// [Blockly.Msg.MIXLY_RIGHT_MOUSE_CORNER,"4"] +// ]),'kp') +// .appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); +// this.setOutput(true); +// this.setInputsInline(true); +// } +// }; + +// export const GET_FACE_RECOGNITION_ID = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendDummyInput() +// .appendField(Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.MIXLY_FACE + 'ID'); +// this.setOutput(true); +// this.setInputsInline(true); +// } +// }; + +// export const GET_FACE_RECOGNITION_ID_LOCATION = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendValueInput('NO') +// .appendField(Blockly.Msg.MIXLY_GET +'ID'+ Blockly.Msg.MIXLY_AS); +// this.appendDummyInput() +// .appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_FACE + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); +// this.setOutput(true); +// this.setInputsInline(true); +// } +// }; + +// export const GET_FACE_RECOGNITION_ID_KEYPOINT_LOCATION = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendValueInput('NO') +// .appendField(Blockly.Msg.MIXLY_GET + 'ID'+ Blockly.Msg.MIXLY_AS); +// this.appendDummyInput() +// .appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_FACE); +// this.appendDummyInput() +// .appendField(Blockly.Msg.MIXLY_KEYPOINT) +// .appendField(new Blockly.FieldDropdown([ +// [Blockly.Msg.MIXLY_LEFT_EYE,"0"], +// [Blockly.Msg.MIXLY_RIGHT_EYE,"1"], +// [Blockly.Msg.MIXLY_NOSE,"2"], +// [Blockly.Msg.MIXLY_LEFT_MOUSE_CORNER,"3"], +// [Blockly.Msg.MIXLY_RIGHT_MOUSE_CORNER,"4"] +// ]),'kp') +// .appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); +// this.setOutput(true); +// this.setInputsInline(true); +// } +// }; + +// export const PEOPLE_FACE_ENROLL = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendDummyInput() +// .appendField(Blockly.Msg.FACE_ENROLL); +// this.setOutput(true); +// this.setInputsInline(true); +// } +// }; + +// export const DELETE_PEOPLE_FACE_ID= { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .setCheck("var"); +// this.appendValueInput("ID") +// .appendField(Blockly.Msg.MIXLY_DELETE_PEOPLE_FACE_ID); +// this.setPreviousStatement(true); +// this.setNextStatement(true); +// this.setInputsInline(true); +// } +// }; + +// export const MODELP_SIMPLELY_RUN_RECOGNIZION = { +// init: function () { +// this.setColour(AI_LOCAL_GRAPH_HUE); +// this.appendValueInput('SUB') +// .appendField(Blockly.Msg.MIXLY_RUN + Blockly.Msg.MIXLY_TENSORFLOW_MODEL + Blockly.Msg.MIXLY_RECOGNITION_RECGNITION) +// .setCheck("var"); +// this.appendValueInput('CAM') +// .setCheck("var"); + +// this.appendDummyInput("") +// .appendField(new Blockly.FieldDropdown([ +// [Blockly.Msg.MIXPY_AI_RESULT,"data"], +// [Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_HOW_MUCH + Blockly.Msg.MIXPY_OBJECT,"len"], +// [Blockly.Msg.MIXLY_GET + Blockly.Msg.MIXLY_AipFace + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_NAME,"person"] +// ]),"key") +// this.appendValueInput('VAR') +// .appendField(Blockly.Msg.HTML_COLOUR) +// this.appendValueInput('boolean') +// .appendField( Blockly.Msg.MIXLY_synchronize); +// this.setOutput(true); +// this.setInputsInline(true); +// } +// }; -export const GET_FACE_RECOGNITION_ID_LOCATION = { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput('NO') - .appendField(Blockly.Msg.MIXLY_GET +'ID'+ Blockly.Msg.MIXLY_AS); - this.appendDummyInput() - .appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_FACE + Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); - this.setOutput(true); - this.setInputsInline(true); - } -}; -export const GET_FACE_RECOGNITION_ID_KEYPOINT_LOCATION = { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput('NO') - .appendField(Blockly.Msg.MIXLY_GET + 'ID'+ Blockly.Msg.MIXLY_AS); - this.appendDummyInput() - .appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_FACE); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_KEYPOINT) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.MIXLY_LEFT_EYE,"0"], - [Blockly.Msg.MIXLY_RIGHT_EYE,"1"], - [Blockly.Msg.MIXLY_NOSE,"2"], - [Blockly.Msg.MIXLY_LEFT_MOUSE_CORNER,"3"], - [Blockly.Msg.MIXLY_RIGHT_MOUSE_CORNER,"4"] - ]),'kp') - .appendField(Blockly.Msg.blockpy_set_of + Blockly.Msg.MIXLY_POSITION_XY); - this.setOutput(true); - this.setInputsInline(true); - } -}; -export const PEOPLE_FACE_ENROLL = { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendDummyInput() - .appendField(Blockly.Msg.FACE_ENROLL); - this.setOutput(true); - this.setInputsInline(true); - } -}; -export const DELETE_PEOPLE_FACE_ID= { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendValueInput('SUB') - .setCheck("var"); - this.appendValueInput("ID") - .appendField(Blockly.Msg.MIXLY_DELETE_PEOPLE_FACE_ID); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; export const AI_STOP_ACQUISITION = { @@ -1083,4 +1135,89 @@ export const MIXIO_REPORT_IMAGE_DATA = { this.setOutput(true); this.setInputsInline(true); } +}; + +//simplified part +export const CREATE_CAMERA_SIMPLE = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_SMARTCAMERA) + .appendField(Blockly.Msg.MIXLY_SHOOTING_SIZE) + .appendField(new Blockly.FieldDropdown([ + ['240px*240px', "R240X240"], + ['320px*320px', "R320X320"], + ['128px*128px', "R128X128"], + ['96px*96px', "R96X96"], + ['VGA : 640px*480px', "VGA"], + ['HVGA : 480px*320px', "HVGA"], + ['QVGA : 320px*240px', "QVGA"], + ['QQVGA : 160px*120px', "QQVGA"] + ]), "cmd"); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +}; + +export const AI_CAMERA_INIT_SIMPLE = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendValueInput('SUB') + .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE) + .setCheck("var"); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.LISTS_SET_INDEX_INPUT_TO) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXLY_RECOGNITION, "QRReader"], + [Blockly.Msg.MIXLY_COLOR_RECOGNTITION, "ColorDetector"], + [Blockly.Msg.MIXLY_CAT + Blockly.Msg.MIXLY_RECOGNITION, "CatDetector"], + [Blockly.Msg.MIXLY_HUMAN + Blockly.Msg.MIXLY_RECOGNITION, "HumanDetector"], + [Blockly.Msg.MIXLY_FACE_CLASSIFIER, "FaceDetector"], + [Blockly.Msg.MIXLY_AipFace,"FaceRecognizer"] + ]), "kind"); + this.setInputsInline(true); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + } +}; + +export const Register_color_recognition_fixed_SIMPLE = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendValueInput('SUB') + .appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL) + .setCheck("var"); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_REGISTER + Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.HTML_COLOUR) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.COLOUR_RGB_RED,"red"], + [Blockly.Msg.COLOUR_RGB_GREEN,"green"], + [Blockly.Msg.COLOUR_RGB_BLUE,"blue"], + [Blockly.Msg.COLOUR_YELLOW,"yellow"], + [Blockly.Msg.COLOUR_CYAN,"cyan"], + [Blockly.Msg.COLOUR_RGB_PURPLE,"purple"], + [Blockly.Msg.COLOUR_BLACK,"black"], + [Blockly.Msg.COLOUR_WHITE,"white"] + ]),"color"); + this.setInputsInline(true); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + } +}; + +export const REGISTER_NEW_FACE_SIMPLE = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendValueInput('SUB') + .appendField(Blockly.Msg.MIXLY_TENSORFLOW_MODEL) + .setCheck("var"); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_MAKE + Blockly.Msg.MIXLY_SMARTCAMERA + Blockly.Msg.MIXLY_GET + + Blockly.Msg.register_a_new_face_in_the_database); + this.appendValueInput("NAME") + .appendField(Blockly.Msg.MICROPYTHON_HUSKYLENS_NAME); + this.setOutput(true) + this.setInputsInline(true); + } }; \ No newline at end of file diff --git a/boards/default_src/micropython/blocks/display_onboard.js b/boards/default_src/micropython/blocks/display_onboard.js index 48702dd4..5ebb95e5 100644 --- a/boards/default_src/micropython/blocks/display_onboard.js +++ b/boards/default_src/micropython/blocks/display_onboard.js @@ -12,7 +12,7 @@ export const display_show_image = { var version = Boards.getSelectedBoardKey() if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); } this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -40,7 +40,7 @@ export const display_show_image_or_string_delay = { ]), 'center') if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); } this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -304,7 +304,7 @@ export const display_shift = { var version = Boards.getSelectedBoardKey() if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); } var thisBlock = this; this.setTooltip(function () { @@ -397,7 +397,7 @@ export const display_clear = { var version = Boards.getSelectedBoardKey() if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); } this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -1117,7 +1117,7 @@ export const onboard_tft_show_image_xy = { var version = Boards.getSelectedBoardKey() if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize ); } this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -1172,7 +1172,7 @@ export const onboard_tft_show_image_or_string_delay = { var version = Boards.getSelectedBoardKey() if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); } this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -1388,7 +1388,7 @@ export const onboard_tft_bright_point = { var version = Boards.getSelectedBoardKey() if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); } this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -1405,7 +1405,7 @@ export const onboard_tft_fill = { var version = Boards.getSelectedBoardKey() if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); } this.setPreviousStatement(true, null); this.setNextStatement(true, null); @@ -1599,7 +1599,7 @@ export const onboard_tft_show_texts = { var version = Boards.getSelectedBoardKey() if (JSFuncs.getPlatform() === 'Python ESP32-S3') { this.appendValueInput('boolean') - .appendField( Blockly.Msg.MIXLY_synchronize + ':'); + .appendField( Blockly.Msg.MIXLY_synchronize); } this.setPreviousStatement(true, null); this.setNextStatement(true, null); diff --git a/boards/default_src/micropython/generators/ai_local.js b/boards/default_src/micropython/generators/ai_local.js index ba646a56..a13aa815 100644 --- a/boards/default_src/micropython/generators/ai_local.js +++ b/boards/default_src/micropython/generators/ai_local.js @@ -367,102 +367,125 @@ export const PRINT_FACE_DATABASE = function (_, generator) { } export const GET_QR_CODE_RECOGNITION_DATA = function (_, generator) { + generator.definitions_['import_esp_dl'] = 'import esp_dl' var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + '.code_recognition()'; + var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC); + var code = 'esp_dl.simple_run('+ sub + ', camere, "data", color=0xF800, sync='+bool+')'; return [code, generator.ORDER_ATOMIC]; } export const GET_COLOR_DETECTION_NUM = function (_, generator) { + generator.definitions_['import_esp_dl'] = 'import esp_dl' var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var color = this.getFieldValue('color'); - var code = sub + '.color_detection('+ color +",'len')"; + var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC); + var code = 'esp_dl.simple_run('+ sub + ', camere, "len", color=0xF800, sync='+bool+')'; return [code, generator.ORDER_ATOMIC]; } -export const GET_COLOR_DETECTION_LOCATION = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var color = this.getFieldValue('color'); - var code = sub + '.color_detection('+ color +",'pos',"+ num +')'; - return [code, generator.ORDER_ATOMIC]; -} +// export const GET_COLOR_DETECTION_LOCATION = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); +// var color = this.getFieldValue('color'); +// var code = sub + '.color_detection('+ color +",'pos',"+ num +')'; +// return [code, generator.ORDER_ATOMIC]; +// } export const GET_CAT_FACE_DETECTION_NUM = function (_, generator) { + generator.definitions_['import_esp_dl'] = 'import esp_dl' var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + ".cat_detection('len')"; + var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC); + var code = 'esp_dl.simple_run('+ sub + ', camere, "len", color=0xF800, sync='+bool+')'; return [code, generator.ORDER_ATOMIC]; } -export const GET_CAT_FACE_DETECTION_LOCATION = function (_, generator) { +// export const GET_CAT_FACE_DETECTION_LOCATION = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); +// var code = sub + ".cat_detection('pos',"+ num +')'; +// return [code, generator.ORDER_ATOMIC]; +// } + +export const GET_HUMAN_DETECTION_NUM = function (_, generator) { + generator.definitions_['import_esp_dl'] = 'import esp_dl' var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var code = sub + ".cat_detection('pos',"+ num +')'; + var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC); + var code = 'esp_dl.simple_run('+ sub + ', camere, "len", color=0xF800, sync='+bool+')'; return [code, generator.ORDER_ATOMIC]; } export const GET_FACE_DETECTION_NUM = function (_, generator) { + generator.definitions_['import_esp_dl'] = 'import esp_dl' var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + ".face_detection('len')"; + var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC); + var code = 'esp_dl.simple_run('+ sub + ', camere, "len", color=0xF800, sync='+bool+')'; return [code, generator.ORDER_ATOMIC]; } -export const GET_FACE_DETECTION_LOCATION = function (_, generator) { +export const GET_FACE_DETECTION_NAME = function (_, generator) { + generator.definitions_['import_esp_dl'] = 'import esp_dl' var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var code = sub + ".face_detection('pos',"+ num +')'; + var bool = generator.valueToCode(this, 'boolean', generator.ORDER_ATOMIC); + var code = 'esp_dl.simple_run('+ sub + ', "person", color=0xF800, sync='+bool+')["name"]\n'; return [code, generator.ORDER_ATOMIC]; } -export const GET_FACE_DETECTION_KEYPOINT_LOCATION = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var kp = this.getFieldValue('kp'); - var code = sub + ".face_detection('keypoint',"+ num +','+ kp +')'; - return [code, generator.ORDER_ATOMIC]; -} +// export const GET_FACE_DETECTION_LOCATION = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); +// var code = sub + ".face_detection('pos',"+ num +')'; +// return [code, generator.ORDER_ATOMIC]; +// } -export const GET_FACE_RECOGNITION_ID = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + ".face_recognition('len')"; - return [code, generator.ORDER_ATOMIC]; -} +// export const GET_FACE_DETECTION_KEYPOINT_LOCATION = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); +// var kp = this.getFieldValue('kp'); +// var code = sub + ".face_detection('keypoint',"+ num +','+ kp +')'; +// return [code, generator.ORDER_ATOMIC]; +// } -export const GET_FACE_RECOGNITION_ID_LOCATION = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var code = sub + ".face_recognition('pos',"+ num +')'; - return [code, generator.ORDER_ATOMIC]; -} +// export const GET_FACE_RECOGNITION_ID = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var code = sub + ".face_recognition('len')"; +// return [code, generator.ORDER_ATOMIC]; +// } -export const GET_FACE_RECOGNITION_ID_KEYPOINT_LOCATION = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var kp = this.getFieldValue('kp'); - var code = sub + ".face_recognition('keypoint',"+ num +','+ kp +')'; - return [code, generator.ORDER_ATOMIC]; -} +// export const GET_FACE_RECOGNITION_ID_LOCATION = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); +// var code = sub + ".face_recognition('pos',"+ num +')'; +// return [code, generator.ORDER_ATOMIC]; +// } -export const GET_NO_FACE_RECOGNITION_INFO = function (_, generator) { - generator.definitions_['import_esp_dl'] = 'import esp_dl'; - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); - var kind = this.getFieldValue('kind'); - var code = "esp_dl.analyze("+sub+', "person",'+ num +')["'+kind+'"]'; - return [code, generator.ORDER_ATOMIC]; -} +// export const GET_FACE_RECOGNITION_ID_KEYPOINT_LOCATION = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); +// var kp = this.getFieldValue('kp'); +// var code = sub + ".face_recognition('keypoint',"+ num +','+ kp +')'; +// return [code, generator.ORDER_ATOMIC]; +// } -export const PEOPLE_FACE_ENROLL = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var code = sub + '.face_enroll()'; - return [code, generator.ORDER_ATOMIC]; -} +// export const GET_NO_FACE_RECOGNITION_INFO = function (_, generator) { +// generator.definitions_['import_esp_dl'] = 'import esp_dl'; +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var num = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC); +// var kind = this.getFieldValue('kind'); +// var code = "esp_dl.analyze("+sub+', "person",'+ num +')["'+kind+'"]'; +// return [code, generator.ORDER_ATOMIC]; +// } -export const DELETE_PEOPLE_FACE_ID = function (_, generator) { - var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); - var id = generator.valueToCode(this, 'ID', generator.ORDER_ATOMIC); - var code = sub + '.face_delete('+ id +')\n'; - return code; -} +// export const PEOPLE_FACE_ENROLL = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var code = sub + '.face_enroll()'; +// return [code, generator.ORDER_ATOMIC]; +// } + +// export const DELETE_PEOPLE_FACE_ID = function (_, generator) { +// var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); +// var id = generator.valueToCode(this, 'ID', generator.ORDER_ATOMIC); +// var code = sub + '.face_delete('+ id +')\n'; +// return code; +// } export const AI_STOP_ACQUISITION = function (_, generator) { var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); @@ -475,4 +498,55 @@ export const MIXIO_REPORT_IMAGE_DATA = function (_, generator) { var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); var code = 'mixiot.image_base64('+ sub +')'; return [code, generator.ORDER_ATOMIC]; +} + +//simplified part +export const CREATE_CAMERA_SIMPLE = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + generator.definitions_['import_Camera_FrameSize'] = 'from camera import Camera,FrameSize'; + var cmd = this.getFieldValue('cmd'); + var code = 'camera = Camera(FrameSize.'+cmd+', hmirror=False,vflip=False)\n'; + return code; +} + +export const AI_CAMERA_INIT_SIMPLE = function (_, generator) { + generator.definitions_['import_esp_dl'] = 'import esp_dl'; + var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + var cmd = this.getFieldValue('kind'); + if(cmd == "FaceRecognizer"){ + var code = sub +' = esp_dl.'+cmd + '(width=camera.get_pixel_width(), height=camera.get_pixel_height() , db_path="face.db")\n'; + }else{ + var code = sub +' = esp_dl.'+cmd + '(width=camera.get_pixel_width(), height=height=camera.get_pixel_height())\n'; + } + return code; +} + +export const Register_color_recognition_fixed_SIMPLE= function (_, generator) { + var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + var color = this.getFieldValue('color'); + if (color == "red"){ + var code = sub + '.register_color((170, 100, 100), (10, 255, 255),"'+ color +'")\n'; + }else if(color == "green"){ + var code = sub + '.register_color((35, 100, 100), (85, 255, 255),"'+ color +'")\n'; + }else if(color == "blue"){ + var code = sub + '.register_color((100, 100, 100), (130, 255, 255),"'+ color +'")\n'; + }else if(color == "yellow"){ + var code = sub + '.register_color((20, 100, 100), (35, 255, 255),"'+ color +'")\n'; + }else if(color == "cyan"){ + var code = sub + '.register_color((85, 100, 100), (100, 255, 255),"'+ color +'")\n'; + }else if(color == "purple"){ + var code = sub + '.register_color((130, 100, 100), (150, 255, 255),"'+ color +'")\n'; + }else if(color == "black"){ + var code = sub + '.register_color((0, 0, 0), (180, 255, 50),"'+ color +'")\n'; + }else if(color == "white"){ + var code = sub + '.register_color((0, 0, 200), (180, 50, 255),"'+ color +'")\n'; + } + return code; +} + +export const REGISTER_NEW_FACE_SIMPLE = function (_, generator) { + var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + var name = generator.valueToCode(this, 'NAME', generator.ORDER_ATOMIC); + var code = sub + '.enroll(camera.capture(), name='+ name +', validate = 1)'; + return [code, generator.ORDER_ATOMIC]; } \ No newline at end of file diff --git a/boards/default_src/micropython_esp32s3/css/color_esp32s2_mixgoce.css b/boards/default_src/micropython_esp32s3/css/color_esp32s2_mixgoce.css index bb528804..08b690b9 100644 --- a/boards/default_src/micropython_esp32s3/css/color_esp32s2_mixgoce.css +++ b/boards/default_src/micropython_esp32s3/css/color_esp32s2_mixgoce.css @@ -476,4 +476,14 @@ div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div.blocklyTr #catAIvoicesensor.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { background: url('../../../../common/media/mark/AIvoice2.png') no-repeat; background-size: 100% auto; +} + +#catAIgraphsensorpro.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { + background: url('../../../../common/media/mark/image.png') no-repeat; + background-size: 100% auto; +} + +#catAIgraphsensorpro.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { + background: url('../../../../common/media/mark/image2.png') no-repeat; + background-size: 100% auto; } \ No newline at end of file diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml index d29bb9b5..5bb38e1d 100644 --- a/boards/default_src/micropython_esp32s3/template.xml +++ b/boards/default_src/micropython_esp32s3/template.xml @@ -2415,7 +2415,7 @@ - + @@ -2426,13 +2426,6 @@ - - - - mixly.jpg - - - image @@ -2642,7 +2635,6 @@ _results - @@ -2711,23 +2703,90 @@ - - - + + + + + + + + mixly.jpg + + + + + + + Model + + + + + + + Model + + + + + + + Model + + + + + name + + + + + + + Model + + + + - ai + Model + + + + - + - ai + Model + + + + - + + + + + Model + + + + + + - ai + Model + + + + - + + + + Model + + + + + + + + + +