伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

ElfBoard技術貼|借助AI編程,輕松搞定ELF-RK3506開發板上光照傳感器的數據讀取

ElfBoard ? 2026-01-29 16:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

特別感謝北京理工大學的李海老師提供以下文章,供大家學習與參考。

上一篇文章介紹了在ELF-RK3506開發板上搭建AI編程環境的方法,但測試場景較為簡單,生成的代碼與硬件無關。本文將挑戰不手動編寫代碼,完全依賴TRAE工具生成直接控制硬件外設的代碼,具體以光照傳感器為例。

書寫任務需求

首先創建一個“功能需求.md”文件。文件內容如下:

硬件配置:
1. ELF-RK3506開發板
2. GY-30傳感器模塊
3. 杜邦線若干
ELF-RK3506開發板的I2C2接口已經正確連接了GY-30傳感器模塊,傳感器模塊的地址為0x23。
GY-30傳感器使用的BH1750FVI傳感器,其數據手冊可以在BH1750FVI.pdf中找到。請注意其中對I2C接口的描述,以及對傳感器的地址的說明。
完成如下任務:
1. 創建一個基于Linux控制臺的測試程序,周期讀取GY-30傳感器的數據,顯示讀取到的I2C原始數據方便調試,并將其轉換為lux單位。每次顯示一個數據,數據格式為"光照: %d lux",其中%d為傳感器讀取到的光照值。并參照下面的數據給出光照等級的顯示:
* 室內強光照射:約 1000~3000 lux
* 陰天室外:約 500~1000 lux
* 晴天室外陰影處:約 10000~20000 lux
* 普通辦公室照明:約 300~500 lux
2. 創建vscode的tasks.json中的任務進行交叉編譯生成可執行文件,任務名為"Build",使用~/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc進行編譯,編譯參數為"-o test_gy30 test_gy30.c",其中test_gy30.c為測試程序的源文件,test_gy30為編譯得到的可執行文件。
3. 創建vscode的tasks.json中的任務進行SSH連接的任務"Deploy via SSH"拷貝編譯得到的可執行文件到服務器上并修改權限為777,服務器IP為192.168.1.123,用戶名為root,無密碼。本任務的執行不依賴任務2。注意對JSON中轉義字符處理。

這次使用的提示詞相對于上次的測試要復雜很多,一是因為任務更復雜了,二是為了讓TRAE生成的代碼更接近我們的需求。

首先向模型介紹了硬件連接的相關情況,這里還提供了GY-30光照傳感器所使用BH1750FVI.pdf文件,目的是為了讓模型能夠通過讀取文件獲得關鍵的接口信息,因為我在此前使用模型生成代碼時經常發現不是所有模型都對GY-30光照傳感器的模塊信息很熟悉,有的模型會輸出幻覺代碼,或者不知道在轉換原始數據到Lux時需要除以1.2。

在任務1需求方面,限制了輸出的格式,這樣可以方便調試。

任務2是一個生成業務,相對比較簡單,和以前測試時使用的描述差不多,只是稍微詳細了一些。

任務3是部署任務,和構建AI編程環境那次相比有幾點變化:

  1. 1、明確了生成的文件為tasks.json,避免模型生成到laugh.json中去;
  2. 2、在外面先前測試中,發現模型會把任務2當做任務3的前置任務,這完全不必要,所以明確說了任務2和任務3無關聯。
  3. 3、刪除了運行程序的要求,主要的原因是上次是一次執行完執行輸出結果,而這次是循環輸出,如果還讓TRAE去執行,會導致程序一直不輸出,好像死機了,所以這次改為手動運行;

總之,任務描述越詳細,越容易得到正確結果。

代碼生成

在代碼生成時,把模式由Auto改為豆包的coder模型,因為不確定任務需求在不同下表現相同,這樣做可以避免由于TRAE選擇不同的模型運行導致調試困難。然后把“功能需求.md”文件拖到聊天框中,讓它根據需求執行就可以了。

wKgZO2l7H6yAHfWNAAMkziXuXmc978.png

TRAE會自動分析我們的需求,根據分析結果確定任務,并開始執行。中間有幾個步驟需要人工確認,但很快就能輸出正確結果。

test_gy30.c代碼

下面是生成的C代碼:

在外面先前測試中,發現模型會把任務2當做任務3的前置任務,這完全不必要,所以明確說了任務2和任務3無關聯。

刪除了運行程序的要求,主要的原因是上次是一次執行完執行輸出結果,而這次是循環輸出,如果還讓TRAE去執行,會導致程序一直不輸出,好像死機了,所以這次改為手動運行;

#include
 
#include
 
#include
 
#include
 
#include
 
#include
 
#define
 I2C_DEVICE "/dev/i2c-2"
#define
 SENSOR_ADDR 0x23
#define
 CONTINUOUS_HIGH_RES_MODE 0x10
int main() {
    int i2c_fd = open(I2C_DEVICE, O_RDWR);
    if (i2c_fd < 0) {
        perror("無法打開I2C設備");
        return 1;
    }
    if (ioctl(i2c_fd, I2C_SLAVE, SENSOR_ADDR) < 0) {
        perror("無法設置I2C從設備地址");
        close(i2c_fd);
        return 1;
    }
    unsigned char mode_cmd = CONTINUOUS_HIGH_RES_MODE;
    if (write(i2c_fd, &mode_cmd, 1) != 1) {
        perror("無法設置傳感器模式");
        close(i2c_fd);
        return 1;
    }
    usleep(180000);
    printf("GY-30傳感器測試程序已啟動\n");
    printf("按Ctrl+C退出\n\n");
    while (1) {
        unsigned char buf[2];
        if (read(i2c_fd, buf, 2) != 2) {
            perror("讀取傳感器數據失敗");
            break;
        }
        printf("原始數據: buf[0]=0x%02X, buf[1]=0x%02X\n", buf[0], buf[1]);
        int lux = (buf[0] << 8) | buf[1];
        lux = (int)(lux / 1.2);
        printf("光照: %d lux\n", lux);
        if (lux >= 10000 && lux <= 20000) {
            printf("光照等級: 晴天室外陰影處\n");
        } else if (lux >= 1000 && lux <= 3000) {
            printf("光照等級: 室內強光照射\n");
        } else if (lux >= 500 && lux <= 1000) {
            printf("光照等級: 陰天室外\n");
        } else if (lux >= 300 && lux <= 500) {
            printf("光照等級: 普通辦公室照明\n");
        } else if (lux < 300) {
            printf("光照等級: 較暗環境\n");
        } else {
            printf("光照等級: 極強光照\n");
        }
        printf("\n");
        sleep(1);
    }
    close(i2c_fd);
    return 0;
}

tasks.json文件

這個文件中包括我們的兩個任務:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "Build",
            "type": "shell",
            "command": "~/gcc-arm-10.3-2021.07-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-gcc",
            "args": [
                "-o",
                "test_gy30",
                "test_gy30.c"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$msCompile"]
        },
        {
            "label": "Deploy via SSH",
            "type": "shell",
            "command": "bash",
            "args": [
                "-c",
                "scp test_gy30 root@192.168.1.123:/root/ && ssh root@192.168.1.123 'chmod 777 /root/test_gy30'"
            ],
            "problemMatcher": [],
            "dependsOn": [],
            "dependsOrder": "sequence"
        }
    ]
}

這個文件的第二個任務其實有問題的,盡管我提示模型注意轉義字符,但是它的處理還是不太對,不過可以通過分析運行結果讓TRAE自動修正。

測試結果

下面是一段測試結果:

wKgZO2l7H5WABEmEAAZQWNChs_k731.png

從程序結果看,光照傳感器可以感知不同的光照。

結束語

從這次實踐來看,利用AI進行編程已成為不可逆轉的趨勢。盡管嵌入式系統編程相對復雜,但只要投入適當努力,完全能夠獲得理想的結果。非常歡迎大家動手嘗試,并分享你在實踐中的經驗和心得。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5204

    文章

    20561

    瀏覽量

    335941
  • 嵌入式板卡
    +關注

    關注

    0

    文章

    20

    瀏覽量

    10702
  • 開發板
    +關注

    關注

    26

    文章

    6358

    瀏覽量

    119615
  • Linux開發
    +關注

    關注

    0

    文章

    47

    瀏覽量

    7725
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    ElfBoard技術|ELF 1開發板適配攝像頭詳解

    ELF1及ELF1S開發板適配的OV5640攝像頭,集成了CMOS圖像傳感器,作為一款500萬像素級別的攝像頭,不僅能夠支持最高達2592x1944分辨率的QSXGA圖像輸出,幀率可達
    的頭像 發表于 12-27 10:16 ?2225次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|<b class='flag-5'>ELF</b> 1<b class='flag-5'>開發板</b>適配攝像頭詳解

    ElfBoard技術|如何在【RK3588】ELF 2開發板上進行UART引腳復用配置

    IOMUX(引腳功能復用)是芯片廠商為高效利用有限硬件引腳資源而設計的關鍵技術,它允許單個物理引腳通過軟件配置為多種不同的功能(如GPIO、UART、I2C等)。不同SoC芯片的配置方式各異,本文將以【RK3588】ELF 2
    的頭像 發表于 11-18 16:54 ?5596次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如何在【<b class='flag-5'>RK</b>3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>上進行UART引腳復用配置

    ElfBoard技術|如何在【RK3588】ELF 2開發板實現I2C功能復用

    等。由于此項配置的具體實現因SoC平臺而異,本文特以【RK3588】ELF 2開發板上的I2C6引腳為例,系統說明從硬件規格查詢到軟件驅動配置的完整步驟。
    的頭像 發表于 12-04 10:10 ?8064次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如何在【<b class='flag-5'>RK</b>3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>實現I2C功能復用

    ElfBoard技術|如何在ELF - RK3506開發板上構建AI編程環境

    特別感謝北京理工大學的李海老師提供以下文章,供大家學習與參考。RK-3506開發板開箱ELF-RK3506開發板的核心與底板通過郵票孔方式
    的頭像 發表于 01-23 11:12 ?7435次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>ELF</b> - <b class='flag-5'>RK3506</b><b class='flag-5'>開發板</b>上構建<b class='flag-5'>AI</b><b class='flag-5'>編程</b>環境

    飛凌精靈(ElfBoard技術|如何在ELF-RK3506開發板上實現GPIO復用

    2026年全國大學生嵌入式芯片與系統設計競賽報名已正式啟動。本次瑞芯微&飛凌嵌入式賽題共設置了三個參賽平臺(ELF2開發板ELF-RV1126B開發板
    的頭像 發表于 03-16 14:55 ?6002次閱讀
    飛凌精靈(<b class='flag-5'>ElfBoard</b>)<b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>ELF-RK3506</b><b class='flag-5'>開發板</b>上實現GPIO復用

    技術|如何在【RK3588】ELF 2開發板上部署小龍蝦OpenClaw

    ELF-RK3506開發板作為參賽平臺。所有的選題都是采用開放和半開放的方式設定,核心宗旨絕非簡單的技術驗證,而是重點考察同學們對特定行業的洞察力與實際問題解決能力。我們鼓勵參賽團隊立足真實行業場景,深挖場景痛點,把所
    的頭像 發表于 04-02 09:30 ?2096次閱讀
    <b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如何在【<b class='flag-5'>RK</b>3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>上部署小龍蝦OpenClaw

    米爾基于RK3562與RK3506開發板有什么區別?

    的 Cortex-A53+Cortex-M0,同時還集成Mali-G52 GPU以及1 TOPS算力的NPU,所以相比RK3506J的開發板來說性能更強,適合中高負載任務(如AI推理&
    發表于 07-11 09:32

    ELF 1開發板試用】+傳感器檢測

    ELF 1開發板通過幾種傳感器的測試,如溫濕度、六軸傳感器等,而在配備功能擴展板的情況下,還能進行光照強度的檢測。 溫濕度檢測
    發表于 11-29 11:59

    ElfBoard技術|如何在ELF 1開發板上搭建流媒體服務

    流媒體服務是一種專門用于傳輸實時數據流的服務軟件,廣泛用于視頻直播、視頻會議、音頻播放等應用場景。在嵌入式開發領域,將流媒體服務部署到
    的頭像 發表于 08-20 14:48 ?1541次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如何在<b class='flag-5'>ELF</b> 1<b class='flag-5'>開發板</b>上搭建流媒體服務<b class='flag-5'>器</b>

    米爾基于瑞芯微RK3506核心開發板

    MYC-YR3506核心開發板新一代入門級國產工業處理RK3506,3核A7+單核M0多核異構RK
    發表于 05-15 16:00 ?14次下載

    ElfBoard技術|【RK3588】ELF 2開發板開機自啟動詳解

    在嵌入式系統開發中,合理管理開機自啟動項目能夠優化系統啟動流程,確保關鍵服務和應用按時加載運行。本文將詳細介紹在ELF2開發板Linux5.10.209系統下基于SystemVinit服務管理機制
    的頭像 發表于 06-27 16:20 ?2135次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|【<b class='flag-5'>RK</b>3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>開機自啟動詳解

    有獎丨米爾 瑞芯微RK3506開發板免費試用來啦!

    米爾與瑞芯微合作發布的新品基于瑞芯微RK3506應用處理的MYD-YR3506開發板免費試用名額增加啦
    的頭像 發表于 07-10 08:03 ?1071次閱讀
    有獎丨米爾 瑞芯微<b class='flag-5'>RK3506</b><b class='flag-5'>開發板</b>免費試用來啦!

    RK3506開發板Linux開發板極致性價比之選

    RK3506開發板Linux開發板極致性價比之選瑞芯微RK3506開發板,3核Cortex-A7@1.5GHz+Cortex-M0,Linu
    的頭像 發表于 09-11 16:26 ?3670次閱讀
    <b class='flag-5'>RK3506</b><b class='flag-5'>開發板</b>Linux<b class='flag-5'>開發板</b>極致性價比之選

    ElfBoard技術|如何在【RK3588】ELF 2開發板實現GPIO功能復用

    RK3588】ELF2開發板的GPIO引腳為例,詳細闡述從硬件查找到軟件配置的完整流程。1.引腳確認在開始配置之前,首先需要了解【RK3588】E
    的頭像 發表于 12-29 10:37 ?1318次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術</b><b class='flag-5'>貼</b>|如何在【<b class='flag-5'>RK</b>3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發板</b>實現GPIO功能復用

    【超值首選!僅88元】ELF-RK3506開發板限時優惠震撼來襲

    ElfBoard特別推出了ELF-RK3506開發板,助力大家快速掌握實際應用場景下的嵌入式Linux開發技能。【性能卓越,技術領先】
    的頭像 發表于 01-16 16:41 ?1271次閱讀
    【超值首選!僅88元】<b class='flag-5'>ELF-RK3506</b><b class='flag-5'>開發板</b>限時優惠震撼來襲