/ ai资讯

探索DeepSeek的Ai-WB2模组程序:功能强大

发布时间:2025-02-11 11:46:18

DeepSeek是什么?

DeepSeek,一家以代码编写能力为核心竞争力的 AI 科技公司,致力于通过高性能 AI 模型赋能企业智能化转型。公司拥有一支由顶尖程序员和 AI 专家组成的团队,他们以卓越的代码编写能力,不断优化和创新 AI 技术,为全球用户提供高效、智能的解决方案。

DeepSeek 的 AI 模型以高效的代码实现和强大的性能表现著称,能够在金融、医疗、教育等多个行业中发挥重要作用。其最新发布的大模型 R1,以极低的训练成本达到了行业领先水平,彰显了 DeepSeek 在代码编写和 AI 技术创新方面的强大实力。凭借卓越的代码能力和创新的商业模式,DeepSeek 正逐步成为全球 AI 领域的佼佼者,为全球科技产业的发展贡献力量。

之前还痴心妄想让它帮我搭建二次开发环境,但是因为权限问题,DeepSeek 无法操作终端。

那就试试 DeepSeek 给 Ai-WB2 模组编程,能不能直接编译运行呢?

在写这帖子之前,做了好多测试,大部分时间浪费在了服务器繁忙这个问题上!

在开始让 DeepSeek 生成之前,注意要提前搭建好 Ai-WB2 的二次开发环境和测试工程,生成的代码才能直接复制。

提问技巧

AI 工具毕竟还不是人,所以在提问的时候,尽量提供要求和一些信息。比如使用那些库,需要达到什么效果等。

如果回复较慢,可以试试 siliconflow:

链接:https://cloud.siliconflow.cn/models

GPIO 点灯

提问内容如下:

已经喜闻乐见了,接下来试试硅基流动的:

尝试了两次之后,至少生成了代码,接下来完全不改动,复制测试一下:

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       // 包含硬件
      定时器头文件 #include 
      
        #include 
       
         #define 
        LED_
        PIN 3 // 定义GPIO3引脚 #define BLINK_INTERVAL 500 // 闪烁间隔500ms(周期1秒) void led_init(void) { /* 初始化GPIO
        时钟 */ bl_gpio_enable_output(LED_PIN, 0, 0); // 配置GPIO3为输出模式 /* 初始状态设置为低电平(根据
        电路设计可能需要反转) */ bl_gpio_output_set(LED_PIN, 0); } void led_blink_task(void *pvPa
        ramete
        rs) { while (1) { // 翻转GPIO状态 bl_gpio_output_set(LED_PIN, !bl_gpio_input_get(LED_PIN)); // 使用
        FreeRTOS延时函数 vTaskDelay(BLINK_INTERVAL / portT
        ICK_PERIOD_MS); } } void main(void) { // 硬件初始化 led_init(); // 创建闪烁任务 xTaskCreate(led_blink_task, "led_task", 512, NULL, 15, NULL); // 启动任务调度器 vTaskStartScheduler(); // 程序不会执行到这里 while(1) {} }
       
      
     
    
   
  

代码测试

初步看着没什么错误,编译试试。

编译提示出了错误,只能手动改一下了。

修改之后

运行成功的代码

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       // 包含硬件定时器头文件 #include 
      
        #include 
       
         #define LED_PIN 3 // 定义GPIO3引脚 #define BLINK_INTERVAL 500 // 闪烁间隔500ms(周期1秒) void led_init(void) { /* 初始化GPIO时钟 */ bl_gpio_enable_output(LED_PIN, 0, 0); // 配置GPIO3为输出模式 /* 初始状态设置为低电平(根据电路设计可能需要反转) */ bl_gpio_output_set(LED_PIN, 0); } void led_blink_task(void* pvParameters) { int cnt = 0; while (1) { // 翻转GPIO状态 bl_gpio_output_set(LED_PIN, cnt % 2); // 使用FreeRTOS延时函数 vTaskDelay(BLINK_INTERVAL / portTICK_PERIOD_MS); cnt  ; if (cnt>10) { cnt = 0; } } } void main(void) { // 硬件初始化 led_init(); // 创建闪烁任务 xTaskCreate(led_blink_task, "led_task", 512, NULL, 15, NULL); // 启动任务调度器 // vTaskStartScheduler(); // 程序不会执行到这里 while (1) {} }
       
      
     
    
   
  

测试结果

PWM 调色

开发板上自带了 RGB,对应得 GPIO 如下:

好了开启第二轮对话了,提问内容如下:

我已经麻木了!

尝试几次之后,给了回复:

提供的完整代码

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       // PWM通道配置(根据实际GPIO-PWM映射关系调整) #define PWM_RED_CH 0 // GPIO14对应PWM通道0 #define PWM_GREEN_CH 1 // GPIO17对应PWM通道1 #define PWM_BLUE_CH 2 // GPIO3对应PWM通道2 // PWM频率
      参数(假设系统时钟144MHz) #define PWM_FREQ 15000 // 15kHz #define PWM_CLK_DIV 1 // 分频系数 #define PWM_PERIOD (144000000 / PWM_CLK_DIV / PWM_FREQ) // 周期值计算 void pwm_init() { // 配置GPIO为PWM功能 bl_pwm_init(PWM_RED_CH, GPIO_PIN_14); bl_pwm_init(PWM_GREEN_CH, GPIO_PIN_17); bl_pwm_init(PWM_BLUE_CH, GPIO_PIN_3); // 统一设置PWM参数 f
      or(int ch = 0; ch < 3; ch  ) { bl_pwm_set_freq(ch, PWM_FREQ); bl_pwm_set_duty(ch, 0); // 初始占空比0% } bl_pwm_start(); } void breathing_effect(uint8_t ch, uint32_t duration_ms) { const uint32_t steps = 100; const uint32_t delay = duration_ms / (steps * 2); // 渐亮 for(int i = 0; i <= steps; i  ) { bl_pwm_set_duty(ch, (PWM_PERIOD * i) / steps); vTaskDelay(delay / portTICK_PERIOD_MS); } // 渐暗 for(int i = steps; i >= 0; i--) { bl_pwm_set_duty(ch, (PWM_PERIOD * i) / s
      teps); vTaskDelay(delay / portTICK_PERIOD_MS); } } void rgb_test_task(void *pvParameters) { while(1) { // 红色呼吸 breathing_effect(PWM_RED_CH, 2000); // 绿色呼吸 breathing_effect(PWM_GREEN_CH, 2000); // 蓝色呼吸 breathing_effect(PWM_BLUE_CH, 2000); // 白色混合呼吸 for(int i = 0; i <= 100; i  ) { bl_pwm_set_duty(PWM_RED_CH, (PWM_PERIOD * i) / 100); bl_pwm_set_duty(PWM_GREEN_CH, (PWM_PERIOD * i) / 100); bl_pwm_set_duty(PWM_BLUE_CH, (PWM_PERIOD * i) / 100); vTaskDelay(20 / portTICK_PERIOD_MS); } for(int i = 100; i >= 0; i--) { bl_pwm_set_duty(PWM_RED_CH, (PWM_PERIOD * i) / 100); bl_pwm_set_duty(PWM_GREEN_CH, (PWM_PERIOD * i) / 100); bl_pwm_set_duty(PWM_BLUE_CH, (PWM_PERIOD * i) / 100); vTaskDelay(20 / portTICK_PERIOD_MS); } } } void main() { pwm_init(); xTaskCreate(rgb_test_task, "rgb_test", 512, NULL, 2, NULL); vTaskStartScheduler(); }
     
    
   
  

代码测试

有三个错误,做一下修改就好,修改或如下:

编译正常,通过了。

运行测试

最后测试失败了,因为 PWM 通道全都没有对应上 GPIO,所以需要把 PWM 通道号改回来,再测试:


灯颜色正确了,但是呼吸效果不对啊。

直接让 DeepSeek 帮我们修改,提问如下:


根据意见,调节了 PWM 频率和分频系数,得到了非常不错的呼吸效果。

完整程序

#include 
  
   
#include 
   
     #include 
    
      #include 
     
       // PWM通道配置(根据实际GPIO-PWM映射关系调整) #define PWM_RED_CH 4 // GPIO14对应PWM通道0 #define PWM_GREEN_CH 2 // GPIO17对应PWM通道1 #define PWM_BLUE_CH 3 // GPIO3对应PWM通道2 // PWM频率参数(假设系统时钟144MHz) #define PWM_FREQ 15000 // 15kHz #define PWM_CLK_DIV 16 // 分频系数 #define PWM_PERIOD (32000000 / PWM_CLK_DIV / PWM_FREQ) // 周期值计算 void pwm_init() { // 配置GPIO为PWM功能 bl_pwm_init(PWM_RED_CH, 14, PWM_FREQ); bl_pwm_init(PWM_GREEN_CH, 17, PWM_FREQ); bl_pwm_init(PWM_BLUE_CH, 3, PWM_FREQ); // 统一设置PWM参数 for (int ch = 0; ch < 3; ch  ) { bl_pwm_set_freq(ch, PWM_FREQ); bl_pwm_set_duty(ch, 0); // 初始占空比0% } bl_pwm_start(PWM_RED_CH); bl_pwm_start(PWM_GREEN_CH); bl_pwm_start(PWM_BLUE_CH); } void breathing_effect(uint8_t ch, uint32_t duration_ms) { const uint32_t steps = 100; const uint32_t delay = duration_ms / (steps * 2); // 渐亮 for (int i = 0; i <= steps; i  ) { bl_pwm_set_duty(ch, (PWM_PERIOD * i) / steps); vTaskDelay(delay / portTICK_PERIOD_MS); } // 渐暗 for (int i = steps; i >= 0; i--) { bl_pwm_set_duty(ch, (PWM_PERIOD * i) / steps); vTaskDelay(delay / portTICK_PERIOD_MS); } } void rgb_test_task(void* pvParameters) { while (1) { // 红色呼吸 breathing_effect(PWM_RED_CH, 2000); // 绿色呼吸 breathing_effect(PWM_GREEN_CH, 2000); // 蓝色呼吸 breathing_effect(PWM_BLUE_CH, 2000); // 白色混合呼吸 for (int i = 0; i <= 100; i  ) { bl_pwm_set_duty(PWM_RED_CH, (PWM_PERIOD * i) / 100); bl_pwm_set_duty(PWM_GREEN_CH, (PWM_PERIOD * i) / 100); bl_pwm_set_duty(PWM_BLUE_CH, (PWM_PERIOD * i) / 100); vTaskDelay(20 / portTICK_PERIOD_MS); } for (int i = 100; i >= 0; i--) { bl_pwm_set_duty(PWM_RED_CH, (PWM_PERIOD * i) / 100); bl_pwm_set_duty(PWM_GREEN_CH, (PWM_PERIOD * i) / 100); bl_pwm_set_duty(PWM_BLUE_CH, (PWM_PERIOD * i) / 100); vTaskDelay(20 / portTICK_PERIOD_MS); } } } void main() { pwm_init(); xTaskCreate(rgb_test_task, "rgb_test", 512, NULL, 2, NULL); // vTaskStartScheduler(); }
     
    
   
  

测试结果

总结

1、官方的服务器还是不给力,一直服务器繁忙

2、生成的代码有部分兼容性问题,达不到直接编译使用要求

3、接口不可能完全可用

使用经验

1、尽可能多的提供要求信息

2、需要结合自身编程经验完善程序细节,以达到想要的功能

3、嵌入式使用比较适合算法类的程序生成

最后最后,希望 DeepSeek 尽快完善起来!过来人的服务器繁忙:

免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。

如有疑问请发送邮件至:bangqikeconnect@gmail.com