diff --git a/boards/default_src/micropython/blocks/ai_local.js b/boards/default_src/micropython/blocks/ai_local.js index 9232fe18..1e2c199d 100644 --- a/boards/default_src/micropython/blocks/ai_local.js +++ b/boards/default_src/micropython/blocks/ai_local.js @@ -244,9 +244,9 @@ export const CREATE_CAMERA = { .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_SMARTCAMERA) .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_SHOOTING_SIZE) .appendField(new Blockly.FieldDropdown([ + ['LCD : 240px*240px', "LCD"], ['VGA : 640px*480px', "VGA"], ['QVGA : 320px*240px', "QVGA"], - ['LCD : 240px*240px', "LCD"], ['QQVGA : 160px*120px', "QQVGA"] ]), "cmd") this.setPreviousStatement(true); @@ -274,6 +274,7 @@ export const GET_PICTURE_DATA = { .appendField(Blockly.Msg.MIXLY_GET_PICTURE_DATA); this.setOutput(true); this.setInputsInline(true); + this.setTooltip(Blockly.Msg.MIXLY_GET_PICTURE_DATA_TOOLTIP); } }; @@ -299,47 +300,35 @@ export const STOP_SCREEN_DISPLAY = { } }; -export const INIT_QR_CODE_RECOGNITION= { +export const AI_CAMERA_INIT = { 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.MIXLY_QR_CODE_RECOGNTITION); - this.setPreviousStatement(true); - this.setNextStatement(true); + .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, "CODE_DETECTION"], + [Blockly.Msg.MIXLY_COLOR_RECOGNTITION, "COLOR_DETECTION"], + [Blockly.Msg.MIXLY_EMOTION_DETEECTION, "MOTION_DETECTON"], + [Blockly.Msg.MIXLY_CAT_FACE + Blockly.Msg.MIXLY_RECOGNITION, "CAT_FACE_DETECTION"], + [Blockly.Msg.MIXLY_FACE_CLASSIFIER, "FACE_DETECTION"], + [Blockly.Msg.MIXLY_AipFace, "FACE_RECOGNITION"] + ]), "kind"); this.setInputsInline(true); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); } }; - - -export const START_QR_CODE_RECOGNITION= { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_MSTIMER2_START + Blockly.Msg.MIXLY_QR_CODE + Blockly.Msg.MIXLY_RECOGNITION); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -export const GET_QR_CODE_RECOGNITION_DATA = { +export const GET_COLOR_DETECTION_NUM = { init: function () { this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendValueInput('SUB') + .setCheck("var"); this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_GET_QR_CODE_RECOGNITION_RESULT); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(Blockly.Msg.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP); - } -}; - -export const INIT_COLOR_DETECTION= { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_ESP32_APDS9960_COLOR); - 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"], @@ -351,107 +340,170 @@ export const INIT_COLOR_DETECTION= { [Blockly.Msg.COLOUR_RGB_WHITE,"7"], [Blockly.Msg.COLOUR_RGB_GREY,"8"], [Blockly.Msg.MIXLY_CUSTOM_STUDY,"9"] - ]),'color') - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -export const START_COLOR_DETECTION= { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_MSTIMER2_START + Blockly.Msg.HTML_COLOUR + Blockly.Msg.MIXLY_RECOGNITION); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -export const GET_COLOR_DETECTION_RESULT = { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); + ]),'color'); this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT); + .appendField(Blockly.Msg.MIXLY_Pixel_block); this.setOutput(true); this.setInputsInline(true); - this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); + // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); } }; -export const INIT_CAT_FACE_DETECTION= { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_CAT_FACE +Blockly.Msg.MIXLY_RECOGNITION); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -export const START_CAT_FACE_DETECTION= { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_MSTIMER2_START + Blockly.Msg.MIXLY_CAT_FACE + Blockly.Msg.MIXLY_RECOGNITION); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -export const GET_CAT_FACE_DETECTION_RESULT = { +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_GET_CAT_FACE_DETECTION_RESULT); + .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 () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendValueInput('SUB') + .setCheck("var"); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_RECOGNITION + Blockly.Msg.MIXLY_HOW_MUCH +Blockly.Msg.MIXLY_CAT_FACE) + this.setOutput(true); + this.setInputsInline(true); + // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); + } +}; + +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_FACE_DETECTION_NUM = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendValueInput('SUB') + .setCheck("var"); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_RECOGNITION + Blockly.Msg.MIXLY_HOW_MUCH +Blockly.Msg.MIXLY_FACE) + this.setOutput(true); + this.setInputsInline(true); + // this.setTooltip(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP); + } +}; + +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_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 INIT_PEOPLE_FACE_DETECTION= { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_FACE_CLASSIFIER); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -export const START_PEOPLE_FACE_DETECTION= { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_MSTIMER2_START + Blockly.Msg.MIXLY_FACE_CLASSIFIER + '/' + Blockly.Msg.MIXLY_AipFace); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -export const GET_PEOPLE_FACE_DETECTION_RESULT = { +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_GET_PEOPLE_FACE_DETECTION_RESULT); + .appendField(Blockly.Msg.MIXLY_RECOGNITION_RECGNITION + Blockly.Msg.MIXLY_FACE + 'ID'); this.setOutput(true); this.setInputsInline(true); - this.setTooltip(Blockly.Msg.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP); } }; -export const INIT_PEOPLE_FACE_RECOGNITION= { +export const GET_FACE_RECOGNITION_ID_LOCATION = { init: function () { this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_AipFace); - this.setPreviousStatement(true); - this.setNextStatement(true); + 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); } }; @@ -459,6 +511,8 @@ export const INIT_PEOPLE_FACE_RECOGNITION= { 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); @@ -466,20 +520,11 @@ export const PEOPLE_FACE_ENROLL = { } }; -export const GET_PEOPLE_FACE_RECOGNITION_RESULT = { - init: function () { - this.setColour(AI_LOCAL_GRAPH_HUE); - this.appendDummyInput() - .appendField(Blockly.Msg.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT); - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(Blockly.Msg.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP); - } -}; - 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); diff --git a/boards/default_src/micropython/generators/ai_local.js b/boards/default_src/micropython/generators/ai_local.js index a5f8386e..946d7bfc 100644 --- a/boards/default_src/micropython/generators/ai_local.js +++ b/boards/default_src/micropython/generators/ai_local.js @@ -63,10 +63,6 @@ export const CI130X_GET_THE_RECOGNIZED_CMD_SANT = function (_, generator) { return [code, generator.ORDER_ATOMIC]; } - - - -//graph part export const CI130X_BROADCAST_SANT = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; if(version == 'mixgo_sant'){ @@ -99,6 +95,11 @@ export const CI130X_SET_SYSTEM_CMD_SANT = function (_, generator) { return code; } + + + + +//graph part export const CREATE_CAMERA = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; generator.definitions_['import_camera'] = 'import camera'; @@ -119,7 +120,7 @@ export const GET_PICTURE_DATA = function (_, generator) { } export const SCREEN_SHOW_CAM_GRAPH_SHOOT = function (_, generator) { - var code = 'cam.display()\n'+'time.sleep(1)\n'; + var code = 'cam.display()\n'; return code; } @@ -128,99 +129,93 @@ export const STOP_SCREEN_DISPLAY = function (_, generator) { return code; } -export const INIT_QR_CODE_RECOGNITION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'qr_code = esp_ai.code_recognition()\n'; +export const AI_CAMERA_INIT = function (_, generator) { + generator.definitions_['from_ai_camera_import_AI'] = 'from ai_camera import AI'; + var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + var cmd = this.getFieldValue('kind'); + var code = sub +' = ai_camera.AI(ai_camera.' + cmd + ')\n'; return code; } -export const START_QR_CODE_RECOGNITION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'qr_code.start()\n'; - return code; -} - -export const GET_QR_CODE_RECOGNITION_DATA = function (_, generator) { - var code = 'qr_code.read()'; - return [code, generator.ORDER_ATOMIC]; -} - -export const INIT_COLOR_DETECTION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; +export const GET_COLOR_DETECTION_NUM = function (_, generator) { + var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); var color = this.getFieldValue('color'); - var code = 'color = esp_ai.color_detection('+ color +')\n'; - return code; -} - -export const START_COLOR_DETECTION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'color.start()\n'; - return code; -} - -export const GET_COLOR_DETECTION_RESULT = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'color.read()'; + var code = sub + '.color_detection('+ color +",'len')"; return [code, generator.ORDER_ATOMIC]; } -export const INIT_CAT_FACE_DETECTION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'cat = esp_ai.cat_detection()\n'; - return code; -} - -export const START_CAT_FACE_DETECTION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'cat.start()\n'; - return code; -} - -export const GET_CAT_FACE_DETECTION_RESULT = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'cat.read()'; +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 INIT_PEOPLE_FACE_DETECTION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'face = esp_ai.face_detection()\n'; - return code; -} - -export const START_PEOPLE_FACE_DETECTION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'face.start()\n'; - return code; -} - -export const GET_PEOPLE_FACE_DETECTION_RESULT = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'face.read()'; +export const GET_CAT_FACE_DETECTION_NUM = function (_, generator) { + var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + var code = sub + ".cat_detection('len')"; return [code, generator.ORDER_ATOMIC]; } -export const INIT_PEOPLE_FACE_RECOGNITION = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'face = esp_ai.face_recognition()\n'; - return code; +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__FACE_DETECTION_NUM = function (_, generator) { + var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); + var code = sub + ".face_detection('len')"; + 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_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 = 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_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_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) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'face.enroll()'; - return [code, generator.ORDER_ATOMIC]; -} - -export const GET_PEOPLE_FACE_RECOGNITION_RESULT = function (_, generator) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; - var code = 'face.recognize()'; + 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) { - generator.definitions_['import_esp_ai'] = 'import esp_ai'; + var sub = generator.valueToCode(this, 'SUB', generator.ORDER_ATOMIC); var id = generator.valueToCode(this, 'ID', generator.ORDER_ATOMIC); - var code = 'face.delete('+ id +')\n'; + var code = sub + '.face_delete('+ id +')\n'; return code; } \ No newline at end of file diff --git a/boards/default_src/micropython/generators/display_onboard.js b/boards/default_src/micropython/generators/display_onboard.js index be97c333..a66c27fa 100644 --- a/boards/default_src/micropython/generators/display_onboard.js +++ b/boards/default_src/micropython/generators/display_onboard.js @@ -846,7 +846,7 @@ export const onboard_tft_show_image_xy_direct = function (_, generator) { var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); var y = generator.valueToCode(this, 'y', generator.ORDER_ASSIGNMENT); var direct = generator.valueToCode(this, 'direct', generator.ORDER_ASSIGNMENT); - var code = "onboard_tft.pictrue(" + x + ',' + y + ',' + direct + ")\n"; + var code = "onboard_tft.picture(" + x + ',' + y + ',' + direct + ")\n"; return code; } diff --git a/boards/default_src/micropython/generators/sensor_extern.js b/boards/default_src/micropython/generators/sensor_extern.js index 0266d085..9f4dbc34 100644 --- a/boards/default_src/micropython/generators/sensor_extern.js +++ b/boards/default_src/micropython/generators/sensor_extern.js @@ -235,7 +235,7 @@ export const radar_set_DETECTION_THRESHOLD = function (_, generator) { } export const radar_set_DETECTION_THRESHOLD_SANT = function (_, generator) { - generator.definitions_['import_sant_g2_ext_mmw'] = 'from sant_g2 import ext_mmw'; + generator.definitions_['import_sant_gx_ext_mmw'] = 'from sant_gx import ext_mmw'; var value = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC); var value2 = generator.valueToCode(this, 'VAR2', generator.ORDER_ATOMIC); var code = 'ext_mmw.threshold(' + value + ')\n' + 'ext_mmw.delay_ms(' + value2 + ')\n'; @@ -250,7 +250,7 @@ export const interaction_whether_to_interaction = function (_, generator) { } export const interaction_whether_to_interaction_SANT = function (_, generator) { - generator.definitions_['import_sant_g2_ext_mmw'] = 'from sant_g2 import ext_mmw'; + generator.definitions_['import_sant_gx_ext_mmw'] = 'from sant_gx import ext_mmw'; var code = 'ext_mmw.result()'; return [code, generator.ORDER_ATOMIC]; } 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 2acbc07f..62adb26c 100644 --- a/boards/default_src/micropython_esp32s3/css/color_esp32s2_mixgoce.css +++ b/boards/default_src/micropython_esp32s3/css/color_esp32s2_mixgoce.css @@ -148,12 +148,12 @@ div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div.blocklyTr background-size: 100% auto; } -#catSANT_G2.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { +#catSANT_G3.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { background: url('../../../../common/media/mark/sensor.png') no-repeat; background-size: 100% auto; } -#catSANT_G2.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { +#catSANT_G3.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { background: url('../../../../common/media/mark/sensor2.png') no-repeat; background-size: 100% auto; } diff --git a/boards/default_src/micropython_esp32s3/generators/sant_g2.js b/boards/default_src/micropython_esp32s3/generators/sant_g2.js index edfb01a8..d29b9aac 100644 --- a/boards/default_src/micropython_esp32s3/generators/sant_g2.js +++ b/boards/default_src/micropython_esp32s3/generators/sant_g2.js @@ -26,7 +26,7 @@ export const mini_g2_rfid_readid = function (_, generator) { generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; var code = 'ext_rfid.read_card(0, x="id")'; } else if(version == "mixgo_sant"){ - generator.definitions_['import_sant_g2_ext_rfid'] = 'from sant_g2 import ext_rfid'; + generator.definitions_['import_sant_gx_ext_rfid'] = 'from sant_gx import ext_rfid'; var code = 'ext_rfid.read_card(0, x="id")'; }else { generator.definitions_['import_mini_g2'] = 'import mini_g2'; @@ -42,7 +42,7 @@ export const mini_g2_rfid_readcontent = function (_, generator) { generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; var code = 'ext_rfid.read_card(' + sector + ')'; }else if(version == "mixgo_sant"){ - generator.definitions_['import_sant_g2_ext_rfid'] = 'from sant_g2 import ext_rfid'; + generator.definitions_['import_sant_gx_ext_rfid'] = 'from sant_gx import ext_rfid'; var code = 'ext_rfid.read_card(' + sector + ')'; } else { generator.definitions_['import_mini_g2'] = 'import mini_g2'; @@ -59,7 +59,7 @@ export const mini_g2_rfid_write = function (_, generator) { generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')\n'; }else if(version == "mixgo_sant"){ - generator.definitions_['import_sant_g2_ext_rfid'] = 'from sant_g2 import ext_rfid'; + generator.definitions_['import_sant_gx_ext_rfid'] = 'from sant_gx import ext_rfid'; var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')\n'; } else { generator.definitions_['import_mini_g2'] = 'import mini_g2'; @@ -76,7 +76,7 @@ export const mini_g2_rfid_write_outcome = function (_, generator) { generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')'; }else if(version == "mixgo_sant"){ - generator.definitions_['import_sant_g2_ext_rfid'] = 'from sant_g2 import ext_rfid'; + generator.definitions_['import_sant_gx_ext_rfid'] = 'from sant_gx import ext_rfid'; var code = 'ext_rfid.write_card(' + cnt + ',' + sector + ')'; } else { generator.definitions_['import_mini_g2'] = 'import mini_g2'; @@ -92,7 +92,7 @@ export const mini_g2_rfid_status = function (_, generator) { generator.definitions_['import_mini_g2_ext_rfid'] = 'from mini_g2 import ext_rfid'; var code = 'ext_rfid.scan_card()==' + key; }else if(version == "mixgo_sant"){ - generator.definitions_['import_sant_g2_ext_rfid'] = 'from sant_g2 import ext_rfid'; + generator.definitions_['import_sant_gx_ext_rfid'] = 'from sant_gx import ext_rfid'; var code = 'ext_rfid.scan_card()==' + key; } else { generator.definitions_['import_mini_g2'] = 'import mini_g2'; diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml index 55a89db3..b7170b8b 100644 --- a/boards/default_src/micropython_esp32s3/template.xml +++ b/boards/default_src/micropython_esp32s3/template.xml @@ -2310,22 +2310,133 @@ - - - - - - - - - - - - - - - + + + + ai + + + + + + + ai + + + + + + + ai + + + + + + + ai + + + + + 1 + + + + + + + ai + + + + + + + ai + + + + + 1 + + + + + + + ai + + + + + + + ai + + + + + 1 + + + + + + + ai + + + + + 1 + + + + + + + ai + + + + + + + ai + + + + + 1 + + + + + + + ai + + + + + 1 + + + + + + + ai + + + + + + ai + + 0 diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js index 21c6ca43..76d11c8f 100644 --- a/common/msg/blockly/zh-hans.js +++ b/common/msg/blockly/zh-hans.js @@ -4095,19 +4095,30 @@ ZhHans.MIXLY_GET_PICTURE_DATA = '获取图像数据'; ZhHans.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕显示摄像头采集图像'; ZhHans.MIXlY_STOP_SCREEN_DISPLAY = '关闭摄像头采集图像LCD实时显示'; ZhHans.MIXLY_RECOGNITION = '检测'; -ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = '获取二维码检测结果'; -ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = '无检测结果返回None,有结果左上角出现绿色小方块,并返回二维码信息。' +// ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = '获取二维码检测结果'; +// ZhHans.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = '无检测结果返回None,有结果左上角出现绿色小方块,并返回二维码信息。' ZhHans.COLOUR_RGB_GREY = "灰色"; ZhHans.MIXLY_CUSTOM_STUDY = "自定义学习"; -ZhHans.MIXLY_GET_COLOR_DETECTION_RESULT = '获取颜色检测结果'; +// ZhHans.MIXLY_GET_COLOR_DETECTION_RESULT = '获取颜色检测结果'; ZhHans.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP ='获取颜色采集结果,返回矩形区域数量和对应的左上角和右下角坐标(4个值)。'; ZhHans.MIXLY_CAT_FACE = '猫脸'; ZhHans.MIXLY_GET_CAT_FACE_DETECTION_RESULT = '获取猫脸检测结果'; ZhHans.MIXLY_GET_CAT_FACE_DETECTION_RESULT_TOOLTIP = '获取猫脸检测结果,返回矩形区域数量和对应的左上角和右下角坐标(4个值)。'; -ZhHans.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT = '获取人脸检测结果'; -ZhHans.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP = '获取人脸检测结果,返回矩形区域数量、对应的矩形框左边以及五点关键特征值。说明:v[0]:人脸数量;v[1-4]:矩形左上角和右下角坐标;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐标。'; -ZhHans.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT = '获取人脸识别结果'; -ZhHans.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP = '获取人脸识别结果,获取人识别结果,返回人脸ID(ID从1开始)、矩形区域和和对应的5点坐标。说明:v[0]:人脸数量;v[1-4]:矩形左上角和右下角坐标;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐标。'; +// ZhHans.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT = '获取人脸检测结果'; +// ZhHans.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP = '获取人脸检测结果,返回矩形区域数量、对应的矩形框左边以及五点关键特征值。说明:v[0]:人脸数量;v[1-4]:矩形左上角和右下角坐标;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐标。'; +// ZhHans.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT = '获取人脸识别结果'; +// ZhHans.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP = '获取人脸识别结果,获取人识别结果,返回人脸ID(ID从1开始)、矩形区域和和对应的5点坐标。说明:v[0]:人脸数量;v[1-4]:矩形左上角和右下角坐标;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐标。'; ZhHans.FACE_ENROLL = '录入人脸'; ZhHans.MIXLY_DELETE_PEOPLE_FACE_ID = '删除人脸ID信息'; +ZhHans.MIXLY_GET_PICTURE_DATA_TOOLTIP = '返回图像的(宽,高,数据)'; +ZhHans.MIXLY_EMOTION_DETEECTION = '情绪检测'; +ZhHans.MIXLY_HOW_MUCH = '有几个'; +ZhHans.MIXLY_Pixel_block = '像素块'; +ZhHans.MIXLY_KEYPOINT = '关键点'; +ZhHans.MIXLY_LEFT_EYE = '左眼'; +ZhHans.MIXLY_RIGHT_EYE = '右眼'; +ZhHans.MIXLY_NOSE = '鼻子'; +ZhHans.MIXLY_LEFT_MOUSE_CORNER = '左嘴角'; +ZhHans.MIXLY_RIGHT_MOUSE_CORNER = '右嘴角'; +ZhHans.MIXLY_RECOGNITION_RECGNITION = '识别'; })(); \ No newline at end of file