chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

基于OpenHarmony系統(tǒng)和小凌派RK2206開(kāi)發(fā)板的避障小車(chē)

電子發(fā)燒友開(kāi)源社區(qū) ? 來(lái)源:HarmonyOS官方合作社區(qū) ? 作者:凌睿智捷 ? 2022-04-21 07:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1避障小車(chē)簡(jiǎn)介

這是一款基于OpenHarmony系統(tǒng)和小凌派-RK2206開(kāi)發(fā)板的避障小車(chē)。同時(shí),小車(chē)上搭載了超聲波測(cè)距模塊、舵機(jī)模塊、紅外尋跡模塊、直流電機(jī)模塊。

具體實(shí)驗(yàn)成果展示如下:

2避障小車(chē)模塊介紹

小凌派-RK2206開(kāi)發(fā)板的示意圖

19f05e08-c0fe-11ec-bce3-dac502259ad0.jpg

小凌派配置了一個(gè)E53外接拓展口,這是E53接口的原理圖:

1a06ec36-c0fe-11ec-bce3-dac502259ad0.png

這是E53模塊的原理圖:

1a1ce392-c0fe-11ec-bce3-dac502259ad0.png

1. 直流電機(jī)模塊

直流電機(jī)模塊由E53模塊上的L9110S驅(qū)動(dòng)芯片進(jìn)行驅(qū)動(dòng)。L9110S驅(qū)動(dòng)芯片所引出的引腳對(duì)應(yīng)接口的GPIO0_B7、GPIO0_B6,另一塊驅(qū)動(dòng)芯片對(duì)應(yīng)GPIO1_D0、GPIO0_A5。我們對(duì)相應(yīng)的GPIO引腳進(jìn)行初始化并設(shè)置為上拉模式。

//右直流電機(jī) IA GPIO0_PB7PinctrlSet(GPIO0_PB7, MUX_FUNC0, PULL_UP, DRIVE_KEEP);LzGpioInit(GPIO0_PB7);
//右直流電機(jī) IB GPIO0_PB6PinctrlSet(GPIO0_PB6, MUX_FUNC0, PULL_UP, DRIVE_KEEP);LzGpioInit(GPIO0_PB6);
//左直流電機(jī) IB GPIO1_PD0PinctrlSet(GPIO1_PD0, MUX_FUNC0, PULL_UP, DRIVE_KEEP);LzGpioInit(GPIO1_PD0);
//左直流電機(jī) IA GPIO0_PA5PinctrlSet(GPIO0_PA5, MUX_FUNC0, PULL_UP, DRIVE_KEEP);LzGpioInit(GPIO0_PA5);

(左右移動(dòng)查看全部?jī)?nèi)容)

通過(guò)閱讀L9110S的芯片手冊(cè)可以得到以下真值表:

1a411668-c0fe-11ec-bce3-dac502259ad0.png

通過(guò)真值表,我們可以通過(guò)對(duì)IO口的輸出來(lái)控制直流電機(jī)的正轉(zhuǎn)、反轉(zhuǎn)還有停止:

1a57d45c-c0fe-11ec-bce3-dac502259ad0.png

2. 超聲波測(cè)距模塊

超聲波測(cè)距模塊用來(lái)計(jì)算出模塊到前方障礙物的距離。采用IO口TRIG觸發(fā)測(cè)距,給最少10us的高電平信號(hào)。模塊自動(dòng)發(fā)送8個(gè)40khz的方波,自動(dòng)檢測(cè)是否有信號(hào)返回;有信號(hào)返回,通過(guò)IO口ECHO輸出一個(gè)高電平,同時(shí)開(kāi)定時(shí)器計(jì)時(shí),當(dāng)此口變?yōu)榈碗娖綍r(shí)就可以讀定時(shí)器的值,高電平持續(xù)的時(shí)間就是超聲波從發(fā)射到返回的時(shí)間。

模塊Trig對(duì)應(yīng)引腳GPIO_B0,Echo對(duì)應(yīng)引腳GPIO_B1,對(duì)這兩個(gè)引腳進(jìn)行初始化

// Echo 超聲波傳感器PinctrlSet(GPIO0_PB1, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP);LzGpioInit(GPIO0_PB1);LzGpioSetDir(GPIO0_PB1, LZGPIO_DIR_IN);
// Trig 超聲波傳感器PinctrlSet(GPIO0_PB0, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP);LzGpioInit(GPIO0_PB0);LzGpioSetDir(GPIO0_PB0, LZGPIO_DIR_OUT);LzGpioSetVal(GPIO0_PB0, LZGPIO_LEVEL_LOW);

(左右移動(dòng)查看全部?jī)?nèi)容)

觸發(fā)信號(hào):

//通過(guò)Trig發(fā)送觸發(fā)信號(hào)LzGpioSetVal(GPIO0_PB0, LZGPIO_LEVEL_HIGH);HAL_DelayUs(20);LzGpioSetVal(GPIO0_PB0, LZGPIO_LEVEL_LOW);

(左右移動(dòng)查看全部?jī)?nèi)容)

獲取定時(shí)器計(jì)數(shù)器當(dāng)前值:

while (1)  {    LzGpioGetVal(GPIO_8, &value);    //獲取上升沿的定時(shí)器計(jì)數(shù)器當(dāng)前值    if (value == LZGPIO_LEVEL_HIGH && flag == 0)    {      m_echo_info.time_rise = *m_ptimer5_current_value_low;      m_echo_info.flag = EECHO_FLAG_CAPTURE_FALL;      flag = 1;    }    //獲取下降沿的定時(shí)器計(jì)數(shù)器當(dāng)前值    if (value == LZGPIO_LEVEL_LOW && flag == 1)    {      m_echo_info.time_fall = *m_ptimer5_current_value_low;      m_echo_info.flag = EECHO_FLAG_CAPTURE_SUCCESS;      break;    }  }

(左右移動(dòng)查看全部?jī)?nèi)容)

上升沿和下降沿的節(jié)拍數(shù)差計(jì)算距離。其中,系統(tǒng)時(shí)鐘為40MHz,超聲波速度為340米/秒,高電平時(shí)間寬度為超聲波的往返之和,所以實(shí)際距離 = 節(jié)拍數(shù)差 / 40MHz / 340(米/秒) / 2(往返2次)。具體計(jì)算代碼如下:

if (m_echo_info.flag == EECHO_FLAG_CAPTURE_SUCCESS)  {/* 如果是采集成功,則計(jì)算距離 */    if (m_echo_info.time_rise <= m_echo_info.time_fall)    {      time_diff = m_echo_info.time_fall - m_echo_info.time_rise;    }    else    {      time_diff = 0xFFFFFFFF - m_echo_info.time_rise + m_echo_info.time_fall + 1;    }}float f_time = (float)time_diff;float f_freq = (float)ECHO_TIMER_FREQ;distance = f_time / f_freq * 170.0 * 100.0;

(左右移動(dòng)查看全部?jī)?nèi)容)

3. 舵機(jī)模塊

舵機(jī)模塊用來(lái)控制超聲波測(cè)距模塊測(cè)量左右方向的距離,舵機(jī)引腳為GPIO0_B4,對(duì)GPIO0_B4進(jìn)行初始化。

//舵機(jī)PinctrlSet(GPIO0_PB4, MUX_FUNC0, PULL_KEEP, DRIVE_KEEP);LzGpioInit(GPIO0_PB4);LzGpioSetDir(GPIO0_PB4, LZGPIO_DIR_OUT);

(左右移動(dòng)查看全部?jī)?nèi)容)

通過(guò)模擬PWM波讓舵機(jī)工作。具體代碼如下:

void set_angle(unsigned int duty){   LzGpioSetDir(GPIO0_PB4, LZGPIO_DIR_OUT);   LzGpioSetVal(GPIO0_PB4, LZGPIO_LEVEL_HIGH);   HAL_DelayUs(duty);   LzGpioSetVal(GPIO0_PB4, LZGPIO_LEVEL_LOW);   HAL_DelayUs(20000 - duty);}

(左右移動(dòng)查看全部?jī)?nèi)容)

4. 紅外尋跡模塊

紅外尋跡模塊,在避障小車(chē)中的功能是防止小車(chē)意外掉落。紅外尋跡模塊與小凌派的GPIO0_A2、GPIO0_C4連接,對(duì)這兩個(gè)引腳進(jìn)行初始化。

//初始化PA2 紅外傳感器PinctrlSet(GPIO0_PA2, MUX_FUNC0, PULL_UP, DRIVE_KEEP);LzGpioInit(GPIO0_PA2);LzGpioSetDir(GPIO0_PA2, LZGPIO_DIR_IN);LzGpioSetVal(GPIO0_PA2, LZGPIO_LEVEL_HIGH);
//初始化PC7 紅外傳感器PinctrlSet(GPIO0_PC4, MUX_FUNC0, PULL_UP, DRIVE_KEEP);LzGpioInit(GPIO0_PC4);LzGpioSetDir(GPIO0_PC4, LZGPIO_DIR_IN);LzGpioSetVal(GPIO0_PC4, LZGPIO_LEVEL_HIGH);

(左右移動(dòng)查看全部?jī)?nèi)容)

3避障小車(chē)功能實(shí)現(xiàn)

通過(guò)小凌派開(kāi)發(fā)板自帶的按鍵啟動(dòng)小車(chē)的避障功能

void car_ Obstacle_avoidance(void){  float m_distance = 0.0;  regress_middle();  /*獲取前方物體的距離*/  m_distance = GetDistance();  car_where_to_go(m_distance);  osDelay(20);}

(左右移動(dòng)查看全部?jī)?nèi)容)

通過(guò)超聲波測(cè)距模塊測(cè)量前方距離來(lái)判斷小車(chē)接下來(lái)要運(yùn)動(dòng)的方向。若距離大于等于20cm繼續(xù)前進(jìn)。若距離小于20cm,先停止再后退0.5s,再繼續(xù)進(jìn)行測(cè)距,再進(jìn)行判斷。通過(guò)兩個(gè)紅外尋跡傳感器可以防止小車(chē)掉落,當(dāng)紅外傳感器輸出為高電平時(shí),小車(chē)就會(huì)停止前進(jìn),并且重新尋找安全方向。

static void car_where_to_go(float distance){  LzGpioValue io_status_left;  LzGpioValue io_status_right;
  LzGpioGetVal(GPIO0_PA2, &io_status_left);  LzGpioGetVal(GPIO0_PC4, &io_status_right);  if (io_status_left == 0 || io_status_right == 0)  {    if (io_status_left == 0 && io_status_right != 0)    {      car_stop();      LOS_Msleep(500);      car_backward();      LOS_Msleep(500);      car_stop(); // meet wall      car_rightward();      LOS_Msleep(800);      car_stop(); // meet wall    }    else if (io_status_left != 0 && io_status_right == 0)    {      car_stop();      LOS_Msleep(500);      car_backward();      LOS_Msleep(500);      car_stop(); // meet wall      car_leftward();      LOS_Msleep(800);      car_stop(); // meet wall    }    else if (io_status_left == 0 || io_status_right == 0)    {      car_stop();car_backward();      LOS_Msleep(500);      car_stop(); // meet wall
    }  }  else if (distance < DISTANCE_BETWEEN_CAR_AND_OBSTACLE)  {    car_stop();    LOS_Msleep(500);    car_backward();    printf("This is backward
");    LOS_Msleep(500);    car_stop();    unsigned int ret = engine_go_where();    printf("ret is %d
", ret);    if (ret == CAR_TURN_LEFT)    {      car_left();      LOS_Msleep(800);    }    else if (ret == CAR_TURN_RIGHT)    {      car_right();      LOS_Msleep(800);    }    car_stop();  }  else  {    car_forward();    printf("This is forward
");  }}

(左右移動(dòng)查看全部?jī)?nèi)容)

4心得體會(huì)

通過(guò)使用OpenHarmony操作系統(tǒng) + 小凌派-RK2206開(kāi)發(fā)板來(lái)控制小車(chē)完成距離檢測(cè)、前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)、判斷算法等功能,實(shí)現(xiàn)了避障小車(chē)的基本功能。經(jīng)過(guò)這一次實(shí)驗(yàn)測(cè)試,加強(qiáng)我個(gè)人對(duì)OpenHarmony的理解,實(shí)在是一次不錯(cuò)的學(xué)習(xí)體驗(yàn),特此記錄!

原文標(biāo)題:基于搭載 OpenHarmony 避障小車(chē)心得體會(huì)

文章出處:【微信公眾號(hào):HarmonyOS官方合作社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

    關(guān)注

    25

    文章

    5990

    瀏覽量

    109922
  • OpenHarmony
    +關(guān)注

    關(guān)注

    31

    文章

    3891

    瀏覽量

    20153
  • RK2206
    +關(guān)注

    關(guān)注

    0

    文章

    38

    瀏覽量

    2388
  • 小凌派
    +關(guān)注

    關(guān)注

    0

    文章

    28

    瀏覽量

    1514

原文標(biāo)題:基于搭載 OpenHarmony 避障小車(chē)心得體會(huì)

文章出處:【微信號(hào):HarmonyOS_Community,微信公眾號(hào):電子發(fā)燒友開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    基于OpenHarmony+小RK2206開(kāi)發(fā)板制作的簡(jiǎn)易示波器

    基于OpenHarmony + 小RK2206開(kāi)發(fā)板制作的簡(jiǎn)易示波器,實(shí)時(shí)采集波形,實(shí)時(shí)計(jì)算并實(shí)時(shí)顯示對(duì)應(yīng)的波形。
    的頭像 發(fā)表于 05-10 09:02 ?5436次閱讀

    基于搭載 OpenHarmony 小車(chē)心得體會(huì)

    文章提供:福州市睿智捷電子有限公司一、 小車(chē)簡(jiǎn)介這是一款基于OpenHarmony系統(tǒng)和小
    發(fā)表于 04-15 15:07

    輕量系統(tǒng)開(kāi)發(fā)套件介紹:睿智捷 | 小-RK2206 開(kāi)發(fā)板套件

    睿智捷 | 小-RK2206 開(kāi)發(fā)板套件是由福州市睿智捷電子有限公司出品,主控器為瑞芯微
    發(fā)表于 04-21 13:39

    【小RK2206開(kāi)發(fā)板試用體驗(yàn)】第2章 源碼編譯與固件下載

    開(kāi)發(fā)環(huán)境:開(kāi)發(fā)系統(tǒng):Ubuntu 20.04開(kāi)發(fā)板:小-
    發(fā)表于 05-08 14:02

    【小RK2206開(kāi)發(fā)板試用體驗(yàn)】第3章 應(yīng)用開(kāi)發(fā)

    開(kāi)發(fā)環(huán)境:開(kāi)發(fā)系統(tǒng):Ubuntu 20.04開(kāi)發(fā)板:小-
    發(fā)表于 05-08 14:07

    RK2206開(kāi)發(fā)板搭載OpenHarmony操作系統(tǒng)簡(jiǎn)介

    1、小-RK2206開(kāi)發(fā)板簡(jiǎn)介小-RK2206
    發(fā)表于 07-28 17:28

    基于小RK2206開(kāi)發(fā)板所制作的簡(jiǎn)易示波器

    RK2206開(kāi)發(fā)板而做的簡(jiǎn)易示波器開(kāi)發(fā)。 本開(kāi)發(fā)以瑞芯微RK2206芯片 + OpenHarmony
    的頭像 發(fā)表于 05-06 17:09 ?2375次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>所制作的簡(jiǎn)易示波器

    智電子:小-RK2206開(kāi)發(fā)板順利通過(guò)開(kāi)放原子開(kāi)源基金會(huì)兼容性測(cè)評(píng)

    3月18日,智電子小-RK2206開(kāi)發(fā)套件順利完成OpenAtomOpenHarmony
    的頭像 發(fā)表于 04-13 09:56 ?1454次閱讀
    <b class='flag-5'>凌</b>智電子:小<b class='flag-5'>凌</b><b class='flag-5'>派</b>-<b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>順利通過(guò)開(kāi)放原子開(kāi)源基金會(huì)兼容性測(cè)評(píng)

    基于搭載OpenHarmony小車(chē)連接華為云心得體會(huì)

    下,終于完成了通過(guò)華為云給小車(chē)下發(fā)工作命令的小車(chē)。二、小車(chē)介紹這是一款基于OpenHarmony
    的頭像 發(fā)表于 06-14 11:15 ?1653次閱讀
    基于搭載<b class='flag-5'>OpenHarmony</b><b class='flag-5'>避</b><b class='flag-5'>障</b><b class='flag-5'>小車(chē)</b>連接華為云心得體會(huì)

    -RK2206開(kāi)發(fā)板:UART控制案例

    -RK2206開(kāi)發(fā)板:UART控制案例一、簡(jiǎn)介通用異步收發(fā)傳輸器(UniversalAsynchronousReceiver/Transmitter),通常稱(chēng)作UART。它將要傳
    的頭像 發(fā)表于 06-14 11:12 ?2025次閱讀
    小<b class='flag-5'>凌</b><b class='flag-5'>派</b>-<b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:UART控制案例

    基于小RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制ADC外設(shè)

    1、案例簡(jiǎn)介本案例主要講解如何在小-RK2206開(kāi)發(fā)板上使用IoT庫(kù)的ADC接口,進(jìn)行ADC編程開(kāi)發(fā)。例程內(nèi)容為創(chuàng)建一個(gè)任務(wù),讀取按鍵的
    的頭像 發(fā)表于 04-10 16:00 ?593次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制ADC外設(shè)

    基于小RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制GPIO外設(shè)

    1、案例簡(jiǎn)介本案例主要是如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO接口,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置GP
    的頭像 發(fā)表于 04-11 15:36 ?1461次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO外設(shè)

    基于小RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制GPIO中斷

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的GPIO中斷模式,進(jìn)行GPIO編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置
    的頭像 發(fā)表于 04-21 10:39 ?711次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制GPIO中斷

    基于小RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制UART外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的UART接口,進(jìn)行UART編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),通過(guò)配置UA
    的頭像 發(fā)表于 04-22 14:22 ?683次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制UART外設(shè)

    基于小RK2206開(kāi)發(fā)板OpenHarmony如何使用IoT接口控制FLASH外設(shè)

    1、實(shí)驗(yàn)簡(jiǎn)介本實(shí)驗(yàn)將演示如何在小-RK2206開(kāi)發(fā)板上使用IOT庫(kù)的FLASH接口,進(jìn)行FLASH編程開(kāi)發(fā)。例程將創(chuàng)建一個(gè)任務(wù),實(shí)現(xiàn)FL
    的頭像 發(fā)表于 04-22 14:49 ?571次閱讀
    基于小<b class='flag-5'>凌</b><b class='flag-5'>派</b><b class='flag-5'>RK2206</b><b class='flag-5'>開(kāi)發(fā)板</b>:<b class='flag-5'>OpenHarmony</b>如何使用IoT接口控制FLASH外設(shè)