3518浏览
查看: 3518|回复: 12

[教程] Mind+图形化编程中行空板k10使用Deepseek

[复制链接]
本帖最后由 云天 于 2025-2-24 08:48 编辑

【制作背景】
Mind+图形化编程中行空板k10使用Deepseek图7
扩展制作背景,在Mind+图形化编程中使用Http扩展无法连接Deepseek,并且Deepseek的API调用出现“当前服务器资源紧张,为避免对您造成业务影响,我们已暂停 API 服务充值。存量充值金额可继续调用,敬请谅解!”提示,我的免费额度已过期。所以通过第三方的硅基流动调用Deepseek通过修改之前我编写的Kimi调用扩展,经过不断测试,完成Deepseek扩展。

【加载扩展】
在扩展中加载:https://gitee.com/yuntian365/Deepseek

Mind+图形化编程中行空板k10使用Deepseek图1



Mind+图形化编程中行空板k10使用Deepseek图2

【注册API】
通过第三方的硅基流动注册获取API,如方便注册,使用我的邀请码注册:https://cloud.siliconflow.cn/i/KwyEBX3e,邀请码:KwyEBX3e。共同获取免费额度。如果不方便注册,可使用我的API:sk-kxwsrzianqfxsebnihblrgyyytrrtgvvdjvdiujcuvwymrfp

Mind+图形化编程中行空板k10使用Deepseek图3

【编程示例】
1.图形编程示例
Mind+图形化编程中行空板k10使用Deepseek图4

2.Mind+自动生成代码
  1. /*!
  2. * MindPlus
  3. * esp32s3bit
  4. *
  5. */
  6. #include "asr.h"
  7. #include <HTTPClient.h>
  8. #include <DFRobot_Iot.h>
  9. #include <ArduinoJson.h>
  10. #include "unihiker_k10.h"
  11. // 动态变量
  12. volatile float mind_n_BiaoShi;
  13. // 创建对象
  14. DFRobot_Iot       myIot;
  15. HTTPClient        http;
  16. DynamicJsonBuffer jsonBuffer;
  17. String            model="deepseek-ai/DeepSeek-V3";
  18. float             temperature=0.0;
  19. String            deepseek_system;
  20. int               messageCount = 1;
  21. int               maxMessages = 10;
  22. UNIHIKER_K10      k10;
  23. ASR               asr;
  24. uint8_t           screen_dir=2;
  25. // 主程序开始
  26. void setup() {
  27.         k10.begin();
  28.         http.begin("https://api.siliconflow.cn/v1/chat/completions");
  29.         http.addHeader("Content-Type", "application/json");
  30.         http.addHeader("Authorization", "Bearer sk-kxwsrzianqfxsebnihblrgyyytrrtgvvdjvdiujcuvwymrfp");
  31.         deepseek_system ="你是deepseek,你更擅长中文对话。";
  32.         asr.asrInit(CONTINUOUS, CN_MODE, 60000);
  33.         while(asr._asrState == 0){delay(100);}
  34.         asr.setAsrSpeed(2);
  35.         k10.initScreen(screen_dir);
  36.         k10.creatCanvas();
  37.         Serial.begin(9600);
  38.         myIot.wifiConnect("***", "*********");
  39.         while (!myIot.wifiStatus()) {}
  40.         mind_n_BiaoShi = 0;
  41.         asr.addASRCommand(0+1, "jiang ge gu shi");
  42.         asr.addASRCommand(1+1, "cha xun tian qi");
  43.         asr.speak("初始化完成");
  44. }
  45. void loop() {
  46.         if (asr.isWakeUp()) {
  47.                 if ((mind_n_BiaoShi==0)) {
  48.                         mind_n_BiaoShi = 1;
  49.                         asr.speak("我在");
  50.                 }
  51.         }
  52.         else {
  53.                 if ((mind_n_BiaoShi==1)) {
  54.                         mind_n_BiaoShi = 0;
  55.                         asr.speak("我先走了");
  56.                 }
  57.         }
  58.         if (asr.isDetectCmdID(0+1)) {
  59.                 asr.speak("好的");
  60.                 maxMessages=5;
  61.                 String mydata = String("{"model":"")+model+String("","max_tokens":4090,"temperature":")+String(temperature)+String(","messages":[");
  62.                 mydata += String("{"role":"system","content":"")+String(deepseek_system)+String(",回答字数为150")+String("字"},");
  63.                 mydata += String("{"role":"user","content":"") + String("请讲个故事") + String(""}");
  64.                 mydata += String("]}");
  65.                 http.POST(mydata);
  66.                 String jsonString=http.getString();
  67.                 while(jsonString==""){
  68.                         http.POST(mydata);
  69.                         jsonString=http.getString();
  70.                         delay(100);
  71.                 }
  72.                 JsonObject& root = jsonBuffer.parseObject(jsonString);
  73.                 String text = root["choices"][0]["message"]["content"];
  74.                 Serial.println(text);
  75.                 k10.canvas->canvasText(text, 0, 0, 0x0000FF, k10.canvas->eCNAndENFont24, 10, true);
  76.                 k10.canvas->updateCanvas();
  77.                 asr.speak(text);
  78.         }
  79.         if (asr.isDetectCmdID(1+1)) {
  80.                 asr.speak("好的");
  81.                 maxMessages=5;
  82.                 String mydata = String("{"model":"")+model+String("","max_tokens":4090,"temperature":")+String(temperature)+String(","messages":[");
  83.                 mydata += String("{"role":"system","content":"")+String(deepseek_system)+String(",回答字数为150")+String("字"},");
  84.                 mydata += String("{"role":"user","content":"") + String("请帮我查询一下今天的天气") + String(""}");
  85.                 mydata += String("]}");
  86.                 http.POST(mydata);
  87.                 String jsonString=http.getString();
  88.                 while(jsonString==""){
  89.                         http.POST(mydata);
  90.                         jsonString=http.getString();
  91.                         delay(100);
  92.                 }
  93.                 JsonObject& root = jsonBuffer.parseObject(jsonString);
  94.                 String text = root["choices"][0]["message"]["content"];
  95.                 Serial.println(text);
  96.                 k10.canvas->canvasText(text, 0, 0, 0x0000FF, k10.canvas->eCNAndENFont24, 10, true);
  97.                 k10.canvas->updateCanvas();
  98.                 asr.speak(text);
  99.         }
  100. }
复制代码
【选择模型】
模型中使用了硅基流动中大部分Deepseek模式,但“deepseek-ai/DeepSeek-R1”模型没有测试通过,所以没有加到选项中。

Mind+图形化编程中行空板k10使用Deepseek图5

【共同探讨】
因有时会出现,Post不成功情况,所以在扩展代码中增加了循环检测是否获取数据。
  1. while(jsonString==""){
  2.                         http.POST(mydata);
  3.                         jsonString=http.getString();
  4.                         delay(100);
  5.                 }
复制代码
大家可共同探讨问题原因,及解决方法。

【测试演示】
Mind+图形化编程中行空板k10使用Deepseek图6




songzh  学徒

发表于 2025-2-25 16:55:00

为什么我显示模块和主板不对啊,我用的也是行空板嘛
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2025-2-26 09:11:42

需使用行空板K10 Mind+ V1.8.1

songzh 发表于 2025-2-25 16:55
为什么我显示模块和主板不对啊,我用的也是行空板嘛

是行空板K10
Mind+图形化编程中行空板k10使用Deepseek图3
Mind+版本是V1.8.1 RC1.0
Mind+图形化编程中行空板k10使用Deepseek图2
Mind+图形化编程中行空板k10使用Deepseek图1
回复

使用道具 举报

海之翼  学徒

发表于 2025-2-27 12:05:59

请问,如果想实现语言回答是否可以实现,因为文字信息在课堂上展示并不生动,语言更有感染力。
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2025-2-27 17:45:36

有语音合成,示例程序中有
回复

使用道具 举报

小桔子  学徒

发表于 2025-2-28 09:54:32

新版的M10是否支持呢
回复

使用道具 举报

Nick-ccq  NPC

发表于 2025-2-28 10:21:37

如果使用过程中会报错,请下载最新mind+公测版本软件--20250103版
.
https://www.unihiker.com.cn/wiki ... 9A%84Mind+%EF%BC%9F
FriFebruary-202502286337..jpg
FriFebruary-202502286149..png
回复

使用道具 举报

江南1  学徒

发表于 2025-3-2 08:44:48

您好,可以将麦克风识别到话 转化为文字吗?
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2025-3-2 17:45:55

江南1 发表于 2025-3-2 08:44
您好,可以将麦克风识别到话 转化为文字吗?

试过,但暂时还做不到
回复

使用道具 举报

郭皓宇  见习技师

发表于 2025-3-4 17:40:25

M10怎么办,怎么加入deepseek
回复

使用道具 举报

_深蓝_  初级技匠

发表于 2025-3-12 09:39:40

E (507) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0
Rebooting...
ESP-ROM:esp32s3-20210327
Build:Mar 27 2021
rst:0xc (RTC_SW_CPU_RST),boot:0x28 (SPI_FAST_FLASH_BOOT)
Saved PC:0x4213b096
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fce3808,len:0x44c
load:0x403c9700,len:0xbe4
load:0x403cc700,len:0x2a68
entry 0x403c98d4
E (340) esp_core_dump_flash: No core dump partition found!
E (340) esp_core_dump_flash: No core dump partition found!
这是什么情况?
回复

使用道具 举报

Zee  见习技师

发表于 2025-3-12 15:12:33

Deepseek经常无法访问服务器,行空板会不会受影响?
回复

使用道具 举报

云天  初级技神
 楼主|

发表于 2025-3-12 23:23:51

Zee 发表于 2025-3-12 15:12
Deepseek经常无法访问服务器,行空板会不会受影响?

使用的是“硅基流动”接入的Deepseek,应该不受影响
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4 备案 沪公网安备31011502402448

© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail