From 5c69891c4b0491779d1e3a999de5f54d310677cd Mon Sep 17 00:00:00 2001 From: Irene-Maxine <114802521+Irene-Maxine@users.noreply.github.com> Date: Sun, 25 May 2025 15:45:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=BF=E8=BD=BD=E6=99=BA=E8=83=BD=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=A2=9E=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../micropython/blocks/actuator_onboard.js | 2 +- .../micropython/blocks/ai_local.js | 474 ++++++++++++++++++ .../micropython/blocks/display_onboard.js | 20 +- .../micropython/blocks/sensor_onboard.js | 215 -------- boards/default_src/micropython/export.js | 4 + .../micropython/generators/ai_local.js | 218 ++++++++ .../micropython/generators/display_onboard.js | 10 + .../micropython/generators/sensor_onboard.js | 86 ---- .../default_src/micropython_esp32c2/index.js | 4 + .../css/color_esp32s2_mixgoce.css | 20 + .../default_src/micropython_esp32s3/index.js | 4 + .../micropython_esp32s3/template.xml | 80 ++- common/media/mark/AIvoice.png | Bin 0 -> 1356 bytes common/media/mark/AIvoice2.png | Bin 0 -> 1072 bytes common/msg/blockly/zh-hans.js | 24 + 15 files changed, 846 insertions(+), 315 deletions(-) create mode 100644 boards/default_src/micropython/blocks/ai_local.js create mode 100644 boards/default_src/micropython/generators/ai_local.js create mode 100644 common/media/mark/AIvoice.png create mode 100644 common/media/mark/AIvoice2.png diff --git a/boards/default_src/micropython/blocks/actuator_onboard.js b/boards/default_src/micropython/blocks/actuator_onboard.js index 57076e65..03ee04ae 100644 --- a/boards/default_src/micropython/blocks/actuator_onboard.js +++ b/boards/default_src/micropython/blocks/actuator_onboard.js @@ -951,7 +951,7 @@ export const set_power_output = { this.appendDummyInput() .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.ME_GO_MOTOR_EXTERN) .appendField(Blockly.Msg.PIN_NUMBERING) - .appendField(new Blockly.FieldDropdown([["1", "1"], ["2", "2"], ["3", "3"]]), "index"); + .appendField(new Blockly.FieldDropdown([["1", "1"], ["2", "2"], ["3", "3"],["4", "4"]]), "index"); this.appendValueInput('duty') .setCheck(Number) .setAlign(Blockly.inputs.Align.RIGHT) diff --git a/boards/default_src/micropython/blocks/ai_local.js b/boards/default_src/micropython/blocks/ai_local.js new file mode 100644 index 00000000..302f7168 --- /dev/null +++ b/boards/default_src/micropython/blocks/ai_local.js @@ -0,0 +1,474 @@ +import * as Blockly from 'blockly/core'; +const AI_LOCAL_VOICE_HUE = '#D1D431'; +const AI_LOCAL_GRAPH_HUE = '#90A244'; + +//voice part +export const CI130X_IDENTIFY_AND_SAVE_SANT = { + init: function () { + this.setColour(AI_LOCAL_VOICE_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.MIXLY_IDENTIFY_ONCE_AND_SAVE) + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +}; + +export const CI130X_GET_WHETHER_IDENTIFY_SANT = { + init: function () { + this.setColour(AI_LOCAL_VOICE_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.MIXLY_GET) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_HELLO_XIAOZHI, "1"], + [Blockly.Msg.MIXLY_XIAOZHIXIAOZHI, "2"], + [Blockly.Msg.MIXLY_THE_FIRST, "3"], + [Blockly.Msg.MIXLY_THE_SECOND, "4"], + [Blockly.Msg.MIXLY_THE_THIRD, "5"], + [Blockly.Msg.MIXLY_THE_FOURTH, "6"], + [Blockly.Msg.MIXLY_THE_FIFTH, "7"], + [Blockly.Msg.MIXLY_THE_SIXTH, "8"], + [Blockly.Msg.MIXLY_THE_SEVENTH, "9"], + [Blockly.Msg.MIXLY_THE_EIGHTH, "10"], + [Blockly.Msg.MIXLY_THE_NINTH, "11"], + [Blockly.Msg.MIXLY_THE_TENTH, "12"], + [Blockly.Msg.MIXLY_THE_ELEVENTH, "13"], + [Blockly.Msg.MIXLY_THE_TWELFTH, "14"], + [Blockly.Msg.MIXLY_THE_13TH, "15"], + [Blockly.Msg.MIXLY_THE_14TH, "16"], + [Blockly.Msg.MIXLY_THE_15TH, "17"], + [Blockly.Msg.MIXLY_THE_16TH, "18"], + [Blockly.Msg.MIXLY_THE_17TH, "19"], + [Blockly.Msg.MIXLY_THE_18TH, "20"], + [Blockly.Msg.MIXLY_THE_19TH, "21"], + [Blockly.Msg.MIXLY_THE_20TH, "22"], + [Blockly.Msg.MIXLY_Turn_on_the_lights, "23"], + [Blockly.Msg.MIXLY_Turn_off_the_lights, "24"], + [Blockly.Msg.MIXLY_Turn_up_the_brightness, "25"], + [Blockly.Msg.MIXLY_Turn_down_the_brightness, "26"], + [Blockly.Msg.MIXLY_Set_it_to_red, "27"], + [Blockly.Msg.MIXLY_Set_it_to_orange, "28"], + [Blockly.Msg.MIXLY_Set_it_to_yellow, "29"], + [Blockly.Msg.MIXLY_Set_it_to_green, "30"], + [Blockly.Msg.MIXLY_Set_it_to_cyan, "31"], + [Blockly.Msg.MIXLY_Set_it_to_blue, "32"], + [Blockly.Msg.MIXLY_Set_it_to_purple, "33"], + [Blockly.Msg.MIXLY_Set_it_to_white, "34"], + [Blockly.Msg.MIXLY_Turn_on_the_fan, "35"], + [Blockly.Msg.MIXLY_Turn_off_the_fan, "36"], + [Blockly.Msg.MIXLY_First_gear, "37"], + [Blockly.Msg.MIXLY_Wind_speed_second, "38"], + [Blockly.Msg.MIXLY_Third_gear, "39"], + [Blockly.Msg.MIXLY_Previous, "40"], + [Blockly.Msg.MIXLY_Next_page, "41"], + [Blockly.Msg.MIXLY_Show_smiley_face, "42"], + [Blockly.Msg.MIXLY_Show_crying_face, "43"], + [Blockly.Msg.MIXLY_Show_love, "44"], + [Blockly.Msg.MIXLY_Close_display, "45"], + [Blockly.Msg.MIXLY_Start_execution, "46"], + [Blockly.Msg.MIXLY_FORWARD, "47"], + [Blockly.Msg.MIXLY_BACKWARD, "48"], + [Blockly.Msg.MIXLY_TURNLEFT, "49"], + [Blockly.Msg.MIXLY_TURNRIGHT, "50"], + [Blockly.Msg.MIXLY_STOP, "51"], + [Blockly.Msg.MIXLY_Accelerate, "52"], + [Blockly.Msg.MIXLY_retard, "53"], + [Blockly.Msg.ROTATION_FORWARD, "54"], + [Blockly.Msg.ROTATION_BACKWARD, "55"], + [Blockly.Msg.MIXLY_Query_temperature, "56"], + [Blockly.Msg.MIXLY_Query_humidity, "57"], + [Blockly.Msg.MIXLY_Query_brightness, "58"], + [Blockly.Msg.MIXLY_Query_sound, "59"], + [Blockly.Msg.MIXLY_Query_time, "60"], + [Blockly.Msg.MIXLY_Query_distance, "61"], + [Blockly.Msg.MIXLY_Query_pressure, "62"], + [Blockly.Msg.MIXLY_Query_key, "63"], + [Blockly.Msg.MIXLY_Query_touch, "64"], + [Blockly.Msg.MIXLY_Query_color, "65"] + ]), "cmd") + .appendField(Blockly.Msg.MIXLY_WHETHER + Blockly.Msg.MIXLY_BE_IDENTIFIED); + this.setOutput(true); + this.setInputsInline(true); + } +}; + +export const CI130X_GET_THE_RECOGNIZED_CMD_SANT = { + init: function () { + this.setColour(AI_LOCAL_VOICE_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.MIXLY_GET) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_RECOGNIZED_STATE, "status1"], + [Blockly.Msg.MIXLY_WHETHER_BROADCAST, "status2"], + [Blockly.Msg.MIXLY_THE_RECOGNIZED_CMD, "result"] + ]), "key") + this.setOutput(true); + this.setInputsInline(true); + this.setTooltip(Blockly.Msg.MIXLY_CI130X_GET_THE_RECOGNIZED_STATE_TOOLTIP); + } +}; + +export const CI130X_BROADCAST_SANT = { + init: function () { + this.setColour(AI_LOCAL_VOICE_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.MIXLY_MP3_PLAY) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE, "None"], + [Blockly.Msg.MIXLY_WIND_SPEED, "154"], + [Blockly.Msg.MIXLY_HYETAL, "155"], + [Blockly.Msg.MIXLY_TEMPERATURE, "156"], + [Blockly.Msg.MIXLY_Humidity, "157"], + [Blockly.Msg.MIXLY_Altitude, "158"], + [Blockly.Msg.MIXLY_SOUND, "159"], + [Blockly.Msg.MIXLY_BRIGHTNESS, "160"], + [Blockly.Msg.ME_GO_HALL_SENSOR_DISTANCE, "161"], + [Blockly.Msg.MIXLY_SERVO, "162"], + [Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, "163"], + [Blockly.Msg.MIXLY_BUTTON2, "164"], + [Blockly.Msg.MIXLY_ESP32_TOUCH, "165"], + [Blockly.Msg.MIXLY_PAY, "166"], + [Blockly.Msg.MIXLY_CARSH_CHANGE, "167"], + [Blockly.Msg.MIXLY_COUNTDOWN, "168"], + [Blockly.Msg.MIXLY_TIMING, "169"], + [Blockly.Msg.MIXLY_AT_THE_MOMENT, "170"], + [Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE, "171"], + [Blockly.Msg.MIXLY_FORWARD, "172"], + [Blockly.Msg.MIXLY_BACKWARD, "173"], + [Blockly.Msg.MIXLY_TURNLEFT, "174"], + [Blockly.Msg.MIXLY_TURNRIGHT, "175"], + [Blockly.Msg.MIXLY_STOP, "176"], + [Blockly.Msg.MIXLY_Accelerate, "177"], + [Blockly.Msg.MIXLY_retard, "178"], + [Blockly.Msg.ROTATION_FORWARD, "179"], + [Blockly.Msg.ROTATION_BACKWARD, "180"], + [Blockly.Msg.TUPLE_JOIN, "181"], + [Blockly.Msg.MIXLY_SHOW, "182"], + [Blockly.Msg.MIXLY_LAMPLIGHT, "183"], + [Blockly.Msg.MIXLY_ACCELERATION, "184"] + ]), "star"); + this.appendValueInput('NUM') + .appendField(Blockly.Msg.MIXLY_NUMBER); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_UNIT) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE, "None"], + [Blockly.Msg.MIXLY_YEAR, "117"], + [Blockly.Msg.MIXLY_MONTH, "118"], + [Blockly.Msg.MIXLY_DAY, "119"], + [Blockly.Msg.MIXLY_HOUR, "120"], + [Blockly.Msg.MIXLY_MINUTE, "121"], + [Blockly.Msg.MIXLY_SECOND, "122"], + [Blockly.Msg.MIXLY_WEEK2, "123"], + [Blockly.Msg.MIXLY_RMB_UNIT, "124"], + [Blockly.Msg.blockpy_setheading_degree, "125"], + [Blockly.Msg.MIXLY_GEAR, "126"], + [Blockly.Msg.MIXLY_LAYER, "127"], + [Blockly.Msg.MIXLY_GRAM, "128"], + [Blockly.Msg.MIXLY_METER, "129"], + [Blockly.Msg.MIXLY_CENTIMETER, "130"], + [Blockly.Msg.MIXLY_MILLIMETER, "131"], + [Blockly.Msg.MIXLY_LUMEN, "132"], + [Blockly.Msg.MIXLY_DECIBEL, "133"], + [Blockly.Msg.MIXLY_hectopascal, "134"], + [Blockly.Msg.MIXLY_PERCENT, "135"], + [Blockly.Msg.MIXLY_CELSIUS, "136"], + [Blockly.Msg.MIXLY_METER_PER_SEC, "137"], + [Blockly.Msg.MIXLY_MICROBIT_Turn_on_display, "138"], + [Blockly.Msg.MIXLY_MICROBIT_Turn_off_display, "139"], + [Blockly.Msg.MIXLY_SUCCESS, "140"], + [Blockly.Msg.MIXLY_FAILED, "141"], + [Blockly.Msg.MIXLY_WRONG, "142"], + [Blockly.Msg.MIXLY_GOOD, "143"], + [Blockly.Msg.MIXLY_blockpy_set_add, "144"], + [Blockly.Msg.MIXLY_DECREASE, "145"], + [Blockly.Msg.COLOUR_RGB_RED, "146"], + [Blockly.Msg.COLOUR_RGB_ORANGE, "147"], + [Blockly.Msg.COLOUR_YELLOW, "148"], + [Blockly.Msg.COLOUR_RGB_GREEN, "149"], + [Blockly.Msg.COLOUR_CYAN, "150"], + [Blockly.Msg.COLOUR_RGB_BLUE, "151"], + [Blockly.Msg.COLOUR_RGB_PURPLE, "152"], + [Blockly.Msg.COLOUR_RGB_WHITE, "153"] + ]), "end"); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +} + +export const CI130X_SET_SYSTEM_CMD_SANT = { + init: function () { + this.setColour(AI_LOCAL_VOICE_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_SYSTEM + Blockly.Msg.MIXLY_CMD) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MILXY_ENTER_WAKE_UP, "1"], + [Blockly.Msg.MIXLY_INCREASE_VOLUME, "202"], + [Blockly.Msg.MIXLY_REDUCE_VOLUME, "203"], + [Blockly.Msg.MIXLY_MAX_VOLUME, "204"], + [Blockly.Msg.MIXLY_MINIMUM, "205"], + [Blockly.Msg.MIXLY_OPEN_RESPONSE, "206"], + [Blockly.Msg.MIXLY_CLOSE_RESPONSE, "207"], + [Blockly.Msg.MIXLY_QUIT_WAKE_UP, "208"] + ]), "cmd") + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +}; + + + + +//graph part +export const CREATE_CAMERA = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput("") + .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([ + ['VGA : 640px*480px', "VGA"], + ['QVGA : 320px*240px', "QVGA"], + ['LCD : 240px*240px', "LCD"], + ['QQVGA : 160px*120px', "QQVGA"] + ]), "cmd") + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +}; + +export const SHOOT_AND_SAVE_PICTURE = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendValueInput('direct') + .appendField(Blockly.Msg.MIXLY_SHOOT_AND_SAVE_PICTURE) + .appendField(Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MICROPYTHON_HUSKYLENS_SAVE_AS + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +}; + +export const GET_PICTURE_DATA = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_GET_PICTURE_DATA); + this.setOutput(true); + this.setInputsInline(true); + } +}; + +export const SCREEN_SHOW_CAM_GRAPH_SHOOT = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXlY_SCREEN_SHOW_CAM_SHOOT); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +}; + +export const STOP_SCREEN_DISPLAY = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXlY_STOP_SCREEN_DISPLAY); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +}; + +export const INIT_QR_CODE_RECOGNITION= { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput("") + .appendField(Blockly.Msg.MIXLY_SETUP + Blockly.Msg.MIXLY_QR_CODE_RECOGNTITION); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setInputsInline(true); + } +}; + + + +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 = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + 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(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.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); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_GET_COLOR_DETECTION_RESULT); + this.setOutput(true); + this.setInputsInline(true); + 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 = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_GET_CAT_FACE_DETECTION_RESULT); + 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 = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT); + this.setOutput(true); + this.setInputsInline(true); + this.setTooltip(Blockly.Msg.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP); + } +}; + +export const INIT_PEOPLE_FACE_RECOGNITION= { + 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.setInputsInline(true); + } +}; + +export const PEOPLE_FACE_ENROLL = { + init: function () { + this.setColour(AI_LOCAL_GRAPH_HUE); + this.appendDummyInput() + .appendField(Blockly.Msg.FACE_ENROLL); + this.setOutput(true); + this.setInputsInline(true); + } +}; + +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("ID") + .appendField(Blockly.Msg.MIXLY_DELETE_PEOPLE_FACE_ID); + this.setPreviousStatement(true); + this.setNextStatement(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 8f52b8b6..a5ecb4d9 100644 --- a/boards/default_src/micropython/blocks/display_onboard.js +++ b/boards/default_src/micropython/blocks/display_onboard.js @@ -1079,7 +1079,25 @@ export const onboard_tft_show_image_xy = { this.setPreviousStatement(true, null); this.setNextStatement(true, null); this.setInputsInline(true); - this.setTooltip(Blockly.Msg.OLED_BITMAP_OR_STRING); + } +}; + +export const onboard_tft_show_image_xy_direct = { + init: function () { + this.setColour(DISPLAY_ONBOARD_HUE); + this.appendValueInput("x") + .setCheck(Number) + .appendField(Blockly.Msg.OLED_BITMAP) + .appendField('x'); + this.appendValueInput("y") + .setCheck(Number) + .appendField('y'); + this.appendValueInput("direct") + .setCheck(String) + .appendField(Blockly.Msg.MIXLY_AipImageClassify_Image + Blockly.Msg.MIXLY_MICROBIT_PY_STORAGE_THE_PATH); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setInputsInline(true); } }; diff --git a/boards/default_src/micropython/blocks/sensor_onboard.js b/boards/default_src/micropython/blocks/sensor_onboard.js index 0414e982..ac84b7a6 100644 --- a/boards/default_src/micropython/blocks/sensor_onboard.js +++ b/boards/default_src/micropython/blocks/sensor_onboard.js @@ -1575,221 +1575,6 @@ export const educore_rfid_sensor_scan_data = { } }; -export const CI130X_IDENTIFY_AND_SAVE_SANT = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.MIXLY_IDENTIFY_ONCE_AND_SAVE) - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - -export const CI130X_GET_WHETHER_IDENTIFY_SANT = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.MIXLY_GET) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.MIXLY_HELLO_XIAOZHI, "1"], - [Blockly.Msg.MIXLY_XIAOZHIXIAOZHI, "2"], - [Blockly.Msg.MIXLY_THE_FIRST, "3"], - [Blockly.Msg.MIXLY_THE_SECOND, "4"], - [Blockly.Msg.MIXLY_THE_THIRD, "5"], - [Blockly.Msg.MIXLY_THE_FOURTH, "6"], - [Blockly.Msg.MIXLY_THE_FIFTH, "7"], - [Blockly.Msg.MIXLY_THE_SIXTH, "8"], - [Blockly.Msg.MIXLY_THE_SEVENTH, "9"], - [Blockly.Msg.MIXLY_THE_EIGHTH, "10"], - [Blockly.Msg.MIXLY_THE_NINTH, "11"], - [Blockly.Msg.MIXLY_THE_TENTH, "12"], - [Blockly.Msg.MIXLY_THE_ELEVENTH, "13"], - [Blockly.Msg.MIXLY_THE_TWELFTH, "14"], - [Blockly.Msg.MIXLY_THE_13TH, "15"], - [Blockly.Msg.MIXLY_THE_14TH, "16"], - [Blockly.Msg.MIXLY_THE_15TH, "17"], - [Blockly.Msg.MIXLY_THE_16TH, "18"], - [Blockly.Msg.MIXLY_THE_17TH, "19"], - [Blockly.Msg.MIXLY_THE_18TH, "20"], - [Blockly.Msg.MIXLY_THE_19TH, "21"], - [Blockly.Msg.MIXLY_THE_20TH, "22"], - [Blockly.Msg.MIXLY_Turn_on_the_lights, "23"], - [Blockly.Msg.MIXLY_Turn_off_the_lights, "24"], - [Blockly.Msg.MIXLY_Turn_up_the_brightness, "25"], - [Blockly.Msg.MIXLY_Turn_down_the_brightness, "26"], - [Blockly.Msg.MIXLY_Set_it_to_red, "27"], - [Blockly.Msg.MIXLY_Set_it_to_orange, "28"], - [Blockly.Msg.MIXLY_Set_it_to_yellow, "29"], - [Blockly.Msg.MIXLY_Set_it_to_green, "30"], - [Blockly.Msg.MIXLY_Set_it_to_cyan, "31"], - [Blockly.Msg.MIXLY_Set_it_to_blue, "32"], - [Blockly.Msg.MIXLY_Set_it_to_purple, "33"], - [Blockly.Msg.MIXLY_Set_it_to_white, "34"], - [Blockly.Msg.MIXLY_Turn_on_the_fan, "35"], - [Blockly.Msg.MIXLY_Turn_off_the_fan, "36"], - [Blockly.Msg.MIXLY_First_gear, "37"], - [Blockly.Msg.MIXLY_Wind_speed_second, "38"], - [Blockly.Msg.MIXLY_Third_gear, "39"], - [Blockly.Msg.MIXLY_Previous, "40"], - [Blockly.Msg.MIXLY_Next_page, "41"], - [Blockly.Msg.MIXLY_Show_smiley_face, "42"], - [Blockly.Msg.MIXLY_Show_crying_face, "43"], - [Blockly.Msg.MIXLY_Show_love, "44"], - [Blockly.Msg.MIXLY_Close_display, "45"], - [Blockly.Msg.MIXLY_Start_execution, "46"], - [Blockly.Msg.MIXLY_FORWARD, "47"], - [Blockly.Msg.MIXLY_BACKWARD, "48"], - [Blockly.Msg.MIXLY_TURNLEFT, "49"], - [Blockly.Msg.MIXLY_TURNRIGHT, "50"], - [Blockly.Msg.MIXLY_STOP, "51"], - [Blockly.Msg.MIXLY_Accelerate, "52"], - [Blockly.Msg.MIXLY_retard, "53"], - [Blockly.Msg.ROTATION_FORWARD, "54"], - [Blockly.Msg.ROTATION_BACKWARD, "55"], - [Blockly.Msg.MIXLY_Query_temperature, "56"], - [Blockly.Msg.MIXLY_Query_humidity, "57"], - [Blockly.Msg.MIXLY_Query_brightness, "58"], - [Blockly.Msg.MIXLY_Query_sound, "59"], - [Blockly.Msg.MIXLY_Query_time, "60"], - [Blockly.Msg.MIXLY_Query_distance, "61"], - [Blockly.Msg.MIXLY_Query_pressure, "62"], - [Blockly.Msg.MIXLY_Query_key, "63"], - [Blockly.Msg.MIXLY_Query_touch, "64"], - [Blockly.Msg.MIXLY_Query_color, "65"] - ]), "cmd") - .appendField(Blockly.Msg.MIXLY_WHETHER + Blockly.Msg.MIXLY_BE_IDENTIFIED); - this.setOutput(true); - this.setInputsInline(true); - } -}; - -export const CI130X_GET_THE_RECOGNIZED_CMD_SANT = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.MIXLY_GET) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.MIXLY_RECOGNIZED_STATE, "status1"], - [Blockly.Msg.MIXLY_WHETHER_BROADCAST, "status2"], - [Blockly.Msg.MIXLY_THE_RECOGNIZED_CMD, "result"] - ]), "key") - this.setOutput(true); - this.setInputsInline(true); - this.setTooltip(Blockly.Msg.MIXLY_CI130X_GET_THE_RECOGNIZED_STATE_TOOLTIP); - } -}; - -export const CI130X_BROADCAST_SANT = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.MIXLY_MP3_PLAY) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE, "None"], - [Blockly.Msg.MIXLY_WIND_SPEED, "154"], - [Blockly.Msg.MIXLY_HYETAL, "155"], - [Blockly.Msg.MIXLY_TEMPERATURE, "156"], - [Blockly.Msg.MIXLY_Humidity, "157"], - [Blockly.Msg.MIXLY_Altitude, "158"], - [Blockly.Msg.MIXLY_SOUND, "159"], - [Blockly.Msg.MIXLY_BRIGHTNESS, "160"], - [Blockly.Msg.ME_GO_HALL_SENSOR_DISTANCE, "161"], - [Blockly.Msg.MIXLY_SERVO, "162"], - [Blockly.Msg.MIXLY_MICROBIT_JS_BY_ANGLE, "163"], - [Blockly.Msg.MIXLY_BUTTON2, "164"], - [Blockly.Msg.MIXLY_ESP32_TOUCH, "165"], - [Blockly.Msg.MIXLY_PAY, "166"], - [Blockly.Msg.MIXLY_CARSH_CHANGE, "167"], - [Blockly.Msg.MIXLY_COUNTDOWN, "168"], - [Blockly.Msg.MIXLY_TIMING, "169"], - [Blockly.Msg.MIXLY_AT_THE_MOMENT, "170"], - [Blockly.Msg.MIXLY_MICROBIT_JS_CURRENT_GESTURE, "171"], - [Blockly.Msg.MIXLY_FORWARD, "172"], - [Blockly.Msg.MIXLY_BACKWARD, "173"], - [Blockly.Msg.MIXLY_TURNLEFT, "174"], - [Blockly.Msg.MIXLY_TURNRIGHT, "175"], - [Blockly.Msg.MIXLY_STOP, "176"], - [Blockly.Msg.MIXLY_Accelerate, "177"], - [Blockly.Msg.MIXLY_retard, "178"], - [Blockly.Msg.ROTATION_FORWARD, "179"], - [Blockly.Msg.ROTATION_BACKWARD, "180"], - [Blockly.Msg.TUPLE_JOIN, "181"], - [Blockly.Msg.MIXLY_SHOW, "182"], - [Blockly.Msg.MIXLY_LAMPLIGHT, "183"], - [Blockly.Msg.MIXLY_ACCELERATION, "184"] - ]), "star"); - this.appendValueInput('NUM') - .appendField(Blockly.Msg.MIXLY_NUMBER); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_UNIT) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.MIXLY_MICROBIT_JS_INOUT_PULL_NONE, "None"], - [Blockly.Msg.MIXLY_YEAR, "117"], - [Blockly.Msg.MIXLY_MONTH, "118"], - [Blockly.Msg.MIXLY_DAY, "119"], - [Blockly.Msg.MIXLY_HOUR, "120"], - [Blockly.Msg.MIXLY_MINUTE, "121"], - [Blockly.Msg.MIXLY_SECOND, "122"], - [Blockly.Msg.MIXLY_WEEK2, "123"], - [Blockly.Msg.MIXLY_RMB_UNIT, "124"], - [Blockly.Msg.blockpy_setheading_degree, "125"], - [Blockly.Msg.MIXLY_GEAR, "126"], - [Blockly.Msg.MIXLY_LAYER, "127"], - [Blockly.Msg.MIXLY_GRAM, "128"], - [Blockly.Msg.MIXLY_METER, "129"], - [Blockly.Msg.MIXLY_CENTIMETER, "130"], - [Blockly.Msg.MIXLY_MILLIMETER, "131"], - [Blockly.Msg.MIXLY_LUMEN, "132"], - [Blockly.Msg.MIXLY_DECIBEL, "133"], - [Blockly.Msg.MIXLY_hectopascal, "134"], - [Blockly.Msg.MIXLY_PERCENT, "135"], - [Blockly.Msg.MIXLY_CELSIUS, "136"], - [Blockly.Msg.MIXLY_METER_PER_SEC, "137"], - [Blockly.Msg.MIXLY_MICROBIT_Turn_on_display, "138"], - [Blockly.Msg.MIXLY_MICROBIT_Turn_off_display, "139"], - [Blockly.Msg.MIXLY_SUCCESS, "140"], - [Blockly.Msg.MIXLY_FAILED, "141"], - [Blockly.Msg.MIXLY_WRONG, "142"], - [Blockly.Msg.MIXLY_GOOD, "143"], - [Blockly.Msg.MIXLY_blockpy_set_add, "144"], - [Blockly.Msg.MIXLY_DECREASE, "145"], - [Blockly.Msg.COLOUR_RGB_RED, "146"], - [Blockly.Msg.COLOUR_RGB_ORANGE, "147"], - [Blockly.Msg.COLOUR_YELLOW, "148"], - [Blockly.Msg.COLOUR_RGB_GREEN, "149"], - [Blockly.Msg.COLOUR_CYAN, "150"], - [Blockly.Msg.COLOUR_RGB_BLUE, "151"], - [Blockly.Msg.COLOUR_RGB_PURPLE, "152"], - [Blockly.Msg.COLOUR_RGB_WHITE, "153"] - ]), "end"); - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -} - -export const CI130X_SET_SYSTEM_CMD_SANT = { - init: function () { - this.setColour(SENSOR_ONBOARD_HUE); - this.appendDummyInput("") - .appendField(Blockly.Msg.MIXLY_AipSpeech_asr + Blockly.Msg.LISTS_SET_INDEX_SET + Blockly.Msg.MIXLY_SYSTEM + Blockly.Msg.MIXLY_CMD) - .appendField(new Blockly.FieldDropdown([ - [Blockly.Msg.MILXY_ENTER_WAKE_UP, "1"], - [Blockly.Msg.MIXLY_INCREASE_VOLUME, "202"], - [Blockly.Msg.MIXLY_REDUCE_VOLUME, "203"], - [Blockly.Msg.MIXLY_MAX_VOLUME, "204"], - [Blockly.Msg.MIXLY_MINIMUM, "205"], - [Blockly.Msg.MIXLY_OPEN_RESPONSE, "206"], - [Blockly.Msg.MIXLY_CLOSE_RESPONSE, "207"], - [Blockly.Msg.MIXLY_QUIT_WAKE_UP, "208"] - ]), "cmd") - this.setPreviousStatement(true); - this.setNextStatement(true); - this.setInputsInline(true); - } -}; - export const sensor_get_the_coprocessor_version = { init: function () { this.setColour(SENSOR_ONBOARD_HUE); diff --git a/boards/default_src/micropython/export.js b/boards/default_src/micropython/export.js index 5a80f5d3..32d28e33 100644 --- a/boards/default_src/micropython/export.js +++ b/boards/default_src/micropython/export.js @@ -3,6 +3,7 @@ import * as MicroPythonActuatorOnBoardBlocks from './blocks/actuator_onboard'; import * as MicroPythonActuatorBlocks from './blocks/actuator'; import * as MicroPythonAISensorBlocks from './blocks/ai_sensor'; import * as MicroPythonAIBlocks from './blocks/ai'; +import * as MicroPythonAILocalBlocks from './blocks/ai_local'; import * as MicroPythonBlynkBlocks from './blocks/blynk'; import * as MicroPythonCCG1Blocks from './blocks/cc_g1'; import * as MicroPythonCEGOBlocks from './blocks/ce_go'; @@ -29,6 +30,7 @@ import * as MicroPythonActuatorExternGenerators from './generators/actuator_exte import * as MicroPythonActuatorOnBoardGenerators from './generators/actuator_onboard'; import * as MicroPythonActuatorGenerators from './generators/actuator'; import * as MicroPythonAISensorGenerators from './generators/ai_sensor'; +import * as MicroPythonAILocalGenerators from './generators/ai_local'; import * as MicroPythonAIGenerators from './generators/ai'; import * as MicroPythonBlynkGenerators from './generators/blynk'; import * as MicroPythonCCG1Generators from './generators/cc_g1'; @@ -58,6 +60,7 @@ export { MicroPythonActuatorBlocks, MicroPythonAISensorBlocks, MicroPythonAIBlocks, + MicroPythonAILocalBlocks, MicroPythonBlynkBlocks, MicroPythonCCG1Blocks, MicroPythonCEGOBlocks, @@ -84,6 +87,7 @@ export { MicroPythonActuatorGenerators, MicroPythonAISensorGenerators, MicroPythonAIGenerators, + MicroPythonAILocalGenerators, MicroPythonBlynkGenerators, MicroPythonCCG1Generators, MicroPythonCEGOGenerators, diff --git a/boards/default_src/micropython/generators/ai_local.js b/boards/default_src/micropython/generators/ai_local.js new file mode 100644 index 00000000..2a5c9a6c --- /dev/null +++ b/boards/default_src/micropython/generators/ai_local.js @@ -0,0 +1,218 @@ +import { Boards } from 'mixly'; + +//voice part +export const CI130X_IDENTIFY_AND_SAVE_SANT = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + if(version == 'mixgo_sant'){ + generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; + var code = 'onboard_asr.cmd_id()\n'; + } + else if(version == 'mixgo_mini'){ + generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; + var code = 'ext_asr.cmd_id()\n'; + } + return code; +} + +export const CI130X_GET_WHETHER_IDENTIFY_SANT = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + if(version == 'mixgo_sant'){ + generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; + var cmd = this.getFieldValue('cmd'); + var code = 'onboard_asr.result(' + cmd + ')'; + } + else if(version == 'mixgo_mini'){ + generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; + var cmd = this.getFieldValue('cmd'); + var code = 'ext_asr.result(' + cmd + ')'; + } + return [code, generator.ORDER_ATOMIC]; +} + +export const CI130X_GET_THE_RECOGNIZED_CMD_SANT = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + if(version == 'mixgo_sant'){ + generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; + var key = this.getFieldValue('key'); + if (key == 'status1') { + var code = 'onboard_asr.status()[0]'; + } else if (key == 'status2') { + var code = 'onboard_asr.status()[1]'; + } else { + var code = 'onboard_asr.' + key + '()'; + } + }else if(version == 'mixgo_mini'){ + generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; + var key = this.getFieldValue('key'); + if (key == 'status1') { + var code = 'ext_asr.status()[0]'; + } else if (key == 'status2') { + var code = 'ext_asr.status()[1]'; + } else { + var code = 'ext_asr.' + key + '()'; + } + } + return [code, generator.ORDER_ATOMIC]; +} + + + + +//graph part +export const CI130X_BROADCAST_SANT = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + if(version == 'mixgo_sant'){ + generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; + var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); + var star = this.getFieldValue('star'); + var end = this.getFieldValue('end'); + var code = 'onboard_asr.play(' + star + ', ' + num + ', ' + end + ')\n'; + }else if(version == 'mixgo_mini'){ + generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; + var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); + var star = this.getFieldValue('star'); + var end = this.getFieldValue('end'); + var code = 'ext_asr.play(' + star + ', ' + num + ', ' + end + ')\n'; + } + return code; +} + +export const CI130X_SET_SYSTEM_CMD_SANT = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + if(version == 'mixgo_sant'){ + generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; + var cmd = this.getFieldValue('cmd'); + var code = 'onboard_asr.sys_cmd(' + cmd + ')\n'; + }else if(version == 'mixgo_mini'){ + generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; + var cmd = this.getFieldValue('cmd'); + var code = 'ext_asr.sys_cmd(' + cmd + ')\n'; + } + return code; +} + +export const CREATE_CAMERA = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + generator.definitions_['import_camera'] = 'import camera'; + var cmd = this.getFieldValue('cmd'); + var code = 'cam = camera.GC032A(camera.' + cmd + ')\n'; + return code; +} + +export const SHOOT_AND_SAVE_PICTURE = function (_, generator) { + var direct = generator.valueToCode(this, 'direct', generator.ORDER_ATOMIC); + var code = 'cam.snapshot(' + direct + ')\n'; + return code; +} + +export const GET_PICTURE_DATA = function (_, generator) { + var code = 'cam.snapshot()'; + return [code, generator.ORDER_ATOMIC]; +} + +export const SCREEN_SHOW_CAM_GRAPH_SHOOT = function (_, generator) { + var code = 'cam.display()\n'+'time.sleep(1)\n'; + return code; +} + +export const STOP_SCREEN_DISPLAY = function (_, generator) { + var code = 'cam.display_stop()\n'; + 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'; + 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'; + 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()'; + 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()'; + 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()'; + 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 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()'; + return [code, generator.ORDER_ATOMIC]; +} + +export const DELETE_PEOPLE_FACE_ID = function (_, generator) { + generator.definitions_['import_esp_ai'] = 'import esp_ai'; + var id = generator.valueToCode(this, 'ID', generator.ORDER_ATOMIC); + var code = '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 560fcb9e..bb1d031a 100644 --- a/boards/default_src/micropython/generators/display_onboard.js +++ b/boards/default_src/micropython/generators/display_onboard.js @@ -840,6 +840,16 @@ export const onboard_tft_show_image_xy = function (_, generator) { return code; } +export const onboard_tft_show_image_xy_direct = function (_, generator) { + var version = Boards.getSelectedBoardKey().split(':')[2]; + generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; + 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"; + return code; +} + export const onboard_tft_show_image_or_string_delay = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; diff --git a/boards/default_src/micropython/generators/sensor_onboard.js b/boards/default_src/micropython/generators/sensor_onboard.js index caf0965b..595cd0c8 100644 --- a/boards/default_src/micropython/generators/sensor_onboard.js +++ b/boards/default_src/micropython/generators/sensor_onboard.js @@ -932,92 +932,6 @@ export const educore_rfid_sensor_scan_data = function (_, generator) { return [code, generator.ORDER_ATOMIC]; } -export const CI130X_IDENTIFY_AND_SAVE_SANT = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2]; - if(version == 'mini_sant'){ - generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; - var code = 'onboard_asr.cmd_id()\n'; - } - else if(version == 'mixgo_mini'){ - generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; - var code = 'ext_asr.cmd_id()\n'; - } - return code; -} - -export const CI130X_GET_WHETHER_IDENTIFY_SANT = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2]; - if(version == 'mini_sant'){ - generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; - var cmd = this.getFieldValue('cmd'); - var code = 'onboard_asr.result(' + cmd + ')'; - } - else if(version == 'mixgo_mini'){ - generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; - var cmd = this.getFieldValue('cmd'); - var code = 'ext_asr.result(' + cmd + ')'; - } - return [code, generator.ORDER_ATOMIC]; -} - -export const CI130X_GET_THE_RECOGNIZED_CMD_SANT = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2]; - if(version == 'mini_sant'){ - generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; - var key = this.getFieldValue('key'); - if (key == 'status1') { - var code = 'onboard_asr.status()[0]'; - } else if (key == 'status2') { - var code = 'onboard_asr.status()[1]'; - } else { - var code = 'onboard_asr.' + key + '()'; - } - }else if(version == 'mixgo_mini'){ - generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; - var key = this.getFieldValue('key'); - if (key == 'status1') { - var code = 'ext_asr.status()[0]'; - } else if (key == 'status2') { - var code = 'ext_asr.status()[1]'; - } else { - var code = 'ext_asr.' + key + '()'; - } - } - return [code, generator.ORDER_ATOMIC]; -} - -export const CI130X_BROADCAST_SANT = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2]; - if(version == 'mini_sant'){ - generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; - var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var star = this.getFieldValue('star'); - var end = this.getFieldValue('end'); - var code = 'onboard_asr.play(' + star + ', ' + num + ', ' + end + ')\n'; - }else if(version == 'mixgo_mini'){ - generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; - var num = generator.valueToCode(this, 'NUM', generator.ORDER_ATOMIC); - var star = this.getFieldValue('star'); - var end = this.getFieldValue('end'); - var code = 'ext_asr.play(' + star + ', ' + num + ', ' + end + ')\n'; - } - return code; -} - -export const CI130X_SET_SYSTEM_CMD_SANT = function (_, generator) { - var version = Boards.getSelectedBoardKey().split(':')[2]; - if(version == 'mini_sant'){ - generator.definitions_['import_' + version + '_onboard_asr'] = 'from ' + version + ' import onboard_asr'; - var cmd = this.getFieldValue('cmd'); - var code = 'onboard_asr.sys_cmd(' + cmd + ')\n'; - }else if(version == 'mixgo_mini'){ - generator.definitions_['import_mini_gx_ext_asr'] = 'from mini_gx import ext_asr'; - var cmd = this.getFieldValue('cmd'); - var code = 'ext_asr.sys_cmd(' + cmd + ')\n'; - } - return code; -} - export const sensor_get_the_coprocessor_version = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; generator.definitions_['import_' + version + '_onboard_bot'] = 'from ' + version + ' import onboard_bot'; diff --git a/boards/default_src/micropython_esp32c2/index.js b/boards/default_src/micropython_esp32c2/index.js index 06d80529..a306c323 100644 --- a/boards/default_src/micropython_esp32c2/index.js +++ b/boards/default_src/micropython_esp32c2/index.js @@ -38,6 +38,7 @@ import { MicroPythonActuatorOnBoardBlocks, MicroPythonAISensorBlocks, MicroPythonAIBlocks, + MicroPythonAILocalBlocks, MicroPythonBlynkBlocks, MicroPythonCCG1Blocks, MicroPythonCEGOBlocks, @@ -57,6 +58,7 @@ import { MicroPythonActuatorOnBoardGenerators, MicroPythonAISensorGenerators, MicroPythonAIGenerators, + MicroPythonAILocalGenerators, MicroPythonBlynkGenerators, MicroPythonCCG1Generators, MicroPythonCEGOGenerators, @@ -120,6 +122,7 @@ Object.assign( MicroPythonIotBlocks, MicroPythonWeatherBlocks, MicroPythonAISensorBlocks, + MicroPythonAILocalBlocks, MicroPythonSensorOnBoardBlocks, MicroPythonSensorExternBlocks, MicroPythonNetworkBlocks, @@ -160,6 +163,7 @@ Object.assign( MicroPythonIotGenerators, MicroPythonWeatherGenerators, MicroPythonAISensorGenerators, + MicroPythonAILocalGenerators, MicroPythonSensorOnBoardGenerators, MicroPythonSensorExternGenerators, MicroPythonNetworkGenerators, 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 f85ff3c5..2acbc07f 100644 --- a/boards/default_src/micropython_esp32s3/css/color_esp32s2_mixgoce.css +++ b/boards/default_src/micropython_esp32s3/css/color_esp32s2_mixgoce.css @@ -446,4 +446,24 @@ div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div.blocklyTr #catBLEKM.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { background: url('../../../../common/media/mark/comuni2.png') no-repeat; background-size: 100% auto; +} + +#catAIgraphsensor.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { + background: url('../../../../common/media/mark/image.png') no-repeat; + background-size: 100% auto; +} + +#catAIgraphsensor.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { + background: url('../../../../common/media/mark/image2.png') no-repeat; + background-size: 100% auto; +} + +#catAIvoicesensor.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { + background: url('../../../../common/media/mark/AIvoice.png') no-repeat; + background-size: 100% auto; +} + +#catAIvoicesensor.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon { + background: url('../../../../common/media/mark/AIvoice2.png') no-repeat; + background-size: 100% auto; } \ No newline at end of file diff --git a/boards/default_src/micropython_esp32s3/index.js b/boards/default_src/micropython_esp32s3/index.js index 2535b6ee..6e0f4125 100644 --- a/boards/default_src/micropython_esp32s3/index.js +++ b/boards/default_src/micropython_esp32s3/index.js @@ -38,6 +38,7 @@ import { MicroPythonActuatorOnBoardBlocks, MicroPythonAISensorBlocks, MicroPythonAIBlocks, + MicroPythonAILocalBlocks, MicroPythonBlynkBlocks, MicroPythonCommunicateBlocks, MicroPythonDisplayExternBlocks, @@ -57,6 +58,7 @@ import { MicroPythonActuatorOnBoardGenerators, MicroPythonAISensorGenerators, MicroPythonAIGenerators, + MicroPythonAILocalGenerators, MicroPythonBlynkGenerators, MicroPythonCommunicateGenerators, MicroPythonDisplayExternGenerators, @@ -117,6 +119,7 @@ Object.assign( MicroPythonIotBlocks, MicroPythonWeatherBlocks, MicroPythonAISensorBlocks, + MicroPythonAILocalBlocks, MicroPythonSensorOnBoardBlocks, MicroPythonSensorExternBlocks, MicroPythonPeG1Blocks, @@ -156,6 +159,7 @@ Object.assign( MicroPythonIotGenerators, MicroPythonWeatherGenerators, MicroPythonAISensorGenerators, + MicroPythonAILocalGenerators, MicroPythonSensorOnBoardGenerators, MicroPythonSensorExternGenerators, MicroPythonPeG1Generators, diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml index a8628e4c..8738081e 100644 --- a/boards/default_src/micropython_esp32s3/template.xml +++ b/boards/default_src/micropython_esp32s3/template.xml @@ -1434,13 +1434,13 @@ - - + + - + @@ -1479,15 +1479,6 @@ - - - - - - - - - @@ -1873,6 +1864,23 @@ + + + + 0 + + + + + 0 + + + + + 12.jpg + + + @@ -2289,6 +2297,54 @@ + + + + + + + 12.jpg + + + + + + + + + + + + + + + + + + + + + + + + + 0 + + + + + + + + + + + + + + + + diff --git a/common/media/mark/AIvoice.png b/common/media/mark/AIvoice.png new file mode 100644 index 0000000000000000000000000000000000000000..e93fbdf6dd0cc7bef91a6c3c99a6e85d301b78c9 GIT binary patch literal 1356 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