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

2025-02-232万
精华项目
AI 快速预览详细 收起
本文介绍了如何在Mind+图形化编程中使用行空板K10通过第三方硅基流动调用Deepseek API。首先需要加载扩展并注册API,然后通过编程示例展示了如何实现语音交互和故事查询功能。文章还提供了解决Post不成功情况的循环检测方法。


【制作背景】
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




创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(24)
186060646014802
186060646014802
我想知道这个库现在还能不能用了 坐等
浩瀚的宇宙
浩瀚的宇宙
您好,行空板能说初始化完成,但后续程序一概不执行。请您教教我该怎么做,谢谢。
Bruce.冷
Bruce.冷
语音识别状态的检查并回复“我在”、“我先走了”,这个变量的用法非常巧妙。
课上,学生想实现这样的功能(“小爱同学”——“我在”),一直无法实现。。。终于找到了解决思路。
墨西哥鸡肉卷
墨西哥鸡肉卷
我的 没法上传 为什么
ilwjx1
ilwjx1
用掌控板是不是也可以啊?
THEO
THEO
API可用,K10也正常,就是无法在板子上显示
Fr0bkMNgw3M8
Fr0bkMNgw3M8
我一直显示编译失败,是为什么呢?
OfqORR1NUG6h
OfqORR1NUG6h
行空板K10接入Deepseek,问一次问题一两分钟才给出回答,请问这怎么解决呀。
秦时明月爱侠岚
秦时明月爱侠岚
串口里面也看不到结果
秦时明月爱侠岚
秦时明月爱侠岚
文字和语音都没有
秦时明月爱侠岚
秦时明月爱侠岚
我查了硅基流动的扣费情况,发现一直在扣费,但为什么这边收不到返回结果呢?
秦时明月爱侠岚
秦时明月爱侠岚
新注册的硅基流动的API。唤醒后,说“我在”。不管是查天气还是讲故事,都说好的,就是没下文了,收不到 返回结果。
小含糊online
小含糊online回复大山创客
同问,只偶尔成功了一次,问的是你是谁。
大山创客
大山创客回复秦时明月爱侠岚
我的也一样,请问云天大师怎么解决?
共4条回复,已加载2条,点击查看更多共4条回复,已加载全部
云天
云天
作者
唤醒时间加长些
练
我说“你好小行”,它回应了“我在”,然后我叫它讲个故事,它说“好的”,等了几秒没有反映,直接说“我先走
zuzu12138
zuzu12138
https:mc.dfrobot.com.cnthread-324644-1-1.html?fromuid=868616
可以结合这个百度语音转文字哈

江南1 2025-03-02 08:44:48

您好,可以将麦克风识别到话 转化为文字吗?
小飞1999
小飞1999回复zuzu12138
你发的网址打不开啊
Zee
Zee
Deepseek经常无法访问服务器,行空板会不会受影响?
云天
云天
作者
回复Zee
使用的是“硅基流动”接入的Deepseek,应该不受影响
_深蓝_
_深蓝_
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!
这是什么情况?
郭皓宇
郭皓宇
M10怎么办,怎么加入deepseek
江南1
江南1
您好,可以将麦克风识别到话 转化为文字吗?
云天
云天
作者
回复江南1
试过,但暂时还做不到
Nick-ccq
Nick-ccq