哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

ElfBoard開源項目|“智慧光伏”開源項目技術文檔

ElfBoard ? 2024-10-11 15:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

wKgZomcI0SCAbJ-TAAdslccJvTs662.png【基于ELF 1開發(fā)板完成的“智慧光伏”項目】

“智慧光伏”項目能夠智能追蹤陽光的移動軌跡。通過內(nèi)置的光敏傳感器和智能控制系統(tǒng),實時感知周圍光源的變化,并驅(qū)動太陽能板精準調(diào)整角度,確保每一縷陽光都能被最大化地捕捉和利用。下面就和各位小伙伴詳細介紹一下這一開源項目是怎樣實現(xiàn)的。

環(huán)境說明

1.開發(fā)環(huán)境操作系統(tǒng):Ubuntu18.04 64位版

2.交叉編譯工具鏈:arm-poky-linux-gnueabi-gcc5.3.0

3.開發(fā)板使用Bootloader版本:u-boot-2016.03

4.開發(fā)板內(nèi)核版本:linux-4.1.15

5.開發(fā)板移植QT版本:qt5.6.2

一、 硬件連接

1、四路光敏傳感器與板卡的連接

wKgZomcI0UqAXRd7AAD4mKU6LRo152.png

2、舵機與板卡的連接

wKgZomcI0VaAfi_8AADSnETwRV8438.png

二、內(nèi)核適配

1、實現(xiàn)舵機轉(zhuǎn)動的功能

MG90S舵機采用pwm的方式來控制,該項目需要用到兩個舵機,所以需要在設備樹中進行pwm7、pwm8的復用。

(1)拷貝ELF1開發(fā)板資料包\02-Linux 源代碼\02-0 出廠內(nèi)核和uboot源碼\內(nèi)核源碼\linux-4.1.15-elf1.tar.bz2

內(nèi)核源碼到開發(fā)環(huán)境/home/elf/work/目錄下解壓

elf@ubuntu:~/work$ tar -xvf linux-4.1.15-elf1.tar.bz2

(2)修改頂層設備樹文件arch/arm/boot/dts/imx6ull.dtsi

elf@ubuntu:~/work$ cd linux-4.1.15-elf1/ elf@ubuntu:~/work/linux-4.1.15-elf1$ vi arch/arm/boot/dts/imx6ull.dtsi

wKgaoWcI1D2AUGqCAAD0VIgFxl8762.png

(3)修改設備樹文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts

elf@ubuntu:~/work/linux-4.1.15-elf1$ vi arch/arm/boot/dts/imx6ull-elf1-emmc.dts

添加pwm7、pwm8設備節(jié)點

&pwm7 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm7>; status = "okay"; }; &pwm8 { pinctrl-names = "default"; pinctrl-0 = <&pinctrl_pwm8>; status = "okay"; };

wKgaomcI1eaAZjfMAACciSNZrIg420.png

在iomux節(jié)點下面添加pwm7、pwm8引腳復用

pinctrl_pwm7: pwm7grp { fsl,pins = < MX6UL_PAD_CSI_VSYNC__PWM7_OUT 0x110b0 >; }; pinctrl_pwm8: pwm8grp { fsl,pins = < MX6UL_PAD_CSI_HSYNC__PWM8_OUT 0x110b0 >; };

wKgZomcI1f-AaDdtAAC12TTTM_I189.png

取消其它用到csi功能的地方

wKgZomcI1iCALz2RAAC47pQs0MY660.pngwKgZomcI1iuAfdX6AADa0ymii6w527.png

至此pwm7、pwm8已經(jīng)復用完成

2、實現(xiàn)獲取光照值的功能

四路光敏傳感器需要四路adc,需要在設備樹中進行adc1、adc2、adc3、adc4的復用

(1)修改設備樹文件arch/arm/boot/dts/imx6ull-elf1-emmc.dts

elf@ubuntu:~/work$ cd linux-4.1.15-elf1/ elf@ubuntu:~/work/linux-4.1.15-elf1$ vi arch/arm/boot/dts/imx6ull-elf1-emmc.dts

在iomux節(jié)點下面添加adc1、adc2、adc3、adc4引腳復用

pinctrl_adc1: adc1grp { fsl,pins = < MX6UL_PAD_GPIO1_IO05__GPIO1_IO05 0x00b0 MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x00b0 MX6UL_PAD_GPIO1_IO02__GPIO1_IO02 0x00b0 MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0x00b0 MX6UL_PAD_GPIO1_IO04__GPIO1_IO04 0x00b0 >; };

wKgaomcI1miAOh9QAADCVdnkq5M265.png

注釋掉其它用到GPIO1_IO01、GPIO1_IO02、GPIO1_IO03、GPIO1_IO04功能的地方

wKgaoWcI11CAFTjcAADonpe1QCg130.png

至此adc已經(jīng)復用完成

3、編譯并替換設備樹

(1)執(zhí)行環(huán)境變量

elf@ubuntu:~/work/linux-4.1.15-elf1$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

(2)編譯設備樹

elf@ubuntu:~/work/linux-4.1.15-elf1$ make imx6ull_elf1_defconfig elf@ubuntu:~/work/linux-4.1.15-elf1$ make dtbs

(3)將arch/arm/boot/dts/路徑下的imx6ull-elf1-emmc.dtb放到U盤,通過U盤拷貝到開發(fā)板

root@ELF1:~# cp /run/media/sda1/imx6ull-elf1-emmc.dtb /run/media/mmcblk1p1/

(4)保存并重啟開發(fā)板

root@ELF1:~# sync root@ELF1:~# reboot

三、數(shù)據(jù)采集和設備控制

1、程序設計

wKgZoWcI2ASABFvUAABY1jE3f8E038.png

主函數(shù)的實現(xiàn)main.cpp

int main() { int up = 0; int down = 0; int left = 0; int right = 0; int duty_cycle6 = DUTY_90_DEG; int duty_cycle7 = DUTY_90_DEG; int adcChannels[] = {1, 2, 3, 4}; int adcValues[4] = {0}; init_pwm(); write_file(PWM6_DUTY_CYCLE, duty_cycle6); write_file(PWM7_DUTY_CYCLE, duty_cycle7); while (1) { for (int i = 0; i < 4; ++i) { adcValues[i] = read_adc_value(adcChannels[i]); } up = (adcValues[3] + adcValues[0]) ; down = (adcValues[2] + adcValues[1]) ; left = (adcValues[3] + adcValues[2]) ; right = (adcValues[0] + adcValues[1]) ; printf("up: %d\n", up); printf("down: %d\n", down); printf("left: %d\n", left); printf("right: %d\n", right); if ((down - up >= 200) && (duty_cycle6 >= DUTY_0_DEG)) { duty_cycle6 -= 100000; write_file(PWM6_DUTY_CYCLE, duty_cycle6); usleep(10000); } if ((up - down >= 200) && (duty_cycle6 <= DUTY_180_DEG)) { duty_cycle6 += 100000; write_file(PWM6_DUTY_CYCLE, duty_cycle6); usleep(10000); } if ((right - left >= 200) && (duty_cycle7 >= DUTY_0_DEG)) { duty_cycle7 -= 100000; write_file(PWM7_DUTY_CYCLE, duty_cycle7); usleep(10000); } if ((left - right >= 200) && (duty_cycle7 <= DUTY_180_DEG)) { duty_cycle7 += 100000; write_file(PWM7_DUTY_CYCLE, duty_cycle7); usleep(10000); } usleep(100000); } return 0; }

配置pwm

int init_pwm() { write_file(PWM6_EXPORT, 0); if (-1 == write_file(PWM6_PERIOD, PWM_PERIOD)) return -1; if (-1 == write_file(PWM6_ENABLE, 1)) return -1; write_file(PWM7_EXPORT, 0); if (-1 == write_file(PWM7_PERIOD, PWM_PERIOD)) return -1; if (-1 == write_file(PWM7_ENABLE, 1)) return -1; return 0; }

設置舵機初始位置

write_file(PWM6_DUTY_CYCLE, duty_cycle6); write_file(PWM7_DUTY_CYCLE, duty_cycle7);

獲取光照值

int read_adc_value(int adcNumber) { int adcValue = 0 ; FILE* adcFile; char adcValueFile[50]; char adcValueStr[10] = "0"; snprintf(adcValueFile, sizeof(adcValueFile), "/sys/bus/iio/devices/iio:device0/in_voltage%d_raw", adcNumber); adcFile = fopen(adcValueFile, "r"); if (adcFile) { fgets(adcValueStr, sizeof(adcValueStr), adcFile); adcValue = atoi(adcValueStr); fclose(adcFile); } else { fprintf(stderr, "Error opening ADC value file %s.\n", adcValueFile); } return adcValue; }

根據(jù)光照值調(diào)整舵機位置

if ((down - up >= 200) && (duty_cycle6 >= DUTY_0_DEG)) { duty_cycle6 -= 100000; write_file(PWM6_DUTY_CYCLE, duty_cycle6); usleep(10000); } if ((up - down >= 200) && (duty_cycle6 <= DUTY_180_DEG)) { duty_cycle6 += 100000; write_file(PWM6_DUTY_CYCLE, duty_cycle6); usleep(10000); } if ((right - left >= 200) && (duty_cycle7 >= DUTY_0_DEG)) { duty_cycle7 -= 100000; write_file(PWM7_DUTY_CYCLE, duty_cycle7); usleep(10000); } if ((left - right >= 200) && (duty_cycle7 <= DUTY_180_DEG)) { duty_cycle7 += 100000; write_file(PWM7_DUTY_CYCLE, duty_cycle7); usleep(10000); }

2、應用編譯

(1)拷貝sun.tar.bz2到開發(fā)環(huán)境/home/elf/work目錄下解壓

elf@ubuntu:~/work$ tar xvf sun.tar.bz2

(2)執(zhí)行環(huán)境變量

elf@ubuntu:~/work$ . /opt/fsl-imx-x11/4.1.15-2.0.0/environment-setup-cortexa7hf-neon-poky-linux-gnueabi

(3)編譯

elf@ubuntu:~/work$ cd sun/ elf@ubuntu:~/work/sun$ make

(4)拷貝sanapp到開發(fā)板/home/root路徑下

root@ELF1:~# cp /run/media/sda1/sunapp ./ root@ELF1:~# sync

四、項目測試

1、確保開發(fā)板已正確連接四路光敏傳感器和舵機

2、執(zhí)行應用

root@ELF1:~# ./sunapp

此時可以打開手電筒模擬太陽光,調(diào)整太陽能板的角度

對于初涉嵌入式開發(fā)領域的小伙伴來說,“智慧光伏”無疑是一個兼具趣味與實踐的開源項目。通過親身參與這一開源項目的組裝與調(diào)試過程,可以直接接觸到真實的開發(fā)環(huán)境、工具鏈和代碼庫,從而解決實際問題,幫助初學者更快地成長為合格的嵌入式開發(fā)工程師

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

    關注

    6078

    文章

    45562

    瀏覽量

    672999
  • 嵌入式
    +關注

    關注

    5208

    文章

    20603

    瀏覽量

    336502
  • 開發(fā)板
    +關注

    關注

    26

    文章

    6386

    瀏覽量

    120294
  • Linux開發(fā)

    關注

    0

    文章

    47

    瀏覽量

    7750
  • 開源代碼
    +關注

    關注

    0

    文章

    41

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    開放原子開源基金會旗下項目亮相FOSSASIA Summit 2026

    近日,亞洲重要開源技術盛會FOSSASIA Summit 2026在泰國曼谷舉行。作為國際開源交流合作的重要平臺,大會吸引了全球開源開發(fā)者、技術
    的頭像 發(fā)表于 03-17 11:39 ?420次閱讀

    摩爾線程正式開源TileLang-MUSA項目

    近日,摩爾線程正式開源TileLang-MUSA項目,實現(xiàn)對TileLang編程語言的完整支持。該項目已成功在摩爾線程多代全功能GPU上完成功能驗證與特性開發(fā),旨在通過高層抽象與編譯器優(yōu)化,大幅降低開發(fā)門檻,為國產(chǎn)算力平臺提供更
    的頭像 發(fā)表于 02-11 16:57 ?1629次閱讀

    TCL首款基于開源鴻蒙的智慧健康空調(diào)發(fā)布

    。會上,開源鴻蒙項目群工作委員會執(zhí)行主席、華為終端BG軟件部副總裁章曉峰發(fā)表《開源鴻蒙賦能TCL空調(diào)智慧健康新體驗》的主題演講,分享了開源
    的頭像 發(fā)表于 12-25 09:33 ?582次閱讀

    開源鴻蒙項目順利孵化畢業(yè)

    2025年11月21日,2025開放原子開發(fā)者大會在北京隆重啟幕。作為本次大會的重磅環(huán)節(jié)和核心焦點之一,在大會開幕式上,開放原子開源基金會(以下簡稱“基金會”)宣布開源鴻蒙項目達成開源
    的頭像 發(fā)表于 11-27 14:36 ?677次閱讀

    開源歐拉項目達成開源孵化目標順利畢業(yè)

    11月21日,2025開放原子開發(fā)者大會在北京隆重啟幕。作為本次大會的重磅環(huán)節(jié)和核心焦點之一,在大會開幕式上,開源歐拉項目達成開源孵化目標、順利畢業(yè)。
    的頭像 發(fā)表于 11-25 17:40 ?1214次閱讀

    開源鴻蒙項目達成開源孵化目標順利畢業(yè)

    11月21日,2025開放原子開發(fā)者大會在北京隆重啟幕。作為本次大會的重磅環(huán)節(jié)和核心焦點之一,在大會開幕式上,開源鴻蒙項目達成開源孵化目標、順利畢業(yè),這是項目
    的頭像 發(fā)表于 11-25 17:36 ?1237次閱讀

    開放原子開源基金會與11個項目完成捐贈簽約

    11月21日,在2025開放原子開發(fā)者大會開幕式上,開放原子開源基金會與11個開源項目完成捐贈簽約,涵蓋人工智能、量子計算、機器人、操作系統(tǒng)、物聯(lián)網(wǎng)等多個關鍵技術方向。此舉既是基金會完
    的頭像 發(fā)表于 11-25 17:26 ?994次閱讀

    開源鴻蒙和開源歐拉成為開放原子開源基金會首批畢業(yè)項目

    11月21日,在2025開放原子開發(fā)者大會開幕式上,開放原子開源基金會宣布旗下開源鴻蒙(OpenHarmony)與開源歐拉(openEuler)成為首批畢業(yè)項目。
    的頭像 發(fā)表于 11-25 17:22 ?937次閱讀

    智慧光綜合管理系統(tǒng)中的“全維度監(jiān)測”

    實現(xiàn)光電站從設備監(jiān)控到運維決策的全流程智能化,是智慧光綜合管理系統(tǒng)應用的效果體現(xiàn),從技術融合、管理優(yōu)化和價值創(chuàng)造等層面來實現(xiàn)系統(tǒng)的“智慧
    的頭像 發(fā)表于 11-12 19:31 ?524次閱讀
    <b class='flag-5'>智慧光</b><b class='flag-5'>伏</b>綜合管理系統(tǒng)中的“全維度監(jiān)測”

    【置頂公告】視美泰開源鴻蒙系列產(chǎn)品業(yè)務咨詢與商務合作通道正式開啟!

    設計。 生態(tài)解決方案整合智慧政務、智慧醫(yī)療、智慧園區(qū)、智慧教育、智慧安平、工業(yè)物聯(lián)網(wǎng)等領域鴻蒙化系統(tǒng)集成與場景落地。
    發(fā)表于 10-20 16:23

    deepin IDE入選Gitee最有價值開源項目

    近日,deepin IDE 成功入選 Gitee 最有價值開源項目(GVP)!
    的頭像 發(fā)表于 10-14 18:10 ?1425次閱讀

    開放原子開源基金會發(fā)布150余個開源項目應用案例

    近日,在2025開放原子開源生態(tài)大會開幕式上,開放原子開源基金會發(fā)布了150余個開源項目應用案例,涵蓋中國南方電網(wǎng)、中國移動、京東集團、安貞醫(yī)院、南京郵電大學、螞蟻密算等100余家單位
    的頭像 發(fā)表于 07-28 17:10 ?1269次閱讀

    開放原子開源基金會與新一批開源項目完成捐贈簽約

    近日,在2025開放原子開源生態(tài)大會開幕式上,開放原子開源基金會與新一批開源項目完成捐贈簽約,涵蓋人工智能、具身智能、基礎軟件、區(qū)塊鏈等多個技術
    的頭像 發(fā)表于 07-28 17:04 ?1113次閱讀

    普華基礎軟件榮膺優(yōu)秀開源項目

    近日,2025上海開源創(chuàng)新菁英獎評選結(jié)果正式揭曉。普華基礎軟件開源安全車控操作系統(tǒng)小滿EasyXMen憑借在開源技術創(chuàng)新與產(chǎn)業(yè)應用實踐方面的突出表現(xiàn),榮獲“優(yōu)秀
    的頭像 發(fā)表于 07-28 16:48 ?1021次閱讀

    RT-Thread榮獲2025優(yōu)秀開源項目 | 新聞速遞

    6月底,RT-Thread睿賽德受邀參與由上海開源信息技術協(xié)會主辦的2025上海開源創(chuàng)新精英薈。上海市商委副主任張杰出席會議并致辭。RT-Thread嵌入式操作系統(tǒng)項目憑借其卓越的
    的頭像 發(fā)表于 07-04 09:04 ?2785次閱讀
    RT-Thread榮獲2025優(yōu)秀<b class='flag-5'>開源</b><b class='flag-5'>項目</b> | 新聞速遞
    台东市| 新巴尔虎左旗| 金昌市| 九龙城区| 鄂尔多斯市| 乌鲁木齐县| 锦屏县| 湖南省| 呼玛县| 大埔区| 九江市| 玛多县| 石台县| 左贡县| 开化县| 屏山县| 孝义市| 滨州市| 榆林市| 佳木斯市| 万宁市| 阜新| 阿城市| 湘阴县| 黄龙县| 搜索| 建阳市| 麻城市| 西乡县| 大埔区| 松溪县| 蒙阴县| 德保县| 武威市| 佳木斯市| 蒙阴县| 汤阴县| 长岛县| 清丰县| 胶南市| 桐庐县|