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

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

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

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

基于rt-smart實(shí)現(xiàn)掃描雷達(dá)

RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 來(lái)源:RTThread物聯(lián)網(wǎng)操作系統(tǒng) ? 作者:ledoen ? 2022-07-19 17:48 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、功能描述

使用控制舵機(jī)帶動(dòng)超聲波測(cè)距模塊轉(zhuǎn)動(dòng),同時(shí)進(jìn)行測(cè)距,完成對(duì)0-180°范圍內(nèi)的障礙檢測(cè)。

使用到了PWM模塊、GPT模塊和ENET模塊

硬件

  • imx6ul開(kāi)發(fā)板

  • 舵機(jī)

  • 超聲波測(cè)距模塊

  • 網(wǎng)口

軟件

  • 下位機(jī)基于rt-smart實(shí)現(xiàn)

  • 控制舵機(jī)轉(zhuǎn)動(dòng)

  • 控制測(cè)距模塊進(jìn)行測(cè)距

  • 使用UDP協(xié)議和上位機(jī)進(jìn)行通訊

  • 上位機(jī)程序

  • 向下位機(jī)發(fā)送指令,控制設(shè)備運(yùn)行和停止

  • 接收掃描數(shù)據(jù)

  • 以雷達(dá)圖的形式展示掃描結(jié)果

二、功能實(shí)現(xiàn)

2.1 舵機(jī)控制

舵機(jī)控制只使用到了PWM模塊,代碼上使用一個(gè)循環(huán),實(shí)現(xiàn)舵機(jī)從0-180°的往復(fù)運(yùn)動(dòng)。

 1voidpwm3_rotor_entry(void*parameter)
 2{
 3angle=1500;
 4int16_tincrease=SCAN_STEP;
 5while(1)
 6{
 7if(myapp_isrunning)
 8{
 9rotor_set_angle(angle);
10if(angle==500)
11{
12increase=SCAN_STEP;
13}
14elseif(angle==2500)
15{
16increase=-SCAN_STEP;
17}
18angle+=increase;
19}
20else
21{
22rt_thread_mdelay(150);
23rotor_set_angle(1500);
24}
25rt_thread_mdelay(SCAN_PERIOD);
26}
27}

2.2超聲波測(cè)距模塊

需要使用PWM模塊和GPT模塊配合控制,PWM模塊用于產(chǎn)生10us的啟動(dòng)脈沖,GPT模塊用于接收超聲波模塊返回的echo信號(hào),具體的實(shí)現(xiàn)在上一篇文章進(jìn)行了描述。

2.3UDP通信

下位機(jī)和上位機(jī)采用服務(wù)器/客戶端的方式進(jìn)行通信,下位機(jī)作為服務(wù)器,上位機(jī)作為客戶端

數(shù)據(jù)包分為兩種,一種為指令包,上位機(jī)發(fā)給下位機(jī);一種為數(shù)據(jù)包,下位機(jī)發(fā)給上位機(jī)。下位機(jī)在接收到開(kāi)始指令后,啟動(dòng)掃描,并開(kāi)始向上位機(jī)發(fā)送掃描數(shù)據(jù),接收到停止指令時(shí),停止掃描,并停止數(shù)據(jù)發(fā)送。

下位機(jī)使用UDP server的方式,參考rt-smart自帶example的UDP server,綁定IP和端口。因?yàn)樾枰瑫r(shí)發(fā)送和接收,采用了兩個(gè)線程,一個(gè)線程用于循環(huán)接收上位機(jī)的指令,一個(gè)線程用于循環(huán)發(fā)送掃描數(shù)據(jù)。

 1/*接收線程*/
 2while(1)
 3{
 4/*接收數(shù)據(jù),并獲取客戶端地址*/
 5lwip_recvfrom(transfer.sockfd,(void*)recv_buffer,BUFSZ-1,0,
 6(structsockaddr*)&client_addr,&addr_len);
 7/*分析數(shù)據(jù)*/
 8if(recv_buffer[0]==1)
 9{
10if(recv_buffer[1]==1&&transfer.is_running==0)
11{
12transfer.is_running=1;
13transfer.radar_control(1);
14}
15elseif(recv_buffer[1]==2&&transfer.is_running==1)
16{
17transfer.is_running=0;
18transfer.radar_control(0);
19}
20}
21}
22/*發(fā)送線程*/
23while(1)
24{
25if(transfer.is_running)
26{
27/*【5】獲取數(shù)據(jù)*/
28transfer.get_data(&angle,&distance);
29/*【6】整合數(shù)據(jù)*/
30/*angle=htons(angle);
31distance=htonl(distance);*/
32tran_data[1]=0xff33tran_data[2]=0xff&(angle>>8);
34tran_data[3]=0xff&distance;
35tran_data[4]=0xff&(distance>>8);
36tran_data[5]=0xff&(distance>>16);
37tran_data[6]=0xff&(distance>>24);
38/*【7】發(fā)送數(shù)據(jù)*/
39lwip_sendto(transfer.sockfd,tran_data,BUFSZ,0,(structsockaddr*)&client_addr,sizeof(structsockaddr));
40}
41rt_thread_mdelay(100);
42}

2.4總結(jié)

程序入口

 1intmyapp(void)
 2{
 3rotor_init();
 4/*控制舵機(jī)轉(zhuǎn)動(dòng)*/
 5rt_thread_tpwm3_rotor_thread=rt_thread_create(
 6"pwm3_rotor",
 7pwm3_rotor_entry,
 8RT_NULL,
 91024,
1025,
115
12);
13if(pwm3_rotor_thread!=RT_NULL)
14{
15rt_thread_startup(pwm3_rotor_thread);
16}
17hr04_enable();
18/*定時(shí)獲取角度值*/
19rt_thread_ttest_thread=rt_thread_create(
20"hr04",
21test_fun_entry,
22RT_NULL,
231024,
2425,
255
26);
27if(test_thread!=RT_NULL)
28{
29rt_thread_startup(test_thread);
30}
31/*監(jiān)控上位機(jī)指令*/
32rt_thread_tcontrol_thread=rt_thread_create(
33"myapp",
34myapp_entry,
35RT_NULL,
361024,
3725,
385
39);
40if(control_thread!=RT_NULL)
41{
42rt_thread_startup(control_thread);
43}
44return0;
45}

下位機(jī)程序一共使用了4個(gè)線程

  • 一個(gè)用于控制舵機(jī)

  • 一個(gè)用于獲取距離信息

  • 一個(gè)用于監(jiān)聽(tīng)上位機(jī)指令

  • 一個(gè)用于發(fā)送掃描數(shù)據(jù)

三、效果

舵機(jī)+超聲波測(cè)距

afc14d38-0687-11ed-ba43-dac502259ad0.png

上位機(jī)界面

afd4b10c-0687-11ed-ba43-dac502259ad0.png

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    116

    文章

    5869

    瀏覽量

    225595
  • 雷達(dá)
    +關(guān)注

    關(guān)注

    52

    文章

    3327

    瀏覽量

    123870
  • 開(kāi)發(fā)板
    +關(guān)注

    關(guān)注

    26

    文章

    6289

    瀏覽量

    118050

原文標(biāo)題:rt-smart學(xué)習(xí)筆記——小實(shí)驗(yàn):實(shí)現(xiàn)“掃描雷達(dá)”

文章出處:【微信號(hào):RTThread,微信公眾號(hào):RTThread物聯(lián)網(wǎng)操作系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    通過(guò)Uboot?TFTP啟動(dòng)rt-smart內(nèi)核

    介紹Windows下通過(guò) Uboot??TFTP 方式下載和啟動(dòng)rt-smart 內(nèi)核
    的頭像 發(fā)表于 06-30 12:34 ?5096次閱讀
    通過(guò)Uboot?TFTP啟動(dòng)<b class='flag-5'>rt-smart</b>內(nèi)核

    RT-Smart的資料合集

    1、RT-Smart的啟動(dòng)過(guò)程在熟悉 RT-Smart 架構(gòu)的過(guò)程中,研究其啟動(dòng)過(guò)程的是必不可少的,那么在系統(tǒng)正常運(yùn)行之前,需要做哪些準(zhǔn)備工作呢。本文將以 32 位 RT-Smart 的源代碼為
    發(fā)表于 03-22 15:06

    rt-smart中斷阻塞問(wèn)題是怎么引起的

    rt-smart 中斷阻塞問(wèn)題如何解決?該問(wèn)題是怎么引起的?為了測(cè)試rt-smart的實(shí)時(shí)性,測(cè)試了一下中斷的穩(wěn)定性。用systick的1ms中斷做測(cè)試源。平時(shí)都正常的,但是發(fā)現(xiàn)打印時(shí),波形老是抖動(dòng)
    發(fā)表于 03-25 09:56

    請(qǐng)問(wèn)rt-smart gdbserver是閉源的嗎?

    編譯“RT-Smart”,啟用RT_USING_GDBSERVER時(shí),發(fā)現(xiàn)許多文件都找不到,請(qǐng)問(wèn)這部分代碼不公開(kāi)嗎?比如#include #include
    發(fā)表于 04-19 09:37

    請(qǐng)問(wèn)rt-smart gdbserver是閉源的嗎?

    編譯“RT-Smart”,啟用RT_USING_GDBSERVER時(shí),發(fā)現(xiàn)許多文件都找不到,請(qǐng)問(wèn)這部分代碼不公開(kāi)嗎?比如#include #include
    發(fā)表于 04-26 10:01

    基于RT-Thread操作系統(tǒng)衍生rt-smart實(shí)時(shí)操作系統(tǒng)簡(jiǎn)介

    1、rt-smart 實(shí)時(shí)操作系統(tǒng)簡(jiǎn)介RT-Thread Smart(簡(jiǎn)稱 rt-smart)嵌入式實(shí)時(shí)操作系統(tǒng)是基于 RT-Thread
    發(fā)表于 06-22 17:56

    rt-smart應(yīng)用程序系統(tǒng)調(diào)用實(shí)現(xiàn)過(guò)程是怎么樣的?

    rt-smart應(yīng)用程序系統(tǒng)調(diào)用實(shí)現(xiàn)過(guò)程是怎么樣的? 比如open時(shí)候怎么一步一步切換到內(nèi)核態(tài)的?
    發(fā)表于 09-08 17:00

    樹(shù)莓派上rt-smart的應(yīng)用編程入門

    我們從現(xiàn)在開(kāi)始會(huì)逐步連載RT-Thread Smart(簡(jiǎn)稱rt-smart,甚至有時(shí)會(huì)稱為smart os)的介紹文章,旨在讓大家認(rèn)識(shí),接觸到sm
    的頭像 發(fā)表于 05-13 14:10 ?4279次閱讀
    樹(shù)莓派上<b class='flag-5'>rt-smart</b>的應(yīng)用編程入門

    rt-smart移植分析:從樹(shù)莓派3b入手

    移植rt-smart到最新的板子上具體需要注意哪些細(xì)節(jié),哪些才是移植rt-smart的關(guān)鍵點(diǎn)?本文從樹(shù)莓派3b上移植rt-smart的角度,從頭分析rt-sm...
    發(fā)表于 01-25 18:48 ?0次下載
    <b class='flag-5'>rt-smart</b>移植分析:從樹(shù)莓派3b入手

    優(yōu)雅的在D1S上運(yùn)行RT-Smart

    前言 最近在學(xué)習(xí) RT-Smart ,正巧有在全志開(kāi)發(fā)者論壇看到這么一篇帖子【驚】在麻雀上運(yùn)行國(guó)產(chǎn)rt-smart系統(tǒng),看到很多人都在關(guān)注 D1S 在 Smart 上的運(yùn)行情況。如今該 BSP 已經(jīng)
    的頭像 發(fā)表于 11-16 20:15 ?4158次閱讀

    絲滑的在RT-Smart用戶態(tài)運(yùn)行LVGL

    開(kāi)發(fā)流程 1、RT-Smart 環(huán)境搭建 下載 RT-Smart 用戶態(tài)應(yīng)用代碼: 1 git?clone?https: //github.com/RT-Thread/userapps.git
    的頭像 發(fā)表于 11-22 20:20 ?2322次閱讀

    RT-Smart riscv64匯編注釋

    rt-smart在全志D1上的代碼為例,主要注釋了rt-smart在riscv64上的系統(tǒng)初始化和異常處理的代碼倉(cāng)庫(kù)地址https://gitee.com/rtthread/rt
    的頭像 發(fā)表于 02-08 21:40 ?2195次閱讀

    零基礎(chǔ)上手rt-smart適配bsp

    RT-Thread Smart(簡(jiǎn)稱rt-smart)是基于RT-Thread操作系統(tǒng)衍生,面向帶MMU(Memory Management Unit),中高端應(yīng)用的芯片,例如ARM
    的頭像 發(fā)表于 08-08 10:34 ?2364次閱讀
    零基礎(chǔ)上手<b class='flag-5'>rt-smart</b>適配bsp

    RT-Smart riscv64匯編注釋

    rt-smart在全志D1上的代碼為例,主要注釋了rt-smart在riscv64上的系統(tǒng)初始化和異常處理的代碼
    的頭像 發(fā)表于 10-12 17:26 ?1312次閱讀
    <b class='flag-5'>RT-Smart</b> riscv64匯編注釋

    RT-Smart應(yīng)用開(kāi)發(fā)筆記:fopen造成文件被清空問(wèn)題的分析記錄

    RT-Smart 應(yīng)用(apps)開(kāi)發(fā)環(huán)境,ubuntu 20.04 + win10 VS Code
    的頭像 發(fā)表于 10-20 16:01 ?1407次閱讀
    <b class='flag-5'>RT-Smart</b>應(yīng)用開(kāi)發(fā)筆記:fopen造成文件被清空問(wèn)題的分析記錄