DeepSeek是什么?
DeepSeek,一家以代碼編寫能力為核心競爭力的 AI 科技公司,致力于通過高性能 AI 模型賦能企業(yè)智能化轉(zhuǎn)型。公司擁有一支由頂尖程序員和 AI 專家組成的團隊,他們以卓越的代碼編寫能力,不斷優(yōu)化和創(chuàng)新 AI 技術(shù),為全球用戶提供高效、智能的解決方案。
DeepSeek 的 AI 模型以高效的代碼實現(xiàn)和強大的性能表現(xiàn)著稱,能夠在金融、醫(yī)療、教育等多個行業(yè)中發(fā)揮重要作用。其最新發(fā)布的大模型 R1,以極低的訓練成本達到了行業(yè)領(lǐng)先水平,彰顯了 DeepSeek 在代碼編寫和 AI 技術(shù)創(chuàng)新方面的強大實力。憑借卓越的代碼能力和創(chuàng)新的商業(yè)模式,DeepSeek 正逐步成為全球 AI 領(lǐng)域的佼佼者,為全球科技產(chǎn)業(yè)的發(fā)展貢獻力量。
之前還癡心妄想讓它幫我搭建二次開發(fā)環(huán)境,但是因為權(quán)限問題,DeepSeek 無法操作終端。
那就試試 DeepSeek 給 Ai-WB2 模組編程,能不能直接編譯運行呢?
在寫這帖子之前,做了好多測試,大部分時間浪費在了服務(wù)器繁忙這個問題上!

在開始讓 DeepSeek 生成之前,注意要提前搭建好 Ai-WB2 的二次開發(fā)環(huán)境和測試工程,生成的代碼才能直接復制。
提問技巧
AI 工具畢竟還不是人,所以在提問的時候,盡量提供要求和一些信息。比如使用那些庫,需要達到什么效果等。
如果回復較慢,可以試試 siliconflow:
鏈接:https://cloud.siliconflow.cn/models
GPIO 點燈
提問內(nèi)容如下:

已經(jīng)喜聞樂見了,接下來試試硅基流動的:

嘗試了兩次之后,至少生成了代碼,接下來完全不改動,復制測試一下:
#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為輸出模式 /* 初始狀態(tài)設(shè)置為低電平(根據(jù)電路設(shè)計可能需要反轉(zhuǎn)) */ bl_gpio_output_set(LED_PIN, 0); } void led_blink_task(void *pvParameters) { while (1) { // 翻轉(zhuǎn)GPIO狀態(tài) bl_gpio_output_set(LED_PIN, !bl_gpio_input_get(LED_PIN)); // 使用FreeRTOS延時函數(shù) vTaskDelay(BLINK_INTERVAL / portTICK_PERIOD_MS); } } void main(void) { // 硬件初始化 led_init(); // 創(chuàng)建閃爍任務(wù) xTaskCreate(led_blink_task, "led_task", 512, NULL, 15, NULL); // 啟動任務(wù)調(diào)度器 vTaskStartScheduler(); // 程序不會執(zhí)行到這里 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為輸出模式 /* 初始狀態(tài)設(shè)置為低電平(根據(jù)電路設(shè)計可能需要反轉(zhuǎn)) */ bl_gpio_output_set(LED_PIN, 0); } void led_blink_task(void* pvParameters) { int cnt = 0; while (1) { // 翻轉(zhuǎn)GPIO狀態(tài) bl_gpio_output_set(LED_PIN, cnt % 2); // 使用FreeRTOS延時函數(shù) vTaskDelay(BLINK_INTERVAL / portTICK_PERIOD_MS); cnt++; if (cnt>10) { cnt = 0; } } } void main(void) { // 硬件初始化 led_init(); // 創(chuàng)建閃爍任務(wù) xTaskCreate(led_blink_task, "led_task", 512, NULL, 15, NULL); // 啟動任務(wù)調(diào)度器 // vTaskStartScheduler(); // 程序不會執(zhí)行到這里 while (1) {} }
測試結(jié)果

PWM 調(diào)色
開發(fā)板上自帶了 RGB,對應(yīng)得 GPIO 如下:

好了開啟第二輪對話了,提問內(nèi)容如下:

我已經(jīng)麻木了!
嘗試幾次之后,給了回復:

提供的完整代碼
#include#include #include #include // PWM通道配置(根據(jù)實際GPIO-PWM映射關(guān)系調(diào)整) #define PWM_RED_CH 0 // GPIO14對應(yīng)PWM通道0 #define PWM_GREEN_CH 1 // GPIO17對應(yīng)PWM通道1 #define PWM_BLUE_CH 2 // GPIO3對應(yīng)PWM通道2 // PWM頻率參數(shù)(假設(shè)系統(tǒng)時鐘144MHz) #define PWM_FREQ 15000 // 15kHz #define PWM_CLK_DIV 1 // 分頻系數(shù) #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); // 統(tǒng)一設(shè)置PWM參數(shù) for(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) / 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(); }
代碼測試

有三個錯誤,做一下修改就好,修改或如下:

編譯正常,通過了。
運行測試
最后測試失敗了,因為 PWM 通道全都沒有對應(yīng)上 GPIO,所以需要把 PWM 通道號改回來,再測試:

燈顏色正確了,但是呼吸效果不對啊。
直接讓 DeepSeek 幫我們修改,提問如下:

根據(jù)意見,調(diào)節(jié)了 PWM 頻率和分頻系數(shù),得到了非常不錯的呼吸效果。
完整程序
#include#include #include #include // PWM通道配置(根據(jù)實際GPIO-PWM映射關(guān)系調(diào)整) #define PWM_RED_CH 4 // GPIO14對應(yīng)PWM通道0 #define PWM_GREEN_CH 2 // GPIO17對應(yīng)PWM通道1 #define PWM_BLUE_CH 3 // GPIO3對應(yīng)PWM通道2 // PWM頻率參數(shù)(假設(shè)系統(tǒng)時鐘144MHz) #define PWM_FREQ 15000 // 15kHz #define PWM_CLK_DIV 16 // 分頻系數(shù) #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); // 統(tǒng)一設(shè)置PWM參數(shù) 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(); }
測試結(jié)果

總結(jié)
1、官方的服務(wù)器還是不給力,一直服務(wù)器繁忙
2、生成的代碼有部分兼容性問題,達不到直接編譯使用要求
3、接口不可能完全可用
使用經(jīng)驗
1、盡可能多的提供要求信息
2、需要結(jié)合自身編程經(jīng)驗完善程序細節(jié),以達到想要的功能
最后最后,希望 DeepSeek 盡快完善起來!過來人的服務(wù)器繁忙:

-
AI
+關(guān)注
關(guān)注
91文章
39793瀏覽量
301383 -
程序
+關(guān)注
關(guān)注
117文章
3846瀏覽量
85238 -
DeepSeek
+關(guān)注
關(guān)注
2文章
835瀏覽量
3264
原文標題:和大火的DeepSeek聊下Ai-WB2模組程序?它好會!
文章出處:【微信號:安信可科技,微信公眾號:安信可科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
探索LM83:一款功能強大的溫度傳感器
探索 RZ/V2L:嵌入式 AI 應(yīng)用的強大之選
【W(wǎng)iFi+藍牙】智能門鎖、智能插座:用Ai-WB2系列,價格更低,性能更強
安信可Ai-WB2系列Wi-Fi+BLE模組的特點和應(yīng)用
電子DIY 用Ai-WB2-12F模組做多功能無線彩燈控制器
藍牙云屏:功能強大,性價比之選?
【W(wǎng)i-Fi&BLE模組】Ai-WB2系列的固件燒錄指導
【「DeepSeek 核心技術(shù)揭秘」閱讀體驗】第三章:探索 DeepSeek - V3 技術(shù)架構(gòu)的奧秘
信而泰×DeepSeek:AI推理引擎驅(qū)動網(wǎng)絡(luò)智能診斷邁向 “自愈”時代
Deepseek海思SD3403邊緣計算AI產(chǎn)品系統(tǒng)
DeepSeek推動AI算力需求:800G光模塊的關(guān)鍵作用
如何在 Raspberry Pi AI Camera 上構(gòu)建為開發(fā)人員提供實時的智能應(yīng)用程序!
分享一款功能強大的QuarkXPress桌面排版軟件
HarmonyOS NEXT開發(fā)實戰(zhàn):DevEco Studio中DeepSeek的使用
低價不貴!安信可WiFi+BLE模組Ai-WB2系列
探索DeepSeek的Ai-WB2模組程序:功能強大
評論