diff --git a/boards/default_src/micropython/blocks/ai_local.js b/boards/default_src/micropython/blocks/ai_local.js index 31ae19a8..9232fe18 100644 --- a/boards/default_src/micropython/blocks/ai_local.js +++ b/boards/default_src/micropython/blocks/ai_local.js @@ -1,5 +1,5 @@ import * as Blockly from 'blockly/core'; -const AI_LOCAL_VOICE_HUE = '#D1D431'; +const AI_LOCAL_VOICE_HUE = '#2FAD7A'; const AI_LOCAL_GRAPH_HUE = '#90A244'; //voice part diff --git a/boards/default_src/micropython/generators/display_onboard.js b/boards/default_src/micropython/generators/display_onboard.js index bb1d031a..be97c333 100644 --- a/boards/default_src/micropython/generators/display_onboard.js +++ b/boards/default_src/micropython/generators/display_onboard.js @@ -43,8 +43,8 @@ export const display_show_frame_string = function (_, generator) { if (version == 'mpython' || version == 'educore') { generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; var code = "onboard_oled.frame(" + data + ")\n"; - } else if (version == 'mixgo_nova') { - generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_tft"; + } else if (version == 'mixgo_nova'||'mixgo_sant') { + generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); var code = "onboard_tft.frame(" + data + ", color=0xffff)\n"; } else { @@ -62,7 +62,7 @@ export const display_show_frame_string_delay = function (_, generator) { generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); var code = "onboard_oled.frame(" + data + ', delay=' + time + ")\n"; - } else if (version == 'mixgo_nova') { + } else if (version == 'mixgo_nova'||'mixgo_sant') { generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var code = "onboard_tft.frame(" + data + ', size=5 , delay=' + time + ', color=0xffff)\n'; } else { @@ -78,7 +78,7 @@ export const display_scroll_string = function (_, generator) { generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); var code = "onboard_oled.scroll(" + data + ")\n"; - } else if (version == 'mixgo_nova') { + } else if (version == 'mixgo_nova'||'mixgo_sant') { generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var data = generator.valueToCode(this, 'data', generator.ORDER_ASSIGNMENT); var code = "onboard_tft.scroll(" + data + ", color=0xffff)\n"; @@ -98,7 +98,7 @@ export const display_scroll_string_delay = function (_, generator) { if (version == 'mpython' || version == 'educore') { generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; var code = "onboard_oled.scroll(" + data + ', speed=' + time + ', space=' + space + ")\n"; - } else if (version == 'mixgo_nova') { + } else if (version == 'mixgo_nova'||'mixgo_sant') { generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var code = "onboard_tft.scroll(" + data + ', y=0, size=5, speed=' + time + ', space=' + space + ', color=0xffff)\n'; } else { @@ -141,7 +141,7 @@ export const display_image_builtins = function (block, generator) { export const display_image_builtins_all = function (block, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mixgo_nova') { + if (version == 'mixgo_nova'||'mixgo_sant') { const PIN_VALUE = block.getFieldValue('image'); const data = PIN_VALUE.split('.'); if (data.length !== 2) { @@ -253,7 +253,7 @@ export const display_clear = function (block, generator) { if (version == 'mpython') { generator.definitions_['import_' + version + '_onboard_oled'] = "from " + version + " import onboard_oled"; var code = 'onboard_oled.fill(0)\n' + 'onboard_oled.show()\n'; - } else if (version == 'mixgo_nova') { + } else if (version == 'mixgo_nova'||'mixgo_sant') { generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var code = 'onboard_tft.fill(0)\n' + 'onboard_tft.show()\n'; } else { @@ -288,7 +288,7 @@ export const display_shift = function (a, generator) { var op = a.getFieldValue("OP"); var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC); var code = 'onboard_oled.' + op + '(' + value + ')\n'; - } else if (version == 'mixgo_nova') { + } else if (version == 'mixgo_nova'||'mixgo_sant') { generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var op = a.getFieldValue("OP"); var value = generator.valueToCode(a, 'val', generator.ORDER_ATOMIC); @@ -315,7 +315,7 @@ export const display_get_pixel = function (block, generator) { var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); var code = 'onboard_oled.pixel(int(' + value_x + '), int(' + value_y + '))'; - } else if (version == 'mixgo_nova') { + } else if (version == 'mixgo_nova'||'mixgo_sant') { generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var value_x = generator.valueToCode(block, 'x', generator.ORDER_ATOMIC); var value_y = generator.valueToCode(block, 'y', generator.ORDER_ATOMIC); @@ -332,7 +332,7 @@ export const display_get_pixel = function (block, generator) { export const display_bright_point = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mixgo_nova') { + if (version == 'mixgo_nova'||'mixgo_sant') { 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); @@ -349,7 +349,7 @@ export const display_bright_point = function (_, generator) { export const display_get_screen_pixel = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mixgo_nova') { + if (version == 'mixgo_nova'||'mixgo_sant') { generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var code = 'onboard_tft.get_brightness()'; } else { @@ -361,7 +361,7 @@ export const display_get_screen_pixel = function (_, generator) { export const display_bright_screen = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2]; - if (version == 'mixgo_nova') { + if (version == 'mixgo_nova'||'mixgo_sant') { generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var x = generator.valueToCode(this, 'x', generator.ORDER_ASSIGNMENT); var code = 'onboard_tft.set_brightness(' + x + ')\n'; @@ -1101,7 +1101,7 @@ export const onboard_tft_display_shape_circle = function (block, generator) { export const draw_pointer = function (_, generator) { var version = Boards.getSelectedBoardKey().split(':')[2] - if (version == 'mixgo_nova'){ + if (version == 'mixgo_nova'||'mixgo_sant'){ generator.definitions_['import_' + version + '_onboard_tft'] = "from " + version + " import onboard_tft"; var angle = generator.valueToCode(this, 'angle', generator.ORDER_ASSIGNMENT); var code = "onboard_tft.pointern(angle=" + angle + ")\n"; diff --git a/boards/default_src/micropython_esp32s3/template.xml b/boards/default_src/micropython_esp32s3/template.xml index 092aa5fd..bfc2a90f 100644 --- a/boards/default_src/micropython_esp32s3/template.xml +++ b/boards/default_src/micropython_esp32s3/template.xml @@ -2333,7 +2333,7 @@ - + @@ -5116,7 +5116,7 @@ - + @@ -5133,7 +5133,8 @@ - > + + diff --git a/common/media/mark/AIvoice.png b/common/media/mark/AIvoice.png index e93fbdf6..395a9acf 100644 Binary files a/common/media/mark/AIvoice.png and b/common/media/mark/AIvoice.png differ diff --git a/common/msg/blockly/en.js b/common/msg/blockly/en.js index 48c504c3..ea1995ce 100644 --- a/common/msg/blockly/en.js +++ b/common/msg/blockly/en.js @@ -40,6 +40,8 @@ En.MSG = { catAIOT:"Intelligent IOT", catAIsensor:"MixGoAI Sensor", catAIsensor2:"MixGoAI image identification", + catAIgraphsensor:"Image processing", + catAIvoicesensor:"Speech processing", catSensor: "Sensor", catActuator: "Actuator", catExternSensor: "External Sensor", @@ -64,6 +66,7 @@ En.MSG = { catTurtle: "Turtle", catTuple: "Tuple", catIot: "IOT", + catAIonboard:"On-board intelligence", catSet: "Set", catData: "Data", catAlgorithm: "Algorithm", @@ -3926,4 +3929,25 @@ En.MIXLY_SET_DEGREE = 'convert angles'; En.MIXLY_TRANS_TO_RADIAN = 'to radians'; En.MIXLY_REF_TO_PRESSURE = 'Reference pressure'; En.MIXLY_CAL_TO_ALTITUDE = 'Calculate the altitude'; +En.MIXLY_SHOOTING_SIZE = 'Capture Size'; +En.MIXLY_SHOOT_AND_SAVE_PICTURE = 'Capture and Save Photo'; +En.MIXLY_GET_PICTURE_DATA = 'Get Image Data'; +En.MIXlY_SCREEN_SHOW_CAM_SHOOT = 'Display Camera Capture on Screen'; +En.MIXlY_STOP_SCREEN_DISPLAY = 'Turn Off Real-Time LCD Display of Camera Capture'; +En.MIXLY_RECOGNITION = 'Detection'; +En.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = 'Get QR Code Detection Result'; +En.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = 'Returns None if no result is detected. If detected, a green square appears in the top-left corner, and the QR code information is returned.'; +En.COLOUR_RGB_GREY = "Gray"; +En.MIXLY_CUSTOM_STUDY = "Custom Learning"; +En.MIXLY_GET_COLOR_DETECTION_RESULT = 'Get Color Detection Result'; +En.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP = 'Get color detection results, returning the number of rectangular regions and their top-left and bottom-right coordinates (4 values).'; +En.MIXLY_CAT_FACE = 'Cat Face'; +En.MIXLY_GET_CAT_FACE_DETECTION_RESULT = 'Get Cat Face Detection Result'; +En.MIXLY_GET_CAT_FACE_DETECTION_RESULT_TOOLTIP = 'Get cat face detection results, returning the number of rectangular regions and their top-left and bottom-right coordinates (4 values).'; +En.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT = 'Get Face Detection Result'; +En.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP = 'Get face detection results, returning the number of rectangular regions, their bounding box coordinates, and five key facial landmarks. Explanation: v[0]: number of faces; v[1-4]: top-left and bottom-right coordinates; v[5-14]: left eye, right eye, nose, left mouth corner, right mouth corner coordinates.'; +En.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT = 'Get Face Recognition Result'; +En.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP = 'Get face recognition results, returning face ID (starting from 1), rectangular regions, and corresponding 5-point coordinates. Explanation: v[0]: number of faces; v[1-4]: top-left and bottom-right coordinates; v[5-14]: left eye, right eye, nose, left mouth corner, right mouth corner coordinates.'; +En.FACE_ENROLL = 'Enroll Face'; +En.MIXLY_DELETE_PEOPLE_FACE_ID = 'Delete Face ID Information'; })(); diff --git a/common/msg/blockly/zh-hans.js b/common/msg/blockly/zh-hans.js index cb54a56e..064fc412 100644 --- a/common/msg/blockly/zh-hans.js +++ b/common/msg/blockly/zh-hans.js @@ -3649,7 +3649,7 @@ ZhHans.MIXLY_MIXBOT_LINE_SENSOR_CALIBRATE_BLACK = '校正黑色'; ZhHans.MIXLY_MIXBOT_LINE_SENSOR_CALIBRATE_RESET = '恢复出厂'; ZhHans.MIXLY_MIXBOT_BUZZER = '喇叭'; ZhHans.MIXLY_AI_SENSOR_ASR_RECOGNISE_CORPUS = '拼音语料库'; -ZhHans.MIXLY_AI_SENSOR_ASR_RECOGNISE_TOOLTIP = '返回一个元组,分别为x出的语料内容和置信度'; +ZhHans.MIXLY_AI_SENSOR_ASR_RECOGNISE_TOOLTIP = '返回一个元组,分别为语音识别出的语料内容和置信度'; ZhHans.MIXLY_IR_STRENGTH = '红外光强'; ZhHans.MIXLY_LIGHT_STRENGTH = '自然光强'; ZhHans.MIXLY_MIXBOT_MOTOR_EXTERN_TOOLTIP = '速度百分比范围-100~100%,负号代表反转'; diff --git a/common/msg/blockly/zh-hant.js b/common/msg/blockly/zh-hant.js index 5e139cd1..d15aa2dc 100644 --- a/common/msg/blockly/zh-hant.js +++ b/common/msg/blockly/zh-hant.js @@ -39,6 +39,8 @@ ZhHant.MSG = { catAIOT:"智能物聯", catAIsensor:"MixGoAI智能感測", catAIsensor2:"MixGoAI圖像識別", + catAIgraphsensor:"圖像處理", + catAIvoicesensor:"語音處理", catSensor: "感測器", catActuator: "執行器", catExternSensor: "外接感測器", @@ -65,6 +67,7 @@ ZhHant.MSG = { catTurtle: "海龜畫圖", catTuple: "元組", catIot: "物聯網", + catAIonboard:"板載智能", catSet: "集合", catData: "數據分析", catAlgorithm: "算法", @@ -4080,4 +4083,25 @@ ZhHant.MIXLY_SET_DEGREE = '將角度'; ZhHant.MIXLY_TRANS_TO_RADIAN = '轉換為弧度'; ZhHant.MIXLY_REF_TO_PRESSURE = '參考氣壓'; ZhHant.MIXLY_CAL_TO_ALTITUDE = '計算獲取海拔'; +ZhHant.MIXLY_SHOOTING_SIZE = '拍攝尺寸'; +ZhHant.MIXLY_SHOOT_AND_SAVE_PICTURE = '拍攝照片並保存'; +ZhHant.MIXLY_GET_PICTURE_DATA = '獲取圖像數據'; +ZhHant.MIXlY_SCREEN_SHOW_CAM_SHOOT = '屏幕顯示攝像頭採集圖像'; +ZhHant.MIXlY_STOP_SCREEN_DISPLAY = '關閉攝像頭採集圖像LCD實時顯示'; +ZhHant.MIXLY_RECOGNITION = '檢測'; +ZhHant.MIXLY_GET_QR_CODE_RECOGNITION_RESULT = '獲取二維碼檢測結果'; +ZhHant.MIXLY_GET_QR_CODE_RECOGNITION_RESULT_TOOLTIP = '無檢測結果返回None,有結果左上角出現綠色小方塊,並返回二維碼信息。' +ZhHant.COLOUR_RGB_GREY = "灰色"; +ZhHant.MIXLY_CUSTOM_STUDY = "自定義學習"; +ZhHant.MIXLY_GET_COLOR_DETECTION_RESULT = '獲取顏色檢測結果'; +ZhHant.MIXLY_GET_COLOR_DETECTION_RESULT_TOOLTIP ='獲取顏色採集結果,返回矩形區域數量和對應的左上角和右下角坐標(4個值)。'; +ZhHant.MIXLY_CAT_FACE = '貓臉'; +ZhHant.MIXLY_GET_CAT_FACE_DETECTION_RESULT = '獲取貓臉檢測結果'; +ZhHant.MIXLY_GET_CAT_FACE_DETECTION_RESULT_TOOLTIP = '獲取貓臉檢測結果,返回矩形區域數量和對應的左上角和右下角坐標(4個值)。'; +ZhHant.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT = '獲取人臉檢測結果'; +ZhHant.MIXLY_GET_PEOPLE_FACE_DETECTION_RESULT_TOOLTIP = '獲取人臉檢測結果,返回矩形區域數量、對應的矩形框左邊以及五點關鍵特徵值。說明:v[0]:人臉數量;v[1-4]:矩形左上角和右下角坐標;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐標。'; +ZhHant.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT = '獲取人臉識別結果'; +ZhHant.MIXLY_GET_PEOPLE_FACE_RECOGNITION_RESULT_TOOLTIP = '獲取人臉識別結果,獲取人識別結果,返回人臉ID(ID從1開始)、矩形區域和和對應的5點坐標。說明:v[0]:人臉數量;v[1-4]:矩形左上角和右下角坐標;v[5-14]:左眼、右眼、鼻子、左嘴角、右嘴角坐標。'; +ZhHant.FACE_ENROLL = '錄入人臉'; +ZhHant.MIXLY_DELETE_PEOPLE_FACE_ID = '刪除人臉ID信息'; })(); \ No newline at end of file