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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