【制作背景】

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


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

【编程示例】
1.图形编程示例

2.Mind+自动生成代码
-
- /*!
- * MindPlus
- * esp32s3bit
- *
- */
- #include "asr.h"
- #include <HTTPClient.h>
- #include <DFRobot_Iot.h>
- #include <ArduinoJson.h>
- #include "unihiker_k10.h"
-
- // 动态变量
- volatile float mind_n_BiaoShi;
- // 创建对象
- DFRobot_Iot myIot;
- HTTPClient http;
- DynamicJsonBuffer jsonBuffer;
- String model="deepseek-ai/DeepSeek-V3";
- float temperature=0.0;
- String deepseek_system;
- int messageCount = 1;
- int maxMessages = 10;
- UNIHIKER_K10 k10;
- ASR asr;
- uint8_t screen_dir=2;
-
-
- // 主程序开始
- void setup() {
- k10.begin();
- http.begin("https://api.siliconflow.cn/v1/chat/completions");
- http.addHeader("Content-Type", "application/json");
- http.addHeader("Authorization", "Bearer sk-kxwsrzianqfxsebnihblrgyyytrrtgvvdjvdiujcuvwymrfp");
- deepseek_system ="你是deepseek,你更擅长中文对话。";
- asr.asrInit(CONTINUOUS, CN_MODE, 60000);
- while(asr._asrState == 0){delay(100);}
- asr.setAsrSpeed(2);
- k10.initScreen(screen_dir);
- k10.creatCanvas();
- Serial.begin(9600);
- myIot.wifiConnect("***", "*********");
- while (!myIot.wifiStatus()) {}
- mind_n_BiaoShi = 0;
- asr.addASRCommand(0+1, "jiang ge gu shi");
- asr.addASRCommand(1+1, "cha xun tian qi");
- asr.speak("初始化完成");
- }
- void loop() {
- if (asr.isWakeUp()) {
- if ((mind_n_BiaoShi==0)) {
- mind_n_BiaoShi = 1;
- asr.speak("我在");
- }
- }
- else {
- if ((mind_n_BiaoShi==1)) {
- mind_n_BiaoShi = 0;
- asr.speak("我先走了");
- }
- }
- if (asr.isDetectCmdID(0+1)) {
- asr.speak("好的");
- maxMessages=5;
-
- String mydata = String("{"model":"")+model+String("","max_tokens":4090,"temperature":")+String(temperature)+String(","messages":[");
- mydata += String("{"role":"system","content":"")+String(deepseek_system)+String(",回答字数为150")+String("字"},");
- mydata += String("{"role":"user","content":"") + String("请讲个故事") + String(""}");
- mydata += String("]}");
- http.POST(mydata);
- String jsonString=http.getString();
- while(jsonString==""){
- http.POST(mydata);
- jsonString=http.getString();
- delay(100);
- }
- JsonObject& root = jsonBuffer.parseObject(jsonString);
- String text = root["choices"][0]["message"]["content"];
-
- Serial.println(text);
- k10.canvas->canvasText(text, 0, 0, 0x0000FF, k10.canvas->eCNAndENFont24, 10, true);
- k10.canvas->updateCanvas();
- asr.speak(text);
- }
- if (asr.isDetectCmdID(1+1)) {
- asr.speak("好的");
- maxMessages=5;
-
- String mydata = String("{"model":"")+model+String("","max_tokens":4090,"temperature":")+String(temperature)+String(","messages":[");
- mydata += String("{"role":"system","content":"")+String(deepseek_system)+String(",回答字数为150")+String("字"},");
- mydata += String("{"role":"user","content":"") + String("请帮我查询一下今天的天气") + String(""}");
- mydata += String("]}");
- http.POST(mydata);
- String jsonString=http.getString();
- while(jsonString==""){
- http.POST(mydata);
- jsonString=http.getString();
- delay(100);
- }
- JsonObject& root = jsonBuffer.parseObject(jsonString);
- String text = root["choices"][0]["message"]["content"];
-
- Serial.println(text);
- k10.canvas->canvasText(text, 0, 0, 0x0000FF, k10.canvas->eCNAndENFont24, 10, true);
- k10.canvas->updateCanvas();
- asr.speak(text);
- }
- }
-
复制代码 【选择模型】
模型中使用了硅基流动中大部分Deepseek模式,但“deepseek-ai/DeepSeek-R1”模型没有测试通过,所以没有加到选项中。

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

|
课上,学生想实现这样的功能(“小爱同学”——“我在”),一直无法实现。。。终于找到了解决思路。
可以结合这个百度语音转文字哈
江南1 2025-03-02 08:44:48
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!
这是什么情况?
.
https://www.unihiker.com.cn/wiki/k10/FAQ#%E5%A6%82%E4%BD%95%E4%B8%8B%E8%BD%BD%E6%94%AF%E6%8C%81%E8%A1%8C%E7%A9%BA%E6%9D%BFK10%E7%9A%84Mind+%EF%BC%9F