国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

上一篇文章介紹了在ELF-RK3506開發(fā)板上搭建AI編程環(huán)境的方法,但測(cè)試場(chǎng)景較為簡(jiǎn)單,生成的代碼與硬件無(wú)關(guān)。本文將挑戰(zhàn)不手動(dòng)編寫代碼,完全依賴TRAE工具生成直接控制硬件外設(shè)的代碼,具體以光照傳感器為例。

書寫任務(wù)需求

首先創(chuàng)建一個(gè)“功能需求.md”文件。文件內(nèi)容如下:

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

這次使用的提示詞相對(duì)于上次的測(cè)試要復(fù)雜很多,一是因?yàn)槿蝿?wù)更復(fù)雜了,二是為了讓TRAE生成的代碼更接近我們的需求。

首先向模型介紹了硬件連接的相關(guān)情況,這里還提供了GY-30光照傳感器所使用BH1750FVI.pdf文件,目的是為了讓模型能夠通過(guò)讀取文件獲得關(guān)鍵的接口信息,因?yàn)槲以诖饲笆褂媚P蜕纱a時(shí)經(jīng)常發(fā)現(xiàn)不是所有模型都對(duì)GY-30光照傳感器的模塊信息很熟悉,有的模型會(huì)輸出幻覺代碼,或者不知道在轉(zhuǎn)換原始數(shù)據(jù)到Lux時(shí)需要除以1.2。

在任務(wù)1需求方面,限制了輸出的格式,這樣可以方便調(diào)試。

任務(wù)2是一個(gè)生成業(yè)務(wù),相對(duì)比較簡(jiǎn)單,和以前測(cè)試時(shí)使用的描述差不多,只是稍微詳細(xì)了一些。

任務(wù)3是部署任務(wù),和構(gòu)建AI編程環(huán)境那次相比有幾點(diǎn)變化:

  1. 1、明確了生成的文件為tasks.json,避免模型生成到laugh.json中去;
  2. 2、在外面先前測(cè)試中,發(fā)現(xiàn)模型會(huì)把任務(wù)2當(dāng)做任務(wù)3的前置任務(wù),這完全不必要,所以明確說(shuō)了任務(wù)2和任務(wù)3無(wú)關(guān)聯(lián)。
  3. 3、刪除了運(yùn)行程序的要求,主要的原因是上次是一次執(zhí)行完執(zhí)行輸出結(jié)果,而這次是循環(huán)輸出,如果還讓TRAE去執(zhí)行,會(huì)導(dǎo)致程序一直不輸出,好像死機(jī)了,所以這次改為手動(dòng)運(yùn)行;

總之,任務(wù)描述越詳細(xì),越容易得到正確結(jié)果。

代碼生成

在代碼生成時(shí),把模式由Auto改為豆包的coder模型,因?yàn)椴淮_定任務(wù)需求在不同下表現(xiàn)相同,這樣做可以避免由于TRAE選擇不同的模型運(yùn)行導(dǎo)致調(diào)試?yán)щy。然后把“功能需求.md”文件拖到聊天框中,讓它根據(jù)需求執(zhí)行就可以了。

wKgZO2l7H6yAHfWNAAMkziXuXmc978.png

TRAE會(huì)自動(dòng)分析我們的需求,根據(jù)分析結(jié)果確定任務(wù),并開始執(zhí)行。中間有幾個(gè)步驟需要人工確認(rèn),但很快就能輸出正確結(jié)果。

test_gy30.c代碼

下面是生成的C代碼:

在外面先前測(cè)試中,發(fā)現(xiàn)模型會(huì)把任務(wù)2當(dāng)做任務(wù)3的前置任務(wù),這完全不必要,所以明確說(shuō)了任務(wù)2和任務(wù)3無(wú)關(guān)聯(lián)。

刪除了運(yùn)行程序的要求,主要的原因是上次是一次執(zhí)行完執(zhí)行輸出結(jié)果,而這次是循環(huán)輸出,如果還讓TRAE去執(zhí)行,會(huì)導(dǎo)致程序一直不輸出,好像死機(jī)了,所以這次改為手動(dòng)運(yùn)行;

#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("無(wú)法打開I2C設(shè)備");
        return 1;
    }
    if (ioctl(i2c_fd, I2C_SLAVE, SENSOR_ADDR) < 0) {
        perror("無(wú)法設(shè)置I2C從設(shè)備地址");
        close(i2c_fd);
        return 1;
    }
    unsigned char mode_cmd = CONTINUOUS_HIGH_RES_MODE;
    if (write(i2c_fd, &mode_cmd, 1) != 1) {
        perror("無(wú)法設(shè)置傳感器模式");
        close(i2c_fd);
        return 1;
    }
    usleep(180000);
    printf("GY-30傳感器測(cè)試程序已啟動(dòng)\n");
    printf("按Ctrl+C退出\n\n");
    while (1) {
        unsigned char buf[2];
        if (read(i2c_fd, buf, 2) != 2) {
            perror("讀取傳感器數(shù)據(jù)失敗");
            break;
        }
        printf("原始數(shù)據(jù): 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("光照等級(jí): 晴天室外陰影處\n");
        } else if (lux >= 1000 && lux <= 3000) {
            printf("光照等級(jí): 室內(nèi)強(qiáng)光照射\n");
        } else if (lux >= 500 && lux <= 1000) {
            printf("光照等級(jí): 陰天室外\n");
        } else if (lux >= 300 && lux <= 500) {
            printf("光照等級(jí): 普通辦公室照明\n");
        } else if (lux < 300) {
            printf("光照等級(jí): 較暗環(huán)境\n");
        } else {
            printf("光照等級(jí): 極強(qiáng)光照\(chéng)n");
        }
        printf("\n");
        sleep(1);
    }
    close(i2c_fd);
    return 0;
}

tasks.json文件

這個(gè)文件中包括我們的兩個(gè)任務(wù):

{
    "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"
        }
    ]
}

這個(gè)文件的第二個(gè)任務(wù)其實(shí)有問(wèn)題的,盡管我提示模型注意轉(zhuǎn)義字符,但是它的處理還是不太對(duì),不過(guò)可以通過(guò)分析運(yùn)行結(jié)果讓TRAE自動(dòng)修正。

測(cè)試結(jié)果

下面是一段測(cè)試結(jié)果:

wKgZO2l7H5WABEmEAAZQWNChs_k731.png

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

結(jié)束語(yǔ)

從這次實(shí)踐來(lái)看,利用AI進(jìn)行編程已成為不可逆轉(zhuǎn)的趨勢(shì)。盡管嵌入式系統(tǒng)編程相對(duì)復(fù)雜,但只要投入適當(dāng)努力,完全能夠獲得理想的結(jié)果。非常歡迎大家動(dòng)手嘗試,并分享你在實(shí)踐中的經(jīng)驗(yàn)和心得。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20442

    瀏覽量

    333963
  • 嵌入式板卡
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    10689
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6289

    瀏覽量

    118041
  • Linux開發(fā)
    +關(guān)注

    關(guān)注

    0

    文章

    46

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    ElfBoard技術(shù)|ELF 1開發(fā)板適配攝像頭詳解

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

    ElfBoard技術(shù)|如何在【RK3588】ELF 2開發(fā)板上進(jìn)行根系統(tǒng)的定制

    ELF 2開發(fā)板已經(jīng)適配了Linux 5.10及Elf2 Desktop 22.04操作系統(tǒng),其中Elf2 Desktop 22.04系統(tǒng)是專為嵌入式設(shè)計(jì)的Ubuntu base。雖然
    的頭像 發(fā)表于 07-02 16:33 ?3005次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何在【<b class='flag-5'>RK</b>3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發(fā)板</b>上進(jìn)行根系統(tǒng)的定制

    ElfBoard技術(shù)|如何在【RK3588】ELF 2開發(fā)板上進(jìn)行UART引腳復(fù)用配置

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

    ElfBoard技術(shù)|如何在【RK3588】ELF 2開發(fā)板實(shí)現(xiàn)I2C功能復(fù)用

    等。由于此項(xiàng)配置的具體實(shí)現(xiàn)因SoC平臺(tái)而異,本文特以【RK3588】ELF 2開發(fā)板上的I2C6引腳為例,系統(tǒng)說(shuō)明從硬件規(guī)格查詢到軟件驅(qū)動(dòng)配置的完整步驟。
    的頭像 發(fā)表于 12-04 10:10 ?7792次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|如何在【<b class='flag-5'>RK</b>3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發(fā)板</b>實(shí)現(xiàn)I2C功能復(fù)用

    ElfBoard技術(shù)|如何在ELF - RK3506開發(fā)板上構(gòu)建AI編程環(huán)境

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

    米爾基于RK3562與RK3506開發(fā)板有什么區(qū)別?

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

    ELF 1開發(fā)板試用】+傳感器檢測(cè)

    ELF 1開發(fā)板通過(guò)幾種傳感器的測(cè)試,如溫濕度、六軸傳感器等,而在配備功能擴(kuò)展板的情況下,還能進(jìn)行光照強(qiáng)度的檢測(cè)。 溫濕度檢測(cè)
    發(fā)表于 11-29 11:59

    ELF 1開發(fā)板試用】板載資源測(cè)試4:體驗(yàn)溫濕度傳感器

    ,對(duì)比數(shù)據(jù),進(jìn)一步理解傳感器檢測(cè)技術(shù)。2、從測(cè)試過(guò)程中理解了ELF 1開發(fā)板命令行操作方式。3、從測(cè)試過(guò)程中進(jìn)一步熟悉了
    發(fā)表于 12-18 11:09

    ElfBoard技術(shù)|如何在ELF 1開發(fā)板上搭建流媒體服務(wù)

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

    米爾基于瑞芯微RK3506核心開發(fā)板

    MYC-YR3506核心開發(fā)板新一代入門級(jí)國(guó)產(chǎn)工業(yè)處理RK3506,3核A7+單核M0多核異構(gòu)RK
    發(fā)表于 05-15 16:00 ?14次下載

    ElfBoard技術(shù)|【RK3588】ELF 2開發(fā)板開機(jī)自啟動(dòng)詳解

    在嵌入式系統(tǒng)開發(fā)中,合理管理開機(jī)自啟動(dòng)項(xiàng)目能夠優(yōu)化系統(tǒng)啟動(dòng)流程,確保關(guān)鍵服務(wù)和應(yīng)用按時(shí)加載運(yùn)行。本文將詳細(xì)介紹在ELF2開發(fā)板Linux5.10.209系統(tǒng)下基于SystemVinit服務(wù)管理機(jī)制
    的頭像 發(fā)表于 06-27 16:20 ?2033次閱讀
    <b class='flag-5'>ElfBoard</b><b class='flag-5'>技術(shù)</b><b class='flag-5'>貼</b>|【<b class='flag-5'>RK</b>3588】<b class='flag-5'>ELF</b> 2<b class='flag-5'>開發(fā)板</b>開機(jī)自啟動(dòng)詳解

    有獎(jiǎng)丨米爾 瑞芯微RK3506開發(fā)板免費(fèi)試用來(lái)啦!

    米爾與瑞芯微合作發(fā)布的新品基于瑞芯微RK3506應(yīng)用處理的MYD-YR3506開發(fā)板免費(fèi)試用名額增加啦
    的頭像 發(fā)表于 07-10 08:03 ?896次閱讀
    有獎(jiǎng)丨米爾 瑞芯微<b class='flag-5'>RK3506</b><b class='flag-5'>開發(fā)板</b>免費(fèi)試用來(lái)啦!

    RK3506開發(fā)板Linux開發(fā)板極致性價(jià)比之選

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

    ElfBoard技術(shù)|如何在【RK3588】ELF 2開發(fā)板實(shí)現(xiàn)GPIO功能復(fù)用

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

    【超值首選!僅88元】ELF-RK3506開發(fā)板限時(shí)優(yōu)惠震撼來(lái)襲

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